diff --git a/index.html b/index.html index 2373aea..2c202b2 100644 --- a/index.html +++ b/index.html @@ -12808,9 +12808,9 @@ extra_backup_ws[closestSu[0].data.id] = new WebSocket(url); extra_backup_ws[closestSu[0].data.id].onopen = function(evt) { - if (extra_backup_ws[closestSu[0].data.id].bufferedAmount == 0) { + //if (extra_backup_ws[closestSu[0].data.id].bufferedAmount == 0) { extra_backup_ws[closestSu[0].data.id].send(finalMessage); - } + //} }; extra_backup_ws[closestSu[0].data.id].onclose = function(evt) { console.info(`Closed extra conn ${evt.srcElement.url}`); @@ -14426,11 +14426,11 @@ tempWS[sn] = new WebSocket(url); tempWS[sn].onopen = async function(evt) { //await localbitcoinplusplus.actions.delay(5000); - if (tempWS[sn].bufferedAmount == 0) { + //if (tempWS[sn].bufferedAmount == 0) { tempWS[sn].send(JSON.stringify(msg_obj)); await localbitcoinplusplus.actions.delay(5000); tempWS[sn].close(); - } + //} }; tempWS[sn].onclose = function(evt) { console.info(`Closed ${evt.srcElement.url}`); @@ -27492,111 +27492,6 @@ lastConnectedTime: "" }; - const userPublicData = { - trader_flo_address: null, - trader_flo_pubKey: null, - trader_reputation: null, - supernode_flo_public_key: null, - timestamp: null - }; - - const deposit = { - id: "", - trader_flo_address: null, - depositing_amount: 0, - depositor_key_signature: null, - depositor_public_key: null, - operation_type: null, - order_validator_public_key: null, - product: null, - status: 0 - }; - - const withdraw_cash = { - id: "", - trader_flo_address: null, - withdraw_amount: null, - currency: null, - receivinAddress: null, - status: null, - depositor_found_at: null - }; - - const crypto_balances = { - id: null, - trader_flo_address: null, - crypto_balance: null, - crypto_currency: null - }; - - const cash_balances = { - id: null, - trader_flo_address: null, - cash_balance: null, - currency: null - }; - - const system_btc_reserves_private_keys = { - id: "", - btc_address: null, - product: null, - balance: null, - trader_flo_address: null, - btc_private_key_shamirs_id: null, - supernode_transaction_key: null - }; - - const my_supernode_private_key_chunks = { - id: "", - supernode_transaction_key: null - }; - - const supernode_private_key_chunks = { - id: "", - privateKeyChunks: null - }; - - const withdraw_btc = { - id: "", - trader_flo_address: null, - utxo_addr: null, - receiverBTCAddress: null, - receivingBTC: null, - currency: null, - product: null, - change_adress: null, - timestamp: null - }; - - const external_files = { - filename: null, - filehash: null, - content: null - }; - - const kBucketStore = { - id: null, - vectorClock: 0, - data: null, - primary_supernode_flo_public_key: null, - last_updated_on: null - }; - - const ipTable = { - flo_public_key: null, - temporary_ip: null - }; - - const crypto_fiat_rates = { - id: null, - crypto_code: null, - currency_code: null, - rate: 0, - supernode_pub_key: null, - sign: null, - timestamp: +new Date() - }; - var db; const request = window.indexedDB.open(DBName, 2); @@ -27884,6 +27779,107 @@ } } + function exportToJson(idbDatabase, dataStores=[]) { + return new Promise((resolve, reject) => { + const exportObject = {} + if (idbDatabase.objectStoreNames.length === 0) { + resolve(JSON.stringify(exportObject)) + } else { + const transaction = idbDatabase.transaction( + idbDatabase.objectStoreNames, + 'readonly' + ) + + transaction.addEventListener('error', reject) + + for (const storeName of idbDatabase.objectStoreNames) { + const allObjects = [] + transaction + .objectStore(storeName) + .openCursor() + .addEventListener('success', event => { + const cursor = event.target.result + if (cursor) { + // Cursor holds value, put it into store data + allObjects.push(cursor.value) + cursor.continue() + } else { + // No more values, store is done + exportObject[storeName] = allObjects + + // Last store was handled + if ( + (idbDatabase.objectStoreNames.length === + Object.keys(exportObject).length) + || + (dataStores.length>0 + && Object.keys(exportObject).length===dataStores.length) + ) { + resolve(JSON.stringify(exportObject)) + } + } + }) + } + } + }) + } + + function importFromJson(idbDatabase, json) { + return new Promise((resolve, reject) => { + const transaction = idbDatabase.transaction( + idbDatabase.objectStoreNames, + 'readwrite' + ) + transaction.addEventListener('error', reject) + + var importObject = JSON.parse(json) + for (const storeName of idbDatabase.objectStoreNames) { + let count = 0 + for (const toAdd of importObject[storeName]) { + const request = transaction.objectStore(storeName).add(toAdd) + request.addEventListener('success', () => { + count++ + if (count === importObject[storeName].length) { + console.info(`Imported ${storeName} successfully.`); + // Added all objects for this store + delete importObject[storeName] + if (Object.keys(importObject).length === 0) { + // Added all object stores + resolve() + } + } + }) + } + } + }) + } + + function clearDatabase(idbDatabase, dataStores=[]) { + return new Promise((resolve, reject) => { + const transaction = idbDatabase.transaction( + idbDatabase.objectStoreNames, + 'readwrite' + ) + transaction.addEventListener('error', reject) + + let count = 0 + for (const storeName of idbDatabase.objectStoreNames) { + if(dataStores.length>0 && !dataStores.includes(storeName)) continue; + transaction + .objectStore(storeName) + .clear() + .addEventListener('success', () => { + console.info(`Cleared ${storeName} datastore.`); + count++ + if (count === idbDatabase.objectStoreNames.length) { + // Cleared all object stores + resolve() + } + }) + } + }) + } + function readDB(tablename, id, filter_deletables = true) { return new Promise((resolve, reject) => { var transaction = db.transaction([tablename]); @@ -28866,6 +28862,40 @@ }; + + +