aboutsummaryrefslogtreecommitdiff
path: root/src/client/react/reducers/search.js
diff options
context:
space:
mode:
authorNoah Loomans <noahloomans@gmail.com>2017-12-21 12:06:41 +0100
committerNoah Loomans <noahloomans@gmail.com>2017-12-21 12:06:41 +0100
commitf0c8cf0e79f003514fd65a70def5820205955a77 (patch)
treecb66d325fb5d16d8b7fa0f14c91ad17dd4ff7c6c /src/client/react/reducers/search.js
parent569b2969d530f08e55798c5cb3079948c7c037cd (diff)
Move to typescript
Diffstat (limited to 'src/client/react/reducers/search.js')
-rw-r--r--src/client/react/reducers/search.js81
1 files changed, 0 insertions, 81 deletions
diff --git a/src/client/react/reducers/search.js b/src/client/react/reducers/search.js
deleted file mode 100644
index 2a7e7a5..0000000
--- a/src/client/react/reducers/search.js
+++ /dev/null
@@ -1,81 +0,0 @@
-import fuzzy from 'fuzzy';
-import users from '../users';
-
-const DEFAULT_STATE = {
- results: [
- 's/18562',
- ],
- selectedResult: null,
- isExactMatch: false,
-};
-
-function getSearchResults(allUsers, query) {
- if (query.trim() === '') {
- return [];
- }
-
- const allResults = fuzzy.filter(query, allUsers, {
- extract: user => user.value,
- });
-
- const firstResults = allResults.splice(0, 4);
- const userIds = firstResults.map(result => result.original.id);
-
- return userIds;
-}
-
-const search = (state = DEFAULT_STATE, action) => {
- switch (action.type) {
- case 'SEARCH/INPUT_CHANGE': {
- const results = getSearchResults(users.allUsers, action.typedValue);
- let selectedResult = null;
- let isExactMatch = false;
-
- // Is the typed value exactly the same as the first result? Then show the
- // appropiate icon instead of the generic search icon.
- if ((results.length === 1) && (action.typedValue === users.byId[results[0]].value)) {
- [selectedResult] = results;
- isExactMatch = true;
- }
-
- return {
- ...state,
- results,
- selectedResult,
- isExactMatch,
- };
- }
-
- case 'SEARCH/CHANGE_SELECTED_RESULT': {
- const { results, isExactMatch } = state;
-
- if (isExactMatch) return state;
-
- const prevSelectedResult = state.selectedResult;
- const prevSelectedResultIndex = results.indexOf(prevSelectedResult);
- let nextSelectedResultIndex =
- prevSelectedResultIndex + action.relativeChange;
-
- if (nextSelectedResultIndex < -1) {
- nextSelectedResultIndex = results.length - 1;
- } else if (nextSelectedResultIndex > results.length - 1) {
- nextSelectedResultIndex = -1;
- }
-
- const nextSelectedResult =
- nextSelectedResultIndex === -1
- ? null
- : results[nextSelectedResultIndex];
-
- return {
- ...state,
- selectedResult: nextSelectedResult,
- };
- }
-
- default:
- return state;
- }
-};
-
-export default search;