From e992b976e0f073dd6424af0ed7477868836b59fb Mon Sep 17 00:00:00 2001
From: Manuel Araoz
Date: Wed, 3 Sep 2014 11:27:31 -0300
Subject: [PATCH 01/68] settings: refactor views
---
js/controllers/more.js | 10 ++---
js/controllers/settings.js | 2 -
views/more.html | 78 +++++++++++++++++++++++---------------
views/settings.html | 46 ++++++----------------
4 files changed, 63 insertions(+), 73 deletions(-)
diff --git a/js/controllers/more.js b/js/controllers/more.js
index 87c76ebec..5e148c2a5 100644
--- a/js/controllers/more.js
+++ b/js/controllers/more.js
@@ -4,8 +4,8 @@ angular.module('copayApp.controllers').controller('MoreController',
function($scope, $rootScope, $location, backupService, walletFactory, controllerUtils, notification) {
var w = $rootScope.wallet;
- $scope.hideAdv=true;
- $scope.hidePriv=true;
+ $scope.hideAdv = true;
+ $scope.hidePriv = true;
if (w)
$scope.priv = w.privateKey.toObj().extendedPrivateKeyString;
@@ -24,7 +24,7 @@ angular.module('copayApp.controllers').controller('MoreController',
$scope.purge = function(deleteAll) {
var w = $rootScope.wallet;
var removed = w.purgeTxProposals(deleteAll);
- if (removed){
+ if (removed) {
controllerUtils.updateBalance();
}
notification.info('Tx Proposals Purged', removed + ' transaction proposal purged');
@@ -32,14 +32,14 @@ angular.module('copayApp.controllers').controller('MoreController',
$scope.updateIndexes = function() {
var w = $rootScope.wallet;
- notification.info('Scaning for transactions','Using derived addresses from your wallet');
+ notification.info('Scaning for transactions', 'Using derived addresses from your wallet');
w.updateIndexes(function(err) {
notification.info('Scan Ended', 'Updating balance');
if (err) {
notification.error('Error', 'Error updating indexes: ' + err);
}
controllerUtils.updateAddressList();
- controllerUtils.updateBalance(function(){
+ controllerUtils.updateBalance(function() {
notification.info('Finished', 'The balance is updated using the derived addresses');
w.sendIndexes();
});
diff --git a/js/controllers/settings.js b/js/controllers/settings.js
index 4e3020666..578e6ac0d 100644
--- a/js/controllers/settings.js
+++ b/js/controllers/settings.js
@@ -4,11 +4,9 @@ angular.module('copayApp.controllers').controller('SettingsController', function
controllerUtils.redirIfLogged();
$scope.title = 'Settings';
- $scope.networkName = config.networkName;
$scope.insightHost = config.blockchain.host;
$scope.insightPort = config.blockchain.port;
$scope.insightSecure = config.blockchain.schema === 'https';
- $scope.forceNetwork = config.forceNetwork;
$scope.defaultLanguage = config.defaultLanguage || 'en';
$scope.availableLanguages = [{
diff --git a/views/more.html b/views/more.html
index 78943d5d8..cc993d32f 100644
--- a/views/more.html
+++ b/views/more.html
@@ -1,62 +1,79 @@
Settings
-
-
Backup
-
It's important to backup your wallet so that you can recover it in case of disaster
-
+
+
Backup
+
It's important to backup your wallet so that you can recover it in case of disaster
+
-
+
+
+
+
-
- Delete Wallet
-
If all funds have been removed from your wallet and you do not wish to have the wallet data stored on your computer anymore, you can delete your wallet.
+
Delete Wallet
+
If all funds have been removed from your wallet and you do not wish to have the wallet data stored on your computer anymore, you can delete your wallet.
-
- Show
- Hide
- advanced options
-
+
+ Show
+ Hide
+ advanced options
+
-
-
-
+
+
+
Master Private Key
Your master private key contains the information to sign any transaction on this wallet. Handle with care.
-
-
-
Scan Wallet Addresses
+
+
+
Scan Wallet Addresses
- This will scan the blockchain looking for addresses derived from your wallet, in case you have funds in addresses not yet generated (e.g.: you restored an old backup). This will also trigger a syncronization of addresses to other connected peers.
+ This will scan the blockchain looking for addresses derived from your wallet, in case you have funds in addresses not yet generated (e.g.: you restored an old backup). This will also trigger a syncronization of addresses to other connected peers.
-
-
-
Purge Pending Transaction Proposals
+
+
+
Purge Pending Transaction Proposals
- Pending Transactions Proposals will be discarted. This need to be done on ALL peers of a wallet, to prevent the old proposals to be resynced again.
+ Pending Transactions Proposals will be discarted. This need to be done on ALL peers of a wallet, to prevent the old proposals to be resynced again.
-
diff --git a/views/settings.html b/views/settings.html
index 0c4ceaf18..b9ce464ac 100644
--- a/views/settings.html
+++ b/views/settings.html
@@ -10,45 +10,22 @@
-
From 921cb8dd90cedb8cb849cb2f6dfdba2f4efcecef Mon Sep 17 00:00:00 2001
From: Manuel Araoz
Date: Wed, 3 Sep 2014 11:33:45 -0300
Subject: [PATCH 02/68] settings: refactor controllers
---
js/controllers/more.js | 47 +++++++++++++++++++++++++++++++++++
js/controllers/settings.js | 50 +-------------------------------------
2 files changed, 48 insertions(+), 49 deletions(-)
diff --git a/js/controllers/more.js b/js/controllers/more.js
index 5e148c2a5..7b972128f 100644
--- a/js/controllers/more.js
+++ b/js/controllers/more.js
@@ -4,6 +4,53 @@ angular.module('copayApp.controllers').controller('MoreController',
function($scope, $rootScope, $location, backupService, walletFactory, controllerUtils, notification) {
var w = $rootScope.wallet;
+
+ $scope.unitOpts = [{
+ name: 'Satoshis (100,000,000 satoshis = 1BTC)',
+ shortName: 'SAT',
+ value: 1,
+ decimals: 0
+ }, {
+ name: 'bits (1,000,000 bits = 1BTC)',
+ shortName: 'bits',
+ value: 100,
+ decimals: 2
+ }, {
+ name: 'mBTC (1,000 mBTC = 1BTC)',
+ shortName: 'mBTC',
+ value: 100000,
+ decimals: 5
+ }, {
+ name: 'BTC',
+ shortName: 'BTC',
+ value: 100000000,
+ decimals: 8
+ }];
+ $scope.selectedAlternative = {
+ name: config.alternativeName,
+ isoCode: config.alternativeIsoCode
+ };
+ $scope.alternativeOpts = rateService.isAvailable ?
+ rateService.listAlternatives() : [$scope.selectedAlternative];
+
+ rateService.whenAvailable(function() {
+ $scope.alternativeOpts = rateService.listAlternatives();
+ for (var ii in $scope.alternativeOpts) {
+ if (config.alternativeIsoCode === $scope.alternativeOpts[ii].isoCode) {
+ $scope.selectedAlternative = $scope.alternativeOpts[ii];
+ }
+ }
+ });
+
+
+ for (var ii in $scope.unitOpts) {
+ if (config.unitName === $scope.unitOpts[ii].shortName) {
+ $scope.selectedUnit = $scope.unitOpts[ii];
+ break;
+ }
+ }
+
+
$scope.hideAdv = true;
$scope.hidePriv = true;
if (w)
diff --git a/js/controllers/settings.js b/js/controllers/settings.js
index 578e6ac0d..6d2ca9896 100644
--- a/js/controllers/settings.js
+++ b/js/controllers/settings.js
@@ -1,6 +1,6 @@
'use strict';
-angular.module('copayApp.controllers').controller('SettingsController', function($scope, $rootScope, $window, $location, controllerUtils, rateService) {
+angular.module('copayApp.controllers').controller('SettingsController', function($scope, $rootScope, $window, $location, controllerUtils) {
controllerUtils.redirIfLogged();
$scope.title = 'Settings';
@@ -24,54 +24,6 @@ angular.module('copayApp.controllers').controller('SettingsController', function
}
}
- $scope.unitOpts = [{
- name: 'Satoshis (100,000,000 satoshis = 1BTC)',
- shortName: 'SAT',
- value: 1,
- decimals: 0
- }, {
- name: 'bits (1,000,000 bits = 1BTC)',
- shortName: 'bits',
- value: 100,
- decimals: 2
- }, {
- name: 'mBTC (1,000 mBTC = 1BTC)',
- shortName: 'mBTC',
- value: 100000,
- decimals: 5
- }, {
- name: 'BTC',
- shortName: 'BTC',
- value: 100000000,
- decimals: 8
- }];
-
- $scope.selectedAlternative = {
- name: config.alternativeName,
- isoCode: config.alternativeIsoCode
- };
- $scope.alternativeOpts = rateService.isAvailable ?
- rateService.listAlternatives() : [$scope.selectedAlternative];
-
- rateService.whenAvailable(function() {
- $scope.alternativeOpts = rateService.listAlternatives();
- for (var ii in $scope.alternativeOpts) {
- if (config.alternativeIsoCode === $scope.alternativeOpts[ii].isoCode) {
- $scope.selectedAlternative = $scope.alternativeOpts[ii];
- }
- }
- });
-
- for (var ii in $scope.unitOpts) {
- if (config.unitName === $scope.unitOpts[ii].shortName) {
- $scope.selectedUnit = $scope.unitOpts[ii];
- break;
- }
- }
-
- $scope.changeNetwork = function() {
- $scope.insightHost = $scope.networkName !== 'testnet' ? 'test-insight.bitpay.com' : 'insight.bitpay.com';
- };
$scope.changeInsightSSL = function() {
From d2861d9c2ad1d12346d7b26d292b8b96b8503f76 Mon Sep 17 00:00:00 2001
From: Manuel Araoz
Date: Wed, 3 Sep 2014 13:11:32 -0300
Subject: [PATCH 03/68] settings: create new model
---
js/controllers/more.js | 16 ++++++++++------
js/controllers/settings.js | 24 ++++++++----------------
js/models/core/Settings.js | 12 ++++++++++++
js/models/core/Wallet.js | 2 ++
4 files changed, 32 insertions(+), 22 deletions(-)
create mode 100644 js/models/core/Settings.js
diff --git a/js/controllers/more.js b/js/controllers/more.js
index 7b972128f..8431f1634 100644
--- a/js/controllers/more.js
+++ b/js/controllers/more.js
@@ -1,10 +1,9 @@
'use strict';
angular.module('copayApp.controllers').controller('MoreController',
- function($scope, $rootScope, $location, backupService, walletFactory, controllerUtils, notification) {
+ function($scope, $rootScope, $location, backupService, walletFactory, controllerUtils, notification, rateService) {
var w = $rootScope.wallet;
-
$scope.unitOpts = [{
name: 'Satoshis (100,000,000 satoshis = 1BTC)',
shortName: 'SAT',
@@ -49,6 +48,15 @@ angular.module('copayApp.controllers').controller('MoreController',
break;
}
}
+ $scope.save = function() {
+ w.changeSettings({
+ unitName: $scope.selectedUnit.shortName,
+ unitToSatoshi: $scope.selectedUnit.value,
+ unitDecimals: $scope.selectedUnit.decimals,
+ alternativeName: $scope.selectedAlternative.name,
+ alternativeIsoCode: $scope.selectedAlternative.isoCode,
+ });
+ };
$scope.hideAdv = true;
@@ -57,19 +65,16 @@ angular.module('copayApp.controllers').controller('MoreController',
$scope.priv = w.privateKey.toObj().extendedPrivateKeyString;
$scope.downloadBackup = function() {
- var w = $rootScope.wallet;
backupService.download(w);
}
$scope.deleteWallet = function() {
- var w = $rootScope.wallet;
walletFactory.delete(w.id, function() {
controllerUtils.logout();
});
};
$scope.purge = function(deleteAll) {
- var w = $rootScope.wallet;
var removed = w.purgeTxProposals(deleteAll);
if (removed) {
controllerUtils.updateBalance();
@@ -78,7 +83,6 @@ angular.module('copayApp.controllers').controller('MoreController',
};
$scope.updateIndexes = function() {
- var w = $rootScope.wallet;
notification.info('Scaning for transactions', 'Using derived addresses from your wallet');
w.updateIndexes(function(err) {
notification.info('Scan Ended', 'Updating balance');
diff --git a/js/controllers/settings.js b/js/controllers/settings.js
index 6d2ca9896..d4c3d1426 100644
--- a/js/controllers/settings.js
+++ b/js/controllers/settings.js
@@ -37,24 +37,16 @@ angular.module('copayApp.controllers').controller('SettingsController', function
network.port = $scope.insightPort;
network.schema = $scope.insightSecure ? 'https' : 'http';
+ var insightSettings = {
+ host: $scope.insightHost,
+ port: $scope.insightPort,
+ schema: $scope.insightSecure ? 'https' : 'http',
+ }
+
localStorage.setItem('config', JSON.stringify({
- networkName: $scope.networkName,
- blockchain: {
- host: $scope.insightHost,
- port: $scope.insightPort,
- schema: $scope.insightSecure ? 'https' : 'http',
- },
- socket: {
- host: $scope.insightHost,
- port: $scope.insightPort,
- schema: $scope.insightSecure ? 'https' : 'http',
- },
+ blockchain: insightSettings,
+ socket: insightSettings,
network: network,
- unitName: $scope.selectedUnit.shortName,
- unitToSatoshi: $scope.selectedUnit.value,
- unitDecimals: $scope.selectedUnit.decimals,
- alternativeName: $scope.selectedAlternative.name,
- alternativeIsoCode: $scope.selectedAlternative.isoCode,
version: copay.version,
defaultLanguage: $scope.selectedLanguage.isoCode
diff --git a/js/models/core/Settings.js b/js/models/core/Settings.js
new file mode 100644
index 000000000..4d8cbc0de
--- /dev/null
+++ b/js/models/core/Settings.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var preconditions = require('preconditions').singleton();
+var log = require('../../log');
+
+var copayConfig = require('../../../config');
+
+function Settings(opts) {
+ var self = this;
+}
+
+module.exports = Settings;
diff --git a/js/models/core/Wallet.js b/js/models/core/Wallet.js
index f9af99d39..4ba28a149 100644
--- a/js/models/core/Wallet.js
+++ b/js/models/core/Wallet.js
@@ -25,6 +25,7 @@ var TxProposal = require('./TxProposal');
var TxProposals = require('./TxProposals');
var PrivateKey = require('./PrivateKey');
var WalletLock = require('./WalletLock');
+var Settings = require('./Settings');
var copayConfig = require('../../../config');
/**
@@ -73,6 +74,7 @@ function Wallet(opts) {
this.id = opts.id || Wallet.getRandomId();
this.secretNumber = opts.secretNumber || Wallet.getRandomNumber();
this.lock = new WalletLock(this.storage, this.id, opts.lockTimeOutMin);
+ this.settings = new Settings(opts.settings);
this.name = opts.name;
this.verbose = opts.verbose;
From ecceb668e300a97ceaed1ccdbbe7f38f00f19c20 Mon Sep 17 00:00:00 2001
From: Manuel Araoz
Date: Wed, 3 Sep 2014 13:11:44 -0300
Subject: [PATCH 04/68] settings: nuke verbose
---
js/models/core/Wallet.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/js/models/core/Wallet.js b/js/models/core/Wallet.js
index 4ba28a149..daa985438 100644
--- a/js/models/core/Wallet.js
+++ b/js/models/core/Wallet.js
@@ -77,7 +77,6 @@ function Wallet(opts) {
this.settings = new Settings(opts.settings);
this.name = opts.name;
- this.verbose = opts.verbose;
this.publicKeyRing.walletId = this.id;
this.txProposals.walletId = this.id;
this.network.maxPeers = this.totalCopayers;
From f9a31ce9aa6ad50dd0ea6eeba0e005c5987b20c0 Mon Sep 17 00:00:00 2001
From: Manuel Araoz
Date: Wed, 3 Sep 2014 13:17:59 -0300
Subject: [PATCH 05/68] settings: nuke verbose 2
---
config.js | 18 ++++++++----------
js/models/core/Settings.js | 6 ++++++
js/models/core/Wallet.js | 4 +++-
js/models/core/WalletFactory.js | 2 --
test/test.PayPro.js | 1 -
test/test.Wallet.js | 3 +--
test/test.WalletFactory.js | 2 --
7 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/config.js b/config.js
index 9c0ef9224..d84a3af9e 100644
--- a/config.js
+++ b/config.js
@@ -6,11 +6,6 @@ var defaultConfig = {
forceNetwork: false,
logLevel: 'info',
- // DEFAULT unit: Bit
- unitName: 'bits',
- unitToSatoshi: 100,
- alternativeName: 'US Dollar',
- alternativeIsoCode: 'USD',
// wallet limits
limits: {
@@ -30,10 +25,14 @@ var defaultConfig = {
requiredCopayers: 2,
totalCopayers: 3,
spendUnconfirmed: true,
- verbose: 1,
- // will duplicate itself after each try
reconnectDelay: 5000,
- idleDurationMin: 4
+ idleDurationMin: 4,
+ settings: {
+ unitName: 'bits',
+ unitToSatoshi: 100,
+ alternativeName: 'US Dollar',
+ alternativeIsoCode: 'USD',
+ }
},
// blockchain service API config
@@ -62,7 +61,6 @@ var defaultConfig = {
updateFrequencySeconds: 60 * 60
},
- verbose: 1,
};
if (typeof module !== 'undefined')
- module.exports = defaultConfig;
\ No newline at end of file
+ module.exports = defaultConfig;
diff --git a/js/models/core/Settings.js b/js/models/core/Settings.js
index 4d8cbc0de..8ec86fe53 100644
--- a/js/models/core/Settings.js
+++ b/js/models/core/Settings.js
@@ -9,4 +9,10 @@ function Settings(opts) {
var self = this;
}
+Settings.prototype.toObj = function() {
+ return {
+
+ }
+};
+
module.exports = Settings;
diff --git a/js/models/core/Wallet.js b/js/models/core/Wallet.js
index daa985438..66dd1fa13 100644
--- a/js/models/core/Wallet.js
+++ b/js/models/core/Wallet.js
@@ -799,6 +799,7 @@ Wallet.prototype.toObj = function() {
var walletObj = {
opts: optsObj,
+ settings: this.settings.toObj();
networkNonce: networkNonce, //yours
networkNonces: networkNonces, //copayers
publicKeyRing: this.publicKeyRing.toObj(),
@@ -832,6 +833,7 @@ Wallet.fromObj = function(o, storage, network, blockchain) {
var opts = JSON.parse(JSON.stringify(o.opts));
opts.addressBook = o.addressBook;
+ opts.settings = o.settings;
if (o.privateKey) {
opts.privateKey = PrivateKey.fromObj(o.privateKey);
@@ -2523,4 +2525,4 @@ Wallet.request = function(options, callback) {
return ret;
};
-module.exports = Wallet;
\ No newline at end of file
+module.exports = Wallet;
diff --git a/js/models/core/WalletFactory.js b/js/models/core/WalletFactory.js
index 2df26a931..bde1f27e1 100644
--- a/js/models/core/WalletFactory.js
+++ b/js/models/core/WalletFactory.js
@@ -95,7 +95,6 @@ WalletFactory.prototype.fromObj = function(obj, skipFields) {
var w = Wallet.fromObj(obj, this.storage, this.network, this.blockchain);
if (!w) return false;
- w.verbose = this.verbose;
this._checkVersion(w.version);
this._checkNetwork(w.getNetworkName());
return w;
@@ -217,7 +216,6 @@ WalletFactory.prototype.create = function(opts) {
opts.storage = this.storage;
opts.network = this.network;
opts.blockchain = this.blockchain;
- opts.verbose = this.verbose;
opts.spendUnconfirmed = opts.spendUnconfirmed || this.walletDefaults.spendUnconfirmed;
opts.reconnectDelay = opts.reconnectDelay || this.walletDefaults.reconnectDelay;
diff --git a/test/test.PayPro.js b/test/test.PayPro.js
index fbbeaf7ef..77872c23e 100644
--- a/test/test.PayPro.js
+++ b/test/test.PayPro.js
@@ -86,7 +86,6 @@ describe('PayPro (in Wallet) model', function() {
};
c.networkName = walletConfig.networkName;
- c.verbose = walletConfig.verbose;
c.version = '0.0.1';
return new Wallet(c);
diff --git a/test/test.Wallet.js b/test/test.Wallet.js
index d6b765b46..e32698b3e 100644
--- a/test/test.Wallet.js
+++ b/test/test.Wallet.js
@@ -102,7 +102,6 @@ describe('Wallet model', function() {
};
c.networkName = walletConfig.networkName;
- c.verbose = walletConfig.verbose;
c.version = '0.0.1';
@@ -1533,4 +1532,4 @@ describe('Wallet model', function() {
should.exist(n.networkNonce);
});
-});
\ No newline at end of file
+});
diff --git a/test/test.WalletFactory.js b/test/test.WalletFactory.js
index b79bdcd5c..d6cd93ac0 100644
--- a/test/test.WalletFactory.js
+++ b/test/test.WalletFactory.js
@@ -290,7 +290,6 @@ describe('WalletFactory model', function() {
"totalCopayers": 3,
"reconnectDelay": 100,
"spendUnconfirmed": 1,
- "verbose": 0
},
"blockchain": {
"host": "test.insight.is",
@@ -300,7 +299,6 @@ describe('WalletFactory model', function() {
"host": "test.insight.is",
"port": 3001
},
- "verbose": 0,
"themes": ["default"],
};
var wf = new WalletFactory(sconfig, '0.0.1');
From f443843d491ce73b53c61b293dd40a4287057966 Mon Sep 17 00:00:00 2001
From: Manuel Araoz
Date: Wed, 3 Sep 2014 13:28:14 -0300
Subject: [PATCH 06/68] settings: change old settings controller
---
js/controllers/more.js | 8 ++++----
js/controllers/settings.js | 16 +++++-----------
js/models/core/Wallet.js | 2 +-
3 files changed, 10 insertions(+), 16 deletions(-)
diff --git a/js/controllers/more.js b/js/controllers/more.js
index 8431f1634..cf619b6a9 100644
--- a/js/controllers/more.js
+++ b/js/controllers/more.js
@@ -26,8 +26,8 @@ angular.module('copayApp.controllers').controller('MoreController',
decimals: 8
}];
$scope.selectedAlternative = {
- name: config.alternativeName,
- isoCode: config.alternativeIsoCode
+ name: w.settings.alternativeName,
+ isoCode: w.settings.alternativeIsoCode
};
$scope.alternativeOpts = rateService.isAvailable ?
rateService.listAlternatives() : [$scope.selectedAlternative];
@@ -35,7 +35,7 @@ angular.module('copayApp.controllers').controller('MoreController',
rateService.whenAvailable(function() {
$scope.alternativeOpts = rateService.listAlternatives();
for (var ii in $scope.alternativeOpts) {
- if (config.alternativeIsoCode === $scope.alternativeOpts[ii].isoCode) {
+ if (w.settings.alternativeIsoCode === $scope.alternativeOpts[ii].isoCode) {
$scope.selectedAlternative = $scope.alternativeOpts[ii];
}
}
@@ -43,7 +43,7 @@ angular.module('copayApp.controllers').controller('MoreController',
for (var ii in $scope.unitOpts) {
- if (config.unitName === $scope.unitOpts[ii].shortName) {
+ if (w.settings.unitName === $scope.unitOpts[ii].shortName) {
$scope.selectedUnit = $scope.unitOpts[ii];
break;
}
diff --git a/js/controllers/settings.js b/js/controllers/settings.js
index d4c3d1426..3141d6d62 100644
--- a/js/controllers/settings.js
+++ b/js/controllers/settings.js
@@ -4,9 +4,9 @@ angular.module('copayApp.controllers').controller('SettingsController', function
controllerUtils.redirIfLogged();
$scope.title = 'Settings';
- $scope.insightHost = config.blockchain.host;
- $scope.insightPort = config.blockchain.port;
- $scope.insightSecure = config.blockchain.schema === 'https';
+ $scope.insightHost = config.network.host;
+ $scope.insightPort = config.network.port;
+ $scope.insightSecure = config.network.schema === 'https';
$scope.defaultLanguage = config.defaultLanguage || 'en';
$scope.availableLanguages = [{
@@ -33,9 +33,6 @@ angular.module('copayApp.controllers').controller('SettingsController', function
$scope.save = function() {
var network = config.network;
- network.host = $scope.insightHost;
- network.port = $scope.insightPort;
- network.schema = $scope.insightSecure ? 'https' : 'http';
var insightSettings = {
host: $scope.insightHost,
@@ -44,11 +41,8 @@ angular.module('copayApp.controllers').controller('SettingsController', function
}
localStorage.setItem('config', JSON.stringify({
- blockchain: insightSettings,
- socket: insightSettings,
- network: network,
-
- version: copay.version,
+ network: insightSettings,
+ version: copay.version
defaultLanguage: $scope.selectedLanguage.isoCode
}));
diff --git a/js/models/core/Wallet.js b/js/models/core/Wallet.js
index 66dd1fa13..db38f95e2 100644
--- a/js/models/core/Wallet.js
+++ b/js/models/core/Wallet.js
@@ -799,7 +799,7 @@ Wallet.prototype.toObj = function() {
var walletObj = {
opts: optsObj,
- settings: this.settings.toObj();
+ settings: this.settings.toObj(),
networkNonce: networkNonce, //yours
networkNonces: networkNonces, //copayers
publicKeyRing: this.publicKeyRing.toObj(),
From cff9f567bbc5c6ec22152775331104bddfdea9c1 Mon Sep 17 00:00:00 2001
From: Manuel Araoz
Date: Wed, 3 Sep 2014 14:44:48 -0300
Subject: [PATCH 07/68] settings: no settings model after all
---
js/controllers/settings.js | 2 --
js/models/core/Settings.js | 18 ------------------
js/models/core/Wallet.js | 9 +++------
3 files changed, 3 insertions(+), 26 deletions(-)
delete mode 100644 js/models/core/Settings.js
diff --git a/js/controllers/settings.js b/js/controllers/settings.js
index 3141d6d62..b8b5ed1a8 100644
--- a/js/controllers/settings.js
+++ b/js/controllers/settings.js
@@ -24,8 +24,6 @@ angular.module('copayApp.controllers').controller('SettingsController', function
}
}
-
-
$scope.changeInsightSSL = function() {
$scope.insightPort = $scope.insightSecure ? 80 : 443;
};
diff --git a/js/models/core/Settings.js b/js/models/core/Settings.js
deleted file mode 100644
index 8ec86fe53..000000000
--- a/js/models/core/Settings.js
+++ /dev/null
@@ -1,18 +0,0 @@
-'use strict';
-
-var preconditions = require('preconditions').singleton();
-var log = require('../../log');
-
-var copayConfig = require('../../../config');
-
-function Settings(opts) {
- var self = this;
-}
-
-Settings.prototype.toObj = function() {
- return {
-
- }
-};
-
-module.exports = Settings;
diff --git a/js/models/core/Wallet.js b/js/models/core/Wallet.js
index db38f95e2..98c1971e4 100644
--- a/js/models/core/Wallet.js
+++ b/js/models/core/Wallet.js
@@ -25,7 +25,6 @@ var TxProposal = require('./TxProposal');
var TxProposals = require('./TxProposals');
var PrivateKey = require('./PrivateKey');
var WalletLock = require('./WalletLock');
-var Settings = require('./Settings');
var copayConfig = require('../../../config');
/**
@@ -74,7 +73,7 @@ function Wallet(opts) {
this.id = opts.id || Wallet.getRandomId();
this.secretNumber = opts.secretNumber || Wallet.getRandomNumber();
this.lock = new WalletLock(this.storage, this.id, opts.lockTimeOutMin);
- this.settings = new Settings(opts.settings);
+ this.settings = opts.settings || copayConfig.settings;
this.name = opts.name;
this.publicKeyRing.walletId = this.id;
@@ -781,9 +780,7 @@ Wallet.prototype.keepAlive = function() {
*/
Wallet.prototype.store = function() {
this.keepAlive();
-
- var wallet = this.toObj();
- this.storage.setFromObj(this.id, wallet);
+ this.storage.setFromObj(this.id, this.toObj());
log.debug('Wallet stored');
};
@@ -799,7 +796,7 @@ Wallet.prototype.toObj = function() {
var walletObj = {
opts: optsObj,
- settings: this.settings.toObj(),
+ settings: this.settings,
networkNonce: networkNonce, //yours
networkNonces: networkNonces, //copayers
publicKeyRing: this.publicKeyRing.toObj(),
From c9cb2aae578f4e96b35df033682343b4d83f083c Mon Sep 17 00:00:00 2001
From: Manuel Araoz
Date: Wed, 3 Sep 2014 14:45:35 -0300
Subject: [PATCH 08/68] settings: small refactor
---
js/models/core/Wallet.js | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/js/models/core/Wallet.js b/js/models/core/Wallet.js
index 98c1971e4..0e1f63737 100644
--- a/js/models/core/Wallet.js
+++ b/js/models/core/Wallet.js
@@ -791,14 +791,11 @@ Wallet.prototype.store = function() {
Wallet.prototype.toObj = function() {
var optsObj = this._optsToObj();
- var networkNonce = this.network.getHexNonce();
- var networkNonces = this.network.getHexNonces();
-
var walletObj = {
opts: optsObj,
settings: this.settings,
- networkNonce: networkNonce, //yours
- networkNonces: networkNonces, //copayers
+ networkNonce: this.network.getHexNonce(), //yours
+ networkNonces: this.network.getHexNonces(), //copayers
publicKeyRing: this.publicKeyRing.toObj(),
txProposals: this.txProposals.toObj(),
privateKey: this.privateKey ? this.privateKey.toObj() : undefined,
From c1d8103374fdfdef487034f659c6bf462e8a1f16 Mon Sep 17 00:00:00 2001
From: Manuel Araoz
Date: Mon, 8 Sep 2014 16:26:58 -0700
Subject: [PATCH 09/68] fix settings.js
---
config.js | 15 ---------------
js/controllers/settings.js | 2 +-
js/models/core/Wallet.js | 17 ++++++++++++++++-
js/models/core/WalletFactory.js | 2 +-
4 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/config.js b/config.js
index d84a3af9e..f9ca1170d 100644
--- a/config.js
+++ b/config.js
@@ -35,21 +35,6 @@ var defaultConfig = {
}
},
- // blockchain service API config
- blockchain: {
- schema: 'https',
- host: 'test-insight.bitpay.com',
- port: 443,
- retryDelay: 1000,
- },
- // socket service API config
- socket: {
- schema: 'https',
- host: 'test-insight.bitpay.com',
- port: 443,
- reconnectDelay: 1000,
- },
-
// local encryption/security config
passphrase: {
iterations: 100,
diff --git a/js/controllers/settings.js b/js/controllers/settings.js
index b8b5ed1a8..620a06e36 100644
--- a/js/controllers/settings.js
+++ b/js/controllers/settings.js
@@ -40,7 +40,7 @@ angular.module('copayApp.controllers').controller('SettingsController', function
localStorage.setItem('config', JSON.stringify({
network: insightSettings,
- version: copay.version
+ version: copay.version,
defaultLanguage: $scope.selectedLanguage.isoCode
}));
diff --git a/js/models/core/Wallet.js b/js/models/core/Wallet.js
index 0e1f63737..4f603da24 100644
--- a/js/models/core/Wallet.js
+++ b/js/models/core/Wallet.js
@@ -161,6 +161,22 @@ Wallet.prototype._onIndexes = function(senderId, data) {
}
};
+/**
+ * @desc
+ * Changes wallet settings. The settings format is:
+ *
+ * var settings = {
+ * unitName: 'bits',
+ * unitToSatoshi: 100,
+ * alternativeName: 'US Dollar',
+ * alternativeIsoCode: 'USD',
+ * };
+ */
+Wallet.prototype.changeSettings = function(settings) {
+ console.log(settings);
+ this.settings = settings;
+};
+
/**
* @desc
* Handles a 'PUBLICKEYRING' message from senderId .
@@ -893,7 +909,6 @@ Wallet.prototype.send = function(recipients, obj) {
Wallet.prototype.sendAllTxProposals = function(recipients, sinceTs) {
var ntxids = sinceTs ? this.txProposals.getNtxidsSince(sinceTs) : this.txProposals.getNtxids();
var self = this;
-
_.each(ntxids, function(ntxid, key) {
self.sendTxProposal(ntxid, recipients);
});
diff --git a/js/models/core/WalletFactory.js b/js/models/core/WalletFactory.js
index bde1f27e1..9f052e8f6 100644
--- a/js/models/core/WalletFactory.js
+++ b/js/models/core/WalletFactory.js
@@ -42,7 +42,7 @@ function WalletFactory(config, version) {
this.storage = new this.Storage(config.storage);
this.network = new this.Network(config.network);
- this.blockchain = new this.Blockchain(config.blockchain);
+ this.blockchain = new this.Blockchain(config.network);
this.networkName = config.networkName;
this.walletDefaults = config.wallet;
From 3e9328f9514985de9adde669e1c677e554537e7e Mon Sep 17 00:00:00 2001
From: Manuel Araoz
Date: Wed, 3 Sep 2014 15:05:44 -0300
Subject: [PATCH 10/68] settings: Insight.js refactor
---
js/models/blockchain/Insight.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/js/models/blockchain/Insight.js b/js/models/blockchain/Insight.js
index 00a4dddba..d71ea79a7 100644
--- a/js/models/blockchain/Insight.js
+++ b/js/models/blockchain/Insight.js
@@ -45,6 +45,7 @@ var Insight = function(opts) {
'secure': opts.schema === 'https'
};
+ this.socket = this.getSocket();
}
util.inherits(Insight, EventEmitter);
@@ -105,7 +106,7 @@ Insight.prototype._setMainHandlers = function(url, opts) {
/** @private */
-Insight.prototype.getSocket = function(url, opts) {
+Insight.prototype.getSocket = function() {
if (!this.socket) {
this.socket = this._getSocketIO(this.url, this.opts);
From 08db6831ce854c1aa972bfa67a99a13710ec1edd Mon Sep 17 00:00:00 2001
From: Manuel Araoz
Date: Wed, 3 Sep 2014 15:08:14 -0300
Subject: [PATCH 11/68] settings: Insight.js refactor 2
---
test/test.blockchain.Insight.js | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/test/test.blockchain.Insight.js b/test/test.blockchain.Insight.js
index b43003ed6..730d837f6 100644
--- a/test/test.blockchain.Insight.js
+++ b/test/test.blockchain.Insight.js
@@ -348,7 +348,7 @@ describe('Insight model', function() {
});
describe('Events', function() {
- it('should emmit event on a new block', function(done) {
+ it('should emit event on a new block', function(done) {
var blockchain = new Insight(FAKE_OPTS);
var socket = blockchain.getSocket();
blockchain.on('connect', function() {
@@ -362,7 +362,7 @@ describe('Insight model', function() {
});
});
- it('should emmit event on a transaction for subscribed addresses', function(done) {
+ it('should emit event on a transaction for subscribed addresses', function(done) {
var blockchain = new Insight(FAKE_OPTS);
var socket = blockchain.getSocket();
blockchain.subscribe('2NFjCBFZSsxiwWAD7CKQ3hzWFtf9DcqTucY');
@@ -378,7 +378,7 @@ describe('Insight model', function() {
});
});
- it('should\'t emmit event on a transaction for non subscribed addresses', function(done) {
+ it('should\'t emit event on a transaction for non subscribed addresses', function(done) {
var blockchain = new Insight(FAKE_OPTS);
var socket = blockchain.getSocket();
blockchain.on('connect', function() {
@@ -392,7 +392,7 @@ describe('Insight model', function() {
});
});
- it('should emmit event on connection', function(done) {
+ it('should emit event on connection', function(done) {
var blockchain = new Insight(FAKE_OPTS);
var socket = blockchain.getSocket();
blockchain.on('connect', function() {
@@ -400,7 +400,7 @@ describe('Insight model', function() {
});
});
- it('should emmit event on disconnection', function(done) {
+ it('should emit event on disconnection', function(done) {
var blockchain = new Insight(FAKE_OPTS);
var socket = blockchain.getSocket();
blockchain.on('connect', function() {
From e3afce6a9f77117e90fbc2fefe32613b92051cdb Mon Sep 17 00:00:00 2001
From: Manuel Araoz
Date: Wed, 3 Sep 2014 15:09:06 -0300
Subject: [PATCH 12/68] settings: Insight.js refactor 3
---
js/models/blockchain/Insight.js | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/js/models/blockchain/Insight.js b/js/models/blockchain/Insight.js
index d71ea79a7..2e6c4116c 100644
--- a/js/models/blockchain/Insight.js
+++ b/js/models/blockchain/Insight.js
@@ -29,15 +29,15 @@ var preconditions = require('preconditions').singleton();
*/
var Insight = function(opts) {
- this.status = this.STATUS.DISCONNECTED;
- this.subscribed = {};
- this.listeningBlocks = false;
-
preconditions.checkArgument(opts).shouldBeObject(opts)
.checkArgument(opts.host)
.checkArgument(opts.port)
.checkArgument(opts.schema);
+ this.status = this.STATUS.DISCONNECTED;
+ this.subscribed = {};
+ this.listeningBlocks = false;
+
this.url = opts.schema + '://' + opts.host + ':' + opts.port;
this.opts = {
'reconnection': opts.reconnection || true,
From 3691bd5ee03a4457c9bc489de05634ea7fa17c70 Mon Sep 17 00:00:00 2001
From: Manuel Araoz
Date: Wed, 3 Sep 2014 15:55:02 -0300
Subject: [PATCH 13/68] settings: fix balance bug
---
index.html | 6 +++---
js/services/controllerUtils.js | 1 -
views/includes/sidebar-mobile.html | 31 ++++++++++++++++++++++++++++++
views/includes/sidebar.html | 4 ++--
4 files changed, 36 insertions(+), 6 deletions(-)
diff --git a/index.html b/index.html
index e6f34fd00..40b22b4da 100644
--- a/index.html
+++ b/index.html
@@ -17,8 +17,8 @@
Network Error. Attempting to reconnect...
-
+
@@ -28,7 +28,7 @@
- {{totalBalance || 0 |noFractionNumber}} {{$root.unitName}}
+ {{totalBalance || 0 |noFractionNumber}} {{$root.wallet.settings.unitName}}
{{$root.wallet.getName()}}
diff --git a/js/services/controllerUtils.js b/js/services/controllerUtils.js
index a11e19238..ba3b6da98 100644
--- a/js/services/controllerUtils.js
+++ b/js/services/controllerUtils.js
@@ -50,7 +50,6 @@ angular.module('copayApp.services')
$scope.loading = false;
});
-
w.on('corrupt', function(peerId) {
notification.error('Error', 'Received corrupt message from ' + peerId);
});
diff --git a/views/includes/sidebar-mobile.html b/views/includes/sidebar-mobile.html
index cfd792528..acb540d3c 100644
--- a/views/includes/sidebar-mobile.html
+++ b/views/includes/sidebar-mobile.html
@@ -6,6 +6,37 @@
+
+
+
+
+ Balance
+
+
+
+ {{totalBalance || 0
+ |noFractionNumber}} {{$root.unitName}}
+
+
+
+ Locked
+
+
+
+ {{lockedBalance || 0|noFractionNumber}} {{$root.unitName}}
+
+
+
+
+
diff --git a/views/includes/sidebar.html b/views/includes/sidebar.html
index 9f68392e3..86c6f7a96 100644
--- a/views/includes/sidebar.html
+++ b/views/includes/sidebar.html
@@ -20,7 +20,7 @@
-
-
Date: Wed, 3 Sep 2014 16:03:31 -0300
Subject: [PATCH 14/68] settings: fix balance bug 2
---
js/filters.js | 6 +++---
js/models/core/Wallet.js | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/js/filters.js b/js/filters.js
index a52237d1f..68f014027 100644
--- a/js/filters.js
+++ b/js/filters.js
@@ -45,12 +45,12 @@ angular.module('copayApp.filters', [])
};
})
.filter('noFractionNumber',
- [ '$filter', '$locale',
- function(filter, locale) {
+ [ '$filter', '$locale', '$rootScope',
+ function(filter, locale, $rootScope) {
var numberFilter = filter('number');
var formats = locale.NUMBER_FORMATS;
return function(amount, n) {
- var fractionSize = (typeof(n) != 'undefined') ? n : config.unitToSatoshi.toString().length - 1;
+ var fractionSize = (typeof(n) != 'undefined') ? n : $rootScope.wallet.settings.unitToSatoshi.toString().length - 1;
var value = numberFilter(amount, fractionSize);
var sep = value.indexOf(formats.DECIMAL_SEP);
var group = value.indexOf(formats.GROUP_SEP);
diff --git a/js/models/core/Wallet.js b/js/models/core/Wallet.js
index 4f603da24..17f1d09cb 100644
--- a/js/models/core/Wallet.js
+++ b/js/models/core/Wallet.js
@@ -73,7 +73,7 @@ function Wallet(opts) {
this.id = opts.id || Wallet.getRandomId();
this.secretNumber = opts.secretNumber || Wallet.getRandomNumber();
this.lock = new WalletLock(this.storage, this.id, opts.lockTimeOutMin);
- this.settings = opts.settings || copayConfig.settings;
+ this.settings = opts.settings || copayConfig.wallet.settings;
this.name = opts.name;
this.publicKeyRing.walletId = this.id;
From 0fe477863785e4fcacc99aa0a2bd30ae69359118 Mon Sep 17 00:00:00 2001
From: Manuel Araoz
Date: Wed, 3 Sep 2014 16:24:25 -0300
Subject: [PATCH 15/68] settings: fix references to unitName
---
config.js | 1 +
js/controllers/send.js | 32 +++++++------
js/filters.js | 73 +++++++++++++++---------------
views/addresses.html | 48 ++++++++++----------
views/includes/sidebar-mobile.html | 4 +-
views/includes/sidebar.html | 4 +-
views/includes/transaction.html | 31 ++++++-------
views/modals/qr-address.html | 2 +-
views/send.html | 8 ++--
views/transactions.html | 24 +++++-----
10 files changed, 113 insertions(+), 114 deletions(-)
diff --git a/config.js b/config.js
index f9ca1170d..ab1beb0a8 100644
--- a/config.js
+++ b/config.js
@@ -30,6 +30,7 @@ var defaultConfig = {
settings: {
unitName: 'bits',
unitToSatoshi: 100,
+ unitDecimals: 2,
alternativeName: 'US Dollar',
alternativeIsoCode: 'USD',
}
diff --git a/js/controllers/send.js b/js/controllers/send.js
index 788217edf..01e547ada 100644
--- a/js/controllers/send.js
+++ b/js/controllers/send.js
@@ -5,13 +5,13 @@ angular.module('copayApp.controllers').controller('SendController',
function($scope, $rootScope, $window, $timeout, $anchorScroll, $modal, isMobile, notification, controllerUtils, rateService) {
$scope.title = 'Send';
$scope.loading = false;
- var satToUnit = 1 / config.unitToSatoshi;
+ var satToUnit = 1 / $rootScope.wallet.settings.unitToSatoshi;
$scope.defaultFee = bitcore.TransactionBuilder.FEE_PER_1000B_SAT * satToUnit;
- $scope.unitToBtc = config.unitToSatoshi / bitcore.util.COIN;
- $scope.unitToSatoshi = config.unitToSatoshi;
+ $scope.unitToBtc = $rootScope.wallet.settings.unitToSatoshi / bitcore.util.COIN;
+ $scope.unitToSatoshi = $rootScope.wallet.settings.unitToSatoshi;
- $scope.alternativeName = config.alternativeName;
- $scope.alternativeIsoCode = config.alternativeIsoCode;
+ $scope.alternativeName = $rootScope.wallet.settings.alternativeName;
+ $scope.alternativeIsoCode = $rootScope.wallet.settings.alternativeIsoCode;
$scope.isRateAvailable = false;
$scope.rateService = rateService;
@@ -36,7 +36,7 @@ angular.module('copayApp.controllers').controller('SendController',
this._alternative = newValue;
if (typeof(newValue) === 'number' && $scope.isRateAvailable) {
this._amount = parseFloat(
- (rateService.fromFiat(newValue, config.alternativeIsoCode) * satToUnit).toFixed(config.unitDecimals), 10);
+ (rateService.fromFiat(newValue, $rootScope.wallet.settings.alternativeIsoCode) * satToUnit).toFixed($rootScope.wallet.settings.unitDecimals), 10);
} else {
this._amount = 0;
}
@@ -53,7 +53,7 @@ angular.module('copayApp.controllers').controller('SendController',
this._amount = newValue;
if (typeof(newValue) === 'number' && $scope.isRateAvailable) {
this._alternative = parseFloat(
- (rateService.toFiat(newValue * config.unitToSatoshi, config.alternativeIsoCode)).toFixed(2), 10);
+ (rateService.toFiat(newValue * $rootScope.wallet.settings.unitToSatoshi, $rootScope.wallet.settings.alternativeIsoCode)).toFixed(2), 10);
} else {
this._alternative = 0;
}
@@ -91,7 +91,7 @@ angular.module('copayApp.controllers').controller('SendController',
if ($rootScope.pendingPayment) {
var pp = $rootScope.pendingPayment;
$scope.address = pp.address + '';
- var amount = pp.data.amount / config.unitToSatoshi * 100000000;
+ var amount = pp.data.amount / $rootScope.wallet.settings.unitToSatoshi * 100000000;
$scope.amount = amount;
$scope.commentText = pp.data.message;
}
@@ -113,7 +113,7 @@ angular.module('copayApp.controllers').controller('SendController',
$scope.loading = true;
var address = form.address.$modelValue;
- var amount = parseInt((form.amount.$modelValue * config.unitToSatoshi).toFixed(0));
+ var amount = parseInt((form.amount.$modelValue * $rootScope.wallet.settings.unitToSatoshi).toFixed(0));
var commentText = form.comment.$modelValue;
var w = $rootScope.wallet;
@@ -403,7 +403,7 @@ angular.module('copayApp.controllers').controller('SendController',
};
$scope.getAvailableAmount = function() {
- var amount = ((($rootScope.availableBalance * config.unitToSatoshi).toFixed(0) - bitcore.TransactionBuilder.FEE_PER_1000B_SAT) / config.unitToSatoshi);
+ var amount = ((($rootScope.availableBalance * $rootScope.wallet.settings.unitToSatoshi).toFixed(0) - bitcore.TransactionBuilder.FEE_PER_1000B_SAT) / $rootScope.wallet.settings.unitToSatoshi);
return amount > 0 ? amount : 0;
};
@@ -497,7 +497,7 @@ angular.module('copayApp.controllers').controller('SendController',
// Payment Protocol URI (BIP-72)
scope.wallet.fetchPaymentTx(uri.merchant, function(err, merchantData) {
var balance = $rootScope.availableBalance;
- var available = +(balance * config.unitToSatoshi).toFixed(0);
+ var available = +(balance * $rootScope.wallet.settings.unitToSatoshi).toFixed(0);
if (merchantData && available < +merchantData.total) {
err = new Error('No unspent outputs available.');
@@ -508,7 +508,7 @@ angular.module('copayApp.controllers').controller('SendController',
scope.sendForm.address.$isValid = false;
if (err.amount) {
- scope.sendForm.amount.$setViewValue(+err.amount / config.unitToSatoshi);
+ scope.sendForm.amount.$setViewValue(+err.amount / $rootScope.wallet.settings.unitToSatoshi);
scope.sendForm.amount.$render();
scope.sendForm.amount.$isValid = false;
scope.notEnoughAmount = true;
@@ -538,7 +538,7 @@ angular.module('copayApp.controllers').controller('SendController',
var url = merchantData.request_url;
var domain = /^(?:https?)?:\/\/([^\/:]+).*$/.exec(url)[1];
- merchantData.unitTotal = (+merchantData.total / config.unitToSatoshi) + '';
+ merchantData.unitTotal = (+merchantData.total / $rootScope.wallet.settings.unitToSatoshi) + '';
merchantData.expiration = new Date(
merchantData.pr.pd.expires * 1000).toISOString();
merchantData.domain = domain;
@@ -587,8 +587,10 @@ angular.module('copayApp.controllers').controller('SendController',
}
notification.info('Payment Request',
- 'Server is requesting ' + merchantData.unitTotal + ' ' + config.unitName + '.' + ' Message: ' + merchantData.pr.pd.memo);
+ 'Server is requesting ' + merchantData.unitTotal +
+ ' ' + $rootScope.wallet.settings.unitName +
+ '.' + ' Message: ' + merchantData.pr.pd.memo);
});
};
- });
\ No newline at end of file
+ });
diff --git a/js/filters.js b/js/filters.js
index 68f014027..9ed43cd72 100644
--- a/js/filters.js
+++ b/js/filters.js
@@ -44,43 +44,42 @@ angular.module('copayApp.filters', [])
return addrs;
};
})
- .filter('noFractionNumber',
- [ '$filter', '$locale', '$rootScope',
- function(filter, locale, $rootScope) {
- var numberFilter = filter('number');
- var formats = locale.NUMBER_FORMATS;
- return function(amount, n) {
- var fractionSize = (typeof(n) != 'undefined') ? n : $rootScope.wallet.settings.unitToSatoshi.toString().length - 1;
- var value = numberFilter(amount, fractionSize);
- var sep = value.indexOf(formats.DECIMAL_SEP);
- var group = value.indexOf(formats.GROUP_SEP);
- if(amount >= 0) {
- if (group > 0) {
- if (sep < 0) {
+ .filter('noFractionNumber', ['$filter', '$locale', '$rootScope',
+ function(filter, locale, $rootScope) {
+ var numberFilter = filter('number');
+ var formats = locale.NUMBER_FORMATS;
+ return function(amount, n) {
+ var fractionSize = (typeof(n) !== 'undefined') ?
+ n : $rootScope.wallet.settings.unitToSatoshi.toString().length - 1;
+ var value = numberFilter(amount, fractionSize);
+ var sep = value.indexOf(formats.DECIMAL_SEP);
+ var group = value.indexOf(formats.GROUP_SEP);
+ if (amount >= 0) {
+ if (group > 0) {
+ if (sep < 0) {
+ return value;
+ }
+ var intValue = value.substring(0, sep);
+ var floatValue = parseFloat(value.substring(sep));
+ if (floatValue === 0) {
+ floatValue = '';
+ } else {
+ if (floatValue % 1 === 0) {
+ floatValue = floatValue.toFixed(0);
+ }
+ floatValue = floatValue.toString().substring(1);
+ }
+ var finalValue = intValue + floatValue;
+ return finalValue;
+ } else {
+ value = parseFloat(value);
+ if (value % 1 === 0) {
+ value = value.toFixed(0);
+ }
return value;
}
- var intValue = value.substring(0, sep);
- var floatValue = parseFloat(value.substring(sep));
- if (floatValue === 0) {
- floatValue = '';
- }
- else {
- if(floatValue % 1 === 0) {
- floatValue = floatValue.toFixed(0);
- }
- floatValue = floatValue.toString().substring(1);
- }
- var finalValue = intValue + floatValue;
- return finalValue;
}
- else {
- value = parseFloat(value);
- if(value % 1 === 0) {
- value = value.toFixed(0);
- }
- return value;
- }
- }
- return 0;
- };
- } ]);
+ return 0;
+ };
+ }
+ ]);
diff --git a/views/addresses.html b/views/addresses.html
index 14f3d7cde..499306ea9 100644
--- a/views/addresses.html
+++ b/views/addresses.html
@@ -4,39 +4,39 @@
Addresses
-
+
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
- {{addr.balance || 0|noFractionNumber}} {{$root.unitName}}
-
+
+ change
-
- Show all
- Show less
-
+
+
+
+
+
+ {{addr.balance || 0|noFractionNumber}} {{$root.wallet.settings.unitName}}
+
+
+
+
+
+
+ Show all
+ Show less
+
-
diff --git a/views/includes/sidebar-mobile.html b/views/includes/sidebar-mobile.html
index acb540d3c..a77d6d841 100644
--- a/views/includes/sidebar-mobile.html
+++ b/views/includes/sidebar-mobile.html
@@ -19,7 +19,7 @@
tooltip="{{totalBalanceBTC |noFractionNumber:8}} BTC"
tooltip-trigger="mouseenter"
tooltip-placement="bottom">{{totalBalance || 0
- |noFractionNumber}} {{$root.unitName}}
+ |noFractionNumber}} {{$root.wallet.settings.unitName}}
@@ -31,7 +31,7 @@
data-options="disable_for_touch:true"
tooltip="{{lockedBalanceBTC |noFractionNumber:8}} BTC"
tooltip-trigger="mouseenter"
- tooltip-placement="bottom">{{lockedBalance || 0|noFractionNumber}} {{$root.unitName}}
+ tooltip-placement="bottom">{{lockedBalance || 0|noFractionNumber}} {{$root.wallet.settings.unitName}}
diff --git a/views/includes/sidebar.html b/views/includes/sidebar.html
index 86c6f7a96..0bd5b8263 100644
--- a/views/includes/sidebar.html
+++ b/views/includes/sidebar.html
@@ -26,7 +26,7 @@
tooltip-popup-delay='500'
tooltip="{{totalBalanceAlternative |noFractionNumber:2}} {{alternativeIsoCode}}"
tooltip-trigger="mouseenter"
- tooltip-placement="bottom">{{totalBalance || 0 |noFractionNumber}} {{$root.unitName}}
+ tooltip-placement="bottom">{{totalBalance || 0 |noFractionNumber}} {{$root.wallet.settings.unitName}}
Locked
@@ -39,7 +39,7 @@
tooltip-popup-delay='500'
tooltip="{{lockedBalanceAlternative |noFractionNumber:2}} {{alternativeIsoCode}}"
tooltip-trigger="mouseenter"
- tooltip-placement="bottom">{{lockedBalance || 0|noFractionNumber}} {{$root.unitName}}
+ tooltip-placement="bottom">{{lockedBalance || 0|noFractionNumber}} {{$root.wallet.settings.unitName}}
diff --git a/views/includes/transaction.html b/views/includes/transaction.html
index 5c58a9416..016465c5e 100644
--- a/views/includes/transaction.html
+++ b/views/includes/transaction.html
@@ -8,20 +8,19 @@
-
- {{tx.comment}} -
- {{$root.wallet.publicKeyRing.nicknameForCopayer(tx.creator)}}
+
+ {{tx.comment}} - {{$root.wallet.publicKeyRing.nicknameForCopayer(tx.creator)}}
-
{{out.value | noFractionNumber}} {{$root.unitName}}
-
{{out.value | noFractionNumber}} {{$root.unitName}}
+
{{out.value | noFractionNumber}} {{$root.wallet.settings.unitName}}
+
{{out.value | noFractionNumber}} {{$root.wallet.settings.unitName}}
-
+
-
+
@@ -37,25 +36,25 @@
@@ -100,7 +99,7 @@
- Sent
+ Sent
Transaction ID :
@@ -110,12 +109,12 @@
- One signature missing
+ One signature missing
- {{tx.missingSignatures}} signatures missing
+ {{tx.missingSignatures}} signatures missing
- Fee : {{tx.fee|noFractionNumber}} {{$root.unitName}}
+ Fee : {{tx.fee|noFractionNumber}} {{$root.wallet.settings.unitName}}
Proposal ID : {{tx.ntxid}}
diff --git a/views/modals/qr-address.html b/views/modals/qr-address.html
index c30b86096..13d5635fc 100644
--- a/views/modals/qr-address.html
+++ b/views/modals/qr-address.html
@@ -7,7 +7,7 @@
- {{address.balance || 0|noFractionNumber}} {{$root.unitName}}
+ {{address.balance || 0|noFractionNumber}} {{$root.wallet.settings.unitName}}
Open in external application
diff --git a/views/send.html b/views/send.html
index d5747e276..8a7592b32 100644
--- a/views/send.html
+++ b/views/send.html
@@ -77,11 +77,11 @@
- Use all funds ({{getAvailableAmount()}} {{$root.unitName}})
+ Use all funds ({{getAvailableAmount()}} {{$root.wallet.settings.unitName}})
- {{$root.unitName}}
+ {{$root.wallet.settings.unitName}}
@@ -138,13 +138,13 @@
Total amount for this transaction:
- {{amount + defaultFee |noFractionNumber}} {{$root.unitName}}
+ {{amount + defaultFee |noFractionNumber}} {{$root.wallet.settings.unitName}}
{{ rateService.toFiat((amount + defaultFee) * unitToSatoshi, alternativeIsoCode) | noFractionNumber: 2 }} {{ alternativeIsoCode }}
- Including fee of {{defaultFee|noFractionNumber}} {{$root.unitName}}
+ Including fee of {{defaultFee|noFractionNumber}} {{$root.wallet.settings.unitName}}
diff --git a/views/transactions.html b/views/transactions.html
index 63d00b175..f00f78df7 100644
--- a/views/transactions.html
+++ b/views/transactions.html
@@ -7,7 +7,8 @@
-
No transactions proposals yet.
+
No transactions proposals yet.
+
@@ -20,10 +21,8 @@
@@ -52,9 +51,9 @@
-
{{vin.value| noFractionNumber}} {{$root.unitName}}
+
{{vin.value| noFractionNumber}} {{$root.wallet.settings.unitName}}
-
+
@@ -66,20 +65,20 @@
-
{{vout.value| noFractionNumber}} {{$root.unitName}}
+
{{vout.value| noFractionNumber}} {{$root.wallet.settings.unitName}}
-
+
@@ -87,4 +86,3 @@
-
From 7c582f4bd5b0d22cf74b6cefef58e2fe329fcfd1 Mon Sep 17 00:00:00 2001
From: Manuel Araoz
Date: Thu, 4 Sep 2014 11:12:08 -0300
Subject: [PATCH 16/68] settings: fix references to unitToSatoshi
---
js/controllers/transactions.js | 4 +++-
js/directives.js | 5 +++--
js/services/controllerUtils.js | 4 ++--
3 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/js/controllers/transactions.js b/js/controllers/transactions.js
index 7f15c02df..7dd03f52b 100644
--- a/js/controllers/transactions.js
+++ b/js/controllers/transactions.js
@@ -4,6 +4,8 @@ var bitcore = require('bitcore');
angular.module('copayApp.controllers').controller('TransactionsController',
function($scope, $rootScope, $timeout, controllerUtils, notification) {
+ var w = $rootScope.wallet;
+
$scope.title = 'Transactions';
$scope.loading = false;
$scope.lastShowed = false;
@@ -12,7 +14,7 @@ angular.module('copayApp.controllers').controller('TransactionsController',
$scope.txpItemsPerPage = 4;
$scope.blockchain_txs = [];
- var satToUnit = 1 / config.unitToSatoshi;
+ var satToUnit = 1 / w.settings.unitToSatoshi;
$scope.update = function() {
$scope.loading = true;
diff --git a/js/directives.js b/js/directives.js
index e8024cab5..82704b104 100644
--- a/js/directives.js
+++ b/js/directives.js
@@ -47,13 +47,14 @@ angular.module('copayApp.directives')
.directive('enoughAmount', ['$rootScope',
function($rootScope) {
var bitcore = require('bitcore');
+ var w = $rootScope.wallet;
var feeSat = Number(bitcore.TransactionBuilder.FEE_PER_1000B_SAT);
return {
require: 'ngModel',
link: function(scope, element, attrs, ctrl) {
var val = function(value) {
- var availableBalanceNum = Number(($rootScope.availableBalance * config.unitToSatoshi).toFixed(0));
- var vNum = Number((value * config.unitToSatoshi).toFixed(0));
+ var availableBalanceNum = Number(($rootScope.availableBalance * w.settings.unitToSatoshi).toFixed(0));
+ var vNum = Number((value * w.settings.unitToSatoshi).toFixed(0));
if (typeof vNum == "number" && vNum > 0) {
vNum = vNum + feeSat;
diff --git a/js/services/controllerUtils.js b/js/services/controllerUtils.js
index ba3b6da98..899348ed4 100644
--- a/js/services/controllerUtils.js
+++ b/js/services/controllerUtils.js
@@ -175,7 +175,7 @@ angular.module('copayApp.services')
w.getBalance(function(err, balanceSat, balanceByAddrSat, safeBalanceSat) {
if (err) throw err;
- var satToUnit = 1 / config.unitToSatoshi;
+ var satToUnit = 1 / w.settings.unitToSatoshi;
var COIN = bitcore.util.COIN;
$rootScope.totalBalance = balanceSat * satToUnit;
@@ -210,7 +210,7 @@ angular.module('copayApp.services')
if (!w) return;
opts = opts || $rootScope.txsOpts || {};
- var satToUnit = 1 / config.unitToSatoshi;
+ var satToUnit = 1 / w.settings.unitToSatoshi;
var myCopayerId = w.getMyCopayerId();
var pendingForUs = 0;
var inT = w.getTxProposals().sort(function(t1, t2) {
From 09ec6f04bbe0b9d9f73759abe5b95e0dd50c562c Mon Sep 17 00:00:00 2001
From: Manuel Araoz
Date: Thu, 4 Sep 2014 11:19:12 -0300
Subject: [PATCH 17/68] settings: fix references to alternativeName
---
test/mocks/FakeWallet.js | 1 +
test/unit/controllers/controllersSpec.js | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/test/mocks/FakeWallet.js b/test/mocks/FakeWallet.js
index ee2621a1e..e4a7bc8d7 100644
--- a/test/mocks/FakeWallet.js
+++ b/test/mocks/FakeWallet.js
@@ -42,6 +42,7 @@ var FakeWallet = function() {
};
this.privateKey = new FakePrivateKey();
+ this.settings = {};
};
FakeWallet.prototype.createTx = function(toAddress, amountSatStr, comment, opts, cb) {
diff --git a/test/unit/controllers/controllersSpec.js b/test/unit/controllers/controllersSpec.js
index abd154840..be9e9553d 100644
--- a/test/unit/controllers/controllersSpec.js
+++ b/test/unit/controllers/controllersSpec.js
@@ -139,8 +139,8 @@ describe("Unit: Controllers", function() {
scope = $rootScope.$new();
scope.rateService = rateService;
$rootScope.wallet = new FakeWallet(walletConfig);
- config.alternativeName = 'lol currency';
- config.alternativeIsoCode = 'LOL';
+ $rootScope.wallet.settings.alternativeName = 'lol currency';
+ $rootScope.wallet.settings.alternativeIsoCode = 'LOL';
var element = angular.element(
'