diff --git a/app/editor/components/SuggestionsMenu.tsx b/app/editor/components/SuggestionsMenu.tsx index 5e7adc660..e5ad0856e 100644 --- a/app/editor/components/SuggestionsMenu.tsx +++ b/app/editor/components/SuggestionsMenu.tsx @@ -426,15 +426,22 @@ function SuggestionsMenu(props: Props) { } return ( - (item.title || "").toLowerCase().includes(searchInput) || - (item.keywords || "").toLowerCase().includes(searchInput) + (item.title || "").toLocaleLowerCase().includes(searchInput) || + (item.keywords || "").toLocaleLowerCase().includes(searchInput) ); }); return filterExcessSeparators( - filtered.sort((item) => - searchInput && item.title ? commandScore(item.title, searchInput) : 0 - ) + filtered + .map((item) => ({ + item, + score: + searchInput && item.title + ? commandScore(item.title, searchInput) + : 0, + })) + .sort((a, b) => b.score - a.score) + .map(({ item }) => item) ); }, [commands, props]); diff --git a/app/stores/UsersStore.ts b/app/stores/UsersStore.ts index fed213473..13a31843e 100644 --- a/app/stores/UsersStore.ts +++ b/app/stores/UsersStore.ts @@ -1,3 +1,4 @@ +import commandScore from "command-score"; import invariant from "invariant"; import deburr from "lodash/deburr"; import differenceWith from "lodash/differenceWith"; @@ -331,11 +332,20 @@ export default class UsersStore extends Store { } function queriedUsers(users: User[], query?: string) { - return query - ? filter(users, (user) => - deburr(user.name.toLocaleLowerCase()).includes( - deburr(query.toLocaleLowerCase()) - ) + const normalizedQuery = deburr((query || "").toLocaleLowerCase()); + + return normalizedQuery + ? filter( + users, + (user) => + deburr(user.name.toLocaleLowerCase()).includes(normalizedQuery) || + user.email?.includes(normalizedQuery) ) + .map((user) => ({ + user, + score: commandScore(user.name, normalizedQuery), + })) + .sort((a, b) => b.score - a.score) + .map(({ user }) => user) : users; }