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);
+ },
+ );