Changeset View
Changeset View
Standalone View
Standalone View
lib/hooks/search-sidebars.js
Show All 15 Lines | |||||
function useSearchSidebars( | function useSearchSidebars( | ||||
threadInfo: ThreadInfo, | threadInfo: ThreadInfo, | ||||
): { | ): { | ||||
+listData: $ReadOnlyArray<SidebarInfo>, | +listData: $ReadOnlyArray<SidebarInfo>, | ||||
+searchState: SidebarSearchState, | +searchState: SidebarSearchState, | ||||
+setSearchState: SetState<SidebarSearchState>, | +setSearchState: SetState<SidebarSearchState>, | ||||
+onChangeSearchInputText: (text: string) => mixed, | +onChangeSearchInputText: (text: string) => mixed, | ||||
+clearQuery: (event: SyntheticEvent<HTMLAnchorElement>) => void, | |||||
} { | } { | ||||
const [searchState, setSearchState] = React.useState({ | const [searchState, setSearchState] = React.useState({ | ||||
text: '', | text: '', | ||||
results: new Set<string>(), | results: new Set<string>(), | ||||
}); | }); | ||||
const userInfos = useSelector(state => state.userStore.userInfos); | const userInfos = useSelector(state => state.userStore.userInfos); | ||||
Show All 30 Lines | (text: string) => { | ||||
setSearchState({ | setSearchState({ | ||||
text, | text, | ||||
results: new Set(searchIndex.getSearchResults(text)), | results: new Set(searchIndex.getSearchResults(text)), | ||||
}); | }); | ||||
}, | }, | ||||
[searchIndex, setSearchState], | [searchIndex, setSearchState], | ||||
); | ); | ||||
const clearQuery = React.useCallback( | |||||
(event: SyntheticEvent<HTMLAnchorElement>) => { | |||||
event.preventDefault(); | |||||
setSearchState({ text: '', results: new Set() }); | |||||
}, | |||||
[setSearchState], | |||||
); | |||||
return React.useMemo( | return React.useMemo( | ||||
() => ({ | () => ({ | ||||
listData, | listData, | ||||
searchState, | searchState, | ||||
setSearchState, | setSearchState, | ||||
onChangeSearchInputText, | onChangeSearchInputText, | ||||
clearQuery, | |||||
}), | }), | ||||
[listData, setSearchState, searchState, onChangeSearchInputText], | [ | ||||
listData, | |||||
setSearchState, | |||||
searchState, | |||||
onChangeSearchInputText, | |||||
clearQuery, | |||||
], | |||||
); | ); | ||||
} | } | ||||
export { useSearchSidebars }; | export { useSearchSidebars }; |