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 @@ -126,6 +126,7 @@ ) => Promise<$ReadOnlyArray>, +onChangeSearchText: (searchText: string) => Promise, +scrollPos: { current: number }, + +onScroll: (event: ScrollEvent) => void, }; class ChatThreadList extends React.PureComponent { @@ -419,7 +420,7 @@ extraData={extraData} initialNumToRender={11} keyboardShouldPersistTaps="handled" - onScroll={this.onScroll} + onScroll={this.props.onScroll} style={this.props.styles.flatList} indicatorStyle={this.props.indicatorStyle} scrollEnabled={scrollEnabled} @@ -436,17 +437,6 @@ this.flatList = flatList; }; - onScroll = (event: ScrollEvent) => { - const oldScrollPos = this.props.scrollPos.current; - this.props.scrollPos.current = event.nativeEvent.contentOffset.y; - if (this.props.scrollPos.current !== 0 || oldScrollPos === 0) { - return; - } - if (this.props.searchStatus === 'activating') { - this.props.setSearchStatus('active'); - } - }; - onPressItem = ( threadInfo: ThreadInfo, pendingPersonalThreadUserInfo?: UserInfo, @@ -600,6 +590,20 @@ const scrollPos = React.useRef(0); + const onScroll = React.useCallback( + (event: ScrollEvent) => { + const oldScrollPos = scrollPos.current; + scrollPos.current = event.nativeEvent.contentOffset.y; + if (scrollPos.current !== 0 || oldScrollPos === 0) { + return; + } + if (searchStatus === 'activating') { + setSearchStatus('active'); + } + }, + [searchStatus], + ); + return ( ); }