Improve our deletion of IndexedDB post-SQLCipher migration

This commit is contained in:
Scott Nonnenberg 2018-11-12 14:13:16 -08:00
parent 6300256a3e
commit ecf3f18762
2 changed files with 23 additions and 1 deletions

View File

@ -301,10 +301,18 @@
await mandatoryMessageUpgrade({ upgradeMessageSchema });
await migrateAllToSQLCipher({ writeNewAttachmentData, Views });
await removeDatabase();
await window.Signal.Data.removeIndexedDBFiles();
try {
await window.Signal.Data.removeIndexedDBFiles();
} catch (error) {
window.log.error(
'Failed to remove IndexedDB files:',
error && error.stack ? error.stack : error
);
}
window.installStorage(window.newStorage);
await window.storage.fetch();
await storage.put('indexeddb-delete-needed', true);
}
Views.Initialization.setMessage(window.i18n('optimizingApplication'));

14
main.js
View File

@ -656,6 +656,20 @@ app.on('ready', async () => {
await sql.initialize({ configDir: userDataPath, key });
await sqlChannels.initialize();
try {
const IDB_KEY = 'indexeddb-delete-needed';
const item = await sql.getItemById(IDB_KEY);
if (item && item.value) {
await sql.removeIndexedDBFiles();
await sql.removeItemById(IDB_KEY);
}
} catch (error) {
console.log(
'(ready event handler) error deleting IndexedDB:',
error && error.stack ? error.stack : error
);
}
async function cleanupOrphanedAttachments() {
const allAttachments = await attachments.getAllAttachments(userDataPath);
const orphanedAttachments = await sql.removeKnownAttachments(