diff --git a/js/background.js b/js/background.js index 180ee45a3..105c5b7aa 100644 --- a/js/background.js +++ b/js/background.js @@ -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')); diff --git a/main.js b/main.js index 7c5f94523..f2010ae16 100644 --- a/main.js +++ b/main.js @@ -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(