diff options
author | Hailey <me@haileyok.com> | 2024-07-19 15:25:09 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-19 15:25:09 -0700 |
commit | 59bafb426ff018a3b8a92dee8994c5413fb30076 (patch) | |
tree | 3716e77929b23e5f4bedbe2ae1acc80bc8b0e7d3 /src/state | |
parent | 3627a249ffb32e4c0f84597f8f9adf228ee90a8f (diff) | |
download | voidsky-59bafb426ff018a3b8a92dee8994c5413fb30076.tar.zst |
dont filter exact matches from typeahead (#4802)
Diffstat (limited to 'src/state')
-rw-r--r-- | src/state/queries/actor-autocomplete.ts | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/src/state/queries/actor-autocomplete.ts b/src/state/queries/actor-autocomplete.ts index 7e997ea01..abf78da3c 100644 --- a/src/state/queries/actor-autocomplete.ts +++ b/src/state/queries/actor-autocomplete.ts @@ -45,9 +45,13 @@ export function useActorAutocompleteQuery( }, select: React.useCallback( (data: AppBskyActorDefs.ProfileViewBasic[]) => { - return computeSuggestions(data, moderationOpts || DEFAULT_MOD_OPTS) + return computeSuggestions({ + q: prefix, + searched: data, + moderationOpts: moderationOpts || DEFAULT_MOD_OPTS, + }) }, - [moderationOpts], + [prefix, moderationOpts], ), placeholderData: maintainData ? keepPreviousData : undefined, }) @@ -81,19 +85,25 @@ export function useActorAutocompleteFn() { } } - return computeSuggestions( - res?.data.actors, - moderationOpts || DEFAULT_MOD_OPTS, - ) + return computeSuggestions({ + q: query, + searched: res?.data.actors, + moderationOpts: moderationOpts || DEFAULT_MOD_OPTS, + }) }, [queryClient, moderationOpts, agent], ) } -function computeSuggestions( - searched: AppBskyActorDefs.ProfileViewBasic[] = [], - moderationOpts: ModerationOpts, -) { +function computeSuggestions({ + q, + searched = [], + moderationOpts, +}: { + q?: string + searched?: AppBskyActorDefs.ProfileViewBasic[] + moderationOpts: ModerationOpts +}) { let items: AppBskyActorDefs.ProfileViewBasic[] = [] for (const item of searched) { if (!items.find(item2 => item2.handle === item.handle)) { @@ -102,6 +112,7 @@ function computeSuggestions( } return items.filter(profile => { const modui = moderateProfile(profile, moderationOpts).ui('profileList') - return !modui.filter || isJustAMute(modui) + const isExactMatch = q && profile.handle.toLowerCase() === q + return isExactMatch || !modui.filter || isJustAMute(modui) }) } |