feat: be more lenient on sync

This commit is contained in:
2026-05-01 15:26:54 +02:00
parent f602e08b5a
commit f4836a6fa2

View File

@@ -81,13 +81,17 @@ export async function pullChanges(): Promise<void> {
}; };
for (const change of changes) { for (const change of changes) {
const data = typeof change.payload === 'string' try {
? JSON.parse(change.payload) const data = typeof change.payload === 'string'
: change.payload; ? JSON.parse(change.payload)
if (change.op === 'delete') { : change.payload;
await applyDelete(change.entity, change.entity_id); if (change.op === 'delete') {
} else { await applyDelete(change.entity, change.entity_id);
await applyUpsert(change.entity, data); } else {
await applyUpsert(change.entity, data);
}
} catch {
// Skip malformed change; will not block remaining changes.
} }
} }
await setLastVersion(server_version); await setLastVersion(server_version);
@@ -111,20 +115,20 @@ export async function coldStart(): Promise<void> {
async function applyUpsert(entity: string, data: unknown) { async function applyUpsert(entity: string, data: unknown) {
switch (entity) { switch (entity) {
case 'entries': await db.entries.put(data as any); break; case 'entries': await db.entries.put(data as any); break;
case 'closed_days': await db.closed_days.put(data as any); break; case 'closed_days': await db.closed_days.put(data as any); break;
case 'closed_weeks': await db.closed_weeks.put(data as any); break; case 'closed_weeks': await db.closed_weeks.put(data as any); break;
case 'settings_history': await db.settings_history.put(data as any); break; case 'settings_history': await db.settings_history.put(data as any); break;
case 'balance_adjustments': await db.balance_adjustments.put(data as any); break; case 'balance_adjustments': await db.balance_adjustments.put(data as any); break;
} }
} }
async function applyDelete(entity: string, id: string) { async function applyDelete(entity: string, id: string) {
switch (entity) { switch (entity) {
case 'entries': await db.entries.delete(id); break; case 'entries': await db.entries.delete(id); break;
case 'closed_days': await db.closed_days.delete(id); break; case 'closed_days': await db.closed_days.delete(id); break;
case 'closed_weeks': await db.closed_weeks.delete(id); break; case 'closed_weeks': await db.closed_weeks.delete(id); break;
case 'settings_history': await db.settings_history.delete(id); break; case 'settings_history': await db.settings_history.delete(id); break;
case 'balance_adjustments': await db.balance_adjustments.delete(id); break; case 'balance_adjustments': await db.balance_adjustments.delete(id); break;
} }
} }