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).
This commit is contained in:
sairajzero 2020-05-02 18:36:15 +05:30
parent 5c22ecab87
commit f60e7dddbb

View File

@ -1063,6 +1063,7 @@
//display loading screen //display loading screen
document.getElementById("loading-screen").classList.remove("hide") document.getElementById("loading-screen").classList.remove("hide")
document.getElementById("sign-in-box").classList.add("hide") document.getElementById("sign-in-box").classList.add("hide")
document.getElementById("settings-screen").parentNode.classList.add("hide")
//clear Rendered Elements //clear Rendered Elements
let elementsToReset = ["startup-load-msg", 'mail-list', 'contact-list', 'conversation-body', let elementsToReset = ["startup-load-msg", 'mail-list', 'contact-list', 'conversation-body',
'receiver-floID', 'receiver-name', "backup-info" 'receiver-floID', 'receiver-name', "backup-info"
@ -1454,7 +1455,7 @@
} }
messenger.parseBackup(file).then(data => { messenger.parseBackup(file).then(data => {
getConfirmation('Restore 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 => { ).then(result => {
restoreInfoText.textContent = `Restoring data! Please wait...`; restoreInfoText.textContent = `Restoring data! Please wait...`;
messenger.restoreData(data).then(result => { messenger.restoreData(data).then(result => {
@ -9890,10 +9891,10 @@ Bitcoin.Util = {
this.dbName = dbName; this.dbName = dbName;
}, },
initDB: function (dbName, objectStores = {}) { initDB: function (dbName, objectStores = {}, version = null) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.dbName = this.dbName || dbName; this.dbName = this.dbName || dbName;
var idb = indexedDB.open(dbName); var idb = version ? indexedDB.open(dbName, version) : indexedDB.open(dbName);
idb.onerror = (event) => { idb.onerror = (event) => {
reject("Error in opening IndexedDB!"); reject("Error in opening IndexedDB!");
}; };
@ -9911,8 +9912,12 @@ Bitcoin.Util = {
if (JSON.stringify(Object.values(db.objectStoreNames).sort()) === JSON.stringify(Object.keys( if (JSON.stringify(Object.values(db.objectStoreNames).sort()) === JSON.stringify(Object.keys(
objectStores).sort())) objectStores).sort()))
resolve("Initiated IndexedDB"); resolve("Initiated IndexedDB");
else else{
reject("IndexedDB already exist with different ObjectStores!"); 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(); db.close();
} }
}); });
@ -10610,15 +10615,10 @@ Bitcoin.Util = {
if (!result || !result.includes(mark)) if (!result || !result.includes(mark))
return resolve("Mark doesnot exist") return resolve("Mark doesnot exist")
else { else {
let process; result.splice(result.indexOf(mark), 1); //remove the mark from the list of marks
if (result.length == 1) //only given mark is present, remove it compactIDB.writeData("marked", result, key)
process = compactIDB.removeData("marked", key) .then(result => resolve("Mark removed"))
else { .catch(error => reject(error))
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))
} }
}).catch(error => reject(error)) }).catch(error => reject(error))
}) })
@ -10653,6 +10653,7 @@ Bitcoin.Util = {
for (let m in data.messages) { for (let m in data.messages) {
let decrypted = Crypto.AES.decrypt(data.messages[m].message, let decrypted = Crypto.AES.decrypt(data.messages[m].message,
AESKey) AESKey)
data.messages[m].message = decrypted; data.messages[m].message = decrypted;
} }
resolve(data) resolve(data)
@ -10739,17 +10740,17 @@ Bitcoin.Util = {
data.appendix.lastReceived = floGlobals.appendix.lastReceived; data.appendix.lastReceived = floGlobals.appendix.lastReceived;
let AESKey = floCrypto.decryptData(data.appendix.AESKey, myPrivKey); let AESKey = floCrypto.decryptData(data.appendix.AESKey, myPrivKey);
if (AESKey !== floGlobals.appendix.AESKey) { 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 decrypted = Crypto.AES.decrypt(data.messages[m].message, AESKey)
let encrypted = Crypto.AES.encrypt(decrypted, floGlobals.appendix let encrypted = Crypto.AES.encrypt(decrypted, floGlobals.appendix
.AESKey) .AESKey)
result.messages[m].message = encrypted; data.messages[m].message = encrypted;
} }
for (let m in data.mailContent) { for (let m in data.mailContent) {
let decrypted = Crypto.AES.decrypt(data.mailContent[m], AESKey) let decrypted = Crypto.AES.decrypt(data.mailContent[m], AESKey)
let encrypted = Crypto.AES.encrypt(decrypted, floGlobals.appendix let encrypted = Crypto.AES.encrypt(decrypted, floGlobals.appendix
.AESKey) .AESKey)
result.mailContent[m] = encrypted; data.mailContent[m] = encrypted;
} }
} }
delete data.appendix.AESKey; delete data.appendix.AESKey;