From 4b7a8754512a6965570482d330865190a6320e9d Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Fri, 13 Nov 2015 08:19:22 -0800 Subject: Get wallet balance --- app.js | 5 ++ public/js/wallet.coffee | 132 ++++++++++++------------------------------------ src/app.coffee | 4 ++ views/users/wallet.html | 94 +++++++++++++--------------------- 4 files changed, 78 insertions(+), 157 deletions(-) diff --git a/app.js b/app.js index 5f381065..cc79d0cc 100644 --- a/app.js +++ b/app.js @@ -113,6 +113,11 @@ app.get('/ticker', cache, calculator.ticker); + app.get('/token', cache, function(req, res) { + res.write(config.blockcypher_token); + return res.end(); + }); + app.get('/tips', cache, function(req, res) { return res.render('tips', { notice: true, diff --git a/public/js/wallet.coffee b/public/js/wallet.coffee index 6bf17031..fcbbd062 100644 --- a/public/js/wallet.coffee +++ b/public/js/wallet.coffee @@ -22,7 +22,39 @@ g = exports ? this g.proceed = false $(-> - $('#encryption-password').pwstrength(showVerdicts: false) + api = 'https://api.blockcypher.com/v1/btc/main' + addresses = [] + balance = 0 + token = '' + $('#balance, #amount').hide() + $.get("/token", (data) -> + token = data + $.get("#{api}/wallets/hd/yummy/addresses?token=#{token}", (data) -> + for c in data.chains + for a in c.chain_addresses + addresses.push(a.address) + + chunks = [] + for i in [0 .. addresses.length] by 10 + chunks.push(addresses.slice(i,i+10)) + + doSetTimeout = (c,i) -> + setTimeout(-> + $.get("#{api}/addrs/#{c.join(';')}/balance?token=#{token}", (addresses) -> + for address in addresses + balance = parseInt(balance) + parseInt(address.final_balance) + val = (balance / 100000000).toFixed(8) + + $('#balance').html(val) + $('#amount').val(val) + $('#balance, #amount').fadeIn() + ) + , i*1500) + + for c, i in chunks + doSetTimeout(c, i) + ) + ) user = $('#username').val() $.getJSON("/#{user}.json", (data) -> @@ -30,104 +62,6 @@ $(-> $('#address').val(data.address) $('#setup').fadeIn() ) - - $('#pubkey').blur(-> - if check_address($(this).val()) - $(this).parent().removeClass('has-error') - else - $(this).parent().addClass('has-error') - ) - - $('#generate').click(-> - key = new Key() - g.pubkey = key.extended_public_key_string() - g.privkey = key.extended_private_key_string() - - $('#modal').modal() - $('#pubkey_text').html(g.pubkey) - $('#privkey_text').html(g.privkey) - $('#qr').html('') - new QRCode('qr', text: g.privkey, width: 260, height: 260) - ) - - $('#encryption-password').keyup((e) -> - return if e.keyCode is 9 or e.keyCode is 16 - g.enc_privkey = CryptoJS.AES.encrypt(g.privkey, $(this).val()).toString() - g.enc_privkey = g.privkey if $(this).val() == '' - $('#privkey_text').html(g.enc_privkey) - $('#qr').html('') - new QRCode('qr', text: g.enc_privkey, width: 260, height: 260) - - if $(this).val() - $('#status').html('(Encrypted)') - else - $('#status').html('(Unencrypted)') - ) - - $('#confirm').blur(-> - $('#confirm_error').remove() - if $('#password').val() != $('#confirm').val() - $('#password, #confirm').parent().addClass('has-error') - $('#confirm').parent().after('
Passwords don\'t match
') - else - $('#password, #confirm').parent().removeClass('has-error') - ) - - $('#encryption-password, #encryption-confirm').keyup((e) -> check_passwords(e) unless e.keyCode is 9) - $('#encryption-password, #encryption-confirm').blur((e) -> check_passwords(e)) - - check_passwords = (e) -> - if $('#encryption-password').val() != $('#encryption-confirm').val() or $('#encryption-password').val() is '' - $('#encryption-password, #encryption-confirm').parent().addClass('has-error') - $('#modal .alert').removeClass('alert-success').addClass('alert-danger') - else - $('#encryption-password, #encryption-confirm').parent().removeClass('has-error') - $('#modal .alert').removeClass('alert-danger').addClass('alert-success') - - if $('.progress-bar-success').length > 0 - $('#encryption-password').parent().removeClass('has-error') - else - $('#encryption-password').parent().addClass('has-error') - - $('#print').click(-> - $('#key-dialog').printElement(printMode: 'popup') - ) - - $('a[data-toggle="tab"]').on('shown.bs.tab', (e) -> - $('#print').toggle(e.target.attributes.href.value == '#step1') - ) - - $('#close').click(-> - $('#modal .form-control').blur() - if $('#modal .has-error').length > 0 - $('#step1_link').click() - $('#modal .has-error').effect('shake', 500) - else - g.update_key = true - $('#modal').modal('hide') - ) - $('#encrypt').submit(-> $('#close').click(); return false) - - $('#modal').on('show.bs.modal', -> - $('#encryption-password, #encryption-confirm').val('').keyup().parent().removeClass('has-error') - $('#modal .alert').removeClass('alert-success').addClass('alert-danger') - ) - - $('#modal').on('shown.bs.modal', -> - g.update_key = false - $('#encryption-password').focus() - ).on('hidden.bs.modal', -> - if g.update_key - $('#pubkey').val(g.pubkey) - $('#privkey').val(g.enc_privkey) - ) - - $('#setup').submit(-> - $('#setup .form-control').blur() - if $('#setup .has-error').length > 0 - $('#setup .has-error').effect('shake', 500) - return false - ) ) check_address = (address) -> diff --git a/src/app.coffee b/src/app.coffee index 554ef303..caab1bcb 100644 --- a/src/app.coffee +++ b/src/app.coffee @@ -67,6 +67,10 @@ app.get('/address', cache, calculator.address) app.get('/register', cache, users.new) app.get('/sweep', calculator.sweep) app.get('/ticker', cache, calculator.ticker) +app.get('/token', cache, (req, res) -> + res.write(config.blockcypher_token) + res.end() +) app.get('/tips', cache, (req, res) -> res.render('tips', notice: true, diff --git a/views/users/wallet.html b/views/users/wallet.html index c7c91949..873a12d1 100644 --- a/views/users/wallet.html +++ b/views/users/wallet.html @@ -9,70 +9,48 @@
- -
- - - - - -
+ + 0.05154234 BTC
- - - -