Page MenuHomePhorge

D15481.1765029614.diff
No OneTemporary

Size
5 KB
Referenced Files
None
Subscribers
None

D15481.1765029614.diff

diff --git a/lib/hooks/user-identities-hooks.js b/lib/hooks/user-identities-hooks.js
--- a/lib/hooks/user-identities-hooks.js
+++ b/lib/hooks/user-identities-hooks.js
@@ -4,10 +4,12 @@
import * as React from 'react';
import { useFindUserIdentities } from '../actions/find-user-identities-actions.js';
+import { logTypes, useDebugLogs } from '../components/debug-logs-context.js';
import { extractFIDFromUserID } from '../shared/id-utils.js';
import { IdentityClientContext } from '../shared/identity-client-context.js';
import type { FarcasterUser } from '../types/identity-service-types.js';
import type { AccountUserInfo } from '../types/user-types.js';
+import { getMessageForException } from '../utils/errors.js';
import { useSelector } from '../utils/redux-utils.js';
import { useIsFarcasterDCsIntegrationEnabled } from '../utils/services-utils.js';
@@ -154,9 +156,10 @@
function useGetCommFCUsersForFIDs(): GetCommFCUsersForFIDs {
const auxUserInfos = useSelector(state => state.auxUserStore.auxUserInfos);
const userInfos = useSelector(state => state.userStore.userInfos);
+ const { addLog } = useDebugLogs();
const identityClientContext = React.useContext(IdentityClientContext);
- invariant(identityClientContext, 'NeynarClientContext is missing');
+ invariant(identityClientContext, 'IdentityClientContext is missing');
const { identityClient } = identityClientContext;
@@ -181,19 +184,30 @@
}
if (unresolvedFIDs.size > 0) {
- const fetchedInfos = await identityClient.getFarcasterUsers([
- ...unresolvedFIDs,
- ]);
- for (const fcUserInfo of fetchedInfos) {
- fcUsers.set(fcUserInfo.farcasterID, fcUserInfo);
- unresolvedFIDs.delete(fcUserInfo.farcasterID);
+ try {
+ const fetchedInfos = await identityClient.getFarcasterUsers([
+ ...unresolvedFIDs,
+ ]);
+ for (const fcUserInfo of fetchedInfos) {
+ fcUsers.set(fcUserInfo.farcasterID, fcUserInfo);
+ unresolvedFIDs.delete(fcUserInfo.farcasterID);
+ }
+ } catch (error) {
+ addLog(
+ 'Farcaster: Failed to fetch users from Identity service',
+ JSON.stringify({
+ unresolvedFIDsCount: unresolvedFIDs.size,
+ error: getMessageForException(error),
+ }),
+ new Set([logTypes.FARCASTER]),
+ );
}
}
unresolvedFIDs.forEach(missingFID => fcUsers.set(missingFID, undefined));
return fcUsers;
},
- [userInfos, auxUserInfos, identityClient],
+ [userInfos, auxUserInfos, identityClient, addLog],
);
}
diff --git a/lib/shared/farcaster/farcaster-hooks.js b/lib/shared/farcaster/farcaster-hooks.js
--- a/lib/shared/farcaster/farcaster-hooks.js
+++ b/lib/shared/farcaster/farcaster-hooks.js
@@ -40,6 +40,7 @@
import type { GetCommFCUsersForFIDs } from '../../hooks/user-identities-hooks.js';
import { isLoggedIn } from '../../selectors/user-selectors.js';
import { useTunnelbroker } from '../../tunnelbroker/tunnelbroker-context.js';
+import type { FarcasterUser } from '../../types/identity-service-types.js';
import { messageTypes } from '../../types/message-types-enum.js';
import type { RawMessageInfo } from '../../types/message-types.js';
import {
@@ -776,8 +777,8 @@
+newCursor?: ?string,
}> => {
const result: Array<RawMessageInfo> = [];
- const userIDs: Array<string> = [];
const messageIDs = new Set<string>();
+ const identityCache = new Map<string, FarcasterUser | void>();
let batchNumber = 0;
try {
@@ -849,12 +850,22 @@
message,
),
);
- const fcUserInfos = await fetchUsersByFIDs(userFIDs);
+
+ const uncachedFIDs = userFIDs.filter(
+ fid => !identityCache.has(`${fid}`),
+ );
+
+ if (uncachedFIDs.length > 0) {
+ const fetchedUserInfos = await fetchUsersByFIDs(uncachedFIDs);
+ for (const [fid, user] of fetchedUserInfos.entries()) {
+ identityCache.set(fid, user);
+ }
+ }
const rawMessageInfos = farcasterMessages.flatMap(message =>
convertFarcasterMessageToCommMessages(
message,
- fcUserInfos,
+ identityCache,
addLog,
),
);
@@ -872,11 +883,6 @@
);
}
- userIDs.push(
- ...Array.from(fcUserInfos.entries()).map(
- ([fid, user]) => user?.userID ?? userIDFromFID(fid),
- ),
- );
result.push(...rawMessageInfos);
totalMessagesFetched += farcasterMessages.length;
@@ -900,6 +906,10 @@
new Set([logTypes.FARCASTER]),
);
}
+
+ const userIDs = Array.from(identityCache.entries()).map(
+ ([fid, user]) => user?.userID ?? userIDFromFID(fid),
+ );
return {
messages: result,
userIDs: Array.from(new Set(userIDs)),

File Metadata

Mime Type
text/plain
Expires
Sat, Dec 6, 2:00 PM (13 h, 32 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5838310
Default Alt Text
D15481.1765029614.diff (5 KB)

Event Timeline