diff --git a/bower.json b/bower.json index a924bcb97..3688bf161 100644 --- a/bower.json +++ b/bower.json @@ -16,7 +16,7 @@ "foundation-icon-fonts": "*", "ng-lodash": "~0.2.0", "angular-moment": "~0.9.0", - "angular-bitcore-wallet-client": "^0.0.21", + "angular-bitcore-wallet-client": "^0.0.22", "angular-ui-router": "~0.2.13", "qrcode-decoder-js": "*", "fastclick": "*", diff --git a/public/views/copayers.html b/public/views/copayers.html index dd6acf5c9..b8109ab15 100644 --- a/public/views/copayers.html +++ b/public/views/copayers.html @@ -1,7 +1,7 @@
+ ng-init="">
diff --git a/public/views/modals/confirmation.html b/public/views/modals/confirmation.html index a057c7a4e..1d56e2348 100644 --- a/public/views/modals/confirmation.html +++ b/public/views/modals/confirmation.html @@ -2,13 +2,13 @@

{{title|translate}}

-
-
diff --git a/public/views/preferences.html b/public/views/preferences.html index 73f4ce9de..d431d8d17 100644 --- a/public/views/preferences.html +++ b/public/views/preferences.html @@ -20,6 +20,15 @@ +
  • + Email Notifications + + + Disabled + {{index.preferences.email}} + +
  • +
  • Color diff --git a/public/views/preferencesAlias.html b/public/views/preferencesAlias.html index 6b7af95d0..ca1e90657 100644 --- a/public/views/preferencesAlias.html +++ b/public/views/preferencesAlias.html @@ -4,15 +4,13 @@ ng-init="titleSection='Wallet Alias'; goBackToState = 'preferences'">
  • - -
    - +
    -

    Changing wallet alias only afects the local wallet name. +

    Changing wallet alias only afects the local wallet name.

    diff --git a/public/views/preferencesEmail.html b/public/views/preferencesEmail.html new file mode 100644 index 000000000..55cac6990 --- /dev/null +++ b/public/views/preferencesEmail.html @@ -0,0 +1,39 @@ +
    +
    + + + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + Saving preferences... +
    +
    + + +
    +
    + + {{prefEmail.error|translate}} + +
    + + + + +
    +

    Setting up email notifications could weaken your privacy, if the wallet service provider is compromised. Information available to an attacker would include your wallet addresses and its balance, but no more.

    +
    +
    diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index a77aeb446..ff69df286 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -145,6 +145,20 @@ angular.module('copayApp.controllers').controller('indexController', function($r $rootScope.$emit('Local/TabChanged', tab); }; + + self.updatePreferences = function(cb) { + var fc = profileService.focusedClient; + fc.getPreferences(function(err, preferences) { + if (err) { + self.handleError(err); + return cb(err); + } + self.preferences = preferences; + return cb(err, preferences); + }); + }; + + self.updateAll = function(walletStatus, untilItChanges, initBalance, tries) { tries = tries || 0; if (untilItChanges && lodash.isUndefined(initBalance)) { @@ -192,6 +206,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r self.walletStatus = walletStatus.wallet.status; self.walletScanStatus = walletStatus.wallet.scanStatus; self.copayers = walletStatus.wallet.copayers; + self.preferences = walletStatus.preferences; self.setBalance(walletStatus.balance); $rootScope.$apply(); }); @@ -255,7 +270,9 @@ angular.module('copayApp.controllers').controller('indexController', function($r self.updatingTxHistory = false; if (err) { $log.debug('TxHistory ERROR:', err); - self.handleError(err); + // We do not should errors here, since history is usually + // fetched AFTER others requests. + //self.handleError(err); self.txHistoryError = true; } else { $log.debug('Wallet Transaction History:', txs); @@ -343,7 +360,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r lodash.each(txs, function(tx) { tx.ts = tx.minedTs || tx.sentTs; // no future transaction... - if (tx.ts > now) + if (tx.ts > now) ts.ts = now; tx.rateTs = Math.floor((tx.ts || now) / 1000); tx.amountStr = profileService.formatAmount(tx.amount); //$filter('noFractionNumber')( @@ -577,13 +594,16 @@ angular.module('copayApp.controllers').controller('indexController', function($r }); }); - $rootScope.$on('Local/UnitSettingUpdated', function(event) { self.updateAll(); self.updateTxHistory(); }); + $rootScope.$on('Local/EmailUpdated', function(event, cb) { + self.updatePreferences(cb); + }); + $rootScope.$on('Local/BWSUpdated', function(event) { profileService.applyConfig(); }); @@ -663,7 +683,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r var msg = 'Error at Wallet Service: '; if (err.message) msg = msg + err.message; else if (err.error) msg = msg + err.error; - else msg = msg + err; + else msg = msg + (lodash.isObject(err) ? JSON.stringify(err) : err); self.clientError(msg); } $rootScope.$apply(); @@ -682,31 +702,6 @@ angular.module('copayApp.controllers').controller('indexController', function($r self.setDefaultLanguage(setLang); }); - $rootScope.$on('Animation/Disable', function(event) { - $timeout(function() { - self.slideLeft = false; - self.slideRight = false; - self.slideUp = false; - self.slideDown = false; - }, 400); - }); - - $rootScope.$on('Animation/SlideLeft', function(event) { - self.slideLeft = true; - }); - - $rootScope.$on('Animation/SlideRight', function(event) { - self.slideRight = true; - }); - - $rootScope.$on('Animation/SlideUp', function(event) { - self.slideUp = true; - }); - - $rootScope.$on('Animation/SlideDown', function(event) { - self.slideDown = true; - }); - $rootScope.$on('NewIncomingTx', function() { self.updateBalance(); $timeout(function() { @@ -714,10 +709,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r }, 5000); }); - - // remove transactionProposalRemoved (only for compat) - - lodash.each(['NewOutgoingTx', 'NewTxProposal', 'TxProposalFinallyRejected', 'transactionProposalRemoved', 'TxProposalRemoved', + lodash.each(['NewOutgoingTx', 'NewTxProposal', 'TxProposalFinallyRejected', 'TxProposalRemoved', 'Local/NewTxProposal', 'Local/TxProposalAction', 'ScanFinished' ], function(eventName) { $rootScope.$on(eventName, function(event, untilItChanges) { diff --git a/src/js/controllers/preferencesEmail.js b/src/js/controllers/preferencesEmail.js new file mode 100644 index 000000000..241297501 --- /dev/null +++ b/src/js/controllers/preferencesEmail.js @@ -0,0 +1,27 @@ +'use strict'; + +angular.module('copayApp.controllers').controller('preferencesEmailController', + function($scope, go, profileService, gettext, $log) { + this.save = function(form) { + var self = this; + this.error = null; + + var fc = profileService.focusedClient; + this.saving = true; + fc.savePreferences({ + email: this.email + }, function(err) { + self.saving = false; + if (err) { + $log.warn(err); + $scope.$emit('Local/ClientError', err); + return; + } + $scope.$emit('Local/EmailUpdated', function(err){ + go.path('preferences'); + }); + }); + }; + + + }); diff --git a/src/js/routes.js b/src/js/routes.js index b407bc0e4..bae26b370 100644 --- a/src/js/routes.js +++ b/src/js/routes.js @@ -257,7 +257,18 @@ angular } }) - + .state('preferencesEmail', { + url: '/preferencesEmail', + templateUrl: 'views/preferencesEmail.html', + walletShouldBeComplete: true, + needProfile: true, + views: { + 'main': { + templateUrl: 'views/preferencesEmail.html' + }, + + } + }) .state('preferencesBwsUrl', { url: '/preferencesBwsUrl', templateUrl: 'views/preferencesBwsUrl.html', @@ -397,6 +408,7 @@ angular preferencesAltCurrency: 12, preferencesBwsUrl: 12, preferencesAlias: 12, + preferencesEmail: 12, about: 12, logs: 13, add: 11, diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js index a1794bbfe..6b8132e8e 100644 --- a/src/js/services/profileService.js +++ b/src/js/services/profileService.js @@ -390,6 +390,5 @@ angular.module('copayApp.services') }); }; - return root; });