Skip to content

Commit 81bcafa

Browse files
Clear out IndexedDB if data cannot sync
1 parent 5e18291 commit 81bcafa

3 files changed

Lines changed: 46 additions & 17 deletions

File tree

app/services/data.ts

Lines changed: 45 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,51 @@ export default class DataService extends Service {
2424
const records = await this.getRecordsFromBackup();
2525

2626
if (records.length > 0) {
27-
await this.store.sync((t) =>
28-
records.map((r) => {
29-
if (r?.attributes?.['hex']) {
30-
delete r.attributes['hex'];
31-
}
32-
33-
return t.addRecord(r);
34-
})
35-
);
27+
try {
28+
await this.store.sync((t) =>
29+
records.map((r) => {
30+
if (r?.attributes?.['hex']) {
31+
delete r.attributes['hex'];
32+
}
33+
34+
return t.addRecord(r);
35+
})
36+
);
37+
} catch (error) {
38+
console.error(
39+
'[Data Service] Failed to restore from backup due to corrupt data:',
40+
error
41+
);
42+
console.log('[Data Service] Deleting corrupt IndexedDB database...');
43+
44+
// Delete the entire corrupt database
45+
const dbName = 'swach-main-backup';
46+
const deleteRequest = indexedDB.deleteDatabase(dbName);
47+
48+
await new Promise<void>((resolve, reject) => {
49+
deleteRequest.onsuccess = () => {
50+
console.log('[Data Service] Successfully deleted corrupt database');
51+
resolve();
52+
};
53+
deleteRequest.onerror = () => {
54+
console.error(
55+
'[Data Service] Failed to delete database:',
56+
deleteRequest.error
57+
);
58+
reject(
59+
new Error(
60+
`Failed to delete corrupt database: ${deleteRequest.error}`
61+
)
62+
);
63+
};
64+
deleteRequest.onblocked = () => {
65+
console.error(
66+
'[Data Service] Database deletion blocked - may have open connections'
67+
);
68+
reject(new Error('Database deletion blocked by open connections'));
69+
};
70+
});
71+
}
3672
}
3773

3874
await this.dataCoordinator.activate();

electron-app/main.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ const mb = menubar({
7676
width: 362,
7777
webPreferences: {
7878
contextIsolation: true,
79-
devTools: true, // isDev,
79+
devTools: isDev,
8080
preload: join(__dirname, 'preload.js'),
8181
nodeIntegration: false,
8282
},

electron-app/src/shortcuts.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,6 @@ export function setupContextMenu(
4545
},
4646
},
4747
{ type: 'separator' },
48-
{
49-
label: 'Toggle DevTools',
50-
click() {
51-
mb.window?.webContents.toggleDevTools();
52-
},
53-
},
54-
{ type: 'separator' },
5548
{
5649
label: 'Quit',
5750
click() {

0 commit comments

Comments
 (0)