functions for unconfirmed deposits done

This commit is contained in:
Abhishek Sinha 2020-09-11 22:47:43 +05:30
parent 5928692dbe
commit e70b2b3a3c

View File

@ -140,8 +140,8 @@
</svg>
</div>
<label class="input">
<input id="deposited_rupee_upi" pattern="^[a-zA-z0-9]+@[a-zA-z0-9]+" type="text" disabled required>
<div class="placeholder">Sender's UPI address</div>
<input id="deposited_rupee_txid" pattern="^[a-zA-z0-9]+" type="text" disabled required>
<div class="placeholder">Transaction Id of the deposited amount</div>
</label>
</form>
</div>
@ -11143,6 +11143,12 @@
});
}
function diff_hours(dt2, dt1) {
var diff =(dt2.getTime() - dt1.getTime()) / 1000;
diff /= (60 * 60);
return Math.abs(Math.round(diff));
}
</script>
<script>
@ -11174,27 +11180,13 @@
#!#TYPE_REQUEST_PAYMENT=REQUEST_PAYMENT_TEST${num}
#!#TYPE_REQUEST_PAYMENT_DECLINED=REQUEST_PAYMENT_DECLINED_TEST${num}
#!#TYPE_REQUEST_PAYMENT_APPROVED=REQUEST_PAYMENT_APPROVED_TEST${num}
#!#TYPE_UNCONFIRMED_BALANCE_CLAIM_REQUESTS=TYPE_UNCONFIRMED_BALANCE_CLAIM_REQUESTS_TEST${num}
#!#vendors=FGtPEBu2NFFYkqFrA9NDBJJLpVhyuPubDj,
#!#helplineFloId=F9MAyvT5b9aSfsuukAungrbt1L5fgmJmuK
#!#cashiers=
{
"FCja6sLv58e3RMy41T5AmWyvXEWesqBCkX": {
"upi_id": "8507742774@ybl"
},
"FHW2kgYEhDt85vjAiMMF7bQqdP74L7iwvQ": {
"upi_id": "8340617958@ybl"
},
"FTmJ6QeBjDFjdqS6Zs4V5amac2X19AjXcF": {
"upi_id": "8902496422@ybl"
},
"FBun3694ZdxmD66os9oL5DxMrif3vyVjT3": {
"upi_id": "7004801428@ybl"
},
"FTpxFWdBDvYARGZuPWDhw9gke72J2pruvv": {
"upi_id": "aakriti1705sinha@okicici"
},
"FQ6udJuTbGDa2kWZAkmNpwgHaUEeYLPAtt": {
"upi_id": "krishraj1012-2@okicici"
}
}`
text = removeWhiteSpaces(text);
@ -11459,6 +11451,9 @@
floGlobals.appObjects["unconfirmed_rupee_deposits"] = {};
floCloudAPI.resetObjectData("unconfirmed_rupee_deposits");
floGlobals.appObjects["processed_unconfirmed_balance_claim_requests"] = {};
floCloudAPI.resetObjectData("processed_unconfirmed_balance_claim_requests");
}
async function show_deposit_request() {
@ -11568,7 +11563,7 @@
if (amount_of_tokens_to_transfer > 0) {
let flo_comment = `transfer ${amount_of_tokens_to_transfer} rupee#`;
let flo_txid = await floBlockchainAPI.sendTx(myFloID, receiver_flo_id, 0.001, myPrivKey,
flo_comment)
flo_comment);
console.log(flo_txid);
if (typeof flo_txid !== "string") {
notify(`Transfer unsuccessfull.`);
@ -11898,6 +11893,91 @@
}
}
async function display_unconfirmed_balance_claim_requests() {
try {
// load all user cliams
await floCloudAPI.requestGeneralData(token_app.master_configurations
.TYPE_UNCONFIRMED_BALANCE_CLAIM_REQUESTS, {
receiverID: myFloID
});
const unconfirmed_cash_deposit_claims = floDapps.getNextGeneralData(token_app.master_configurations
.TYPE_UNCONFIRMED_BALANCE_CLAIM_REQUESTS, "0");
// load processed claims
await floCloudAPI.requestObjectData("processed_unconfirmed_balance_claim_requests", { receiverID:floGlobals.adminID });
const processed_unconfirmed_balance_claim_requests_list = floGlobals.appObjects["processed_unconfirmed_balance_claim_requests"];
const processed_unconfirmed_balance_claim_requests_txid_arr = Object.keys(processed_unconfirmed_balance_claim_requests_list);
console.log(unconfirmed_cash_deposit_claims);
console.log(processed_unconfirmed_balance_claim_requests_list);
// Filter out processed items
let fresh_requests = unconfirmed_cash_deposit_claims
.filter(f=>!processed_unconfirmed_balance_claim_requests_txid_arr.includes(f.message.flo_txid)
&& diff_hours(new Date(), new Date(f.message.datetime))>48);
// Display fresh requests
console.log(fresh_requests);
for(fresh_reqs of fresh_requests) {
console.log(fresh_reqs.message);
}
// Sample Output
// datetime: 1599837964056
// flo_txid: "FAKE_TOKEN_TXID_1"
// new_flo_txid: "7382fa53b6d64b269fd9b326ec46104cd30480c8e7b193ca441c70b735621a46"
// receiver_flo_id: "FAfuoUEe296a8xGrfuM1ywUjTsCcPj47g5"
// tokens_transferred: "5"
// user_upi_txid: "FRI2054SEPT112020"
// apply process_unconfirmed_balance_claim_requests on each data
} catch(error) {
throw new Error(error);
}
}
async function process_unconfirmed_balance_claim_requests(subject_req) {
try {
// get txid of new token transfer
let flo_comment = `transfer ${subject_req.tokens_transferred} rupee#`;
let new_txid = await floBlockchainAPI.sendTx(myFloID, subject_req.receiver_flo_id, 0.001, myPrivKey,
flo_comment);
let n=1;
(async function validateUnconfirmDepositTxidInBlockchain() {
notify('Txid '+new_txid+' validation in process. Please do not close the app until directed.');
await delay(60000);
let validate_txid = await ajaxGet(`https://ranchimallflo.duckdns.org/api/v1.0/getTransactionDetails/${new_txid}`);
if(typeof validate_txid=="object" && validate_txid.result=="ok") {
// mark as resolved
subject_req.new_flo_txid = new_txid;
floGlobals.appObjects["processed_unconfirmed_balance_claim_requests"][subject_req.flo_txid] = subject_req;
let receiverID = floGlobals.adminID;
await floCloudAPI.updateObjectData("processed_unconfirmed_balance_claim_requests", { receiverID });
notify('Token transfer for unconfirmed desposit successfull. Txid: '+ new_txid);
} else if(n<=30) {
validateUnconfirmDepositTxidInBlockchain();
n++;
} else {
console.error('Txid '+new_txid+' could not be confirmed.');
notify('Txid '+new_txid+' could not be confirmed.', 'error', 'fixed');
}
return true;
})();
return true;
} catch(error) {
throw new Error(error);
}
}
async function accounting(date='') {
try {
await floCloudAPI.requestGeneralData(token_app.master_configurations
@ -11928,7 +12008,7 @@
<!-- User functions -->
<script>
let depositRequested = 0,
depositedRupeeTxId = document.getElementById('deposited_rupee_upi');
depositedRupeeTxId = document.getElementById('deposited_rupee_txid');
function request_rupee_token() {
try {
const request_tokens_btn = document.getElementById('request_tokens_btn');
@ -12195,6 +12275,7 @@
console.log(e);
}
}
async function request_payment(receiver_flo_id = '', amount = 0) {
try {
@ -12351,12 +12432,25 @@
let unconfirmed_balance=0;
for(ut of unconfirmed_tx_list) {
let subject_deposit = floGlobals.appObjects["unconfirmed_rupee_deposits"][ut];
if(tokens_transfers_tx_list.includes(ut)) {
// remove this item from unconfirmed_tx_list
if(delete floGlobals.appObjects["unconfirmed_rupee_deposits"][ut])
if(delete subject_deposit)
floCloudAPI.updateObjectData("unconfirmed_rupee_deposits", { receiverID });
} else {
unconfirmed_balance += Number(floGlobals.appObjects["unconfirmed_rupee_deposits"][ut]["tokens_transferred"])
unconfirmed_balance += Number(subject_deposit["tokens_transferred"]);
let dt1 = new Date(subject_deposit["datetime"]);
let dt2 = new Date();
// If 48 hours has passed since unconfirmed balance and is not already claimed, send claim request
if(diff_hours(dt2, dt1) >= 48 && subject_deposit.unconfirmed_balance_claimed===false) {
const cashier = randomNoRepeats(Object.keys(token_app.master_configurations.cashiers))();
floCloudAPI.sendGeneralData(subject_deposit, token_app.master_configurations
.TYPE_UNCONFIRMED_BALANCE_CLAIM_REQUESTS, {
receiverID: cashier
});
subject_deposit["unconfirmed_balance_claimed"] = true;
floCloudAPI.updateObjectData("unconfirmed_rupee_deposits", { receiverID });
}
}
}
console.log(token_balance, unconfirmed_balance);