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 @@
};
+
+
+