From 73901231c35c7c44c7c5fbf64d4e155dc35ff6c8 Mon Sep 17 00:00:00 2001 From: MythEclipse Date: Fri, 15 May 2026 18:53:12 +0700 Subject: [PATCH] feat: update backlog sync logic to queue requests and adjust response structure --- public/index.html | 4 ++-- src/routes/syncRoutes.ts | 33 +++++++++++++++++++++------------ tests/routes/syncRoutes.test.ts | 4 +++- 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/public/index.html b/public/index.html index 5fb6f3e..938a42b 100644 --- a/public/index.html +++ b/public/index.html @@ -126,13 +126,13 @@ el.channelFilter.value = state.selectedTextChannel; applyActiveTab(state.activeTab); if ((textChanged || textGuildChanged) && state.selectedTextChannel && state.selectedTextGuild) { - await apiRequest('/api/backlog-sync', { + apiRequest('/api/backlog-sync', { method: 'POST', body: JSON.stringify({ guildId: state.selectedTextGuild, channelId: state.selectedTextChannel }), }).catch((error) => showError(`Backlog sync failed: ${error.message}`)); } if (textChanged || textGuildChanged || state.activeTab === 'text') { - await fetchText().catch((error) => showError(error.message)); + fetchText().catch((error) => showError(error.message)); } await reconcileListenState(); await reconcileStreamingState(); diff --git a/src/routes/syncRoutes.ts b/src/routes/syncRoutes.ts index 1a80597..e8b0a7d 100644 --- a/src/routes/syncRoutes.ts +++ b/src/routes/syncRoutes.ts @@ -50,28 +50,37 @@ export function createSyncRoutes(client: Client): Router { success: true, channelId, messagesSync: 0, + queued: false, skipped: true, }); return; } - logger.info({ guildId, channelId }, "Starting backlog sync"); + logger.info({ guildId, channelId }, "Queueing backlog sync"); - const count = await syncSelectedChannelBacklog( - client, - guildId, - channelId, - ); - - logger.info( - { guildId, channelId, messagesSync: count }, - "Backlog sync complete", - ); + syncSelectedChannelBacklog(client, guildId, channelId) + .then((count) => { + logger.info( + { guildId, channelId, messagesSync: count }, + "Backlog sync complete", + ); + }) + .catch((error) => { + logger.warn( + { + guildId, + channelId, + error: error instanceof Error ? error.message : String(error), + }, + "Backlog sync failed", + ); + }); res.json({ success: true, channelId, - messagesSync: count, + messagesSync: 0, + queued: true, skipped: false, }); } catch (error) { diff --git a/tests/routes/syncRoutes.test.ts b/tests/routes/syncRoutes.test.ts index 2dc9eda..04fbb12 100644 --- a/tests/routes/syncRoutes.test.ts +++ b/tests/routes/syncRoutes.test.ts @@ -45,7 +45,8 @@ describe("createSyncRoutes", () => { expect(json).toHaveBeenCalledWith({ success: true, channelId: "selected-channel", - messagesSync: 3, + messagesSync: 0, + queued: true, skipped: false, }); expect(next).not.toHaveBeenCalled(); @@ -91,6 +92,7 @@ describe("createSyncRoutes", () => { success: true, channelId: "selected-channel", messagesSync: 0, + queued: false, skipped: true, }); });