diff --git a/native/components/community-list.react.js b/native/components/community-list.react.js --- a/native/components/community-list.react.js +++ b/native/components/community-list.react.js @@ -30,9 +30,8 @@ +searchIndex: SearchIndex, }; -const keyExtractor = ( - threadInfoAndFarcasterChannelID: ThreadInfoAndFarcasterChannelID, -): string => threadInfoAndFarcasterChannelID.threadInfo.id; +const keyExtractor = (item: ThreadInfoAndFarcasterChannelID): string => + item.threadInfo.id; const getItemLayout = ( data: ?$ReadOnlyArray, @@ -48,13 +47,14 @@ const [searchText, setSearchText] = React.useState(''); const [searchResults, setSearchResults] = React.useState< - $ReadOnlyArray, + $ReadOnlyArray, >([]); - const listData = React.useMemo( - () => (searchText ? searchResults : threadInfosAndFCChannelIDs), - [searchText, searchResults, threadInfosAndFCChannelIDs], - ); + const listData: $ReadOnlyArray = + React.useMemo( + () => (searchText ? searchResults : threadInfosAndFCChannelIDs), + [searchText, searchResults, threadInfosAndFCChannelIDs], + ); const onChangeSearchText = React.useCallback( (text: string) => { @@ -67,8 +67,22 @@ threadInfos, results, ); + + const idToFCChannelID = new Map( + threadInfosAndFCChannelIDs.map(({ threadInfo, farcasterChannelID }) => [ + threadInfo.id, + farcasterChannelID, + ]), + ); + + const fullResults: ThreadInfoAndFarcasterChannelID[] = + threadInfoResults.map(threadInfo => ({ + threadInfo, + farcasterChannelID: idToFCChannelID.get(threadInfo.id), + })); + setSearchText(text); - setSearchResults(threadInfoResults); + setSearchResults(fullResults); }, [searchIndex, threadInfosAndFCChannelIDs], );