From 02d334ee37784f567849715efbcdc1c11bffc397 Mon Sep 17 00:00:00 2001 From: Georgi Gardev Date: Sat, 18 Nov 2023 22:53:10 +0200 Subject: [PATCH] fix search for multi-letter prefixes --- src/components/widgets/Search.tsx | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/components/widgets/Search.tsx b/src/components/widgets/Search.tsx index 2975a9d..769e23b 100644 --- a/src/components/widgets/Search.tsx +++ b/src/components/widgets/Search.tsx @@ -14,27 +14,26 @@ export function Search(props: SearchProps) { () => props.providers()?.find((provider) => provider.default) ?? props.providers()?.[0] ); - const searchPerPrefix = createMemo(() => - props.providers()?.reduce>((acc, provider) => { - acc[provider.prefix] = provider; - return acc; - }, {}) - ); - const activeProvider = createMemo(() => { - if (term().startsWith('!') && searchPerPrefix()?.[term().charAt(1)]) { - return searchPerPrefix()?.[term().charAt(1)]; - } else { + if (!term().startsWith('!')) { return defaultProvider(); } + + console.log({ term: term().slice(1) }); + const prefix = term().slice(1); + const provider = props + .providers() + ?.find((provider) => provider.prefix === prefix || provider.prefix === prefix.split(' ')[0]); + + return provider || defaultProvider(); }); const searchTerm = createMemo(() => { - if (term().startsWith('!') && searchPerPrefix()?.[term().charAt(1)]) { - return term().slice(2); - } else { + if (!term().startsWith('!')) { return term(); } + + return term().split(`!${activeProvider()?.prefix} `)[1]; }); return (