Page MenuHomePhorge

D11058.1767224902.diff
No OneTemporary

Size
12 KB
Referenced Files
None
Subscribers
None

D11058.1767224902.diff

diff --git a/lib/shared/search-utils.js b/lib/shared/search-utils.js
--- a/lib/shared/search-utils.js
+++ b/lib/shared/search-utils.js
@@ -19,6 +19,7 @@
} from '../actions/user-actions.js';
import { ENSCacheContext } from '../components/ens-cache-provider.react.js';
import genesis from '../facts/genesis.js';
+import { useIdentitySearch } from '../identity-search/identity-search-context.js';
import type {
ChatMessageInfoItem,
MessageListData,
@@ -40,6 +41,7 @@
import { values } from '../utils/objects.js';
import { useDispatchActionPromise } from '../utils/redux-promise-utils.js';
import { useSelector } from '../utils/redux-utils.js';
+import { usingCommServicesAccessToken } from '../utils/services-utils.js';
const notFriendNotice = 'not friend';
@@ -377,36 +379,61 @@
);
const forwardLookupSearchText = useForwardLookupSearchText(usernameInputText);
- const [serverSearchResults, setServerSearchResults] = React.useState<
+ const [searchResults, setSearchResults] = React.useState<
$ReadOnlyArray<GlobalAccountUserInfo>,
>([]);
- const callSearchUsers = useLegacyAshoatKeyserverCall(searchUsers);
+ const setSearchResultsFromServer = React.useCallback(
+ (userInfos: $ReadOnlyArray<GlobalAccountUserInfo>) => {
+ setSearchResults(userInfos.filter(({ id }) => id !== currentUserID));
+ },
+ [currentUserID],
+ );
+
+ const callLegacyAshoatKeyserverSearchUsers =
+ useLegacyAshoatKeyserverCall(searchUsers);
+ const {
+ connected: identitySearchSocketConnected,
+ sendPrefixQuery: callIdentitySearchUsers,
+ } = useIdentitySearch();
+
const dispatchActionPromise = useDispatchActionPromise();
+
React.useEffect(() => {
if (forwardLookupSearchText.length === 0) {
- setServerSearchResults([]);
+ setSearchResults([]);
return;
}
-
const searchUsersPromise = (async () => {
- try {
- const { userInfos } = await callSearchUsers(forwardLookupSearchText);
- setServerSearchResults(
- userInfos.filter(({ id }) => id !== currentUserID),
- );
- } catch (err) {
- setServerSearchResults([]);
+ if (usingCommServicesAccessToken && identitySearchSocketConnected) {
+ try {
+ const identitySearchResult = await callIdentitySearchUsers(
+ forwardLookupSearchText,
+ );
+ const userInfos = identitySearchResult.map(user => ({
+ id: user.userID,
+ username: user.username,
+ avatar: null,
+ }));
+ setSearchResultsFromServer(userInfos);
+ return;
+ } catch (err) {
+ console.error(err);
+ }
}
+ const { userInfos: keyserverSearchResult } =
+ await callLegacyAshoatKeyserverSearchUsers(forwardLookupSearchText);
+ setSearchResultsFromServer(keyserverSearchResult);
})();
void dispatchActionPromise(searchUsersActionTypes, searchUsersPromise);
}, [
- callSearchUsers,
- currentUserID,
+ setSearchResultsFromServer,
+ callLegacyAshoatKeyserverSearchUsers,
+ callIdentitySearchUsers,
+ identitySearchSocketConnected,
dispatchActionPromise,
forwardLookupSearchText,
]);
-
- return serverSearchResults;
+ return searchResults;
}
function filterChatMessageInfosForSearch(
diff --git a/native/root.react.js b/native/root.react.js
--- a/native/root.react.js
+++ b/native/root.react.js
@@ -31,6 +31,7 @@
import { MediaCacheProvider } from 'lib/components/media-cache-provider.react.js';
import PrekeysHandler from 'lib/components/prekeys-handler.react.js';
import { StaffContextProvider } from 'lib/components/staff-provider.react.js';
+import { IdentitySearchProvider } from 'lib/identity-search/identity-search-context.js';
import { CallKeyserverEndpointProvider } from 'lib/keyserver-conn/call-keyserver-endpoint-provider.react.js';
import { TunnelbrokerProvider } from 'lib/tunnelbroker/tunnelbroker-context.js';
import { actionLogger } from 'lib/utils/action-logger.js';
@@ -304,56 +305,60 @@
<IdentityServiceContextProvider>
<OlmSessionCreatorProvider>
<TunnelbrokerProvider initMessage={tunnelbrokerInitMessage}>
- <FeatureFlagsProvider>
- <NavContext.Provider value={navContext}>
- <RootContext.Provider value={rootContext}>
- <InputStateContainer>
- <MessageEditingContextProvider>
- <SafeAreaProvider initialMetrics={initialWindowMetrics}>
- <ActionSheetProvider>
- <ENSCacheProvider provider={provider}>
- <MediaCacheProvider
- persistence={filesystemMediaCache}
- >
- <EditUserAvatarProvider>
- <NativeEditThreadAvatarProvider>
- <MarkdownContextProvider>
- <MessageSearchProvider>
- <BottomSheetProvider>
- <RegistrationContextProvider>
- <SQLiteDataHandler />
- <ConnectedStatusBar />
- <ReduxPersistGate
- persistor={getPersistor()}
- >
- {gated}
- </ReduxPersistGate>
- <PersistedStateGate>
- <KeyserverConnectionsHandler
- socketComponent={Socket}
- detectUnsupervisedBackgroundRef={
- detectUnsupervisedBackgroundRef
- }
- />
- <VersionSupportedChecker />
- <PrekeysHandler />
- </PersistedStateGate>
- {navigation}
- </RegistrationContextProvider>
- </BottomSheetProvider>
- </MessageSearchProvider>
- </MarkdownContextProvider>
- </NativeEditThreadAvatarProvider>
- </EditUserAvatarProvider>
- </MediaCacheProvider>
- </ENSCacheProvider>
- </ActionSheetProvider>
- </SafeAreaProvider>
- </MessageEditingContextProvider>
- </InputStateContainer>
- </RootContext.Provider>
- </NavContext.Provider>
- </FeatureFlagsProvider>
+ <IdentitySearchProvider>
+ <FeatureFlagsProvider>
+ <NavContext.Provider value={navContext}>
+ <RootContext.Provider value={rootContext}>
+ <InputStateContainer>
+ <MessageEditingContextProvider>
+ <SafeAreaProvider
+ initialMetrics={initialWindowMetrics}
+ >
+ <ActionSheetProvider>
+ <ENSCacheProvider provider={provider}>
+ <MediaCacheProvider
+ persistence={filesystemMediaCache}
+ >
+ <EditUserAvatarProvider>
+ <NativeEditThreadAvatarProvider>
+ <MarkdownContextProvider>
+ <MessageSearchProvider>
+ <BottomSheetProvider>
+ <RegistrationContextProvider>
+ <SQLiteDataHandler />
+ <ConnectedStatusBar />
+ <ReduxPersistGate
+ persistor={getPersistor()}
+ >
+ {gated}
+ </ReduxPersistGate>
+ <PersistedStateGate>
+ <KeyserverConnectionsHandler
+ socketComponent={Socket}
+ detectUnsupervisedBackgroundRef={
+ detectUnsupervisedBackgroundRef
+ }
+ />
+ <VersionSupportedChecker />
+ <PrekeysHandler />
+ </PersistedStateGate>
+ {navigation}
+ </RegistrationContextProvider>
+ </BottomSheetProvider>
+ </MessageSearchProvider>
+ </MarkdownContextProvider>
+ </NativeEditThreadAvatarProvider>
+ </EditUserAvatarProvider>
+ </MediaCacheProvider>
+ </ENSCacheProvider>
+ </ActionSheetProvider>
+ </SafeAreaProvider>
+ </MessageEditingContextProvider>
+ </InputStateContainer>
+ </RootContext.Provider>
+ </NavContext.Provider>
+ </FeatureFlagsProvider>
+ </IdentitySearchProvider>
</TunnelbrokerProvider>
</OlmSessionCreatorProvider>
</IdentityServiceContextProvider>
diff --git a/web/app.react.js b/web/app.react.js
--- a/web/app.react.js
+++ b/web/app.react.js
@@ -21,6 +21,7 @@
useModalContext,
} from 'lib/components/modal-provider.react.js';
import { StaffContextProvider } from 'lib/components/staff-provider.react.js';
+import { IdentitySearchProvider } from 'lib/identity-search/identity-search-context.js';
import {
createLoadingStatusSelector,
combineLoadingStatuses,
@@ -408,15 +409,17 @@
return (
<AppThemeWrapper>
<TunnelbrokerProvider initMessage={tunnelbrokerInitMessage}>
- <App
- {...props}
- navInfo={navInfo}
- entriesLoadingStatus={entriesLoadingStatus}
- loggedIn={loggedIn}
- activeThreadCurrentlyUnread={activeThreadCurrentlyUnread}
- dispatch={dispatch}
- modals={modals}
- />
+ <IdentitySearchProvider>
+ <App
+ {...props}
+ navInfo={navInfo}
+ entriesLoadingStatus={entriesLoadingStatus}
+ loggedIn={loggedIn}
+ activeThreadCurrentlyUnread={activeThreadCurrentlyUnread}
+ dispatch={dispatch}
+ modals={modals}
+ />
+ </IdentitySearchProvider>
</TunnelbrokerProvider>
</AppThemeWrapper>
);
diff --git a/web/chat/chat-thread-composer.react.js b/web/chat/chat-thread-composer.react.js
--- a/web/chat/chat-thread-composer.react.js
+++ b/web/chat/chat-thread-composer.react.js
@@ -55,13 +55,13 @@
[userInfoInputArray],
);
- const serverSearchResults = useSearchUsers(usernameInputText);
+ const searchResults = useSearchUsers(usernameInputText);
const userListItems = usePotentialMemberItems({
text: usernameInputText,
userInfos: otherUserInfos,
excludeUserIDs: userInfoInputIDs,
- includeServerSearchUsers: serverSearchResults,
+ includeServerSearchUsers: searchResults,
});
const userListItemsWithENSNames = useENSNames(userListItems);

File Metadata

Mime Type
text/plain
Expires
Wed, Dec 31, 11:48 PM (18 h, 36 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5874645
Default Alt Text
D11058.1767224902.diff (12 KB)

Event Timeline