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,
@@ -67,6 +68,7 @@
import VisibilityHandler from './redux/visibility-handler.react.js';
import history from './router-history.js';
import { MessageSearchStateProvider } from './search/message-search-state-provider.react.js';
+import { createIdentitySearchAuthMessage } from './selectors/identity-search-selectors.js';
import { createTunnelbrokerInitMessage } from './selectors/tunnelbroker-selectors.js';
import AccountSettings from './settings/account-settings.react.js';
import DangerZone from './settings/danger-zone.react.js';
@@ -420,10 +422,16 @@
);
function AppWithProvider(props: BaseProps): React.Node {
+ const identitySearchAuthMessage = useSelector(
+ createIdentitySearchAuthMessage,
+ );
+
return (
-
-
-
+
+
+
+
+
);
}
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
@@ -12,6 +12,7 @@
import {
usePotentialMemberItems,
useSearchUsers,
+ useSearchIdentityUsers,
notFriendNotice,
} from 'lib/shared/search-utils.js';
import {
@@ -22,6 +23,7 @@
import { threadTypes } from 'lib/types/thread-types-enum.js';
import type { AccountUserInfo, UserListItem } from 'lib/types/user-types.js';
import { useDispatch } from 'lib/utils/redux-utils.js';
+import { usingCommServicesAccessToken } from 'lib/utils/services-utils.js';
import css from './chat-thread-composer.css';
import UserAvatar from '../avatars/user-avatar.react.js';
@@ -55,13 +57,21 @@
[userInfoInputArray],
);
+ let searchResults;
+ const identitySearchResults = useSearchIdentityUsers(usernameInputText);
const serverSearchResults = useSearchUsers(usernameInputText);
+ if (usingCommServicesAccessToken) {
+ searchResults = identitySearchResults;
+ } else {
+ searchResults = serverSearchResults;
+ }
+
const userListItems = usePotentialMemberItems({
text: usernameInputText,
userInfos: otherUserInfos,
excludeUserIDs: userInfoInputIDs,
- includeServerSearchUsers: serverSearchResults,
+ includeServerSearchUsers: searchResults,
});
const userListItemsWithENSNames = useENSNames(userListItems);
diff --git a/web/selectors/identity-search-selectors.js b/web/selectors/identity-search-selectors.js
new file mode 100644
--- /dev/null
+++ b/web/selectors/identity-search-selectors.js
@@ -0,0 +1,29 @@
+// @flow
+
+import { createSelector } from 'reselect';
+
+import type { AuthMessage } from 'lib/types/identity-search/auth-message-types.js';
+
+import type { AppState } from '../redux/redux-setup.js';
+
+export const createIdentitySearchAuthMessage: AppState => ?AuthMessage =
+ createSelector(
+ (state: AppState) => state.cryptoStore?.primaryIdentityKeys?.ed25519,
+ (state: AppState) => state.commServicesAccessToken,
+ (state: AppState) => state.currentUserInfo?.id,
+ (
+ deviceID: ?string,
+ accessToken: ?string,
+ userID: ?string,
+ ): ?AuthMessage => {
+ if (!deviceID || !accessToken || !userID) {
+ return null;
+ }
+ return ({
+ type: 'AuthMessage',
+ deviceID,
+ accessToken,
+ userID,
+ }: AuthMessage);
+ },
+ );
diff --git a/web/settings/relationship/add-users-list.react.js b/web/settings/relationship/add-users-list.react.js
--- a/web/settings/relationship/add-users-list.react.js
+++ b/web/settings/relationship/add-users-list.react.js
@@ -9,7 +9,10 @@
import { useENSNames } from 'lib/hooks/ens-cache.js';
import { createLoadingStatusSelector } from 'lib/selectors/loading-selectors.js';
import { useUserSearchIndex } from 'lib/selectors/nav-selectors.js';
-import { useSearchUsers } from 'lib/shared/search-utils.js';
+import {
+ useSearchUsers,
+ useSearchIdentityUsers,
+} from 'lib/shared/search-utils.js';
import type {
UserRelationshipStatus,
RelationshipAction,
@@ -21,6 +24,7 @@
import { useLegacyAshoatKeyserverCall } from 'lib/utils/action-utils.js';
import { values } from 'lib/utils/objects.js';
import { useDispatchActionPromise } from 'lib/utils/redux-promise-utils.js';
+import { usingCommServicesAccessToken } from 'lib/utils/services-utils.js';
import AddUsersListItem from './add-users-list-item.react.js';
import css from './add-users-list.css';
@@ -67,14 +71,22 @@
);
}, [searchText, userStoreSearchIndex]);
+ let searchResults;
+ const identitySearchResults = useSearchIdentityUsers(searchText);
const serverSearchResults = useSearchUsers(searchText);
+ if (usingCommServicesAccessToken) {
+ searchResults = identitySearchResults;
+ } else {
+ searchResults = serverSearchResults;
+ }
+
const searchTextPresent = searchText.length > 0;
const mergedUserInfos = React.useMemo(() => {
const mergedInfos: { [string]: GlobalAccountUserInfo | AccountUserInfo } =
{};
- for (const userInfo of serverSearchResults) {
+ for (const userInfo of searchResults) {
mergedInfos[userInfo.id] = userInfo;
}
@@ -89,12 +101,7 @@
}
return mergedInfos;
- }, [
- searchTextPresent,
- serverSearchResults,
- userInfos,
- userStoreSearchResults,
- ]);
+ }, [searchTextPresent, searchResults, userInfos, userStoreSearchResults]);
const sortedUsers = React.useMemo(
() =>