diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2016-11-13 13:04:18 +0100 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2016-11-13 13:04:18 +0100 |
commit | f0bdfadab7e5293b3f7855b6707a1fa95ea76ca6 (patch) | |
tree | 21ea4e75a0e8398eed1f738c40eecab9c1ea65c9 /app/assets/javascripts/components/actions | |
parent | 8152584cf57c2b5a797d73f5afac0bba3c904f6d (diff) |
Search component
Diffstat (limited to 'app/assets/javascripts/components/actions')
-rw-r--r-- | app/assets/javascripts/components/actions/search.jsx | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/app/assets/javascripts/components/actions/search.jsx b/app/assets/javascripts/components/actions/search.jsx new file mode 100644 index 000000000..ceb0e4a0c --- /dev/null +++ b/app/assets/javascripts/components/actions/search.jsx @@ -0,0 +1,51 @@ +import api from '../api' + +export const SEARCH_CHANGE = 'SEARCH_CHANGE'; +export const SEARCH_SUGGESTIONS_CLEAR = 'SEARCH_SUGGESTIONS_CLEAR'; +export const SEARCH_SUGGESTIONS_READY = 'SEARCH_SUGGESTIONS_READY'; +export const SEARCH_RESET = 'SEARCH_RESET'; + +export function changeSearch(value) { + return { + type: SEARCH_CHANGE, + value + }; +}; + +export function clearSearchSuggestions() { + return { + type: SEARCH_SUGGESTIONS_CLEAR + }; +}; + +export function readySearchSuggestions(value, accounts) { + return { + type: SEARCH_SUGGESTIONS_READY, + value, + accounts + }; +}; + +export function fetchSearchSuggestions(value) { + return (dispatch, getState) => { + if (getState().getIn(['search', 'loaded_value']) === value) { + return; + } + + api(getState).get('/api/v1/accounts/search', { + params: { + q: value, + resolve: true, + limit: 4 + } + }).then(response => { + dispatch(readySearchSuggestions(value, response.data)); + }); + }; +}; + +export function resetSearch() { + return { + type: SEARCH_RESET + }; +}; |