Page MenuHomePhorge

D15279.1765071627.diff
No OneTemporary

Size
3 KB
Referenced Files
None
Subscribers
None

D15279.1765071627.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
@@ -2,7 +2,8 @@
import * as React from 'react';
-import { messageID } from './id-utils.js';
+import { useGetFarcasterDirectCastUsers } from './farcaster/farcaster-api.js';
+import { messageID, userIDFromFID } from './id-utils.js';
import SearchIndex from './search-index.js';
import {
getContainingThreadID,
@@ -421,12 +422,15 @@
type UseSearchUsersOptions = {
+includeViewer?: ?boolean,
+ +searchFarcaster?: ?boolean,
};
function useSearchUsers(
usernameInputText: string,
options?: ?UseSearchUsersOptions,
): $ReadOnlyArray<GlobalAccountUserInfo> {
const includeViewer = !!options?.includeViewer;
+ const searchFarcaster = !!options?.searchFarcaster;
+
const currentUserID = useSelector(
state => state.currentUserInfo && state.currentUserInfo.id,
);
@@ -453,6 +457,8 @@
sendPrefixQuery: callIdentitySearchUsers,
} = useIdentitySearch();
+ const findFarcasterDCUsers = useGetFarcasterDirectCastUsers();
+
const dispatchActionPromise = useDispatchActionPromise();
React.useEffect(() => {
@@ -461,21 +467,54 @@
return;
}
const searchUsersPromise = (async () => {
- if (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 foundInfos: Array<GlobalAccountUserInfo> = [];
+
+ const identityPromise = (async () => {
+ if (identitySearchSocketConnected) {
+ try {
+ const identitySearchResult = await callIdentitySearchUsers(
+ forwardLookupSearchText,
+ );
+ const userInfos = identitySearchResult.map(user => ({
+ id: user.userID,
+ username: user.username,
+ avatar: null,
+ }));
+ foundInfos.push(...userInfos);
+ } catch (err) {
+ console.error('identity search error', err);
+ }
+ }
+ })();
+
+ const farcasterPromise = (async () => {
+ if (searchFarcaster) {
+ try {
+ const fcSearchResult = await findFarcasterDCUsers({
+ q: forwardLookupSearchText,
+ });
+ const userInfos = fcSearchResult.result.users.map(fcUser => ({
+ id: userIDFromFID(fcUser.fid.toString()),
+ username: fcUser.username ?? 'anonymous',
+ avatar: fcUser.pfp
+ ? {
+ type: 'image',
+ uri: fcUser.pfp.url,
+ }
+ : null,
+ }));
+ foundInfos.push(...userInfos);
+ } catch (err) {
+ console.error('farcaster user search error', err);
+ }
}
+ })();
+
+ await Promise.all([identityPromise, farcasterPromise]);
+
+ if (foundInfos.length > 0) {
+ setSearchResultsFromServer(foundInfos);
+ return;
}
const { userInfos: keyserverSearchResult } =
await callLegacyAshoatKeyserverSearchUsers(forwardLookupSearchText);
@@ -489,6 +528,8 @@
identitySearchSocketConnected,
dispatchActionPromise,
forwardLookupSearchText,
+ findFarcasterDCUsers,
+ searchFarcaster,
]);
return searchResults;
}

File Metadata

Mime Type
text/plain
Expires
Sun, Dec 7, 1:40 AM (23 h, 9 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5842001
Default Alt Text
D15279.1765071627.diff (3 KB)

Event Timeline