From 065c798078586b98f974c4f8ee2d1a7af1ad9218 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Fri, 16 Feb 2018 22:10:33 +0100 Subject: Add client support for alts --- src/client/react/components/presentational/Result.js | 9 ++++++++- src/client/react/reducers/search.js | 14 ++++++++------ src/client/react/users.js | 1 + 3 files changed, 17 insertions(+), 7 deletions(-) (limited to 'src/client/react') diff --git a/src/client/react/components/presentational/Result.js b/src/client/react/components/presentational/Result.js index a30cf52..83c6709 100644 --- a/src/client/react/components/presentational/Result.js +++ b/src/client/react/components/presentational/Result.js @@ -24,7 +24,14 @@ class Result extends React.Component {
-
{users.byId[this.props.userId].value}
+
+ {users.byId[this.props.userId].value} + {users.byId[this.props.userId].alt && + + {` ${users.byId[this.props.userId].alt}`} + + } +
); } diff --git a/src/client/react/reducers/search.js b/src/client/react/reducers/search.js index 6293b8a..2f02874 100644 --- a/src/client/react/reducers/search.js +++ b/src/client/react/reducers/search.js @@ -1,4 +1,5 @@ -import fuzzy from 'fuzzy'; +import FuzzySearch from 'fuzzy-search'; +import uniqBy from 'lodash/uniqBy'; import users from '../users'; const DEFAULT_STATE = { @@ -11,16 +12,17 @@ const DEFAULT_STATE = { }; function getSearchResults(allUsers, query) { + const searcher = new FuzzySearch(allUsers, ['value', 'alt']); + if (query.trim() === '') { return []; } - const allResults = fuzzy.filter(query, allUsers, { - extract: user => user.value, - }); + const allResults = searcher.search(query); + const uniqResults = uniqBy(allResults, result => result.id); + const firstResults = uniqResults.splice(0, 4); - const firstResults = allResults.splice(0, 4); - const userIds = firstResults.map(result => result.original.id); + const userIds = firstResults.map(result => result.id); return userIds; } diff --git a/src/client/react/users.js b/src/client/react/users.js index 01ff093..bb28317 100644 --- a/src/client/react/users.js +++ b/src/client/react/users.js @@ -56,6 +56,7 @@ USERS.forEach((user) => { user: { type: user.type, value: user.value, + alt: user.alt, id: getId(user), }, }); -- cgit v1.1