diff --git a/native/chat/chat-thread-list.react.js b/native/chat/chat-thread-list.react.js --- a/native/chat/chat-thread-list.react.js +++ b/native/chat/chat-thread-list.react.js @@ -7,7 +7,6 @@ View, FlatList, Platform, - TextInput, TouchableWithoutFeedback, BackHandler, } from 'react-native'; @@ -134,10 +133,14 @@ +renderSearch: ( additionalProps?: $Shape<React.ElementConfig<typeof Search>>, ) => React.Node, + +onPressItem: ( + threadInfo: ThreadInfo, + pendingPersonalThreadUserInfo?: UserInfo, + ) => void, + +onPressSeeMoreSidebars: (threadInfo: ThreadInfo) => void, }; class ChatThreadList extends React.PureComponent<Props> { - searchInput: ?React.ElementRef<typeof TextInput>; flatList: ?FlatList<Item>; clearNavigationBlurListener: ?() => mixed; @@ -234,10 +237,6 @@ } }; - searchInputRef = (searchInput: ?React.ElementRef<typeof TextInput>) => { - this.searchInput = searchInput; - }; - renderItem = (row: { item: Item, ... }) => { const item = row.item; if (item.type === 'search') { @@ -254,8 +253,8 @@ return ( <ChatThreadListItem data={item} - onPressItem={this.onPressItem} - onPressSeeMoreSidebars={this.onPressSeeMoreSidebars} + onPressItem={this.props.onPressItem} + onPressSeeMoreSidebars={this.props.onPressSeeMoreSidebars} onSwipeableWillOpen={this.props.onSwipeableWillOpen} currentlyOpenedSwipeableId={this.props.openedSwipeableID} /> @@ -376,28 +375,6 @@ flatListRef = (flatList: ?FlatList<Item>) => { this.flatList = flatList; }; - - onPressItem = ( - threadInfo: ThreadInfo, - pendingPersonalThreadUserInfo?: UserInfo, - ) => { - this.props.onChangeSearchText(''); - if (this.searchInput) { - this.searchInput.blur(); - } - this.props.navigateToThread({ threadInfo, pendingPersonalThreadUserInfo }); - }; - - onPressSeeMoreSidebars = (threadInfo: ThreadInfo) => { - this.props.onChangeSearchText(''); - if (this.searchInput) { - this.searchInput.blur(); - } - this.props.navigation.navigate<'SidebarListModal'>({ - name: SidebarListModalRouteName, - params: { threadInfo }, - }); - }; } const unboundStyles = { @@ -632,6 +609,31 @@ ], ); + const onPressItem = React.useCallback( + (threadInfo: ThreadInfo, pendingPersonalThreadUserInfo?: UserInfo) => { + onChangeSearchText(''); + if (searchInputRef.current) { + searchInputRef.current.blur(); + } + navigateToThread({ threadInfo, pendingPersonalThreadUserInfo }); + }, + [navigateToThread, onChangeSearchText], + ); + + const onPressSeeMoreSidebars = React.useCallback( + (threadInfo: ThreadInfo) => { + onChangeSearchText(''); + if (searchInputRef.current) { + this.searchInputRef.current.blur(); + } + navigation.navigate<'SidebarListModal'>({ + name: SidebarListModalRouteName, + params: { threadInfo }, + }); + }, + [navigation, onChangeSearchText], + ); + return ( <ChatThreadList navigation={navigation} @@ -669,6 +671,8 @@ onSearchCancel={onSearchCancel} onSearchFocus={onSearchFocus} renderSearch={renderSearch} + onPressItem={onPressItem} + onPressSeeMoreSidebars={onPressSeeMoreSidebars} /> ); }