Update flo-webwallet.js

- Wrapped flo webwallet module inside IIF.
- use strict for flo webwallet module
- moved onload fn to index.html
This commit is contained in:
sairajzero 2022-12-30 04:13:43 +05:30
parent d4673462c0
commit f89cf27826
2 changed files with 76 additions and 75 deletions

View File

@ -24,6 +24,21 @@
<script src="scripts/floBlockchainAPI.js"></script> <script src="scripts/floBlockchainAPI.js"></script>
<script src="scripts/compactIDB.js"></script> <script src="scripts/compactIDB.js"></script>
<script src="scripts/flo-webwallet.js"></script> <script src="scripts/flo-webwallet.js"></script>
<script>
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))
}
</script>
</head> </head>
<body onload="onLoadStartUp()" class="hide"> <body onload="onLoadStartUp()" class="hide">
@ -1706,4 +1721,5 @@
] ]
</script> </script>
</body> </body>
</html> </html>

View File

@ -1,51 +1,10 @@
/*FLO Web Wallet operations*/ (function (EXPORTS) {
floWebWallet = { /*FLO Web Wallet operations*/
'use strict';
util: { const floWebWallet = EXPORTS;
//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);
});
});
}
},
//generate a new Address triplet : resolves Object(floID,pubKey,privKey) //generate a new Address triplet : resolves Object(floID,pubKey,privKey)
generateNewAddr: function () { floWebWallet.generateNewAddr = function () {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
try { try {
var triplet = floCrypto.generateNewID(); var triplet = floCrypto.generateNewID();
@ -54,10 +13,10 @@ floWebWallet = {
reject(error); reject(error);
} }
}) })
}, }
//recover triplet from given privKey : resolves Object(floID,pubKey,privKey) //recover triplet from given privKey : resolves Object(floID,pubKey,privKey)
recoverAddr: function (privKey) { floWebWallet.recoverAddr = function (privKey) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
try { try {
var triplet = {} var triplet = {}
@ -69,32 +28,32 @@ floWebWallet = {
reject(error); reject(error);
} }
}) })
}, }
//get balance of addr using API : resolves (balance) //get balance of addr using API : resolves (balance)
getBalance: function (addr) { floWebWallet.getBalance = function (addr) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
floBlockchainAPI.getBalance(addr) floBlockchainAPI.getBalance(addr)
.then(txid => resolve(txid)) .then(txid => resolve(txid))
.catch(error => reject(error)) .catch(error => reject(error))
}) })
}, }
//send transaction to the blockchain using API : resolves (txid) //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) => { return new Promise((resolve, reject) => {
floBlockchainAPI.sendTx(sender, receiver, amount, privKey, floData) floBlockchainAPI.sendTx(sender, receiver, amount, privKey, floData)
.then(txid => resolve(txid)) .then(txid => resolve(txid))
.catch(error => reject(error)) .catch(error => reject(error))
}) })
}, }
//sync new transactions from blockchain using API and stores in IDB : resolves Array(newItems) //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) => { return new Promise((resolve, reject) => {
compactIDB.readData('lastSync', addr).then(lastSync => { compactIDB.readData('lastSync', addr).then(lastSync => {
lastSync = lastSync | 0; lastSync = lastSync | 0;
this.util.getNewTxs(addr, lastSync).then(APIresult => { getNewTxs(addr, lastSync).then(APIresult => {
compactIDB.readData('transactions', addr).then(IDBresult => { compactIDB.readData('transactions', addr).then(IDBresult => {
if (IDBresult === undefined) if (IDBresult === undefined)
var promise1 = compactIDB.addData('transactions', APIresult.items, addr) var promise1 = compactIDB.addData('transactions', APIresult.items, addr)
@ -106,39 +65,65 @@ floWebWallet = {
}) })
}).catch(error => reject(error)) }).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) //read transactions stored in IDB : resolves Array(storedItems)
readTransactions: function (addr) { floWebWallet.readTransactions = function (addr) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
compactIDB.readData('transactions', addr) compactIDB.readData('transactions', addr)
.then(IDBresult => resolve(IDBresult)) .then(IDBresult => resolve(IDBresult))
.catch(error => reject(error)) .catch(error => reject(error))
}) })
}, }
//get address-label pairs from IDB : resolves Object(addr:label) //get address-label pairs from IDB : resolves Object(addr:label)
getLabels: function () { floWebWallet.getLabels = function () {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
compactIDB.readAllData('labels') compactIDB.readAllData('labels')
.then(IDBresult => resolve(IDBresult)) .then(IDBresult => resolve(IDBresult))
.catch(error => reject(error)) .catch(error => reject(error))
}) })
} }
}
function onLoadStartUp() { })(window.floWebWallet = {});
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))
}