Page MenuHomePhabricator

D9134.diff
No OneTemporary

D9134.diff

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
@@ -16,7 +16,7 @@
import Animated from 'react-native-reanimated';
import { createSelector } from 'reselect';
-import { searchUsers } from 'lib/actions/user-actions.js';
+import { searchUsers as searchUsersEndpoint } from 'lib/actions/user-actions.js';
import { useLoggedInUserInfo } from 'lib/hooks/account-hooks.js';
import {
type ChatThreadItem,
@@ -30,7 +30,6 @@
getThreadListSearchResults,
} from 'lib/shared/thread-utils.js';
import type { SetState } from 'lib/types/hook-types.js';
-import type { UserSearchResult } from 'lib/types/search-types.js';
import { threadTypes } from 'lib/types/thread-types-enum.js';
import type { ThreadInfo } from 'lib/types/thread-types.js';
import type {
@@ -112,8 +111,6 @@
+indicatorStyle: IndicatorStyle,
+usersWithPersonalThread: $ReadOnlySet<string>,
+navigateToThread: (params: MessageListParams) => void,
- // async functions that hit server APIs
- +searchUsers: (usernamePrefix: string) => Promise<UserSearchResult>,
+searchText: string,
+setSearchText: SetState<string>,
+searchStatus: SearchStatus,
@@ -129,6 +126,10 @@
+searchCancelButtonOpen: Value,
+searchCancelButtonProgress: Node,
+searchCancelButtonOffset: Node,
+ +searchUsers: (
+ usernamePrefix: string,
+ ) => Promise<$ReadOnlyArray<GlobalAccountUserInfo>>,
+ +onChangeSearchText: (searchText: string) => Promise<void>,
};
class ChatThreadList extends React.PureComponent<Props> {
@@ -255,7 +256,7 @@
};
onSearchCancel = () => {
- this.onChangeSearchText('');
+ this.props.onChangeSearchText('');
this.clearSearch();
};
@@ -285,7 +286,7 @@
<AnimatedView style={searchBoxStyle}>
<Search
searchText={this.props.searchText}
- onChangeText={this.onChangeSearchText}
+ onChangeText={this.props.onChangeSearchText}
containerStyle={this.props.styles.search}
onBlur={this.onSearchBlur}
placeholder="Search chats"
@@ -497,33 +498,11 @@
}
};
- async searchUsers(usernamePrefix: string) {
- if (usernamePrefix.length === 0) {
- return [];
- }
-
- const { userInfos } = await this.props.searchUsers(usernamePrefix);
- return userInfos.filter(
- info =>
- !this.props.usersWithPersonalThread.has(info.id) &&
- info.id !== this.props.loggedInUserInfo?.id,
- );
- }
-
- onChangeSearchText = async (searchText: string) => {
- const results = this.props.threadSearchIndex.getSearchResults(searchText);
- this.props.setSearchText(searchText);
- this.props.setThreadsSearchResults(new Set(results));
- this.props.setNumItemsToDisplay(25);
- const usersSearchResults = await this.searchUsers(searchText);
- this.props.setUsersSearchResults(usersSearchResults);
- };
-
onPressItem = (
threadInfo: ThreadInfo,
pendingPersonalThreadUserInfo?: UserInfo,
) => {
- this.onChangeSearchText('');
+ this.props.onChangeSearchText('');
if (this.searchInput) {
this.searchInput.blur();
}
@@ -531,7 +510,7 @@
};
onPressSeeMoreSidebars = (threadInfo: ThreadInfo) => {
- this.onChangeSearchText('');
+ this.props.onChangeSearchText('');
if (this.searchInput) {
this.searchInput.blur();
}
@@ -606,7 +585,7 @@
const threadSearchIndex = useGlobalThreadSearchIndex();
const styles = useStyles(unboundStyles);
const indicatorStyle = useSelector(indicatorStyleSelector);
- const callSearchUsers = useServerCall(searchUsers);
+ const callSearchUsers = useServerCall(searchUsersEndpoint);
const usersWithPersonalThread = useSelector(usersWithPersonalThreadSelector);
const navigateToThread = useNavigateToThread();
@@ -642,6 +621,34 @@
[searchCancelButtonProgress],
);
+ const searchUsers = React.useCallback(
+ async (usernamePrefix: string) => {
+ if (usernamePrefix.length === 0) {
+ return [];
+ }
+
+ const { userInfos } = await callSearchUsers(usernamePrefix);
+ return userInfos.filter(
+ info =>
+ !usersWithPersonalThread.has(info.id) &&
+ info.id !== loggedInUserInfo?.id,
+ );
+ },
+ [callSearchUsers, loggedInUserInfo?.id, usersWithPersonalThread],
+ );
+
+ const onChangeSearchText = React.useCallback(
+ async (updatedSearchText: string) => {
+ const results = threadSearchIndex.getSearchResults(updatedSearchText);
+ setSearchText(updatedSearchText);
+ setThreadsSearchResults(new Set(results));
+ setNumItemsToDisplay(25);
+ const searchResults = await searchUsers(updatedSearchText);
+ setUsersSearchResults(searchResults);
+ },
+ [searchUsers, threadSearchIndex],
+ );
+
return (
<ChatThreadList
navigation={navigation}
@@ -653,7 +660,6 @@
threadSearchIndex={threadSearchIndex}
styles={styles}
indicatorStyle={indicatorStyle}
- searchUsers={callSearchUsers}
usersWithPersonalThread={usersWithPersonalThread}
navigateToThread={navigateToThread}
searchText={searchText}
@@ -671,6 +677,8 @@
searchCancelButtonOpen={searchCancelButtonOpen}
searchCancelButtonProgress={searchCancelButtonProgress}
searchCancelButtonOffset={searchCancelButtonOffset}
+ searchUsers={searchUsers}
+ onChangeSearchText={onChangeSearchText}
/>
);
}

File Metadata

Mime Type
text/plain
Expires
Wed, Oct 23, 9:32 PM (22 h, 24 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2354448
Default Alt Text
D9134.diff (5 KB)

Event Timeline