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