diff --git a/packages/cookie-banner/src/client.ts b/packages/cookie-banner/src/client.ts index cfcefe5a3..ceb064afa 100644 --- a/packages/cookie-banner/src/client.ts +++ b/packages/cookie-banner/src/client.ts @@ -97,6 +97,7 @@ export class CookieBannerClient { created_at: "", }; this.activate(cookie.data); + void flush(this.bannerId); return; } diff --git a/packages/cookie-banner/src/queue.ts b/packages/cookie-banner/src/queue.ts index 8506358b1..d5d6beb54 100644 --- a/packages/cookie-banner/src/queue.ts +++ b/packages/cookie-banner/src/queue.ts @@ -82,15 +82,25 @@ export async function flush(bannerId: string): Promise { return; } - const remaining: PendingConsent[] = []; + const sentTimestamps: number[] = []; for (const entry of queue) { try { await fetchJSON(entry.url, { method: "POST", body: entry.body }); + sentTimestamps.push(entry.timestamp); } catch { - remaining.push(entry); + // will remain in queue } } - writeQueue(bannerId, remaining); + if (sentTimestamps.length === 0) { + return; + } + + const sentSet = new Set(sentTimestamps); + const current = readQueue(bannerId); + writeQueue( + bannerId, + current.filter((entry) => !sentSet.has(entry.timestamp)), + ); }