diff --git a/config.js b/config.js
index 984e1b2c8..9c0ef9224 100644
--- a/config.js
+++ b/config.js
@@ -16,7 +16,6 @@ var defaultConfig = {
limits: {
totalCopayers: 12,
mPlusN: 100,
- minAmountSatoshi: 5400,
},
// network layer config
@@ -66,4 +65,4 @@ var defaultConfig = {
verbose: 1,
};
if (typeof module !== 'undefined')
- module.exports = defaultConfig;
+ module.exports = defaultConfig;
\ No newline at end of file
diff --git a/js/controllers/send.js b/js/controllers/send.js
index 6b89a2392..788217edf 100644
--- a/js/controllers/send.js
+++ b/js/controllers/send.js
@@ -9,7 +9,6 @@ angular.module('copayApp.controllers').controller('SendController',
$scope.defaultFee = bitcore.TransactionBuilder.FEE_PER_1000B_SAT * satToUnit;
$scope.unitToBtc = config.unitToSatoshi / bitcore.util.COIN;
$scope.unitToSatoshi = config.unitToSatoshi;
- $scope.minAmount = config.limits.minAmountSatoshi * satToUnit;
$scope.alternativeName = config.alternativeName;
$scope.alternativeIsoCode = config.alternativeIsoCode;
@@ -30,40 +29,38 @@ angular.module('copayApp.controllers').controller('SendController',
*/
Object.defineProperty($scope,
"alternative", {
- get: function () {
- return this._alternative;
- },
- set: function (newValue) {
- this._alternative = newValue;
- if (typeof(newValue) === 'number' && $scope.isRateAvailable) {
- this._amount = parseFloat(
- (rateService.fromFiat(newValue, config.alternativeIsoCode) * satToUnit
- ).toFixed(config.unitDecimals), 10);
- } else {
- this._amount = 0;
- }
- },
- enumerable: true,
- configurable: true
- });
+ get: function() {
+ return this._alternative;
+ },
+ set: function(newValue) {
+ this._alternative = newValue;
+ if (typeof(newValue) === 'number' && $scope.isRateAvailable) {
+ this._amount = parseFloat(
+ (rateService.fromFiat(newValue, config.alternativeIsoCode) * satToUnit).toFixed(config.unitDecimals), 10);
+ } else {
+ this._amount = 0;
+ }
+ },
+ enumerable: true,
+ configurable: true
+ });
Object.defineProperty($scope,
"amount", {
- get: function () {
- return this._amount;
- },
- set: function (newValue) {
- this._amount = newValue;
- if (typeof(newValue) === 'number' && $scope.isRateAvailable) {
- this._alternative = parseFloat(
- (rateService.toFiat(newValue * config.unitToSatoshi, config.alternativeIsoCode)
- ).toFixed(2), 10);
- } else {
- this._alternative = 0;
- }
- },
- enumerable: true,
- configurable: true
- });
+ get: function() {
+ return this._amount;
+ },
+ set: function(newValue) {
+ this._amount = newValue;
+ if (typeof(newValue) === 'number' && $scope.isRateAvailable) {
+ this._alternative = parseFloat(
+ (rateService.toFiat(newValue * config.unitToSatoshi, config.alternativeIsoCode)).toFixed(2), 10);
+ } else {
+ this._alternative = 0;
+ }
+ },
+ enumerable: true,
+ configurable: true
+ });
$scope.loadTxs = function() {
var opts = {
@@ -104,7 +101,7 @@ angular.module('copayApp.controllers').controller('SendController',
$scope.isMobile = isMobile.any();
if (!window.cordova && !navigator.getUserMedia)
- $scope.disableScanner =1;
+ $scope.disableScanner = 1;
$scope.submitForm = function(form) {
if (form.$invalid) {
@@ -187,9 +184,7 @@ angular.module('copayApp.controllers').controller('SendController',
}
// If we're setting the domain, ignore the change.
- if ($rootScope.merchant
- && $rootScope.merchant.domain
- && address === $rootScope.merchant.domain) {
+ if ($rootScope.merchant && $rootScope.merchant.domain && address === $rootScope.merchant.domain) {
uri = {
merchant: $rootScope.merchant.request_url
};
@@ -480,9 +475,7 @@ angular.module('copayApp.controllers').controller('SendController',
var uri;
// If we're setting the domain, ignore the change.
- if ($rootScope.merchant
- && $rootScope.merchant.domain
- && value === $rootScope.merchant.domain) {
+ if ($rootScope.merchant && $rootScope.merchant.domain && value === $rootScope.merchant.domain) {
return;
}
@@ -566,9 +559,7 @@ angular.module('copayApp.controllers').controller('SendController',
var val = scope.sendForm.address.$viewValue || '';
var uri;
// If we're setting the domain, ignore the change.
- if ($rootScope.merchant
- && $rootScope.merchant.domain
- && val === $rootScope.merchant.domain) {
+ if ($rootScope.merchant && $rootScope.merchant.domain && val === $rootScope.merchant.domain) {
uri = {
merchant: $rootScope.merchant.request_url
};
@@ -600,4 +591,4 @@ angular.module('copayApp.controllers').controller('SendController',
});
};
- });
+ });
\ No newline at end of file
diff --git a/js/models/core/Wallet.js b/js/models/core/Wallet.js
index fcae0c43f..f9af99d39 100644
--- a/js/models/core/Wallet.js
+++ b/js/models/core/Wallet.js
@@ -463,7 +463,7 @@ Wallet.prototype.updateTimestamp = function(ts) {
*/
Wallet.prototype._onNoMessages = function() {
log.debug('No messages at the server. Requesting peer sync from: ' + this.lastTimestamp + 1); //TODO
- this.sendWalletReady(null, parseInt((this.lastTimestamp + 1)/1000) ) ;
+ this.sendWalletReady(null, parseInt((this.lastTimestamp + 1) / 1000));
};
/**
@@ -498,7 +498,7 @@ Wallet.prototype._onData = function(senderId, data, ts) {
break;
case 'walletReady':
if (this.lastMessageFrom[senderId] !== 'walletReady') {
- log.debug('peer Sync received. since: ' + (data.sinceTs||0));
+ log.debug('peer Sync received. since: ' + (data.sinceTs || 0));
this.sendPublicKeyRing(senderId);
this.sendAddressBook(senderId);
this.sendAllTxProposals(senderId, data.sinceTs); // send old txps
@@ -2114,7 +2114,6 @@ Wallet.prototype.createTxSync = function(toAddress, amountSatStr, comment, utxos
preconditions.checkArgument(new Address(toAddress).network().name === this.getNetworkName(), 'networkname mismatch');
preconditions.checkState(pkr.isComplete(), 'pubkey ring incomplete');
preconditions.checkState(priv, 'no private key');
- preconditions.checkArgument(bignum(amountSatStr, 10).cmp(copayConfig.limits.minAmountSatoshi) >= 0, 'invalid amount');
if (comment) preconditions.checkArgument(comment.length <= 100);
if (!opts.remainderOut) {
@@ -2523,4 +2522,4 @@ Wallet.request = function(options, callback) {
return ret;
};
-module.exports = Wallet;
+module.exports = Wallet;
\ No newline at end of file
diff --git a/test/test.Wallet.js b/test/test.Wallet.js
index 2ed4298a2..d6b765b46 100644
--- a/test/test.Wallet.js
+++ b/test/test.Wallet.js
@@ -219,7 +219,7 @@ describe('Wallet model', function() {
var t = w.txProposals;
var opts = JSON.parse(t.txps[ntxid].builder.vanilla.opts);
opts.signhash.should.equal(1);
- (opts.lockTime===null).should.be.true;
+ (opts.lockTime === null).should.be.true;
should.not.exist(opts.fee);
should.not.exist(opts.feeSat);
});
@@ -377,7 +377,7 @@ describe('Wallet model', function() {
Wallet.decodeSecret('4fp61K187CsYmjoRQC5iAdC5eGmbCRsAAXfwEwetSQgHvZs27eWKaLaNHRoK');
}).should.
throw();
-
+
(function() {
Wallet.decodeSecret('12345');
}).should.
@@ -765,8 +765,12 @@ describe('Wallet model', function() {
var txp = w.txProposals.get(ntxid);
// Assign fake builder
txp.builder = new Builder();
- sinon.stub(txp.builder, 'build').returns({ isComplete: function () { return false; }});
- (function () {
+ sinon.stub(txp.builder, 'build').returns({
+ isComplete: function() {
+ return false;
+ }
+ });
+ (function() {
w.sendTx(ntxid);
}).should.throw('Tx is not complete. Can not broadcast');
done();
@@ -777,9 +781,11 @@ describe('Wallet model', function() {
var utxo = createUTXO(w);
w.blockchain.fixUnspent(utxo);
w.createTx(toAddress, amountSatStr, null, function(err, ntxid) {
- sinon.stub(w.blockchain, 'broadcast').yields({statusCode: 303});
+ sinon.stub(w.blockchain, 'broadcast').yields({
+ statusCode: 303
+ });
var spyCheckSentTx = sinon.spy(w, '_checkSentTx');
- w.sendTx(ntxid, function () {});
+ w.sendTx(ntxid, function() {});
chai.expect(spyCheckSentTx.calledOnce).to.be.true;
done();
});
@@ -810,37 +816,20 @@ describe('Wallet model', function() {
});
});
- describe('#createTx', function () {
- it('should fail if insight server is down', function (done) {
+ describe('#createTx', function() {
+ it('should fail if insight server is down', function(done) {
var w = cachedCreateW2();
var utxo = createUTXO(w);
w.blockchain.fixUnspent(utxo);
sinon.stub(w, 'getUnspent').yields('error', null);
- w.createTx(toAddress, amountSatStr, null, function(err, ntxid) {
+ w.createTx(toAddress, amountSatStr, null, function(err, ntxid) {
chai.expect(err.message).to.equal('Could not get list of UTXOs');
- done();
+ done();
});
});
});
- describe('#createTxSync', function() {
- it('should fail if amount below min value', function() {
- var w = cachedCreateW2();
- var utxo = createUTXO(w);
-
- var badCreate = function() {
- w.createTxSync(
- 'mgGJEugdPnvhmRuFdbdQcFfoFLc1XXeB79',
- '123',
- null,
- utxo
- );
- }
- chai.expect(badCreate).to.throw('invalid amount');
- });
- });
-
- describe('removeTxWithSpentInputs', function () {
+ describe('removeTxWithSpentInputs', function() {
it('should remove pending TxProposal with spent inputs', function(done) {
var w = cachedCreateW2();
var utxo = createUTXO(w);
@@ -849,7 +838,7 @@ describe('Wallet model', function() {
w.createTx(toAddress, amountSatStr, null, function(err, ntxid) {
w.sendTxProposal(ntxid);
chai.expect(w.getTxProposals().length).to.equal(1);
-
+
// Inputs are still available, txp still valid
w.removeTxWithSpentInputs();
chai.expect(w.getTxProposals().length).to.equal(1);
@@ -874,7 +863,7 @@ describe('Wallet model', function() {
w.createTx(toAddress, '100000', null, function(err, ntxid) {
w.sendTxProposal(ntxid);
chai.expect(w.getTxProposals().length).to.equal(1);
-
+
// Inputs are still available, txp still valid
w.removeTxWithSpentInputs();
chai.expect(w.getTxProposals().length).to.equal(1);
@@ -896,7 +885,7 @@ describe('Wallet model', function() {
w.createTx(toAddress, amountSatStr, null, function(err, ntxid) {
w.sendTxProposal(ntxid);
chai.expect(w.getTxProposals().length).to.equal(1);
-
+
// Inputs are still available, txp still valid
w.removeTxWithSpentInputs();
chai.expect(w.getTxProposals().length).to.equal(1);
@@ -904,7 +893,9 @@ describe('Wallet model', function() {
// Simulate input spent. txp should be removed from txps list
w.blockchain.fixUnspent([]);
var txp = w.txProposals.get(ntxid);
- sinon.stub(txp, 'isPending', function () { return false; })
+ sinon.stub(txp, 'isPending', function() {
+ return false;
+ })
w.removeTxWithSpentInputs();
chai.expect(w.getTxProposals().length).to.equal(1);
@@ -1402,17 +1393,21 @@ describe('Wallet model', function() {
};
var s1 = sinon.stub(w, '_getKeyMap', function() {
- return {1:2};
+ return {
+ 1: 2
+ };
});
var s2 = sinon.stub(w.txProposals, 'merge', function() {
- if (response == 0)
+ if (response == 0)
throw new Error('test error');
return {
ntxid: 1,
txp: {
- setCopayers: function() {return ['oeoe']; } ,
+ setCopayers: function() {
+ return ['oeoe'];
+ },
},
new: response == 1
};
@@ -1538,4 +1533,4 @@ describe('Wallet model', function() {
should.exist(n.networkNonce);
});
-});
+});
\ No newline at end of file
diff --git a/views/send.html b/views/send.html
index 9ce86aa5c..d5747e276 100644
--- a/views/send.html
+++ b/views/send.html
@@ -70,9 +70,8 @@
+ min="0.00000001" max="10000000000" enough-amount required
+ autocomplete="off">