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 @@ -173,19 +173,6 @@ return this.estimatedSize; } - getMessageCount(): number { - let count = this.messageInfos.length + this.additionalMessageInfos.length; - for (const updateInfo of this.updateInfos) { - if ( - updateInfo.type === updateTypes.JOIN_THREAD && - updateInfo.rawMessageInfos - ) { - count += updateInfo.rawMessageInfos.length; - } - } - return count; - } - trimToSize(maxSize: number): BatchedUpdates { const overflow = new BatchedUpdates(); @@ -340,7 +327,6 @@ const results: Array = []; let failedItemsCount = 0; let progress = 0; - let completedMessages = 0; for (let i = 0; i < items.length; i += batchSize) { const batch = items.slice(i, i + batchSize); @@ -366,11 +352,7 @@ return null; } finally { progress++; - completedMessages += itemBatchedUpdates.getMessageCount(); - onProgress?.({ - completedConversations: progress, - completedMessages, - }); + onProgress?.({ completedConversations: progress }); } }); @@ -657,6 +639,7 @@ conversationID: string, messagesLimit: number, batchedUpdates: BatchedUpdates, + increaseMessagesCount?: (number) => mixed, ) => Promise { const fetchUsersByFIDs = useGetCommFCUsersForFIDs(); const fetchFarcasterConversation = useFetchFarcasterConversation(); @@ -670,6 +653,7 @@ conversationID: string, messagesLimit: number, batchedUpdates: BatchedUpdates, + increaseMessagesCount?: number => mixed, ): Promise => { try { const result = await fetchAndProcessConversation( @@ -704,6 +688,8 @@ const messagesResult = await fetchFarcasterMessages( conversationID, messagesLimit, + undefined, + increaseMessagesCount, ); if (messagesResult.messages.length === 0) { @@ -768,6 +754,7 @@ conversationID: string, messagesNumberLimit?: number, cursor?: ?string, + increaseMessageCount?: (number) => mixed, ) => Promise<{ +messages: Array, +userIDs: Array, @@ -782,6 +769,7 @@ conversationID: string, messagesNumberLimit: number = 20, cursor?: ?string, + increaseMessageCount?: number => mixed, ): Promise<{ +messages: Array, +userIDs: Array, @@ -798,7 +786,7 @@ do { batchNumber++; const batchLimit = Math.min( - 50, + 100, messagesNumberLimit - totalMessagesFetched, ); @@ -837,11 +825,13 @@ } const prevMessageCount = messageIDs.size; - messageIDs.add( - ...farcasterMessages.map(message => message.messageId), + farcasterMessages.forEach(message => + messageIDs.add(message.messageId), ); - if (prevMessageCount === messageIDs.size) { + const numberOfNewMessages = messageIDs.size - prevMessageCount; + increaseMessageCount?.(numberOfNewMessages); + if (numberOfNewMessages === 0) { addLog( 'Farcaster: Duplicate message batch detected (breaking loop)', JSON.stringify({ @@ -1137,6 +1127,15 @@ totalNumberOfConversations: conversations.length, completedMessages: 0, }); + + let numberOfMessages = 0; + const increaseMessagesCount = (count: number) => { + numberOfMessages += count; + onProgress?.({ + completedMessages: numberOfMessages, + }); + }; + await processInBatchesWithReduxBatching( conversations, FARCASTER_DATA_BATCH_SIZE, @@ -1145,6 +1144,7 @@ conversationID, Number.POSITIVE_INFINITY, batchedUpdates, + increaseMessagesCount, ), dispatch, onProgress,