feat: be more lenient on sync
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user