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 @@ -721,11 +721,11 @@ }> => { const result: Array = []; const userIDs: Array = []; + const messageIDs = new Set(); let batchNumber = 0; try { let totalMessagesFetched = 0; - let lastSeenMessageID: ?string = null; do { batchNumber++; @@ -765,26 +765,25 @@ }), new Set([logTypes.FARCASTER]), ); + break; } - const lastMessageID = - farcasterMessages.length > 0 - ? farcasterMessages[farcasterMessages.length - 1].messageId - : null; + const prevMessageCount = messageIDs.size; + messageIDs.add( + ...farcasterMessages.map(message => message.messageId), + ); - if (lastMessageID === lastSeenMessageID) { + if (prevMessageCount === messageIDs.size) { addLog( 'Farcaster: Duplicate message batch detected (breaking loop)', JSON.stringify({ conversationID, - lastMessageID, batchNumber, }), new Set([logTypes.FARCASTER]), ); break; } - lastSeenMessageID = lastMessageID; const userFIDs = farcasterMessages.flatMap(message => extractFarcasterIDsFromPayload(