diff options
| author | Noah Loomans <noahloomans@gmail.com> | 2017-12-21 12:06:41 +0100 | 
|---|---|---|
| committer | Noah Loomans <noahloomans@gmail.com> | 2017-12-21 12:06:41 +0100 | 
| commit | f0c8cf0e79f003514fd65a70def5820205955a77 (patch) | |
| tree | cb66d325fb5d16d8b7fa0f14c91ad17dd4ff7c6c /src/client/react/reducers/search.js | |
| parent | 569b2969d530f08e55798c5cb3079948c7c037cd (diff) | |
Move to typescript
Diffstat (limited to 'src/client/react/reducers/search.js')
| -rw-r--r-- | src/client/react/reducers/search.js | 81 | 
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; | 
