update/fetch cashier's UPI (and some bug fixes)
- Cashiers can update their UPI where users need to send money for cash-to-token requests - User fetches the UPI ID of cashier. - findCashier only returns cashier that is online and has a UPI ID - Fixed: check valid UPI/token tx not working correctly - Changed console.info to console.warn for logging blockchain txid - Fixed: Minor typo bugs and syntax errors
This commit is contained in:
parent
9858038608
commit
fbe1ad3992
52
fn_pay.js
52
fn_pay.js
@ -1,5 +1,6 @@
|
|||||||
const TYPE_MONEY_REQUEST = "MoneyRequests",
|
const TYPE_MONEY_REQUEST = "MoneyRequests",
|
||||||
TYPE_CASHIER_REQUEST = "CashierRequests";
|
TYPE_CASHIER_REQUEST = "CashierRequests",
|
||||||
|
TYPE_CASHIER_UPI = "CashierUPI";
|
||||||
|
|
||||||
const cashierUPI = {};
|
const cashierUPI = {};
|
||||||
|
|
||||||
@ -37,24 +38,38 @@ User.init = function() {
|
|||||||
callback: UI_RENDER_FN
|
callback: UI_RENDER_FN
|
||||||
}));
|
}));
|
||||||
*/
|
*/
|
||||||
|
promises.push(User.getCashierUPI());
|
||||||
Promise.all(promises)
|
Promise.all(promises)
|
||||||
.then(result => resolve(result))
|
.then(result => resolve(result))
|
||||||
.catch(error => reject(error))
|
.catch(error => reject(error))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperty(Cashier, 'cashierRequests', {
|
User.getCashierUPI = function() {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
Promise.allSettled(floGlobals.subAdmins.map(cashierID => floCloudAPI.requestApplicationData(TYPE_CASHIER_UPI, {
|
||||||
|
senderID: cashierID,
|
||||||
|
mostRecent: true
|
||||||
|
}))).then(result => {
|
||||||
|
for (let r of result)
|
||||||
|
if (r.status === "fulfilled" && r.value.length)
|
||||||
|
cashierUPI[r.value[0].senderID] = floCloudAPI.util.decodeMessage(r.value[0].message).upi;
|
||||||
|
resolve(cashierUPI);
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(User, 'cashierRequests', {
|
||||||
get: function() {
|
get: function() {
|
||||||
let fk = floCloudAPI.util.filterKey(TYPE_CASHIER_REQUEST, {
|
let fk = floCloudAPI.util.filterKey(TYPE_CASHIER_REQUEST, {
|
||||||
senderID: myFloID,
|
senderID: myFloID,
|
||||||
receiverID: cashierID,
|
|
||||||
group: "Cashiers",
|
group: "Cashiers",
|
||||||
});
|
});
|
||||||
return floGlobals.generalData[fk];
|
return floGlobals.generalData[fk];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.defineProperty(Cashier, 'moneyRequests', {
|
Object.defineProperty(User, 'moneyRequests', {
|
||||||
get: function() {
|
get: function() {
|
||||||
let fk = floCloudAPI.util.filterKey(TYPE_MONEY_REQUEST, {
|
let fk = floCloudAPI.util.filterKey(TYPE_MONEY_REQUEST, {
|
||||||
receiverID: myFloID,
|
receiverID: myFloID,
|
||||||
@ -66,7 +81,7 @@ Object.defineProperty(Cashier, 'moneyRequests', {
|
|||||||
User.findCashier = function() {
|
User.findCashier = function() {
|
||||||
let online = [];
|
let online = [];
|
||||||
for (let c in cashierStatus)
|
for (let c in cashierStatus)
|
||||||
if (cashierStatus[c])
|
if (cashierStatus[c] && cashierUPI[c])
|
||||||
online.push(c);
|
online.push(c);
|
||||||
if (!online.length)
|
if (!online.length)
|
||||||
return null;
|
return null;
|
||||||
@ -76,7 +91,7 @@ User.findCashier = function() {
|
|||||||
|
|
||||||
User.cashToToken = function(cashier, amount, upiTxID) {
|
User.cashToToken = function(cashier, amount, upiTxID) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
if (!floCloudAPI.subAdmins.includes(cashier))
|
if (!floGlobals.subAdmins.includes(cashier))
|
||||||
return reject("Invalid cashier");
|
return reject("Invalid cashier");
|
||||||
floCloudAPI.sendGeneralData({
|
floCloudAPI.sendGeneralData({
|
||||||
mode: "cash-to-token",
|
mode: "cash-to-token",
|
||||||
@ -91,7 +106,7 @@ User.cashToToken = function(cashier, amount, upiTxID) {
|
|||||||
|
|
||||||
User.tokenToCash = function(cashier, amount, blkTxID, upiID) {
|
User.tokenToCash = function(cashier, amount, blkTxID, upiID) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
if (!floCloudAPI.subAdmins.includes(cashier))
|
if (!floGlobals.subAdmins.includes(cashier))
|
||||||
return reject("Invalid cashier");
|
return reject("Invalid cashier");
|
||||||
floCloudAPI.sendGeneralData({
|
floCloudAPI.sendGeneralData({
|
||||||
mode: "token-to-cash",
|
mode: "token-to-cash",
|
||||||
@ -138,7 +153,7 @@ const Cashier = {};
|
|||||||
|
|
||||||
Cashier.init = function() {
|
Cashier.init = function() {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
let promises;
|
let promises = [];
|
||||||
//Requests from user to cashier(self) for token-cash exchange
|
//Requests from user to cashier(self) for token-cash exchange
|
||||||
promises.push(floCloudAPI.requestGeneralData(TYPE_CASHIER_REQUEST, {
|
promises.push(floCloudAPI.requestGeneralData(TYPE_CASHIER_REQUEST, {
|
||||||
receiverID: myFloID,
|
receiverID: myFloID,
|
||||||
@ -157,11 +172,22 @@ Cashier.init = function() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Cashier.updateUPI = function(upi_id) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
floCloudAPI.sendApplicationData({
|
||||||
|
upi: upi_id
|
||||||
|
}, TYPE_CASHIER_UPI)
|
||||||
|
.then(result => resolve(result))
|
||||||
|
.catch(error => reject(error))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
Object.defineProperty(Cashier, 'Requests', {
|
Object.defineProperty(Cashier, 'Requests', {
|
||||||
get: function() {
|
get: function() {
|
||||||
let fk = floCloudAPI.util.filterKey(TYPE_CASHIER_REQUEST, {
|
let fk = floCloudAPI.util.filterKey(TYPE_CASHIER_REQUEST, {
|
||||||
receiver: myFloID
|
receiverID: myFloID
|
||||||
});
|
});
|
||||||
|
console.debug(fk, floGlobals.generalData[fk]);
|
||||||
return floGlobals.generalData[fk];
|
return floGlobals.generalData[fk];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -192,8 +218,8 @@ Cashier.checkIfUpiTxIsValid = function(upiTxID) {
|
|||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
let requests = Cashier.Requests;
|
let requests = Cashier.Requests;
|
||||||
for (let r in requests)
|
for (let r in requests)
|
||||||
if (requests[r].message.mode === "cash-to-token")
|
if (requests[r].message.mode === "cash-to-token" && requests[r].note)
|
||||||
if (requests[r].note === upiTxID)
|
if (requests[r].message.upi_txid === upiTxID)
|
||||||
return reject([true, "UPI transaction is already used for another request"]);
|
return reject([true, "UPI transaction is already used for another request"]);
|
||||||
return resolve(true);
|
return resolve(true);
|
||||||
})
|
})
|
||||||
@ -203,8 +229,8 @@ Cashier.checkIfTokenTxIsValid = function(tokenTxID, sender, amount) {
|
|||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
let requests = Cashier.Requests;
|
let requests = Cashier.Requests;
|
||||||
for (let r in requests)
|
for (let r in requests)
|
||||||
if (requests[r].message.mode === "token-to-cash")
|
if (requests[r].message.mode === "token-to-cash" && requests[r].note)
|
||||||
if (requests[r].note === tokenTxID)
|
if (requests[r].message.token_txid === tokenTxID)
|
||||||
return reject([true, "Token transaction is already used for another request"]);
|
return reject([true, "Token transaction is already used for another request"]);
|
||||||
tokenAPI.getTx(tokenTxID).then(tx => {
|
tokenAPI.getTx(tokenTxID).then(tx => {
|
||||||
let parsedTxData = tokenAPI.util.parseTxData(tx);
|
let parsedTxData = tokenAPI.util.parseTxData(tx);
|
||||||
|
|||||||
48
fn_ui.js
48
fn_ui.js
@ -4,7 +4,7 @@ userUI.requestTokenFromCashier = function() {
|
|||||||
let cashier = User.findCashier();
|
let cashier = User.findCashier();
|
||||||
if (!cashier)
|
if (!cashier)
|
||||||
return alert("No cashier online");
|
return alert("No cashier online");
|
||||||
let amount = parseFloat(document.forms['request-cashier'][amount]);
|
let amount = parseFloat(document.forms['request-cashier']['amount'].value);
|
||||||
//get UPI txid from user
|
//get UPI txid from user
|
||||||
let upiTxID = prompt(`Send Rs. ${amount} to ${cashierUPI[cashier]} and enter UPI txid`);
|
let upiTxID = prompt(`Send Rs. ${amount} to ${cashierUPI[cashier]} and enter UPI txid`);
|
||||||
if (!upiTxID)
|
if (!upiTxID)
|
||||||
@ -19,13 +19,13 @@ userUI.withdrawCashFromCashier = function() {
|
|||||||
let cashier = User.findCashier();
|
let cashier = User.findCashier();
|
||||||
if (!cashier)
|
if (!cashier)
|
||||||
return alert("No cashier online");
|
return alert("No cashier online");
|
||||||
let amount = parseFloat(document.forms['request-cashier'][amount]);
|
let amount = parseFloat(document.forms['request-cashier']['amount'].value);
|
||||||
//get confirmation from user
|
//get confirmation from user
|
||||||
let upiID = prompt(`${amount} ${floGlobals.currency}# will be sent to ${cashier}. Enter UPI ID`);
|
let upiID = prompt(`${amount} ${floGlobals.currency}# will be sent to ${cashier}. Enter UPI ID`);
|
||||||
if (!upiID)
|
if (!upiID)
|
||||||
return alert("Cancelled");
|
return alert("Cancelled");
|
||||||
User.sendToken(cashier, amount, 'for token-to-cash').then(txid => {
|
User.sendToken(cashier, amount, 'for token-to-cash').then(txid => {
|
||||||
console.log("txid", txid);
|
console.warn(`Withdraw ${amount} from cashier ${cashier}`, txid);
|
||||||
User.tokenToCash(cashier, amount, txid, upiID).then(result => {
|
User.tokenToCash(cashier, amount, txid, upiID).then(result => {
|
||||||
console.log(result);
|
console.log(result);
|
||||||
alert("Requested cashier. please wait!");
|
alert("Requested cashier. please wait!");
|
||||||
@ -35,24 +35,24 @@ userUI.withdrawCashFromCashier = function() {
|
|||||||
|
|
||||||
userUI.sendMoneyToUser = function() {
|
userUI.sendMoneyToUser = function() {
|
||||||
let form = document.forms['user-money'];
|
let form = document.forms['user-money'];
|
||||||
let floID = form['flo-id'],
|
let floID = form['flo-id'].value,
|
||||||
amount = parseFloat(form['amount']),
|
amount = parseFloat(form['amount'].value),
|
||||||
remark = form['remark'];
|
remark = form['remark'].value;
|
||||||
let confirmation = prompt(`Do you want to SEND ${amount} to ${floID}?`);
|
let confirmation = confirm(`Do you want to SEND ${amount} to ${floID}?`);
|
||||||
if (!confirmation)
|
if (!confirmation)
|
||||||
return alert("Cancelled");
|
return alert("Cancelled");
|
||||||
User.sendToken(floID, amount, remark).then(txid => {
|
User.sendToken(floID, amount, remark).then(txid => {
|
||||||
console.info(`Sent ${amount} to ${floID}`, txid);
|
console.warn(`Sent ${amount} to ${floID}`, txid);
|
||||||
alert(`Sent ${amount} to ${floID}. It may take a few mins to reflect in their wallet`);
|
alert(`Sent ${amount} to ${floID}. It may take a few mins to reflect in their wallet`);
|
||||||
}).catch(error => console.error(error));
|
}).catch(error => console.error(error));
|
||||||
}
|
}
|
||||||
|
|
||||||
userUI.requestMoneyFromUser = function() {
|
userUI.requestMoneyFromUser = function() {
|
||||||
let form = document.forms['user-money'];
|
let form = document.forms['user-money'];
|
||||||
let floID = form['flo-id'],
|
let floID = form['flo-id'].value,
|
||||||
amount = parseFloat(form['amount']),
|
amount = parseFloat(form['amount'].value),
|
||||||
remark = form['remark'];
|
remark = form['remark'].value;
|
||||||
let confirmation = prompt(`Do you want to REQUEST ${amount} from ${floID}?`);
|
let confirmation = confirm(`Do you want to REQUEST ${amount} from ${floID}?`);
|
||||||
if (!confirmation)
|
if (!confirmation)
|
||||||
return alert("Cancelled");
|
return alert("Cancelled");
|
||||||
User.requestToken(floID, amount, remark).then(result => {
|
User.requestToken(floID, amount, remark).then(result => {
|
||||||
@ -64,14 +64,14 @@ userUI.requestMoneyFromUser = function() {
|
|||||||
userUI.renderCashierRequests = function(requests, error = null) {
|
userUI.renderCashierRequests = function(requests, error = null) {
|
||||||
if (error)
|
if (error)
|
||||||
return console.error(error);
|
return console.error(error);
|
||||||
else if (typeof requests !== "object" || request === null)
|
else if (typeof requests !== "object" || requests === null)
|
||||||
return;
|
return;
|
||||||
let table = document.getElementById('user-cashier-requests').getElementsByTagName('tbody')[0];
|
let table = document.getElementById('user-cashier-requests').getElementsByTagName('tbody')[0];
|
||||||
for (let r in requests) {
|
for (let r in requests) {
|
||||||
let oldCard = document.getElementById(r);
|
let oldCard = document.getElementById(r);
|
||||||
if (oldCard) oldCard.remove();
|
if (oldCard) oldCard.remove();
|
||||||
let row = table.insertRow();
|
let row = table.insertRow();
|
||||||
renderUser_cashierRequestCard(request[r], row);
|
renderUser_cashierRequestCard(requests[r], row);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,21 +80,21 @@ function renderUser_cashierRequestCard(request, row) {
|
|||||||
row.insertCell().textContent = request.time;
|
row.insertCell().textContent = request.time;
|
||||||
row.insertCell().textContent = request.receiverID;
|
row.insertCell().textContent = request.receiverID;
|
||||||
row.insertCell().textContent = request.message.mode;
|
row.insertCell().textContent = request.message.mode;
|
||||||
let status = request.tag ? (status = request.tag + ":" + request.note) : (request.note || "PENDING");
|
let status = request.tag ? (request.tag + ":" + request.note) : (request.note || "PENDING");
|
||||||
row.insertCell().textContent = status; //Status
|
row.insertCell().textContent = status; //Status
|
||||||
}
|
}
|
||||||
|
|
||||||
userUI.renderMoneyRequests = function(requests, error = null) {
|
userUI.renderMoneyRequests = function(requests, error = null) {
|
||||||
if (error)
|
if (error)
|
||||||
return console.error(error);
|
return console.error(error);
|
||||||
else if (typeof requests !== "object" || request === null)
|
else if (typeof requests !== "object" || requests === null)
|
||||||
return;
|
return;
|
||||||
let table = document.getElementById('user-money-requests').getElementsByTagName('tbody')[0];
|
let table = document.getElementById('user-money-requests').getElementsByTagName('tbody')[0];
|
||||||
for (let r in requests) {
|
for (let r in requests) {
|
||||||
let oldCard = document.getElementById(r);
|
let oldCard = document.getElementById(r);
|
||||||
if (oldCard) oldCard.remove();
|
if (oldCard) oldCard.remove();
|
||||||
let row = table.insertRow();
|
let row = table.insertRow();
|
||||||
renderUser_moneyRequestCard(request[r], row);
|
renderUser_moneyRequestCard(requests[r], row);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,11 +115,11 @@ function renderUser_moneyRequestCard(request, row) {
|
|||||||
|
|
||||||
userUI.payRequest = function(reqID) {
|
userUI.payRequest = function(reqID) {
|
||||||
let request = User.moneyRequests[reqID];
|
let request = User.moneyRequests[reqID];
|
||||||
let confirmation = prompt(`Do you want to SEND ${request.message. amount} to ${request.senderID}?`);
|
let confirmation = confirm(`Do you want to SEND ${request.message.amount} to ${request.senderID}?`);
|
||||||
if (!confirmation)
|
if (!confirmation)
|
||||||
return alert("Cancelled");
|
return alert("Cancelled");
|
||||||
User.sendToken(request.senderID, request.message.amount, request.message.remark).then(txid => {
|
User.sendToken(request.senderID, request.message.amount, request.message.remark).then(txid => {
|
||||||
console.info(`Sent ${request.message.amount} to ${request.senderID}`, txid);
|
console.warn(`Sent ${request.message.amount} to ${request.senderID}`, txid);
|
||||||
alert(`Sent ${request.message.amount} to ${request.senderID}. It may take a few mins to reflect in their wallet`);
|
alert(`Sent ${request.message.amount} to ${request.senderID}. It may take a few mins to reflect in their wallet`);
|
||||||
User.decideRequest(request, 'PAID: ' + txid)
|
User.decideRequest(request, 'PAID: ' + txid)
|
||||||
.then(result => console.log(result))
|
.then(result => console.log(result))
|
||||||
@ -141,14 +141,14 @@ const cashierUI = {};
|
|||||||
cashierUI.renderRequests = function(requests, error = null) {
|
cashierUI.renderRequests = function(requests, error = null) {
|
||||||
if (error)
|
if (error)
|
||||||
return console.error(error);
|
return console.error(error);
|
||||||
else if (typeof requests !== "object" || request === null)
|
else if (typeof requests !== "object" || requests === null)
|
||||||
return;
|
return;
|
||||||
let table = document.getElementById('cashier-request-list').getElementsByTagName('tbody')[0];
|
let table = document.getElementById('cashier-request-list').getElementsByTagName('tbody')[0];
|
||||||
for (let r in requests) {
|
for (let r in requests) {
|
||||||
let oldCard = document.getElementById(r);
|
let oldCard = document.getElementById(r);
|
||||||
if (oldCard) oldCard.remove();
|
if (oldCard) oldCard.remove();
|
||||||
let row = table.insertRow();
|
let row = table.insertRow();
|
||||||
renderRequestCard(request[r], row);
|
renderCashier_requestCard(requests[r], row);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -173,12 +173,12 @@ cashierUI.completeRequest = function(reqID) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function completeCashToTokenRequest(request) {
|
function completeCashToTokenRequest(request) {
|
||||||
Cashier.checkIfUpiTxIsValid(request.message.upiTxID).then(_ => {
|
Cashier.checkIfUpiTxIsValid(request.message.upi_txid).then(_ => {
|
||||||
let confirmation = prompt(`Check if you have received UPI transfer\ntxid:${request.message.upi_txid}\namount:${request.message.amount}`);
|
let confirmation = confirm(`Check if you have received UPI transfer\ntxid:${request.message.upi_txid}\namount:${request.message.amount}`);
|
||||||
if (!confirmation)
|
if (!confirmation)
|
||||||
return alert("Cancelled");
|
return alert("Cancelled");
|
||||||
User.sendToken(request.senderID, request.message.amount, 'for cash-to-token').then(txid => {
|
User.sendToken(request.senderID, request.message.amount, 'for cash-to-token').then(txid => {
|
||||||
console.log("txid", txid);
|
console.warn(`${request.message.amount} cash-to-token for ${request.senderID}`, txid);
|
||||||
Cashier.finishRequest(request, txid).then(result => {
|
Cashier.finishRequest(request, txid).then(result => {
|
||||||
console.log(result);
|
console.log(result);
|
||||||
console.info('Completed cash-to-token request:', request.vectorClock);
|
console.info('Completed cash-to-token request:', request.vectorClock);
|
||||||
|
|||||||
32
new.html
32
new.html
@ -3,6 +3,13 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>RanchiMall Pay</title>
|
<title>RanchiMall Pay</title>
|
||||||
|
<style>
|
||||||
|
table,
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
<script id="floGlobals">
|
<script id="floGlobals">
|
||||||
/* Constants for FLO blockchain operations !!Make sure to add this at begining!! */
|
/* Constants for FLO blockchain operations !!Make sure to add this at begining!! */
|
||||||
const floGlobals = {
|
const floGlobals = {
|
||||||
@ -56,6 +63,7 @@
|
|||||||
userUI.renderMoneyRequests(User.moneyRequests);
|
userUI.renderMoneyRequests(User.moneyRequests);
|
||||||
User.init().then(result => {
|
User.init().then(result => {
|
||||||
console.log(result);
|
console.log(result);
|
||||||
|
console.log("Cashiers:", cashierUPI);
|
||||||
document.getElementById('user').hidden = false;
|
document.getElementById('user').hidden = false;
|
||||||
}).catch(error => console.error(error))
|
}).catch(error => console.error(error))
|
||||||
}
|
}
|
||||||
@ -69,18 +77,24 @@
|
|||||||
<div id="user-id"></div>
|
<div id="user-id"></div>
|
||||||
<div>
|
<div>
|
||||||
<form id="request-cashier">
|
<form id="request-cashier">
|
||||||
Amount: <input type="number" name="amount" /><br />
|
<fieldset>
|
||||||
<input type="button" value="request-token" onclick="userUI.requestTokenFromCashier()" />
|
<legend>Request Cashier</legend>
|
||||||
<input type="button" value="withdraw-cash" onclick="userUI.withdrawCashFromCashier()" />
|
Amount: <input type="number" name="amount" /><br />
|
||||||
|
<input type="button" value="request-token" onclick="userUI.requestTokenFromCashier()" />
|
||||||
|
<input type="button" value="withdraw-cash" onclick="userUI.withdrawCashFromCashier()" />
|
||||||
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<form id="user-money">
|
<form id="user-money">
|
||||||
FLO-ID<input type="text" name="flo-id" /><br />
|
<fieldset>
|
||||||
Amount<input type="number" name="amount" /><br />
|
<legend>Request Users</legend>
|
||||||
Remark<input type="text" name="remark" /><br />
|
FLO-ID: <input type="text" name="flo-id" /><br />
|
||||||
<input type="button" value="send-money" onclick="userUI.sendMoneyToUser()" />
|
Amount: <input type="number" name="amount" /><br />
|
||||||
<input type="button" value="request-money" onclick="userUI.requestMoneyFromUser()" />
|
Remark: <input type="text" name="remark" /><br />
|
||||||
|
<input type="button" value="send-money" onclick="userUI.sendMoneyToUser()" />
|
||||||
|
<input type="button" value="request-money" onclick="userUI.requestMoneyFromUser()" />
|
||||||
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
@ -93,6 +107,7 @@
|
|||||||
<td>Status</td>
|
<td>Status</td>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
<tbody></tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
@ -106,6 +121,7 @@
|
|||||||
<td>Status</td>
|
<td>Status</td>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
<tbody></tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -7451,7 +7451,7 @@
|
|||||||
result[p] = tx.parsedFloData[p];
|
result[p] = tx.parsedFloData[p];
|
||||||
result.sender = tx.transactionDetails.vin[0].addr;
|
result.sender = tx.transactionDetails.vin[0].addr;
|
||||||
for (let vout of tx.transactionDetails.vout)
|
for (let vout of tx.transactionDetails.vout)
|
||||||
if (vout.scriptPubKey.addresses[0] !== sender)
|
if (vout.scriptPubKey.addresses[0] !== result.sender)
|
||||||
result.receiver = vout.scriptPubKey.addresses[0];
|
result.receiver = vout.scriptPubKey.addresses[0];
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user