diff --git a/lib/identity-search/identity-search-context.js b/lib/identity-search/identity-search-context.js --- a/lib/identity-search/identity-search-context.js +++ b/lib/identity-search/identity-search-context.js @@ -16,7 +16,6 @@ identitySearchMessageToServerTypes, identitySearchMessageToClientValidator, } from '../types/identity-search/messages.js'; -import { identitySearchMessageToServerTypes } from '../types/identity-search/messages.js'; import { type SearchQuery, type Prefix, 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,12 +19,14 @@ } 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, } from '../selectors/chat-selectors.js'; import { useUserSearchIndex } from '../selectors/nav-selectors.js'; import { relationshipBlockedInEitherDirection } from '../shared/relationship-utils.js'; +import type { User } from '../types/identity-search/search-response-types.js'; import type { MessageInfo, RawMessageInfo } from '../types/message-types.js'; import type { ThreadInfo } from '../types/minimally-encoded-thread-permissions-types.js'; import { userRelationshipStatus } from '../types/relationship-types.js'; @@ -369,6 +371,42 @@ return usernameToSearch; } +function useSearchIdentityUsers( + usernameInputText: string, +): $ReadOnlyArray { + const currentUserID = useSelector( + state => state.currentUserInfo && state.currentUserInfo.id, + ); + + const { sendPrefixQuery } = useIdentitySearch(); + const [searchResults, setSearchResults] = React.useState( + ([]: $ReadOnlyArray), + ); + + const forwardLookupSearchText = useForwardLookupSearchText(usernameInputText); + + React.useEffect(() => { + if (forwardLookupSearchText.length === 0) { + setSearchResults([]); + return; + } + + void (async () => { + try { + const result = await sendPrefixQuery(forwardLookupSearchText); + setSearchResults( + result.filter(({ userID }) => userID !== currentUserID), + ); + } catch (err) { + console.error(err); + setSearchResults([]); + } + })(); + }, [currentUserID, forwardLookupSearchText, sendPrefixQuery]); + + return searchResults; +} + function useSearchUsers( usernameInputText: string, ): $ReadOnlyArray { @@ -446,6 +484,7 @@ notFriendNotice, useSearchMessages, useSearchUsers, + useSearchIdentityUsers, filterChatMessageInfosForSearch, useForwardLookupSearchText, };