diff --git a/src/services/syncClient.ts b/src/services/syncClient.ts index 040dcaa..711eb9f 100644 --- a/src/services/syncClient.ts +++ b/src/services/syncClient.ts @@ -4,6 +4,7 @@ import { syncOutbox, lists, tasks, tags, taskTags } from '@/src/db/schema'; import { useSettingsStore } from '@/src/stores/useSettingsStore'; import { getAccessToken } from '@/src/lib/authToken'; import { randomUUID } from '@/src/lib/uuid'; +import { syncWidgetData } from '@/src/services/widgetSync'; const SYNC_API_BASE = 'https://liste.lacompagniemaximus.com'; const INBOX_ID = '00000000-0000-0000-0000-000000000001'; @@ -97,6 +98,8 @@ export async function pushChanges(): Promise { .set({ syncedAt: now }) .where(eq(syncOutbox.id, entry.id)); } + // Refresh widget after a successful push to reflect the synced state + syncWidgetData().catch(() => {}); } } @@ -118,9 +121,11 @@ export async function pullChanges(since: string): Promise { const data: SyncPullResponse = await res.json(); + let appliedChanges = 0; for (const change of data.changes) { try { await applyChange(change); + appliedChanges++; } catch (err) { console.warn(`[sync] failed to apply change for ${change.entity_type}/${change.entity_id}:`, err); } @@ -130,6 +135,11 @@ export async function pullChanges(since: string): Promise { if (data.sync_token) { useSettingsStore.getState().setLastSyncAt(data.sync_token); } + + // Refresh widget once after applying all remote changes + if (appliedChanges > 0) { + syncWidgetData().catch(() => {}); + } } catch (err) { console.warn('[sync] pull error:', err); }