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) {
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user