From fb54b9622169fe916f98aa7c1d5177a3ba13cb9e Mon Sep 17 00:00:00 2001 From: sairajzero Date: Mon, 20 Jun 2022 21:09:54 +0530 Subject: [PATCH] Bug fix - send tx not working when single receiver is entered (UI bug) - View details UI: Aligned the addresses in view tx table - sendTx: reject when total receiver amount is less than fee or zero --- index.html | 14 ++++++++++---- lib_btc.js | 8 +++++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/index.html b/index.html index 86a5827..890a308 100644 --- a/index.html +++ b/index.html @@ -210,8 +210,13 @@ let sender = sendForm["sender"].value, receivers = {}, fee = parseFloat(sendForm["fee"].value); - for (let i = 0; i < sendForm["receiver"].length; i++) - receivers[sendForm["receiver"][i].value] = parseFloat(sendForm["amount"][i].value); + if (!sendForm["receiver"]) + return console.warn("receiver cannot be empty"); + else if (sendForm["receiver"] instanceof RadioNodeList) + for (let i = 0; i < sendForm["receiver"].length; i++) + receivers[sendForm["receiver"][i].value] = parseFloat(sendForm["amount"][i].value); + else + receivers[sendForm["receiver"].value] = parseFloat(sendForm["amount"].value); let privKey = prompt("Enter Private Key:"); sendForm['submit'].disabled = true; btc_api.sendTx(sender, privKey, receivers, fee).then(result => { @@ -234,10 +239,10 @@ let row = table.insertRow(); if (tx.type === "out") { row.insertCell().innerHTML = '↗'; - row.insertCell().textContent = tx.receiver; + row.insertCell().innerHTML = tx.receiver.join('
'); } else if (tx.type === "in") { row.insertCell().innerHTML = '↙'; - row.insertCell().textContent = tx.sender; + row.insertCell().innerHTML = tx.sender.join('
'); } else if (tx.type === "self") { row.insertCell().innerHTML = '⟲'; row.insertCell().textContent = tx.address; @@ -277,6 +282,7 @@ change += parseFloat(o.value) }); d.receiver = Array.from(d.receiver); + d.amount = parseFloat(d.amount.toFixed(8)) d.fee = parseFloat((tx.outgoing.value - (d.amount + change)).toFixed(8)) if (!d.amount && change > 0) { d.type = "self"; diff --git a/lib_btc.js b/lib_btc.js index 1f7c58e..420c5a7 100644 --- a/lib_btc.js +++ b/lib_btc.js @@ -2549,7 +2549,7 @@ })(); })(typeof global !== "undefined" ? global : window); -(function(EXPORTS) { //btc_api v1.0.4a +(function(EXPORTS) { //btc_api v1.0.4b const btc_api = EXPORTS; const URL = "https://chain.so/api/v2/"; @@ -2652,11 +2652,13 @@ for (let r in receivers) total_amount += receivers[r]; total_amount = parseFloat(total_amount.toFixed(8)); + if (total_amount < fee || total_amount <= 0) + return reject("Invalid receiver amount"); if (balance < total_amount + fee) return reject("Insufficient Balance"); var tx = coinjs.transaction(); getUTXO(senderID).then(result => { - let utxos = result.data.txs.reverse(); + let utxos = result.data.txs; console.debug(balance, utxos); var input_total = 0; for (let i = 0; i < utxos.length && input_total < total_amount + fee; i++) { @@ -2709,4 +2711,4 @@ .catch(error => reject(error)) }); -})('object' === typeof module ? module.exports : window.btc_api = {}); +})('object' === typeof module ? module.exports : window.btc_api = {}); \ No newline at end of file