Page MenuHomePhorge

D15225.1765041708.diff
No OneTemporary

Size
4 KB
Referenced Files
None
Subscribers
None

D15225.1765041708.diff

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
@@ -17,7 +17,10 @@
import { messageTruncationStatus } from '../../types/message-types.js';
import { updateTypes } from '../../types/update-types-enum.js';
import type { ClientUpdateInfo } from '../../types/update-types.js';
-import { createFarcasterRawThreadInfo } from '../../utils/farcaster-utils.js';
+import {
+ convertFarcasterMessageToCommMessages,
+ createFarcasterRawThreadInfo,
+} from '../../utils/farcaster-utils.js';
import { useDispatch } from '../../utils/redux-utils.js';
import { useSendDMOperationUtils } from '../dm-ops/dm-op-utils.js';
@@ -89,11 +92,6 @@
.filter(Boolean)
.map(conversationResult => conversationResult.result.conversation);
- console.log(
- 'Farcaster conversations:',
- JSON.stringify(farcasterConversations, null, 2),
- );
-
const messagePromises: $ReadOnlyArray<
Promise<?FetchFarcasterMessageResult>,
> = farcasterConversations.map(async ({ conversationId }) => {
@@ -113,12 +111,10 @@
.filter(Boolean)
.flatMap(messagesResult => messagesResult.result.messages);
- console.log(
- 'Farcaster messages:',
- JSON.stringify(farcasterMessages, null, 2),
+ const rawMessageInfos = farcasterMessages.flatMap(farcasterMessage =>
+ convertFarcasterMessageToCommMessages(farcasterMessage),
);
- //TODO: dispatch messages
const updates = farcasterConversations
.map(conversation => createFarcasterRawThreadInfo(conversation))
.map(
@@ -136,7 +132,7 @@
dispatch({
type: processFarcasterOpsActionType,
payload: {
- rawMessageInfos: [],
+ rawMessageInfos,
updateInfos: updates,
},
});
diff --git a/lib/utils/farcaster-utils.js b/lib/utils/farcaster-utils.js
--- a/lib/utils/farcaster-utils.js
+++ b/lib/utils/farcaster-utils.js
@@ -19,10 +19,14 @@
import { getOwnPeerDevices } from '../selectors/user-selectors.js';
import { generatePendingThreadColor } from '../shared/color-utils.js';
import type { FarcasterConversation } from '../shared/farcaster/farcaster-conversation-types.js';
+import type { FarcasterMessage } from '../shared/farcaster/farcaster-messages-types.js';
import { IdentityClientContext } from '../shared/identity-client-context.js';
import { PeerToPeerContext } from '../tunnelbroker/peer-to-peer-context.js';
import type { ClientAvatar } from '../types/avatar-types.js';
import { databaseIdentifier } from '../types/database-identifier-types.js';
+import type { Media } from '../types/media-types.js';
+import { messageTypes } from '../types/message-types-enum.js';
+import type { RawMessageInfo } from '../types/message-types.js';
import {
minimallyEncodeRoleInfo,
minimallyEncodeThreadCurrentUserInfo,
@@ -386,6 +390,80 @@
};
}
+function convertFarcasterMessageToCommMessages(
+ farcasterMessage: FarcasterMessage,
+): $ReadOnlyArray<RawMessageInfo> {
+ const creatorID = `${farcasterMessage.senderFid}`;
+ const threadID = farcasterThreadIDFromConversationID(
+ farcasterMessage.conversationId,
+ );
+ if (
+ farcasterMessage.type === 'group_membership_addition' &&
+ farcasterMessage.actionTargetUserContext?.fid
+ ) {
+ const addedUser = `${farcasterMessage.actionTargetUserContext.fid}`;
+ return [
+ {
+ id: farcasterMessage.messageId,
+ type: messageTypes.ADD_MEMBERS,
+ threadID,
+ creatorID,
+ time: parseInt(farcasterMessage.serverTimestamp, 10),
+ addedUserIDs: [addedUser],
+ },
+ ];
+ }
+
+ if (
+ farcasterMessage.type === 'text' &&
+ !!farcasterMessage?.metadata?.medias
+ ) {
+ const media = farcasterMessage.metadata.medias.map(
+ med =>
+ ({
+ id: uuid.v4(),
+ uri: med.staticRaster,
+ type: 'photo',
+ thumbHash: null,
+ dimensions: {
+ height: med.height,
+ width: med.width,
+ },
+ }: Media),
+ );
+ return [
+ {
+ id: farcasterMessage.messageId,
+ type: messageTypes.MULTIMEDIA,
+ threadID,
+ creatorID,
+ time: parseInt(farcasterMessage.serverTimestamp, 10),
+ media,
+ },
+ ];
+ }
+
+ if (farcasterMessage.type === 'text') {
+ return [
+ {
+ id: farcasterMessage.messageId,
+ type: messageTypes.TEXT,
+ threadID,
+ creatorID,
+ time: parseInt(farcasterMessage.serverTimestamp, 10),
+ text: farcasterMessage.message,
+ },
+ ];
+ }
+
+ console.log(
+ 'UNSUPPORTED FARCASTER MESSAGE',
+ JSON.stringify(farcasterMessage, null, 2),
+ );
+
+ return [];
+}
+
export {
DISABLE_CONNECT_FARCASTER_ALERT,
NO_FID_METADATA,
@@ -399,4 +477,5 @@
useLinkFarcasterDCs,
createFarcasterDCsAuthMessage,
createFarcasterRawThreadInfo,
+ convertFarcasterMessageToCommMessages,
};

File Metadata

Mime Type
text/plain
Expires
Sat, Dec 6, 5:21 PM (22 h, 5 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5839768
Default Alt Text
D15225.1765041708.diff (4 KB)

Event Timeline