From 347ccf4947fb8006a1b0310f5ebc7564bb3bfa18 Mon Sep 17 00:00:00 2001 From: Daniel Weigl Date: Sun, 3 Jul 2016 19:28:47 +0200 Subject: [PATCH] Allow HODL transaction to define nLockTime in blockheight or date/time it still has a small UX quirks: the radio buttons dont get restored correctly after page reload --- index.html | 14 +++++++++++++- js/coinbin.js | 32 ++++++++++++++++++++++++++++---- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/index.html b/index.html index 759bb70..7892ad7 100644 --- a/index.html +++ b/index.html @@ -408,7 +408,16 @@ -

Enter the date and time required to release the coins:

+

+ Enter the + + + or + + + + required to release the coins: +

@@ -418,6 +427,9 @@
+
diff --git a/js/coinbin.js b/js/coinbin.js index 6d21b7a..7c7ffc4 100644 --- a/js/coinbin.js +++ b/js/coinbin.js @@ -369,6 +369,16 @@ $(document).ready(function() { format: "MM/DD/YYYY HH:mm", }); + $('#timeLockedRbTypeBox input').change(function(){ + if ($('#timeLockedRbTypeDate').is(':checked')){ + $('#timeLockedDateTimePicker').show(); + $('#timeLockedBlockHeight').hide(); + } else { + $('#timeLockedDateTimePicker').hide(); + $('#timeLockedBlockHeight').removeClass('hidden').show(); + } + }); + $("#newTimeLockedAddress").click(function(){ $("#timeLockedData").removeClass('show').addClass('hidden').fadeOut(); @@ -380,14 +390,28 @@ $(document).ready(function() { $('#timeLockedPubKey').parent().addClass('has-error'); } - var date = $('#timeLockedDateTimePicker').data("DateTimePicker").date(); - if(!date || !date.isValid()) { - $('#timeLockedDateTimePicker').parent().addClass('has-error'); + var nLockTime = -1; + + if ($('#timeLockedRbTypeDate').is(':checked')){ + // by date + var date = $('#timeLockedDateTimePicker').data("DateTimePicker").date(); + if(!date || !date.isValid()) { + $('#timeLockedDateTimePicker').parent().addClass('has-error'); + } + nLockTime = date.unix() + if (nLockTime < 500000000) { + $('#timeLockedDateTimePicker').parent().addClass('has-error'); + } + } else { + nLockTime = parseInt($('#timeLockedBlockHeightVal').val(), 10); + if (nLockTime >= 500000000) { + $('#timeLockedDateTimePicker').parent().addClass('has-error'); + } } if(($("#timeLockedPubKey").parent().hasClass('has-error')==false) && $("#timeLockedDateTimePicker").parent().hasClass('has-error')==false){ try { - var hodl = coinjs.simpleHodlAddress($("#timeLockedPubKey").val(), date.unix()); + var hodl = coinjs.simpleHodlAddress($("#timeLockedPubKey").val(), nLockTime); $("#timeLockedData .address").val(hodl['address']); $("#timeLockedData .script").val(hodl['redeemScript']); $("#timeLockedData .scriptUrl").val(document.location.origin+''+document.location.pathname+'?verify='+hodl['redeemScript']+'#verify');