From f60e7dddbb98d6e894039d07820068418ee51632 Mon Sep 17 00:00:00 2001 From: sairajzero Date: Sat, 2 May 2020 18:36:15 +0530 Subject: [PATCH] v1.0.7 Fixed bugs: - Fixed: Restore data not working. - Settings screen not hiding after logout, clear, restore Others: - Updating CompactIDB to latest stdop (initDB adds missing objectStores instead of rejecting). --- index.html | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/index.html b/index.html index 3e91398..f26e6bd 100644 --- a/index.html +++ b/index.html @@ -1063,6 +1063,7 @@ //display loading screen document.getElementById("loading-screen").classList.remove("hide") document.getElementById("sign-in-box").classList.add("hide") + document.getElementById("settings-screen").parentNode.classList.add("hide") //clear Rendered Elements let elementsToReset = ["startup-load-msg", 'mail-list', 'contact-list', 'conversation-body', 'receiver-floID', 'receiver-name', "backup-info" @@ -1454,7 +1455,7 @@ } messenger.parseBackup(file).then(data => { getConfirmation('Restore Data?', - `$Found:\n ${Object.keys(data.contacts).length} Contacts,\n ${Object.keys(data.messages).length} Messages,\n ${Object.keys(data.mails).length} Mails\nRestore Data?`, "Restore" + `Found:\n ${Object.keys(data.contacts).length} Contacts,\n ${Object.keys(data.messages).length} Messages,\n ${Object.keys(data.mails).length} Mails\nRestore Data?`, "Restore" ).then(result => { restoreInfoText.textContent = `Restoring data! Please wait...`; messenger.restoreData(data).then(result => { @@ -9890,10 +9891,10 @@ Bitcoin.Util = { this.dbName = dbName; }, - initDB: function (dbName, objectStores = {}) { + initDB: function (dbName, objectStores = {}, version = null) { return new Promise((resolve, reject) => { this.dbName = this.dbName || dbName; - var idb = indexedDB.open(dbName); + var idb = version ? indexedDB.open(dbName, version) : indexedDB.open(dbName); idb.onerror = (event) => { reject("Error in opening IndexedDB!"); }; @@ -9911,8 +9912,12 @@ Bitcoin.Util = { if (JSON.stringify(Object.values(db.objectStoreNames).sort()) === JSON.stringify(Object.keys( objectStores).sort())) resolve("Initiated IndexedDB"); - else - reject("IndexedDB already exist with different ObjectStores!"); + else{ + Object.values(db.objectStoreNames).forEach(obs => delete objectStores[obs]) + this.initDB(dbName, objectStores, db.version + 1) + .then(result => resolve(result)) + .catch(error => reject(error)) + } db.close(); } }); @@ -10610,15 +10615,10 @@ Bitcoin.Util = { if (!result || !result.includes(mark)) return resolve("Mark doesnot exist") else { - let process; - if (result.length == 1) //only given mark is present, remove it - process = compactIDB.removeData("marked", key) - else { - result.splice(result.indexOf(mark), - 1); //remove the mark from the list of marks - process = compactIDB.writeData("marked", result, key) - } - process.then(result => resolve("Mark removed")).catch(error => reject(error)) + result.splice(result.indexOf(mark), 1); //remove the mark from the list of marks + compactIDB.writeData("marked", result, key) + .then(result => resolve("Mark removed")) + .catch(error => reject(error)) } }).catch(error => reject(error)) }) @@ -10653,6 +10653,7 @@ Bitcoin.Util = { for (let m in data.messages) { let decrypted = Crypto.AES.decrypt(data.messages[m].message, AESKey) + data.messages[m].message = decrypted; } resolve(data) @@ -10739,17 +10740,17 @@ Bitcoin.Util = { data.appendix.lastReceived = floGlobals.appendix.lastReceived; let AESKey = floCrypto.decryptData(data.appendix.AESKey, myPrivKey); if (AESKey !== floGlobals.appendix.AESKey) { - for (let m in data.message) { + for (let m in data.messages) { let decrypted = Crypto.AES.decrypt(data.messages[m].message, AESKey) let encrypted = Crypto.AES.encrypt(decrypted, floGlobals.appendix .AESKey) - result.messages[m].message = encrypted; + data.messages[m].message = encrypted; } for (let m in data.mailContent) { let decrypted = Crypto.AES.decrypt(data.mailContent[m], AESKey) let encrypted = Crypto.AES.encrypt(decrypted, floGlobals.appendix .AESKey) - result.mailContent[m] = encrypted; + data.mailContent[m] = encrypted; } } delete data.appendix.AESKey;