From f89cf27826a8552af1dffa6d7dcd904d15d14a69 Mon Sep 17 00:00:00 2001 From: sairajzero Date: Fri, 30 Dec 2022 04:13:43 +0530 Subject: [PATCH] Update flo-webwallet.js - Wrapped flo webwallet module inside IIF. - use strict for flo webwallet module - moved onload fn to index.html --- index.html | 16 +++++ scripts/flo-webwallet.js | 135 +++++++++++++++++---------------------- 2 files changed, 76 insertions(+), 75 deletions(-) diff --git a/index.html b/index.html index 0dd3b50..5fccc65 100644 --- a/index.html +++ b/index.html @@ -24,6 +24,21 @@ + @@ -1706,4 +1721,5 @@ ] + \ No newline at end of file diff --git a/scripts/flo-webwallet.js b/scripts/flo-webwallet.js index 94d8101..f06e31e 100644 --- a/scripts/flo-webwallet.js +++ b/scripts/flo-webwallet.js @@ -1,51 +1,10 @@ -/*FLO Web Wallet operations*/ -floWebWallet = { - - util: { - //Get new Tx in blockchain since last sync using API - getNewTxs: function (addr, ignoreOld) { - return new Promise((resolve, reject) => { - floBlockchainAPI.readTxs(addr, 0, 1).then(response => { - var newItems = response.totalItems - ignoreOld; - if (newItems) { - floBlockchainAPI.readTxs(addr, 0, newItems * 2).then(response => { - var filteredData = []; - for (i = 0; i < newItems; i++) { - var item = { - time: response.items[i].time, - txid: response.items[i].txid, - floData: response.items[i].floData - } - if (response.items[i].isCoinBase) { - item.sender = '(mined)' + response.items[i].vin[0].coinbase; - item.receiver = addr; - } else { - item.sender = response.items[i].vin[0].addr; - item.receiver = response.items[i].vout[0].scriptPubKey.addresses[0]; - } - filteredData.unshift(item); - } - resolve({ - totalItems: response.totalItems, - items: filteredData - }); - }).catch(error => { - reject(error); - }); - } else - resolve({ - totalItems: response.totalItems, - items: [] - }) - }).catch(error => { - reject(error); - }); - }); - } - }, +(function (EXPORTS) { + /*FLO Web Wallet operations*/ + 'use strict'; + const floWebWallet = EXPORTS; //generate a new Address triplet : resolves Object(floID,pubKey,privKey) - generateNewAddr: function () { + floWebWallet.generateNewAddr = function () { return new Promise((resolve, reject) => { try { var triplet = floCrypto.generateNewID(); @@ -54,10 +13,10 @@ floWebWallet = { reject(error); } }) - }, + } //recover triplet from given privKey : resolves Object(floID,pubKey,privKey) - recoverAddr: function (privKey) { + floWebWallet.recoverAddr = function (privKey) { return new Promise((resolve, reject) => { try { var triplet = {} @@ -69,32 +28,32 @@ floWebWallet = { reject(error); } }) - }, + } //get balance of addr using API : resolves (balance) - getBalance: function (addr) { + floWebWallet.getBalance = function (addr) { return new Promise((resolve, reject) => { floBlockchainAPI.getBalance(addr) .then(txid => resolve(txid)) .catch(error => reject(error)) }) - }, + } //send transaction to the blockchain using API : resolves (txid) - sendTransaction: function (sender, receiver, amount, floData, privKey) { + floWebWallet.sendTransaction = function (sender, receiver, amount, floData, privKey) { return new Promise((resolve, reject) => { floBlockchainAPI.sendTx(sender, receiver, amount, privKey, floData) .then(txid => resolve(txid)) .catch(error => reject(error)) }) - }, + } //sync new transactions from blockchain using API and stores in IDB : resolves Array(newItems) - syncTransactions: function (addr) { + floWebWallet.syncTransactions = function (addr) { return new Promise((resolve, reject) => { compactIDB.readData('lastSync', addr).then(lastSync => { lastSync = lastSync | 0; - this.util.getNewTxs(addr, lastSync).then(APIresult => { + getNewTxs(addr, lastSync).then(APIresult => { compactIDB.readData('transactions', addr).then(IDBresult => { if (IDBresult === undefined) var promise1 = compactIDB.addData('transactions', APIresult.items, addr) @@ -106,39 +65,65 @@ floWebWallet = { }) }).catch(error => reject(error)) }) - }, + } + + //Get new Tx in blockchain since last sync using API + function getNewTxs(addr, ignoreOld) { + return new Promise((resolve, reject) => { + floBlockchainAPI.readTxs(addr, 0, 1).then(response => { + var newItems = response.totalItems - ignoreOld; + if (newItems) { + floBlockchainAPI.readTxs(addr, 0, newItems * 2).then(response => { + var filteredData = []; + for (let i = 0; i < newItems; i++) { + var item = { + time: response.items[i].time, + txid: response.items[i].txid, + floData: response.items[i].floData + } + if (response.items[i].isCoinBase) { + item.sender = '(mined)' + response.items[i].vin[0].coinbase; + item.receiver = addr; + } else { + item.sender = response.items[i].vin[0].addr; + item.receiver = response.items[i].vout[0].scriptPubKey.addresses[0]; + } + filteredData.unshift(item); + } + resolve({ + totalItems: response.totalItems, + items: filteredData + }); + }).catch(error => { + reject(error); + }); + } else + resolve({ + totalItems: response.totalItems, + items: [] + }) + }).catch(error => { + reject(error); + }); + }); + } //read transactions stored in IDB : resolves Array(storedItems) - readTransactions: function (addr) { + floWebWallet.readTransactions = function (addr) { return new Promise((resolve, reject) => { compactIDB.readData('transactions', addr) .then(IDBresult => resolve(IDBresult)) .catch(error => reject(error)) }) - }, + } //get address-label pairs from IDB : resolves Object(addr:label) - getLabels: function () { + floWebWallet.getLabels = function () { return new Promise((resolve, reject) => { compactIDB.readAllData('labels') .then(IDBresult => resolve(IDBresult)) .catch(error => reject(error)) }) } -} -function onLoadStartUp() { - var IDBObjects = { - lastSync: {}, - labels: {}, - pinnedIds: {}, - transactions: {} - } - compactIDB.initDB("FLOwebWallet", IDBObjects) - .then(result => { - showPage(window.location.hash) - render.savedIds(); - console.log(result) - }) - .catch(error => console.error(error)) -} \ No newline at end of file +})(window.floWebWallet = {}); \ No newline at end of file