Changeset View
Changeset View
Standalone View
Standalone View
native/chat/sidebar-list-modal.react.js
Show All 29 Lines | type Props = { | ||||
+navigation: RootNavigationProp<'SidebarListModal'>, | +navigation: RootNavigationProp<'SidebarListModal'>, | ||||
+route: NavigationRoute<'SidebarListModal'>, | +route: NavigationRoute<'SidebarListModal'>, | ||||
}; | }; | ||||
function SidebarListModal(props: Props): React.Node { | function SidebarListModal(props: Props): React.Node { | ||||
const { | const { | ||||
listData, | listData, | ||||
searchState, | searchState, | ||||
setSearchState, | setSearchState, | ||||
searchIndex, | onChangeSearchInputText, | ||||
} = useSearchSidebars(props.route.params.threadInfo); | } = useSearchSidebars(props.route.params.threadInfo); | ||||
const onChangeSearchText = React.useCallback( | |||||
(searchText: string) => | |||||
setSearchState({ | |||||
text: searchText, | |||||
results: new Set(searchIndex.getSearchResults(searchText)), | |||||
}), | |||||
[searchIndex, setSearchState], | |||||
); | |||||
const searchTextInputRef = React.useRef(); | const searchTextInputRef = React.useRef(); | ||||
const setSearchTextInputRef = React.useCallback( | const setSearchTextInputRef = React.useCallback( | ||||
async (textInput: ?React.ElementRef<typeof TextInput>) => { | async (textInput: ?React.ElementRef<typeof TextInput>) => { | ||||
searchTextInputRef.current = textInput; | searchTextInputRef.current = textInput; | ||||
if (!textInput) { | if (!textInput) { | ||||
return; | return; | ||||
} | } | ||||
await waitForModalInputFocus(); | await waitForModalInputFocus(); | ||||
Show All 32 Lines | const renderItem = React.useCallback( | ||||
[onPressItem], | [onPressItem], | ||||
); | ); | ||||
const indicatorStyle = useIndicatorStyle(); | const indicatorStyle = useIndicatorStyle(); | ||||
return ( | return ( | ||||
<Modal> | <Modal> | ||||
<Search | <Search | ||||
searchText={searchState.text} | searchText={searchState.text} | ||||
onChangeText={onChangeSearchText} | onChangeText={onChangeSearchInputText} | ||||
containerStyle={styles.search} | containerStyle={styles.search} | ||||
placeholder="Search sidebars" | placeholder="Search sidebars" | ||||
ref={setSearchTextInputRef} | ref={setSearchTextInputRef} | ||||
/> | /> | ||||
<FlatList | <FlatList | ||||
data={listData} | data={listData} | ||||
renderItem={renderItem} | renderItem={renderItem} | ||||
keyExtractor={keyExtractor} | keyExtractor={keyExtractor} | ||||
Show All 21 Lines |