aboutsummaryrefslogtreecommitdiffstats
path: root/public/js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2015-12-10 18:22:00 -0800
committerAdam Soltys <[email protected]>2015-12-11 11:29:30 -0800
commit208311023aa6eb433d5e1201eafcd53fab0e6dbd (patch)
treed08809266bfa80ae44d9fcd03c5ca80464c84839 /public/js
parent98260c1821fddcca9417b694e6c16ecfbd2be0db (diff)
downloadcoinos-server-208311023aa6eb433d5e1201eafcd53fab0e6dbd.tar.gz
coinos-server-208311023aa6eb433d5e1201eafcd53fab0e6dbd.zip
Form validation with bootstrap-validator
Diffstat (limited to 'public/js')
-rw-r--r--public/js/wallet.coffee45
-rw-r--r--public/js/wallet.js61
2 files changed, 75 insertions, 31 deletions
diff --git a/public/js/wallet.coffee b/public/js/wallet.coffee
index b34aaae1..ebe6826a 100644
--- a/public/js/wallet.coffee
+++ b/public/js/wallet.coffee
@@ -2,8 +2,29 @@ g = exports ? this
g.proceed = false
g.api = 'https://api.blockcypher.com/v1/btc/main'
+validators =
+ address: (e) ->
+ try
+ bitcoin.address.fromBase58Check(e.val())
+ catch
+ return false
+
+ password: (e) ->
+ g.master = null
+ try
+ g.master = bitcoin.HDNode.fromBase58(CryptoJS.AES.decrypt($('#privkey').val(), e.val()).toString(CryptoJS.enc.Utf8))
+ $('#invalid_keys').fadeOut()
+ catch
+ return false
+
+
+errors =
+ address: 'Invalid address'
+ password: 'Wrong password'
+
$(->
getToken()
+ $('form').validator(custom: validators, errors: errors)
$('button[data-toggle=tooltip]').tooltip(trigger: 'hover')
@@ -26,7 +47,7 @@ $(->
name: g.user.username
extended_public_key: $('#pubkey').val()
subchain_indexes: [0,1]
-
+
$.post("#{g.api}/wallets/hd?token=#{g.token}", JSON.stringify(data)).always(->
$.post("#{g.api}/wallets/hd/#{g.user.username}/addresses/derive?token=#{g.token}").always(->
getBalance()
@@ -76,13 +97,6 @@ $(->
)
$('#password').keyup(->
- g.master = null
- try
- g.master = bitcoin.HDNode.fromBase58(CryptoJS.AES.decrypt($('#privkey').val(), $(this).val()).toString(CryptoJS.enc.Utf8))
- $(this).parent().removeClass('has-error').addClass('has-success')
- $('#invalid_keys').fadeOut()
- catch
- $(this).parent().addClass('has-error').removeClass('has-success')
)
$('#new_password').keyup(->
@@ -90,14 +104,14 @@ $(->
try
bitcoin.HDNode.fromBase58(CryptoJS.AES.decrypt(g.user.privkey, $(this).val()).toString(CryptoJS.enc.Utf8))
- $(this).parent().removeClass('has-error').addClass('has-success')
catch
- $(this).parent().addClass('has-error').removeClass('has-success')
)
$('#manage').click(->
- $('#keys, #withdrawal').toggle()
- $('#withdraw, #manage').toggle()
+ $('#withdrawal').hide()
+ $('#keys').show()
+ $('#withdraw').toggle(g.balance > 0)
+ $('#manage').hide()
$('#privkey').val(g.user.privkey)
)
@@ -180,8 +194,13 @@ getBalance = ->
$('#balance').html(g.balance)
$('#fiat').html("#{fiat} #{g.user.currency}")
$('#amount').attr('max', g.balance)
- $('#amount').focus()
$('.wallet').fadeIn()
+
+ if g.balance > 0
+ $('#withdrawal').show()
+ $('#amount').focus()
+ else
+ $('#manage').click()
)
sendTransaction = ->
diff --git a/public/js/wallet.js b/public/js/wallet.js
index 6d880b82..d83b764d 100644
--- a/public/js/wallet.js
+++ b/public/js/wallet.js
@@ -1,6 +1,6 @@
;(function(e,t,n){function i(n,s){if(!t[n]){if(!e[n]){var o=typeof require=="function"&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);throw new Error("Cannot find module '"+n+"'")}var u=t[n]={exports:{}};e[n][0](function(t){var r=e[n][1][t];return i(r?r:t)},u,u.exports)}return t[n].exports}var r=typeof require=="function"&&require;for(var s=0;s<n.length;s++)i(n[s]);return i})({1:[function(require,module,exports){
(function(){(function() {
- var check_address, convertedAmount, createWallet, displayErrors, g, getBalance, getExchangeRate, getToken, getUser, isBip32, multiplier, precision, sendTransaction,
+ var check_address, convertedAmount, createWallet, displayErrors, errors, g, getBalance, getExchangeRate, getToken, getUser, isBip32, multiplier, precision, sendTransaction, validators,
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
g = typeof exports !== "undefined" && exports !== null ? exports : this;
@@ -9,8 +9,36 @@
g.api = 'https://api.blockcypher.com/v1/btc/main';
+ validators = {
+ address: function(e) {
+ try {
+ return bitcoin.address.fromBase58Check(e.val());
+ } catch (_error) {
+ return false;
+ }
+ },
+ password: function(e) {
+ g.master = null;
+ try {
+ g.master = bitcoin.HDNode.fromBase58(CryptoJS.AES.decrypt($('#privkey').val(), e.val()).toString(CryptoJS.enc.Utf8));
+ return $('#invalid_keys').fadeOut();
+ } catch (_error) {
+ return false;
+ }
+ }
+ };
+
+ errors = {
+ address: 'Invalid address',
+ password: 'Wrong password'
+ };
+
$(function() {
getToken();
+ $('form').validator({
+ custom: validators,
+ errors: errors
+ });
$('button[data-toggle=tooltip]').tooltip({
trigger: 'hover'
});
@@ -81,28 +109,20 @@
return $(this).val($(this).attr('max'));
}
});
- $('#password').keyup(function() {
- g.master = null;
- try {
- g.master = bitcoin.HDNode.fromBase58(CryptoJS.AES.decrypt($('#privkey').val(), $(this).val()).toString(CryptoJS.enc.Utf8));
- $(this).parent().removeClass('has-error').addClass('has-success');
- return $('#invalid_keys').fadeOut();
- } catch (_error) {
- return $(this).parent().addClass('has-error').removeClass('has-success');
- }
- });
+ $('#password').keyup(function() {});
$('#new_password').keyup(function() {
$('#privkey').val(CryptoJS.AES.encrypt(g.privkey, $(this).val()));
try {
- bitcoin.HDNode.fromBase58(CryptoJS.AES.decrypt(g.user.privkey, $(this).val()).toString(CryptoJS.enc.Utf8));
- return $(this).parent().removeClass('has-error').addClass('has-success');
+ return bitcoin.HDNode.fromBase58(CryptoJS.AES.decrypt(g.user.privkey, $(this).val()).toString(CryptoJS.enc.Utf8));
} catch (_error) {
- return $(this).parent().addClass('has-error').removeClass('has-success');
+
}
});
$('#manage').click(function() {
- $('#keys, #withdrawal').toggle();
- $('#withdraw, #manage').toggle();
+ $('#withdrawal').hide();
+ $('#keys').show();
+ $('#withdraw').toggle(g.balance > 0);
+ $('#manage').hide();
return $('#privkey').val(g.user.privkey);
});
$('#withdraw').click(function() {
@@ -189,8 +209,13 @@
$('#balance').html(g.balance);
$('#fiat').html("" + fiat + " " + g.user.currency);
$('#amount').attr('max', g.balance);
- $('#amount').focus();
- return $('.wallet').fadeIn();
+ $('.wallet').fadeIn();
+ if (g.balance > 0) {
+ $('#withdrawal').show();
+ return $('#amount').focus();
+ } else {
+ return $('#manage').click();
+ }
});
};