Skip to content

Commit 4f7b1ef

Browse files
committed
Update farcaster.js
1 parent 0970746 commit 4f7b1ef

File tree

1 file changed

+29
-32
lines changed

1 file changed

+29
-32
lines changed

farcaster.js

Lines changed: 29 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -155,45 +155,42 @@ class Farcaster {
155155
});
156156
}
157157

158-
async getMessages(conversationId, cursor = null) {
159-
try {
160-
const allMessages = [];
161-
const messageIds = new Set();
162-
let currentCursor = cursor;
163-
let iterationCount = 0;
164-
const maxIterations = 5;
165-
166-
while (iterationCount < maxIterations) {
167-
let endpoint = `/direct-cast-conversation-messages?conversationId=${conversationId}&limit=100`;
168-
if (currentCursor) {
169-
endpoint += `&cursor=${currentCursor}`;
170-
}
158+
async getMessages(conversationId) {
159+
const messages = await this.fetchMessages(conversationId);
160+
return messages.map(message => formatMessage(message)).filter(Boolean);
161+
}
171162

172-
console.log("getting messages", endpoint);
163+
async fetchMessages(conversationId, cursor = null, collectedMessages = [], seenMessageIds = new Set(), attempts = 0) {
164+
const maxAttempts = 5;
165+
if (attempts >= maxAttempts) {
166+
return collectedMessages.reverse();
167+
}
173168

174-
const response = await this.#makeApiCall(endpoint, 'GET');
169+
const endpoint = cursor
170+
? `/direct-cast-conversation-messages?conversationId=${conversationId}&limit=100&cursor=${cursor}`
171+
: `/direct-cast-conversation-messages?conversationId=${conversationId}&limit=100`;
175172

176-
const messages = response.result.messages ? response.result.messages.map(message => formatMessage(message)).filter(Boolean) : [];
177-
178-
messages.forEach(message => {
179-
if (!messageIds.has(message.messageId)) {
180-
allMessages.push(message);
181-
messageIds.add(message.messageId);
182-
}
183-
});
173+
console.log("Fetching messages from", endpoint);
174+
175+
try {
176+
const response = await this.#makeApiCall(endpoint, 'GET');
177+
const messages = response.result.messages || [];
184178

185-
if (!response.next || !response.next.cursor) {
186-
console.log("no more messages");
187-
break;
179+
messages.forEach(msg => {
180+
if (!seenMessageIds.has(msg.messageId)) {
181+
collectedMessages.push(msg);
182+
seenMessageIds.add(msg.messageId);
188183
}
189-
190-
currentCursor = response.next.cursor;
191-
iterationCount++;
192-
}
184+
});
193185

194-
return allMessages.reverse();
186+
if (response.next && response.next.cursor) {
187+
return this.getMessages(conversationId, response.next.cursor, collectedMessages, seenMessageIds, attempts + 1);
188+
} else {
189+
console.log("No more messages to fetch");
190+
return collectedMessages.reverse();
191+
}
195192
} catch (error) {
196-
console.error('Error fetching messages:', error);
193+
console.error('Failed to fetch messages:', error);
197194
throw error;
198195
}
199196
}

0 commit comments

Comments
 (0)