diff --git a/flopay/index.html b/flopay/index.html
index 62a4890..6447f98 100644
--- a/flopay/index.html
+++ b/flopay/index.html
@@ -1515,7 +1515,7 @@
console.log("Starting the app! Please Wait!")
floDapps.setCustomPrivKeyInput(getSignedIn)
floDapps.setAppObjectStores({ savedIds: {}, savedUserData: {} })
- await floExchangeAPI.init("FMxYC7gYZhouzqtHZukGnPiQ8nvG4CMzXM", "exchange")
+ await floExchangeAPI.init("exchange")
console.log('Exchange API initialized!')
floDapps.launchStartUp().then(result => {
console.log(`Welcome ${floDapps.user.id}`);
diff --git a/flopay/scripts/floExchangeAPI.js b/flopay/scripts/floExchangeAPI.js
index 685ba12..42cf5d7 100644
--- a/flopay/scripts/floExchangeAPI.js
+++ b/flopay/scripts/floExchangeAPI.js
@@ -1,6 +1,6 @@
'use strict';
-(function (EXPORTS) { //floExchangeAPI v1.2.0a
+(function (EXPORTS) { //floExchangeAPI v1.2.1
const exchangeAPI = EXPORTS;
const DEFAULT = {
@@ -608,7 +608,7 @@
BOBS_FUND: "bobs-fund"
}
- exchangeAPI.getSink = function (service = serviceList.EXCHANGE) {
+ const getSink = exchangeAPI.getSink = function (service = serviceList.EXCHANGE) {
return new Promise((resolve, reject) => {
if (!(Object.values(serviceList).includes(service)))
return reject(ExchangeError(ExchangeError.BAD_REQUEST_CODE, 'service required', errorCode.INVALID_VALUE));
@@ -1720,7 +1720,7 @@
const _l = key => DEFAULT.marketApp + '-' + key;
- exchangeAPI.init = function refreshDataFromBlockchain() {
+ function refreshDataFromBlockchain() {
return new Promise((resolve, reject) => {
let nodes, trusted = new Set(), assets, tags, lastTx;
try {
@@ -1796,6 +1796,17 @@
})
}
+ exchangeAPI.init = function (service = serviceList.EXCHANGE) {
+ return new Promise((resolve, reject) => {
+ refreshDataFromBlockchain().then(nodes => {
+ getSink(service)
+ .then(sinkID => floCrypto.validateAddr(sinkID) ? _sinkID = sinkID : undefined)
+ .catch(error => console.warn("Unable to fetch sinkID", error))
+ .finally(_ => resolve(nodes))
+ }).catch(error => reject(error))
+ })
+ }
+
const config = exchangeAPI.config = {
get trustedList() {
return new Set((localStorage.getItem(_l('trusted')) || "").split(','));
@@ -1820,12 +1831,10 @@
}
//container for user ID and proxy private-key
+ var _userID, _publicKey, _privateKey, _sinkID;
const proxy = exchangeAPI.proxy = {
- user: null,
- private: null,
- public: null,
async lock() {
- if (!this.private)
+ if (!_privateKey)
return notify("No proxy key found!", 'error');
getPromptInput("Add password", 'This password applies to this browser only!', {
isPassword: true,
@@ -1836,7 +1845,7 @@
else if (pwd.length < 4)
notify("Password minimum length is 4", 'error');
else {
- let tmp = Crypto.AES.encrypt(this.private, pwd);
+ let tmp = Crypto.AES.encrypt(_privateKey, pwd);
localStorage.setItem(_l('proxy_secret'), "?" + tmp);
notify("Successfully locked with Password", 'success');
}
@@ -1845,35 +1854,37 @@
clear() {
localStorage.removeItem(_l('proxy_secret'));
localStorage.removeItem(_l('user_ID'));
- this.user = null;
- this.private = null;
- this.public = null;
+ _userID = null;
+ _privateKey = null;
+ _publicKey = null;
},
get sinkID() {
- return getRef("sink_id").value;
+ return _sinkID;
},
set userID(id) {
localStorage.setItem(_l('user_ID'), id);
- this.user = id;
+ _userID = id;
},
get userID() {
- if (this.user)
- return this.user;
+ if (_userID)
+ return _userID;
else {
let id = localStorage.getItem(_l('user_ID'));
- return id ? this.user = id : undefined;
+ return id ? _userID = id : undefined;
}
},
+ get user() {
+ return this.userID;
+ },
set secret(key) {
localStorage.setItem(_l('proxy_secret'), key);
- this.private = key;
- this.public = floCrypto.getPubKeyHex(key);
+ _privateKey = key;
+ _publicKey = floCrypto.getPubKeyHex(key);
},
get secret() {
- const self = this;
return new Promise((resolve, reject) => {
- if (self.private)
- return resolve(self.private);
+ if (_privateKey)
+ return resolve(_privateKey);
const Reject = reason => {
notify(reason, 'error');
@@ -1881,9 +1892,9 @@
}
const setValues = priv => {
try {
- self.private = priv;
- self.public = floCrypto.getPubKeyHex(priv);
- resolve(self.private);
+ _privateKey = priv;
+ _publicKey = floCrypto.getPubKeyHex(priv);
+ resolve(_privateKey);
} catch (error) {
Reject("Unable to fetch Proxy secret");
}
diff --git a/flopay/scripts/floTokenAPI.js b/flopay/scripts/floTokenAPI.js
index dd4eee6..bb803fd 100644
--- a/flopay/scripts/floTokenAPI.js
+++ b/flopay/scripts/floTokenAPI.js
@@ -1,4 +1,4 @@
-(function (EXPORTS) { //floTokenAPI v1.2.0
+(function (EXPORTS) { //floTokenAPI v1.2.1a
/* Token Operator to send/receive tokens via blockchain using API calls*/
'use strict';
const tokenAPI = EXPORTS;
@@ -68,9 +68,13 @@
const getBalance = tokenAPI.getBalance = function (floID, token = DEFAULT.currency) {
return new Promise((resolve, reject) => {
- fetch_api(`api/v2/floAddressInfo/${floID}`)
- .then(result => resolve(result.floAddressBalances[token]?.balance || 0))
- .catch(error => reject(error))
+ fetch_api(`api/v2/floAddressInfo/${floID}`).then(result => {
+ let token_balance = 0
+ if(result.floAddressBalances != null && typeof result.floAddressBalances == "object" && token in result.floAddressBalances){
+ token_balance = result.floAddressBalances[token]["balance"] || 0
+ }
+ resolve(token_balance)
+ }).catch(error => reject(error))
})
}
@@ -79,10 +83,10 @@
fetch_api(`api/v2/transactionDetails/${txID}`).then(res => {
if (res.result === "error")
reject(res.description);
- else if (!res.parsedFloData)
- reject("Data piece (parsedFloData) missing");
- else if (!res.transactionDetails)
- reject("Data piece (transactionDetails) missing");
+ //else if (!res.parsedFloData)
+ // reject("Data piece (parsedFloData) missing");
+ //else if (!res.transactionDetails)
+ // reject("Data piece (transactionDetails) missing");
else
resolve(res);
}).catch(error => reject(error))
@@ -178,16 +182,16 @@
const util = tokenAPI.util = {};
- util.parseTxData = function (txData) {
+ util.parseTxData = function (txData) {
let parsedData = {};
for (let p in txData.parsedFloData)
parsedData[p] = txData.parsedFloData[p];
- parsedData.sender = txData.transactionDetails.vin[0].addr;
- for (let vout of txData.transactionDetails.vout)
+ parsedData.sender = txData.vin[0].addresses[0];
+ for (let vout of txData.vout)
if (vout.scriptPubKey.addresses[0] !== parsedData.sender)
parsedData.receiver = vout.scriptPubKey.addresses[0];
- parsedData.time = txData.transactionDetails.time;
+ parsedData.time = txData.time;
return parsedData;
}
-})('object' === typeof module ? module.exports : window.floTokenAPI = {});
\ No newline at end of file
+})('object' === typeof module ? module.exports : window.floTokenAPI = {});