diff --git a/lib/reducers/message-reducer.js b/lib/reducers/message-reducer.js --- a/lib/reducers/message-reducer.js +++ b/lib/reducers/message-reducer.js @@ -1942,7 +1942,8 @@ ]), }; } else if (action.type === processFarcasterOpsActionType) { - const { rawMessageInfos, updateInfos } = action.payload; + const { rawMessageInfos, updateInfos, additionalMessageInfos } = + action.payload; const messagesResult = mergeUpdatesWithMessageInfos( rawMessageInfos, @@ -1957,8 +1958,19 @@ newThreadInfos, ); + let operations = messageStoreOperations; + if (additionalMessageInfos) { + const { messageStoreOperations: additionalOperations } = mergeNewMessages( + newMessageStore, + additionalMessageInfos, + messagesResult.truncationStatuses, + newThreadInfos, + ); + operations = [...operations, ...additionalOperations]; + } + return { - messageStoreOperations, + messageStoreOperations: operations, messageStore: newMessageStore, }; } diff --git a/lib/shared/farcaster/farcaster-actions.js b/lib/shared/farcaster/farcaster-actions.js --- a/lib/shared/farcaster/farcaster-actions.js +++ b/lib/shared/farcaster/farcaster-actions.js @@ -7,5 +7,6 @@ export type ProcessFarcasterOpsPayload = { +rawMessageInfos: $ReadOnlyArray, + +additionalMessageInfos?: $ReadOnlyArray, +updateInfos: $ReadOnlyArray, }; 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 @@ -138,12 +138,17 @@ ); if (rawMessageInfos.length > 0) { + const payload = + totalMessagesFetched === 0 + ? { rawMessageInfos, updateInfos: [] } + : { + rawMessageInfos: [], + updateInfos: [], + additionalMessageInfos: rawMessageInfos, + }; dispatch({ type: processFarcasterOpsActionType, - payload: { - rawMessageInfos, - updateInfos: [], - }, + payload, }); totalMessagesFetched += farcasterMessages.length; }