Send user FLO if low (cash-to-token)

- Send FLO to user if their balance is below user_flo_threshold
- Automatically converts rupee token equivalent of send_user_flo value using exchangeAPI
- user_flo_threshold and send_user_flo are blockchain configured
This commit is contained in:
sairajzero 2022-05-24 02:56:44 +05:30
parent 6c17afb913
commit eacc2fc655
2 changed files with 20 additions and 12 deletions

View File

@ -97,8 +97,8 @@ User.findCashier = function() {
if (cashierStatus[c] && cashierUPI[c])
online.push(c);
if (!online.length) {
if (floGlobals.settings.defaultCashier && floGlobals.settings.defaultCashier in cashierUPI)
return floGlobals.settings.defaultCashier;
if (floGlobals.settings.default_cashier && floGlobals.settings.default_cashier in cashierUPI)
return floGlobals.settings.default_cashier;
else
return null;
} else {
@ -138,9 +138,9 @@ User.tokenToCash = function(cashier, amount, blkTxID, upiID) {
})
}
User.sendToken = function(receiverID, amount, remark = '') {
User.sendToken = function(receiverID, amount, remark = '', options = {}) {
return new Promise((resolve, reject) => {
floTokenAPI.sendToken(myPrivKey, amount, receiverID, remark)
floTokenAPI.sendToken(myPrivKey, amount, receiverID, remark, options)
.then(result => resolve(result))
.catch(error => reject(error))
})

View File

@ -371,15 +371,23 @@ function completeCashToTokenRequest(request) {
function confirmTopUp() {
const { message: { amount }, vectorClock, senderID } = floGlobals.cashierProcessingRequest;
User.sendToken(senderID, amount, 'for cash-to-token').then(txid => {
console.warn(`${amount} cash-to-token for ${senderID}`, txid);
Cashier.finishRequest(floGlobals.cashierProcessingRequest, txid).then(result => {
console.log(result);
console.info('Completed cash-to-token request:', vectorClock);
notify("Completed request", 'success');
hidePopup()
floBlockchainAPI.getBalance(senderID).then(async user_balance => {
let sendAmt_FLO = floGlobals.sendAmt;
if(user_balance < floGlobals.settings.user_flo_threshold){
let cur_rate = await floExchangeAPI.getRates("FLO");
sendAmt_FLO = floGlobals.settings.send_user_flo;
amount -= cur_rate * sendAmt_FLO;
}
User.sendToken(senderID, amount, 'for cash-to-token', {sendAmt: sendAmt_FLO}).then(txid => {
console.warn(`${amount} cash-to-token for ${senderID}`, txid);
Cashier.finishRequest(floGlobals.cashierProcessingRequest, txid).then(result => {
console.log(result);
console.info('Completed cash-to-token request:', vectorClock);
notify("Completed request", 'success');
hidePopup()
}).catch(error => console.error(error))
}).catch(error => console.error(error))
}).catch(error => console.error(error))
}).catch(error => reject(error))
}
getRef('top_up__reason_selector').addEventListener('change', e => {