From c1a1065267f90bfc7d8419b0e461a8622d7a5aa4 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Thu, 13 Mar 2025 03:05:58 -0500 Subject: [PATCH] Add token from search input into search --- src/features/compose/components/search.tsx | 5 ++++- src/features/explore/useSearchTokens.ts | 14 +++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/features/compose/components/search.tsx b/src/features/compose/components/search.tsx index a93430ff4..863e93f5a 100644 --- a/src/features/compose/components/search.tsx +++ b/src/features/compose/components/search.tsx @@ -17,6 +17,7 @@ import { import AutosuggestAccountInput from 'soapbox/components/autosuggest-account-input.tsx'; import Input from 'soapbox/components/ui/input.tsx'; import SvgIcon from 'soapbox/components/ui/svg-icon.tsx'; +import { useSearchTokens } from 'soapbox/features/explore/useSearchTokens.ts'; import { useAppDispatch } from 'soapbox/hooks/useAppDispatch.ts'; import { useAppSelector } from 'soapbox/hooks/useAppSelector.ts'; import { selectAccount } from 'soapbox/selectors/index.ts'; @@ -56,6 +57,7 @@ const Search = (props: ISearch) => { const history = useHistory(); const intl = useIntl(); const [inputValue, setInputValue] = useState(''); + const { addToken } = useSearchTokens(); const value = useAppSelector((state) => state.search.value); const submitted = useAppSelector((state) => state.search.submitted); @@ -85,11 +87,12 @@ const Search = (props: ISearch) => { const handleSubmit = () => { if (openInRoute) { + addToken(value); dispatch(setSearchAccount(null)); dispatch(submitSearch()); - history.push('/explore'); } else { + addToken(value); dispatch(submitSearch()); } }; diff --git a/src/features/explore/useSearchTokens.ts b/src/features/explore/useSearchTokens.ts index 9ccd7634f..ec6167551 100644 --- a/src/features/explore/useSearchTokens.ts +++ b/src/features/explore/useSearchTokens.ts @@ -17,18 +17,22 @@ export const useSearchTokens = create()( tokens: new Set(), addToken(token: string): void { - setState((state) => { - return produce(state, (draft) => { - draft.tokens.add(token); + if (token) { + setState((state) => { + return produce(state, (draft) => { + draft.tokens.add(token); + }); }); - }); + } }, addTokens(tokens: string[]): void { setState((state) => { return produce(state, (draft) => { for (const token of tokens) { - draft.tokens.add(token); + if (token) { + draft.tokens.add(token); + } } }); });