From d7b7be1909d614a4022b345bdbeef0c1ec32e159 Mon Sep 17 00:00:00 2001 From: Luke Parker <10430890+Hona@users.noreply.github.com> Date: Thu, 30 Apr 2026 08:39:19 +1000 Subject: fix(desktop): Path mismatches cause sessions missing + strong ID + existing data fix (#25013) --- packages/app/src/context/global-sync/queue.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'packages/app/src/context/global-sync/queue.ts') diff --git a/packages/app/src/context/global-sync/queue.ts b/packages/app/src/context/global-sync/queue.ts index 5c228dac0..947e31ac9 100644 --- a/packages/app/src/context/global-sync/queue.ts +++ b/packages/app/src/context/global-sync/queue.ts @@ -2,22 +2,25 @@ type QueueInput = { paused: () => boolean bootstrap: () => Promise bootstrapInstance: (directory: string) => Promise | void + key?: (directory: string) => string } export function createRefreshQueue(input: QueueInput) { - const queued = new Set() + const queued = new Map() let root = false let running = false let timer: ReturnType | undefined + const key = input.key ?? ((directory: string) => directory) + const tick = () => new Promise((resolve) => setTimeout(resolve, 0)) const take = (count: number) => { if (queued.size === 0) return [] as string[] const items: string[] = [] - for (const item of queued) { - queued.delete(item) - items.push(item) + for (const [id, directory] of queued) { + queued.delete(id) + items.push(directory) if (items.length >= count) break } return items @@ -33,7 +36,7 @@ export function createRefreshQueue(input: QueueInput) { const push = (directory: string) => { if (!directory) return - queued.add(directory) + queued.set(key(directory), directory) if (input.paused()) return schedule() } @@ -73,7 +76,7 @@ export function createRefreshQueue(input: QueueInput) { push, refresh, clear(directory: string) { - queued.delete(directory) + queued.delete(key(directory)) }, dispose() { if (!timer) return -- cgit v1.2.3