Page MenuHomePhorge

D15274.1765070043.diff
No OneTemporary

Size
8 KB
Referenced Files
None
Subscribers
None

D15274.1765070043.diff

diff --git a/lib/hooks/thread-hooks.js b/lib/hooks/thread-hooks.js
--- a/lib/hooks/thread-hooks.js
+++ b/lib/hooks/thread-hooks.js
@@ -5,6 +5,7 @@
import uuid from 'uuid';
import { useChatMentionContext } from './chat-mention-hooks.js';
+import { useGetCommFCUsersForFIDs } from './user-identities-hooks.js';
import genesis from '../facts/genesis.js';
import { extractKeyserverIDFromID } from '../keyserver-conn/keyserver-call-utils.js';
import { useKeyserverCall } from '../keyserver-conn/keyserver-call.js';
@@ -51,7 +52,7 @@
} from '../types/thread-types.js';
import { values } from '../utils/objects.js';
import { useDispatchActionPromise } from '../utils/redux-promise-utils.js';
-import { useSelector } from '../utils/redux-utils.js';
+import { useSelector, useDispatch } from '../utils/redux-utils.js';
function useChildThreadInfosMap(): {
+[id: string]: $ReadOnlyArray<ResolvedThreadInfo>,
@@ -238,6 +239,8 @@
useUpdateFarcasterGroupNameAndDescription();
const fetchFarcasterConversation = useFetchFarcasterConversation();
const fetchFarcasterMessages = useFetchFarcasterMessages();
+ const fetchUsersByFIDs = useGetCommFCUsersForFIDs();
+ const dispatch = useDispatch();
return React.useCallback(
async (input: UseChangeThreadSettingsInput) =>
@@ -249,6 +252,8 @@
updateFarcasterGroupNameAndDescription,
fetchFarcasterConversation,
fetchFarcasterMessages,
+ fetchUsersByFIDs,
+ dispatch,
},
),
[
@@ -258,6 +263,8 @@
updateFarcasterGroupNameAndDescription,
viewerID,
fetchFarcasterMessages,
+ fetchUsersByFIDs,
+ dispatch,
],
);
}
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
@@ -11,8 +11,12 @@
useSendFarcasterTextMessage,
} from './farcaster-api.js';
import type { FarcasterConversation } from './farcaster-conversation-types.js';
+import { farcasterMessageValidator } from './farcaster-messages-types.js';
+import { processNewUserIDsActionType } from '../../actions/user-actions.js';
+import { useGetCommFCUsersForFIDs } from '../../hooks/user-identities-hooks.js';
import { messageTruncationStatus } from '../../types/message-types.js';
import { updateTypes } from '../../types/update-types-enum.js';
+import { extractFarcasterIDsFromPayload } from '../../utils/conversion-utils.js';
import { convertFarcasterMessageToCommMessages } from '../../utils/convert-farcaster-message-to-comm-messages.js';
import { createFarcasterRawThreadInfo } from '../../utils/create-farcaster-raw-thread-info.js';
import { useSetFarcasterDCsLoaded } from '../../utils/farcaster-utils.js';
@@ -126,6 +130,7 @@
const [inProgress, setInProgress] = React.useState(false);
const setFarcasterDCsLoaded = useSetFarcasterDCsLoaded();
+ const fetchUsersByFIDs = useGetCommFCUsersForFIDs();
React.useEffect(() => {
if (!fullInbox || conversations.length === 0 || inProgress) {
return;
@@ -170,10 +175,29 @@
if (messagesResult) {
const farcasterMessages = messagesResult.result.messages;
- const rawMessageInfos = farcasterMessages.flatMap(
- convertFarcasterMessageToCommMessages,
+
+ const userFIDs = farcasterMessages.flatMap(message =>
+ extractFarcasterIDsFromPayload(
+ farcasterMessageValidator,
+ message,
+ ),
+ );
+ const fcUserInfos = await fetchUsersByFIDs(userFIDs);
+
+ const rawMessageInfos = farcasterMessages.flatMap(message =>
+ convertFarcasterMessageToCommMessages(message, fcUserInfos),
);
+ if (fcUserInfos.size > 0) {
+ const newUserIDs = Array.from(fcUserInfos.values())
+ .filter(Boolean)
+ .map(user => user.userID);
+ dispatch({
+ type: processNewUserIDsActionType,
+ payload: { userIDs: newUserIDs },
+ });
+ }
+
if (rawMessageInfos.length > 0) {
const payload =
totalMessagesFetched === 0
@@ -224,6 +248,7 @@
sendFarcasterTextMessage,
utils,
setFarcasterDCsLoaded,
+ fetchUsersByFIDs,
]);
return React.useCallback(
diff --git a/lib/shared/threads/protocols/farcaster-thread-protocol.js b/lib/shared/threads/protocols/farcaster-thread-protocol.js
--- a/lib/shared/threads/protocols/farcaster-thread-protocol.js
+++ b/lib/shared/threads/protocols/farcaster-thread-protocol.js
@@ -37,9 +37,11 @@
} from '../../../types/thread-types.js';
import { updateTypes } from '../../../types/update-types-enum.js';
import { type ThreadUpdateInfo } from '../../../types/update-types.js';
+import { extractFarcasterIDsFromPayload } from '../../../utils/conversion-utils.js';
import { convertFarcasterMessageToCommMessages } from '../../../utils/convert-farcaster-message-to-comm-messages.js';
import { createFarcasterRawThreadInfo } from '../../../utils/create-farcaster-raw-thread-info.js';
import { farcasterThreadIDRegExp } from '../../../utils/validation-utils.js';
+import { farcasterMessageValidator } from '../../farcaster/farcaster-messages-types.js';
import { conversationIDFromFarcasterThreadID } from '../../id-utils.js';
import { messageNotifyTypes } from '../../messages/message-spec.js';
import { getSingleOtherUser } from '../../thread-utils.js';
@@ -124,6 +126,7 @@
updateFarcasterGroupNameAndDescription,
fetchFarcasterConversation,
fetchFarcasterMessages,
+ fetchUsersByFIDs,
} = utils;
invariant(
!changes.color,
@@ -178,9 +181,15 @@
const messagesResponse = await fetchFarcasterMessages({
conversationId,
});
- const newMessageInfos = messagesResponse.result.messages.flatMap(
- farcasterMessage =>
- convertFarcasterMessageToCommMessages(farcasterMessage),
+ const farcasterMessages = messagesResponse.result.messages;
+ const userFIDs = farcasterMessages.flatMap(message =>
+ extractFarcasterIDsFromPayload(farcasterMessageValidator, message),
+ );
+
+ const fcUserInfos = await fetchUsersByFIDs(userFIDs);
+
+ const newMessageInfos = farcasterMessages.flatMap(farcasterMessage =>
+ convertFarcasterMessageToCommMessages(farcasterMessage, fcUserInfos),
);
return ({
diff --git a/lib/shared/threads/thread-spec.js b/lib/shared/threads/thread-spec.js
--- a/lib/shared/threads/thread-spec.js
+++ b/lib/shared/threads/thread-spec.js
@@ -23,6 +23,7 @@
LeaveThreadInput,
LeaveThreadResult,
} from '../../hooks/thread-hooks.js';
+import type { GetCommFCUsersForFIDs } from '../../hooks/user-identities-hooks.js';
import type { RolePermissionBlobs } from '../../permissions/thread-permissions.js';
import type { ProcessOutboundP2PMessagesResult } from '../../tunnelbroker/peer-to-peer-context.js';
import type { TunnelbrokerSocketState } from '../../tunnelbroker/tunnelbroker-context.js';
@@ -162,6 +163,8 @@
+updateFarcasterGroupNameAndDescription: UpdateFarcasterGroupNameAndDescriptionInput => Promise<void>,
+fetchFarcasterConversation: FetchFarcasterConversationInput => Promise<FetchFarcasterConversationResult>,
+fetchFarcasterMessages: FetchFarcasterMessageInput => Promise<FetchFarcasterMessageResult>,
+ +fetchUsersByFIDs: GetCommFCUsersForFIDs,
+ +dispatch: Dispatch,
};
export type ProtocolCreateEntryInput = {
diff --git a/lib/utils/convert-farcaster-message-to-comm-messages.js b/lib/utils/convert-farcaster-message-to-comm-messages.js
--- a/lib/utils/convert-farcaster-message-to-comm-messages.js
+++ b/lib/utils/convert-farcaster-message-to-comm-messages.js
@@ -1,6 +1,7 @@
// @flow
import uuid from 'uuid';
+import type { FCUserInfos } from '../hooks/user-identities-hooks.js';
import type { FarcasterMessage } from '../shared/farcaster/farcaster-messages-types.js';
import { farcasterThreadIDFromConversationID } from '../shared/id-utils.js';
import type { Media } from '../types/media-types.js';
@@ -9,8 +10,11 @@
function convertFarcasterMessageToCommMessages(
farcasterMessage: FarcasterMessage,
+ fcUserInfos: FCUserInfos,
): $ReadOnlyArray<RawMessageInfo> {
- const creatorID = `${farcasterMessage.senderFid}`;
+ const senderFid = farcasterMessage.senderFid.toString();
+ const creatorID = fcUserInfos.get(senderFid)?.userID ?? `FID#${senderFid}`;
+
const threadID = farcasterThreadIDFromConversationID(
farcasterMessage.conversationId,
);
@@ -18,7 +22,10 @@
farcasterMessage.type === 'group_membership_addition' &&
farcasterMessage.actionTargetUserContext?.fid
) {
- const addedUser = `${farcasterMessage.actionTargetUserContext.fid}`;
+ const addedUserFID =
+ farcasterMessage.actionTargetUserContext.fid.toString();
+ const addedUser =
+ fcUserInfos.get(addedUserFID)?.userID ?? `FID#${addedUserFID}`;
return [
{
id: farcasterMessage.messageId,

File Metadata

Mime Type
text/plain
Expires
Sun, Dec 7, 1:14 AM (10 h, 16 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5841914
Default Alt Text
D15274.1765070043.diff (8 KB)

Event Timeline