Page MenuHomePhorge

D15336.1765116113.diff
No OneTemporary

Size
5 KB
Referenced Files
None
Subscribers
None

D15336.1765116113.diff

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
@@ -11,6 +11,7 @@
import type { Image, Video } from '../types/media-types.js';
import { messageTypes } from '../types/message-types-enum.js';
import type { RawMessageInfo } from '../types/message-types.js';
+import type { CompoundReactionInfo } from '../types/messages/compound-reaction.js';
function convertFarcasterMessageToCommMessages(
farcasterMessage: FarcasterMessage,
@@ -23,6 +24,33 @@
const threadID = farcasterThreadIDFromConversationID(
farcasterMessage.conversationId,
);
+ const result: Array<RawMessageInfo> = [];
+
+ if (farcasterMessage.reactions?.length > 0) {
+ const viewerReactions = new Set(
+ farcasterMessage.viewerContext?.reactions ?? [],
+ );
+ const reactions: { [reaction: string]: CompoundReactionInfo } = {};
+ for (const reaction of farcasterMessage.reactions) {
+ reactions[reaction.reaction] = {
+ count: reaction.count,
+ viewerReacted: viewerReactions.has(reaction.reaction),
+ };
+ }
+ result.push({
+ id: `${farcasterMessage.messageId}/reactions`,
+ type: messageTypes.COMPOUND_REACTION,
+ threadID,
+ // Doesn't matter - we don't use it
+ creatorID,
+ // We add 1 to the timestamp to make sure that the reactions are more
+ // recent than the message itself
+ time: parseInt(farcasterMessage.serverTimestamp, 10) + 1,
+ targetMessageID: farcasterMessage.messageId,
+ reactions,
+ });
+ }
+
if (
farcasterMessage.type === 'group_membership_addition' &&
farcasterMessage.actionTargetUserContext?.fid
@@ -31,19 +59,15 @@
farcasterMessage.actionTargetUserContext.fid.toString();
const addedUser =
fcUserInfos.get(addedUserFID)?.userID ?? userIDFromFID(addedUserFID);
- return [
- {
- id: farcasterMessage.messageId,
- type: messageTypes.ADD_MEMBERS,
- threadID,
- creatorID,
- time: parseInt(farcasterMessage.serverTimestamp, 10),
- addedUserIDs: [addedUser],
- },
- ];
- }
-
- if (
+ result.push({
+ id: farcasterMessage.messageId,
+ type: messageTypes.ADD_MEMBERS,
+ threadID,
+ creatorID,
+ time: parseInt(farcasterMessage.serverTimestamp, 10),
+ addedUserIDs: [addedUser],
+ });
+ } else if (
farcasterMessage.type === 'text' &&
(!!farcasterMessage?.metadata?.medias ||
!!farcasterMessage?.metadata?.videos)
@@ -82,16 +106,14 @@
}
const time = parseInt(farcasterMessage.serverTimestamp, 10);
- const messages: Array<RawMessageInfo> = [
- {
- id: farcasterMessage.messageId,
- type: messageTypes.MULTIMEDIA,
- threadID,
- creatorID,
- time,
- media,
- },
- ];
+ result.push({
+ id: farcasterMessage.messageId,
+ type: messageTypes.MULTIMEDIA,
+ threadID,
+ creatorID,
+ time,
+ media,
+ });
const captionText = media
.reduce(
@@ -101,7 +123,7 @@
.trim();
if (captionText.length > 0) {
- messages.push({
+ result.push({
id: farcasterMessage.messageId + '/caption',
type: messageTypes.TEXT,
threadID,
@@ -110,38 +132,26 @@
text: captionText,
});
}
-
- return messages;
- }
-
- if (farcasterMessage.type === 'text') {
- return [
- {
- id: farcasterMessage.messageId,
- type: messageTypes.TEXT,
- threadID,
- creatorID,
- time: parseInt(farcasterMessage.serverTimestamp, 10),
- text: farcasterMessage.message,
- },
- ];
- }
-
- if (farcasterMessage.type === 'group_name_change') {
- return [
- {
- id: farcasterMessage.messageId,
- type: messageTypes.CHANGE_SETTINGS,
- threadID,
- creatorID,
- time: parseInt(farcasterMessage.serverTimestamp, 10),
- field: 'name',
- value: farcasterMessage.message,
- },
- ];
- }
-
- if (
+ } else if (farcasterMessage.type === 'text') {
+ result.push({
+ id: farcasterMessage.messageId,
+ type: messageTypes.TEXT,
+ threadID,
+ creatorID,
+ time: parseInt(farcasterMessage.serverTimestamp, 10),
+ text: farcasterMessage.message,
+ });
+ } else if (farcasterMessage.type === 'group_name_change') {
+ result.push({
+ id: farcasterMessage.messageId,
+ type: messageTypes.CHANGE_SETTINGS,
+ threadID,
+ creatorID,
+ time: parseInt(farcasterMessage.serverTimestamp, 10),
+ field: 'name',
+ value: farcasterMessage.message,
+ });
+ } else if (
farcasterMessage.type === 'group_membership_removal' &&
farcasterMessage.actionTargetUserContext?.fid
) {
@@ -150,24 +160,22 @@
const removedUserID =
fcUserInfos?.get(removedUserFID)?.userID ?? userIDFromFID(removedUserFID);
- return [
- {
- type: messageTypes.REMOVE_MEMBERS,
- id: farcasterMessage.messageId,
- threadID,
- creatorID,
- time: parseInt(farcasterMessage.serverTimestamp, 10),
- removedUserIDs: [removedUserID],
- },
- ];
+ result.push({
+ type: messageTypes.REMOVE_MEMBERS,
+ id: farcasterMessage.messageId,
+ threadID,
+ creatorID,
+ time: parseInt(farcasterMessage.serverTimestamp, 10),
+ removedUserIDs: [removedUserID],
+ });
+ } else {
+ console.log(
+ 'UNSUPPORTED FARCASTER MESSAGE',
+ JSON.stringify(farcasterMessage, null, 2),
+ );
}
- console.log(
- 'UNSUPPORTED FARCASTER MESSAGE',
- JSON.stringify(farcasterMessage, null, 2),
- );
-
- return [];
+ return result;
}
function removeMediaURIFromString(input: string, url: string): string {

File Metadata

Mime Type
text/plain
Expires
Sun, Dec 7, 2:01 PM (14 h, 10 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5844443
Default Alt Text
D15336.1765116113.diff (5 KB)

Event Timeline