"use client"; import { createOfflineQueue, type OfflineQueue } from "@bytelyst/offline-queue"; import { PRODUCT_ID } from "@/lib/product-config"; import { createNotesApiClient } from "@/lib/api-helpers"; const ACTION_METHOD: Record = { create: "POST", update: "PATCH", delete: "DELETE", }; let _queue: OfflineQueue | null = null; export function getOfflineQueue(): OfflineQueue { if (!_queue) { _queue = createOfflineQueue({ storageKey: `${PRODUCT_ID}_offline_queue`, storage: typeof window !== "undefined" ? localStorage : { getItem: () => null, setItem: () => {} }, }); } return _queue; } export async function flushOfflineQueue(): Promise<{ flushed: number; failed: number }> { const queue = getOfflineQueue(); const api = createNotesApiClient(); return queue.flush(async (action, path, payload) => { const method = ACTION_METHOD[action] ?? "POST"; await api.fetch(path, { method, headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload), }); }); }