diff --git a/browser/index.js b/browser/index.js index f399b668..be31afc9 100644 --- a/browser/index.js +++ b/browser/index.js @@ -11,7 +11,6 @@ var floating = document.getElementById('floating'); var send = document.getElementById('send'); var newaddr = document.getElementById('newaddr'); var chainState = document.getElementById('state'); -var cb = bcoin.spawn.cb; var items = []; var scrollback = 0; var logger, node, options; @@ -49,40 +48,32 @@ logger.writeConsole = function(level, args) { send.onsubmit = function(ev) { var value = document.getElementById('amount').value; var address = document.getElementById('address').value; + var tx, options; - var options = { + options = { outputs: [{ address: address, value: utils.satoshi(value) }] }; - cb(node.wallet.createTX(options), function(err, tx) { - if (err) - return node.logger.error(err); - - cb(node.wallet.sign(tx), function(err) { - if (err) - return node.logger.error(err); - - cb(node.sendTX(tx), function(err) { - if (err) - return node.logger.error(err); - - show(tx); - }); - }); + node.wallet.createTX(options).then(function(mtx) { + tx = mtx; + return node.wallet.sign(tx); + }).then(function() { + return node.sendTX(tx); + }).then(function() { + show(tx); }); ev.preventDefault(); ev.stopPropagation(); + return false; }; newaddr.onmouseup = function() { - cb(node.wallet.createReceive(), function(err) { - if (err) - throw err; + node.wallet.createReceive().then(function() { formatWallet(node.wallet); }); }; @@ -121,11 +112,7 @@ function addItem(tx) { + ' - ' + kb(tx.getSize()) + ')'); tdiv.appendChild(el); - el.onmouseup = function(ev) { - show(tx); - ev.stopPropagation(); - return false; - }; + setMouseup(el, tx); items.push(el); @@ -135,48 +122,63 @@ function addItem(tx) { + ' value=' + utils.btc(node.chain.db.state.value); } +function setMouseup(el, obj) { + el.onmouseup = function(ev) { + show(obj); + ev.stopPropagation(); + return false; + }; +} + function formatWallet(wallet) { var html = ''; var key = wallet.master.toJSON().key; + var i, tx, el; + html += 'Wallet
'; - if (bcoin.network.get().type === 'segnet4') { - html += 'Current Address (p2wpkh): ' + wallet.getAddress() + '
'; - html += 'Current Address (p2wpkh behind p2sh): ' + wallet.getProgramAddress() + '
'; + + if (bcoin.network.primary.witness) { + html += 'Current Address (p2wpkh): ' + + wallet.getAddress() + + '
'; + html += 'Current Address (p2wpkh behind p2sh): ' + + wallet.getProgramAddress() + + '
'; } else { html += 'Current Address: ' + wallet.getAddress() + '
'; } + html += 'Extended Private Key: ' + key.xprivkey + '
'; html += 'Mnemonic: ' + key.mnemonic.phrase + '
'; - cb(wallet.getBalance(), function(err, balance) { - if (err) - throw err; - html += 'Confirmed Balance: ' + utils.btc(balance.confirmed) + '
'; - html += 'Unconfirmed Balance: ' + utils.btc(balance.unconfirmed) + '
'; + wallet.getBalance().then(function(balance) { + html += 'Confirmed Balance: ' + + utils.btc(balance.confirmed) + + '
'; + + html += 'Unconfirmed Balance: ' + + utils.btc(balance.unconfirmed) + + '
'; + html += 'Balance: ' + utils.btc(balance.total) + '
'; - cb(wallet.getHistory(), function(err, txs) { - if (err) - throw err; + return wallet.getHistory(); + }).then(function(txs) { + return wallet.toDetails(txs); + }).then(function(txs) { + html += 'TXs:\n'; + wdiv.innerHTML = html; - cb(wallet.toDetails(txs), function(err, txs) { - if (err) - throw err; + for (i = 0; i < txs.length; i++) { + tx = txs[i]; - html += 'TXs:\n'; - wdiv.innerHTML = html; + el = create( + '' + + tx.hash + ''); - txs.forEach(function(tx) { - var el = create('' + tx.hash + ''); - wdiv.appendChild(el); - el.onmouseup = function(ev) { - show(tx.toJSON()); - ev.stopPropagation(); - return false; - }; - }); - }); - }); + wdiv.appendChild(el); + setMouseup(el, tx.toJSON()); + } }); } @@ -200,15 +202,12 @@ node.on('error', function(err) { node.chain.on('block', addItem); node.mempool.on('tx', addItem); -cb(node.open(), function(err) { - if (err) - throw err; - +node.open().then(function() { node.startSync(); formatWallet(node.wallet); - node.wallet.on('update', function() { + node.wallet.on('balance', function() { formatWallet(node.wallet); }); });