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