- - + + + + ... + Before receiving funds, you must backup your wallet. If this device is lost, it is impossible to access your funds without a backup. @@ -25,7 +28,7 @@ - + Next Address @@ -46,11 +49,7 @@ No Wallet - - + diff --git a/public/views/tab-scan.html b/public/views/tab-scan.html deleted file mode 100644 index 282c9d767..000000000 --- a/public/views/tab-scan.html +++ /dev/null @@ -1,12 +0,0 @@ - - - {{'Scan' | translate}} - - - - - - - - - diff --git a/public/views/tab-send.html b/public/views/tab-send.html index b5e96e682..31cfcc4c0 100644 --- a/public/views/tab-send.html +++ b/public/views/tab-send.html @@ -3,7 +3,7 @@ {{'Send' | translate}} - + Recipient diff --git a/public/views/tab-settings.html b/public/views/tab-settings.html index 238572441..475ab76d0 100644 --- a/public/views/tab-settings.html +++ b/public/views/tab-settings.html @@ -3,7 +3,7 @@ {{'Global Settings' | translate}} - + @@ -53,7 +53,7 @@ Notifications - + Enable push notifications @@ -67,7 +67,7 @@ Exchanges - + Enable Glidera Service @@ -80,20 +80,20 @@ Others - + Use Unconfirmed Funds Wallets Preferences {{item.name || item.id}} {{item.m}}-of-{{item.n}} - + Incomplete diff --git a/public/views/termsOfUse.html b/public/views/termsOfUse.html index 0d1241741..5d330a0cc 100644 --- a/public/views/termsOfUse.html +++ b/public/views/termsOfUse.html @@ -1,10 +1,11 @@ + {{'Terms Of Use' | translate}} - + diff --git a/public/views/translators.html b/public/views/translators.html index 95727f667..6d368914d 100644 --- a/public/views/translators.html +++ b/public/views/translators.html @@ -4,7 +4,7 @@ - + Translation Credits diff --git a/public/views/walletDetails.html b/public/views/walletDetails.html index 74ab1f04e..06ca6ca30 100644 --- a/public/views/walletDetails.html +++ b/public/views/walletDetails.html @@ -1,4 +1,4 @@ - + {{walletDetailsName}} diff --git a/src/js/controllers/activity.js b/src/js/controllers/activity.js index ee1d50720..e9c140449 100644 --- a/src/js/controllers/activity.js +++ b/src/js/controllers/activity.js @@ -3,12 +3,12 @@ angular.module('copayApp.controllers').controller('activityController', function($timeout, $scope, $log, $ionicModal, lodash, txpModalService, profileService, walletService, ongoingProcess, popupService, gettextCatalog) { $scope.openTxpModal = txpModalService.open; + $scope.fetchingNotifications = true; - $scope.init = function() { - $scope.fetchingNotifications = true; + $scope.$on("$ionicView.enter", function(event, data){ profileService.getNotifications(50, function(err, n) { if (err) { - console.log('[tab-home.js.35:err:]', $log.error(err)); //TODO + $log.error(err); return; } $scope.fetchingNotifications = false; @@ -22,7 +22,7 @@ angular.module('copayApp.controllers').controller('activityController', }); }); }); - }; + }); $scope.openNotificationModal = function(n) { if (n.txid) { @@ -33,8 +33,16 @@ angular.module('copayApp.controllers').controller('activityController', }); if (txp) txpModalService.open(txp); else { - $log.warn('No txp found'); - return popupService.showAlert(null, gettextCatalog.getString('Transaction not found')); + ongoingProcess.set('loadingTxInfo', true); + walletService.getTxp(n.wallet, n.txpId, function(err, txp) { + var _txp = txp; + ongoingProcess.set('loadingTxInfo', false); + if (err) { + $log.warn('No txp found'); + return popupService.showAlert(null, gettextCatalog.getString('Transaction not found')); + } + txpModalService.open(_txp); + }); } } }; @@ -56,18 +64,18 @@ angular.module('copayApp.controllers').controller('activityController', return popupService.showAlert(null, gettextCatalog.getString('Transaction not found')); } - walletService.getTxNote(wallet, n.txid, function(err, note) { - if (err) $log.debug(gettextCatalog.getString('Could not fetch transaction note')); + $scope.wallet = wallet; + $scope.btx = lodash.cloneDeep(tx); + $ionicModal.fromTemplateUrl('views/modals/tx-details.html', { + scope: $scope + }).then(function(modal) { + $scope.txDetailsModal = modal; + $scope.txDetailsModal.show(); + }); - $scope.wallet = wallet; - $scope.btx = lodash.cloneDeep(tx); + walletService.getTxNote(wallet, n.txid, function(err, note) { + if (err) $log.debug('Could not fetch transaction note'); $scope.btx.note = note; - $ionicModal.fromTemplateUrl('views/modals/tx-details.html', { - scope: $scope - }).then(function(modal) { - $scope.txDetailsModal = modal; - $scope.txDetailsModal.show(); - }); }); }); }; diff --git a/src/js/controllers/addressbook.js b/src/js/controllers/addressbook.js index d9e136901..f96d776de 100644 --- a/src/js/controllers/addressbook.js +++ b/src/js/controllers/addressbook.js @@ -4,7 +4,7 @@ angular.module('copayApp.controllers').controller('addressbookListController', f var contacts; - $scope.initAddressbook = function() { + var initAddressbook = function() { addressbookService.list(function(err, ab) { if (err) $log.error(err); @@ -47,10 +47,14 @@ angular.module('copayApp.controllers').controller('addressbookListController', f popupService.showAlert(err); return; } - $scope.initAddressbook(); + initAddressbook(); $scope.$digest(); }); }, 100); }; + $scope.$on("$ionicView.beforeEnter", function(event, data){ + initAddressbook(); + }); + }); diff --git a/src/js/controllers/amazon.js b/src/js/controllers/amazon.js index 302bd2a24..564291fbe 100644 --- a/src/js/controllers/amazon.js +++ b/src/js/controllers/amazon.js @@ -7,8 +7,7 @@ angular.module('copayApp.controllers').controller('amazonController', externalLinkService.open(url, target); }; - this.init = function() { - var self = this; + var initAmazon = function() { $scope.network = amazonService.getEnvironment(); amazonService.getPendingGiftCards(function(err, gcds) { if (err) { @@ -20,11 +19,10 @@ angular.module('copayApp.controllers').controller('amazonController', $scope.$digest(); }); }); - this.updatePendingGiftCards(); - } + $scope.updatePendingGiftCards(); + }; - this.updatePendingGiftCards = lodash.debounce(function() { - var self = this; + $scope.updatePendingGiftCards = lodash.debounce(function() { amazonService.getPendingGiftCards(function(err, gcds) { lodash.forEach(gcds, function(dataFromStorage) { @@ -69,8 +67,7 @@ angular.module('copayApp.controllers').controller('amazonController', }, 1000); - this.openCardModal = function(card) { - var self = this; + $scope.openCardModal = function(card) { $scope.card = card; $ionicModal.fromTemplateUrl('views/modals/amazon-card-details.html', { @@ -81,7 +78,11 @@ angular.module('copayApp.controllers').controller('amazonController', }); $scope.$on('UpdateAmazonList', function(event) { - self.init(); + initAmazon(); }); }; + + $scope.$on("$ionicView.enter", function(event, data){ + initAmazon(); + }); }); diff --git a/src/js/controllers/amount.js b/src/js/controllers/amount.js index e712a8082..ae8d8a935 100644 --- a/src/js/controllers/amount.js +++ b/src/js/controllers/amount.js @@ -1,7 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('amountController', function($rootScope, $scope, $filter, $timeout, $ionicScrollDelegate, $ionicNavBarDelegate, gettextCatalog, platformInfo, lodash, configService, rateService, $stateParams, $window, $state, $log, txFormatService) { - $ionicNavBarDelegate.title(gettextCatalog.getString('Enter Amount')); +angular.module('copayApp.controllers').controller('amountController', function($rootScope, $scope, $filter, $timeout, $ionicScrollDelegate, gettextCatalog, platformInfo, lodash, configService, rateService, $stateParams, $window, $state, $log, txFormatService) { var unitToSatoshi; var satToUnit; @@ -11,7 +10,7 @@ angular.module('copayApp.controllers').controller('amountController', function($ var SMALL_FONT_SIZE_LIMIT = 13; var LENGTH_EXPRESSION_LIMIT = 19; - $scope.init = function() { + $scope.$on("$ionicView.enter", function(event, data){ if (!$stateParams.toAddress) { $log.error('Bad params at amount') @@ -73,7 +72,7 @@ angular.module('copayApp.controllers').controller('amountController', function($ $timeout(function() { $ionicScrollDelegate.resize(); }, 100); - }; + }); $scope.toggleAlternative = function() { $scope.showAlternativeAmount = !$scope.showAlternativeAmount; diff --git a/src/js/controllers/backup.js b/src/js/controllers/backup.js index 40484bbd8..68a209564 100644 --- a/src/js/controllers/backup.js +++ b/src/js/controllers/backup.js @@ -16,25 +16,6 @@ angular.module('copayApp.controllers').controller('backupController', return false; }; - $scope.init = function() { - $scope.deleted = isDeletedSeed(); - if ($scope.deleted) { - $log.debug('no mnemonics'); - return; - } - - walletService.getKeys(wallet, function(err, k) { - if (err || !k) { - $log.error('Could not get keys: ', err); - $state.go('wallet.preferences'); - return; - } - $scope.credentialsEncrypted = false; - keys = k; - $scope.initFlow(); - }); - }; - var shuffledWords = function(words) { var sort = lodash.sortBy(words); @@ -222,4 +203,23 @@ angular.module('copayApp.controllers').controller('backupController', }); }; + $scope.$on("$ionicView.enter", function(event, data){ + $scope.deleted = isDeletedSeed(); + if ($scope.deleted) { + $log.debug('no mnemonics'); + return; + } + + walletService.getKeys(wallet, function(err, k) { + if (err || !k) { + $log.error('Could not get keys: ', err); + $state.go('wallet.preferences'); + return; + } + $scope.credentialsEncrypted = false; + keys = k; + $scope.initFlow(); + }); + }); + }); diff --git a/src/js/controllers/buyAmazon.js b/src/js/controllers/buyAmazon.js index de01dbdc4..70817a1aa 100644 --- a/src/js/controllers/buyAmazon.js +++ b/src/js/controllers/buyAmazon.js @@ -19,14 +19,6 @@ angular.module('copayApp.controllers').controller('buyAmazonController', externalLinkService.open(url, target); }; - this.init = function() { - var network = amazonService.getEnvironment(); - $scope.wallets = profileService.getWallets({ - network: network, - onlyComplete: true - }); - }; - this.confirm = function() { var message = gettextCatalog.getString('Amazon.com Gift Card purchase for ${{amount}} USD', {amount: $scope.fiat}); var ok = gettextCatalog.getString('Buy'); @@ -216,4 +208,12 @@ angular.module('copayApp.controllers').controller('buyAmazonController', }); }; + $scope.$on("$ionicView.enter", function(event, data){ + var network = amazonService.getEnvironment(); + $scope.wallets = profileService.getWallets({ + network: network, + onlyComplete: true + }); + }); + }); diff --git a/src/js/controllers/buyGlidera.js b/src/js/controllers/buyGlidera.js index 988fccb43..a68751d18 100644 --- a/src/js/controllers/buyGlidera.js +++ b/src/js/controllers/buyGlidera.js @@ -17,36 +17,6 @@ angular.module('copayApp.controllers').controller('buyGlideraController', $log.debug('Wallet changed: ' + w.name); }); - $scope.init = function(accessToken) { - $scope.network = glideraService.getEnvironment(); - - $scope.token = accessToken; - $scope.permissions = null; - $scope.email = null; - $scope.personalInfo = null; - $scope.txs = null; - $scope.status = null; - $scope.limits = null; - - ongoingProcess.set('connectingGlidera', true); - glideraService.init($scope.token, function(err, glidera) { - ongoingProcess.set('connectingGlidera'); - if (err || !glidera) { - if (err) popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - $scope.token = glidera.token; - $scope.permissions = glidera.permissions; - $scope.update({fullUpdate: true}); - }); - - $scope.wallets = profileService.getWallets({ - network: $scope.network, - n: 1, - onlyComplete: true - }); - }; - $scope.update = function(opts) { if (!$scope.token || !$scope.permissions) return; $log.debug('Updating Glidera Account...'); @@ -145,4 +115,34 @@ angular.module('copayApp.controllers').controller('buyGlideraController', }, 100); }; + $scope.$on("$ionicView.enter", function(event, data){ + $scope.network = glideraService.getEnvironment(); + + $scope.token = accessToken; + $scope.permissions = null; + $scope.email = null; + $scope.personalInfo = null; + $scope.txs = null; + $scope.status = null; + $scope.limits = null; + + ongoingProcess.set('connectingGlidera', true); + glideraService.init($scope.token, function(err, glidera) { + ongoingProcess.set('connectingGlidera'); + if (err || !glidera) { + if (err) popupService.showAlert(gettextCatalog.getString('Error'), err); + return; + } + $scope.token = glidera.token; + $scope.permissions = glidera.permissions; + $scope.update({fullUpdate: true}); + }); + + $scope.wallets = profileService.getWallets({ + network: $scope.network, + n: 1, + onlyComplete: true + }); + }); + }); diff --git a/src/js/controllers/confirm.js b/src/js/controllers/confirm.js index 02012599d..4c31fd514 100644 --- a/src/js/controllers/confirm.js +++ b/src/js/controllers/confirm.js @@ -4,7 +4,7 @@ angular.module('copayApp.controllers').controller('confirmController', function( var cachedTxp = {}; var isChromeApp = platformInfo.isChromeApp; - $scope.init = function() { + var initConfirm = function() { if ($stateParams.paypro) { return setFromPayPro($stateParams.paypro, function(err) { if (err && !isChromeApp) { @@ -145,7 +145,7 @@ angular.module('copayApp.controllers').controller('confirmController', function( $stateParams.paypro = null; $scope._paypro = paypro; - return $scope.init(); + return initConfirm(); }); }; @@ -307,4 +307,8 @@ angular.module('copayApp.controllers').controller('confirmController', function( $scope.cancel = function() { $state.go('tabs.send'); }; + + $scope.$on("$ionicView.enter", function(event, data){ + initConfirm(); + }); }); diff --git a/src/js/controllers/copayers.js b/src/js/controllers/copayers.js index 2743f800f..1af29ffba 100644 --- a/src/js/controllers/copayers.js +++ b/src/js/controllers/copayers.js @@ -1,7 +1,7 @@ 'use strict'; angular.module('copayApp.controllers').controller('copayersController', - function($scope, $log, $ionicNavBarDelegate, $stateParams, $state, profileService, popupService, platformInfo, gettextCatalog, ongoingProcess) { + function($scope, $log, $ionicNavBarDelegate, $timeout, $stateParams, $state, $rootScope, lodash, profileService, walletService, popupService, platformInfo, gettextCatalog, ongoingProcess) { if (!$stateParams.walletId) { $log.debug('No wallet provided...back to home'); return $state.go('tabs.home'); @@ -53,4 +53,23 @@ angular.module('copayApp.controllers').controller('copayersController', window.plugins.socialsharing.share(message, gettextCatalog.getString('Invitation to share a Copay Wallet'), null, null); } }; + + $rootScope.$on('bwsEvent', function() { + updateWallet(); + }); + + var updateWallet = function() { + $log.debug('Updating wallet:' + wallet.name) + walletService.getStatus(wallet, {}, function(err, status) { + if (err) { + $log.error(err); //TODO + return; + } + wallet.status = status; + $scope.copayers = wallet.status.wallet.copayers; + $timeout(function() { + $scope.$apply(); + }); + }); + }; }); diff --git a/src/js/controllers/export.js b/src/js/controllers/export.js index 5dd718955..d9e70d5b6 100644 --- a/src/js/controllers/export.js +++ b/src/js/controllers/export.js @@ -4,7 +4,7 @@ angular.module('copayApp.controllers').controller('exportController', function($scope, $timeout, $log, $ionicHistory, backupService, walletService, storageService, profileService, platformInfo, gettextCatalog, $state, $stateParams, popupService) { var wallet = profileService.getWallet($stateParams.walletId); - $scope.init = function() { + var init = function() { $scope.formData = {}; $scope.isEncrypted = wallet.isPrivKeyEncrypted(); $scope.isCordova = platformInfo.isCordova; @@ -158,4 +158,8 @@ angular.module('copayApp.controllers').controller('exportController', }); }; + $scope.$on("$ionicView.enter", function(event, data){ + init(); + }); + }); diff --git a/src/js/controllers/glidera.js b/src/js/controllers/glidera.js index e1703411a..c909e9aa2 100644 --- a/src/js/controllers/glidera.js +++ b/src/js/controllers/glidera.js @@ -7,7 +7,7 @@ angular.module('copayApp.controllers').controller('glideraController', externalLinkService.open(url, target); }; - $scope.init = function(accessToken) { + var initGlidera = function(accessToken) { $scope.network = glideraService.getEnvironment(); $scope.token = null; @@ -78,7 +78,7 @@ angular.module('copayApp.controllers').controller('glideraController', popupService.showAlert(gettextCatalog.getString('Error'), err); } else if (data && data.access_token) { storageService.setGlideraToken($scope.network, data.access_token, function() { - $scope.init(data.access_token); + initGlidera(data.access_token); $timeout(function() { $scope.$apply(); }, 100); @@ -113,4 +113,8 @@ angular.module('copayApp.controllers').controller('glideraController', }); }; + $scope.$on("$ionicView.enter", function(event, data){ + initGlidera(); + }); + }); diff --git a/src/js/controllers/glideraUri.js b/src/js/controllers/glideraUri.js index aef209427..0ebcbfae7 100644 --- a/src/js/controllers/glideraUri.js +++ b/src/js/controllers/glideraUri.js @@ -23,7 +23,7 @@ angular.module('copayApp.controllers').controller('glideraUriController', }, 100); }; - $scope.checkCode = function() { + $scope.$on("$ionicView.enter", function(event, data){ if ($stateParams.url) { var match = $stateParams.url.match(/code=(.+)/); if (match && match[1]) { @@ -32,5 +32,5 @@ angular.module('copayApp.controllers').controller('glideraUriController', } } $log.error('Bad state: ' + JSON.stringify($stateParams)); - } + }); }); diff --git a/src/js/controllers/modals/txStatus.js b/src/js/controllers/modals/txStatus.js index 8d596ee6f..ceb4065f8 100644 --- a/src/js/controllers/modals/txStatus.js +++ b/src/js/controllers/modals/txStatus.js @@ -1,21 +1,28 @@ 'use strict'; -angular.module('copayApp.controllers').controller('txStatusController', function($scope, $timeout, $state, $log, addressbookService) { +angular.module('copayApp.controllers').controller('txStatusController', function($scope, $timeout, $state, $ionicHistory, $log, addressbookService) { if ($scope.cb) $timeout($scope.cb, 100); $scope.cancel = function() { + $ionicHistory.clearHistory(); + $state.go('tabs.home'); $scope.txStatusModal.hide(); }; $scope.save = function(addressbookEntry) { $scope.txStatusModal.hide(); + $ionicHistory.nextViewOptions({ + disableAnimate: true, + disableBack: true + }); $state.go('tabs.send.addressbook', { fromSendTab: true, addressbookEntry: addressbookEntry - }) + }); } + $scope.fromSendTab = $ionicHistory.viewHistory().backView.stateName === "tabs.send.amount"; addressbookService.list(function(err, ab) { if (err) $log.error(err); if (ab[$scope.tx.toAddress]) { diff --git a/src/js/controllers/paperWallet.js b/src/js/controllers/paperWallet.js index 27c784d2f..7025e8bf5 100644 --- a/src/js/controllers/paperWallet.js +++ b/src/js/controllers/paperWallet.js @@ -1,24 +1,5 @@ angular.module('copayApp.controllers').controller('paperWalletController', function($scope, $timeout, $log, $ionicModal, $ionicHistory, popupService, gettextCatalog, platformInfo, configService, profileService, $state, bitcore, ongoingProcess, txFormatService, $stateParams, walletService) { - var wallet = profileService.getWallet($stateParams.walletId); - var rawTx; - - $scope.init = function() { - $scope.wallet = wallet; - $scope.isCordova = platformInfo.isCordova; - $scope.needsBackup = wallet.needsBackup; - $scope.walletAlias = wallet.name; - $scope.walletName = wallet.credentials.walletName; - $scope.formData = {}; - $scope.formData.inputData = null; - $scope.scannedKey = null; - $scope.balance = null; - $scope.balanceSat = null; - $scope.scanned = false; - $timeout(function() { - $scope.$apply(); - }, 10); - }; $scope.onQrCodeScanned = function(data) { $scope.formData.inputData = data; @@ -138,4 +119,22 @@ angular.module('copayApp.controllers').controller('paperWalletController', $scope.txStatusModal.show(); }); }; + + $scope.$on("$ionicView.enter", function(event, data){ + var wallet = profileService.getWallet($stateParams.walletId); + $scope.wallet = wallet; + $scope.isCordova = platformInfo.isCordova; + $scope.needsBackup = wallet.needsBackup; + $scope.walletAlias = wallet.name; + $scope.walletName = wallet.credentials.walletName; + $scope.formData = {}; + $scope.formData.inputData = null; + $scope.scannedKey = null; + $scope.balance = null; + $scope.balanceSat = null; + $scope.scanned = false; + $timeout(function() { + $scope.$apply(); + }, 10); + }); }); diff --git a/src/js/controllers/preferences.js b/src/js/controllers/preferences.js index 288ef49f4..a93d7b260 100644 --- a/src/js/controllers/preferences.js +++ b/src/js/controllers/preferences.js @@ -1,33 +1,11 @@ 'use strict'; angular.module('copayApp.controllers').controller('preferencesController', - function($scope, $rootScope, $timeout, $log, $stateParams, $ionicHistory, $ionicNavBarDelegate, gettextCatalog, configService, profileService, fingerprintService, walletService) { - $ionicNavBarDelegate.title(gettextCatalog.getString('Wallet Preferences')); + function($scope, $rootScope, $timeout, $log, $stateParams, $ionicHistory, gettextCatalog, configService, profileService, fingerprintService, walletService) { var wallet = profileService.getWallet($stateParams.walletId); var walletId = wallet.credentials.walletId; $scope.wallet = wallet; - $scope.init = function() { - $scope.externalSource = null; - - if (!wallet) - return $ionicHistory.goBack(); - - var config = configService.getSync(); - - $scope.encryptEnabled = walletService.isEncrypted(wallet); - if (wallet.isPrivKeyExternal) - $scope.externalSource = wallet.getPrivKeyExternalSourceName() == 'ledger' ? 'Ledger' : 'Trezor'; - - $scope.touchIdAvailable = fingerprintService.isAvailable(); - $scope.touchIdEnabled = config.touchIdFor ? config.touchIdFor[walletId] : null; - - $scope.deleted = false; - if (wallet.credentials && !wallet.credentials.mnemonicEncrypted && !wallet.credentials.mnemonic) { - $scope.deleted = true; - } - }; - $scope.encryptChange = function() { if (!wallet) return; var val = $scope.encryptEnabled; @@ -77,4 +55,25 @@ angular.module('copayApp.controllers').controller('preferencesController', $log.debug('Touch Id status changed: ' + newStatus); }); }; + + $scope.$on("$ionicView.beforeEnter", function(event, data){ + $scope.externalSource = null; + + if (!wallet) + return $ionicHistory.goBack(); + + var config = configService.getSync(); + + $scope.encryptEnabled = walletService.isEncrypted(wallet); + if (wallet.isPrivKeyExternal) + $scope.externalSource = wallet.getPrivKeyExternalSourceName() == 'ledger' ? 'Ledger' : 'Trezor'; + + $scope.touchIdAvailable = fingerprintService.isAvailable(); + $scope.touchIdEnabled = config.touchIdFor ? config.touchIdFor[walletId] : null; + + $scope.deleted = false; + if (wallet.credentials && !wallet.credentials.mnemonicEncrypted && !wallet.credentials.mnemonic) { + $scope.deleted = true; + } + }); }); diff --git a/src/js/controllers/preferencesAbout.js b/src/js/controllers/preferencesAbout.js index 55ae224d9..79bc23cdf 100644 --- a/src/js/controllers/preferencesAbout.js +++ b/src/js/controllers/preferencesAbout.js @@ -2,7 +2,9 @@ angular.module('copayApp.controllers').controller('preferencesAbout', function($scope, $window, $ionicNavBarDelegate, gettextCatalog, externalLinkService) { - $ionicNavBarDelegate.title(gettextCatalog.getString('About') + ' ' + $window.appConfig.nameCase); + $scope.$on("$ionicView.beforeEnter", function(event, data){ + $ionicNavBarDelegate.title(gettextCatalog.getString('About') + ' ' + $window.appConfig.nameCase); + }); $scope.version = $window.version; $scope.commitHash = $window.commitHash; diff --git a/src/js/controllers/preferencesAlias.js b/src/js/controllers/preferencesAlias.js index d51957301..a284bc104 100644 --- a/src/js/controllers/preferencesAlias.js +++ b/src/js/controllers/preferencesAlias.js @@ -1,8 +1,7 @@ 'use strict'; angular.module('copayApp.controllers').controller('preferencesAliasController', - function($scope, $timeout, $stateParams, $ionicHistory, $ionicNavBarDelegate, gettextCatalog, configService, profileService, walletService) { - $ionicNavBarDelegate.title(gettextCatalog.getString('Alias')); + function($scope, $timeout, $stateParams, $ionicHistory, gettextCatalog, configService, profileService, walletService) { var wallet = profileService.getWallet($stateParams.walletId); $scope.wallet = wallet; var walletId = wallet.credentials.walletId; diff --git a/src/js/controllers/preferencesAltCurrency.js b/src/js/controllers/preferencesAltCurrency.js index bd1aaf674..f542c205a 100644 --- a/src/js/controllers/preferencesAltCurrency.js +++ b/src/js/controllers/preferencesAltCurrency.js @@ -1,26 +1,22 @@ 'use strict'; angular.module('copayApp.controllers').controller('preferencesAltCurrencyController', - function($scope, $log, $timeout, $ionicNavBarDelegate, $ionicHistory, gettextCatalog, configService, rateService, lodash, profileService, walletService) { - $ionicNavBarDelegate.title(gettextCatalog.getString('Alternative Currency')); + function($scope, $log, $timeout, $ionicHistory, gettextCatalog, configService, rateService, lodash, profileService, walletService) { var next = 10; var completeAlternativeList; - $scope.init = function() { + var config = configService.getSync(); + $scope.currentCurrency = config.wallet.settings.alternativeIsoCode; + $scope.listComplete = false; - var config = configService.getSync(); - $scope.currentCurrency = config.wallet.settings.alternativeIsoCode; - $scope.listComplete = false; - - rateService.whenAvailable(function() { - completeAlternativeList = rateService.listAlternatives(); - lodash.remove(completeAlternativeList, function(c) { - return c.isoCode == 'BTC'; - }); - $scope.altCurrencyList = completeAlternativeList.slice(0, next); + rateService.whenAvailable(function() { + completeAlternativeList = rateService.listAlternatives(); + lodash.remove(completeAlternativeList, function(c) { + return c.isoCode == 'BTC'; }); - }; + $scope.altCurrencyList = completeAlternativeList.slice(0, next); + }); $scope.loadMore = function() { $timeout(function() { diff --git a/src/js/controllers/preferencesBwsUrl.js b/src/js/controllers/preferencesBwsUrl.js index 16c8ef2d6..2002d9809 100644 --- a/src/js/controllers/preferencesBwsUrl.js +++ b/src/js/controllers/preferencesBwsUrl.js @@ -1,8 +1,7 @@ 'use strict'; angular.module('copayApp.controllers').controller('preferencesBwsUrlController', - function($scope, $log, $stateParams, $ionicNavBarDelegate, configService, applicationService, profileService, storageService) { - $ionicNavBarDelegate.title('Wallet Service URL'); + function($scope, $log, $stateParams, configService, applicationService, profileService, storageService) { $scope.success = null; var wallet = profileService.getWallet($stateParams.walletId); diff --git a/src/js/controllers/preferencesColor.js b/src/js/controllers/preferencesColor.js index fb9ecf737..04ccc3cdd 100644 --- a/src/js/controllers/preferencesColor.js +++ b/src/js/controllers/preferencesColor.js @@ -1,7 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('preferencesColorController', function($scope, $log, $stateParams, $ionicHistory, $ionicNavBarDelegate, gettextCatalog, configService, profileService) { - $ionicNavBarDelegate.title(gettextCatalog.getString('Color')); +angular.module('copayApp.controllers').controller('preferencesColorController', function($scope, $log, $stateParams, $ionicHistory, gettextCatalog, configService, profileService) { $scope.colorList = [ '#DD4B39', '#F38F12', diff --git a/src/js/controllers/preferencesDelete.js b/src/js/controllers/preferencesDelete.js index 1ec93fd4b..5aff687c2 100644 --- a/src/js/controllers/preferencesDelete.js +++ b/src/js/controllers/preferencesDelete.js @@ -1,8 +1,7 @@ 'use strict'; angular.module('copayApp.controllers').controller('preferencesDeleteWalletController', - function($scope, $stateParams, $ionicNavBarDelegate, $ionicHistory, gettextCatalog, lodash, profileService, $state, ongoingProcess, popupService) { - $ionicNavBarDelegate.title(gettextCatalog.getString('Delete')); + function($scope, $stateParams, $ionicHistory, gettextCatalog, lodash, profileService, $state, ongoingProcess, popupService) { var wallet = profileService.getWallet($stateParams.walletId); $scope.alias = lodash.isEqual(wallet.name, wallet.credentials.walletName) ? null : wallet.name + ' '; $scope.walletName = '[' + wallet.credentials.walletName + ']'; diff --git a/src/js/controllers/preferencesDeleteWords.js b/src/js/controllers/preferencesDeleteWords.js index e1fde81d3..e682c6f62 100644 --- a/src/js/controllers/preferencesDeleteWords.js +++ b/src/js/controllers/preferencesDeleteWords.js @@ -1,7 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('preferencesDeleteWordsController', function($scope, $ionicHistory, $stateParams, $ionicNavBarDelegate, gettextCatalog, confirmDialog, lodash, profileService, gettext) { - $ionicNavBarDelegate.title(gettextCatalog.getString('Delete recovery phrase')); +angular.module('copayApp.controllers').controller('preferencesDeleteWordsController', function($scope, $ionicHistory, $stateParams, gettextCatalog, confirmDialog, lodash, profileService, gettext) { var wallet = profileService.getWallet($stateParams.walletId); var msg = gettext('Are you sure you want to delete the recovery phrase?'); var successMsg = gettext('Recovery phrase deleted'); diff --git a/src/js/controllers/preferencesEmail.js b/src/js/controllers/preferencesEmail.js index 9970c1b21..66312d42a 100644 --- a/src/js/controllers/preferencesEmail.js +++ b/src/js/controllers/preferencesEmail.js @@ -1,7 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('preferencesEmailController', function($scope, $ionicHistory, $stateParams, $ionicNavBarDelegate, gettextCatalog, profileService, walletService, configService) { - $ionicNavBarDelegate.title(gettextCatalog.getString('Email Notifications')); +angular.module('copayApp.controllers').controller('preferencesEmailController', function($scope, $ionicHistory, $stateParams, gettextCatalog, profileService, walletService, configService) { var wallet = profileService.getWallet($stateParams.walletId); var walletId = wallet.credentials.walletId; diff --git a/src/js/controllers/preferencesFee.js b/src/js/controllers/preferencesFee.js index 4fa0c0761..bc2215b4c 100644 --- a/src/js/controllers/preferencesFee.js +++ b/src/js/controllers/preferencesFee.js @@ -1,18 +1,13 @@ 'use strict'; -angular.module('copayApp.controllers').controller('preferencesFeeController', function($scope, $timeout, $ionicHistory, $ionicNavBarDelegate, gettextCatalog, configService, feeService, ongoingProcess) { - $ionicNavBarDelegate.title(gettextCatalog.getString('Bitcoin Network Fee Policy')); +angular.module('copayApp.controllers').controller('preferencesFeeController', function($scope, $timeout, $ionicHistory, gettextCatalog, configService, feeService, ongoingProcess) { - $scope.init = function() { - ongoingProcess.set('gettingFeeLevels', true); - feeService.getFeeLevels(function(levels) { - ongoingProcess.set('gettingFeeLevels', false); - $scope.feeOpts = feeService.feeOpts; - $scope.currentFeeLevel = feeService.getCurrentFeeLevel(); - $scope.feeLevels = levels; - $scope.$apply(); - }); - } + ongoingProcess.set('gettingFeeLevels', true); + feeService.getFeeLevels(function(levels) { + ongoingProcess.set('gettingFeeLevels', false); + $scope.feeLevels = levels; + $scope.$apply(); + }); $scope.save = function(newFee) { var opts = { @@ -32,4 +27,9 @@ angular.module('copayApp.controllers').controller('preferencesFeeController', fu }, 100); }); }; + + $scope.$on("$ionicView.enter", function(event, data){ + $scope.feeOpts = feeService.feeOpts; + $scope.currentFeeLevel = feeService.getCurrentFeeLevel(); + }); }); diff --git a/src/js/controllers/preferencesGlidera.js b/src/js/controllers/preferencesGlidera.js index d9352d832..2559f129a 100644 --- a/src/js/controllers/preferencesGlidera.js +++ b/src/js/controllers/preferencesGlidera.js @@ -3,32 +3,6 @@ angular.module('copayApp.controllers').controller('preferencesGlideraController', function($scope, $log, $timeout, $state, ongoingProcess, glideraService, popupService, gettextCatalog) { - $scope.init = function(accessToken) { - $scope.network = glideraService.getEnvironment(); - - $scope.token = accessToken; - $scope.permissions = null; - $scope.email = null; - $scope.personalInfo = null; - $scope.txs = null; - $scope.status = null; - $scope.limits = null; - - ongoingProcess.set('connectingGlidera', true); - glideraService.init($scope.token, function(err, glidera) { - ongoingProcess.set('connectingGlidera'); - if (err || !glidera) { - if (err) popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - $scope.token = glidera.token; - $scope.permissions = glidera.permissions; - $scope.update({ - fullUpdate: true - }); - }); - }; - $scope.update = function(opts) { if (!$scope.token || !$scope.permissions) return; $log.debug('Updating Glidera Account...'); @@ -75,4 +49,30 @@ angular.module('copayApp.controllers').controller('preferencesGlideraController' }); }; + $scope.$on("$ionicView.enter", function(event, data){ + $scope.network = glideraService.getEnvironment(); + + $scope.token = accessToken; + $scope.permissions = null; + $scope.email = null; + $scope.personalInfo = null; + $scope.txs = null; + $scope.status = null; + $scope.limits = null; + + ongoingProcess.set('connectingGlidera', true); + glideraService.init($scope.token, function(err, glidera) { + ongoingProcess.set('connectingGlidera'); + if (err || !glidera) { + if (err) popupService.showAlert(gettextCatalog.getString('Error'), err); + return; + } + $scope.token = glidera.token; + $scope.permissions = glidera.permissions; + $scope.update({ + fullUpdate: true + }); + }); + }); + }); diff --git a/src/js/controllers/preferencesHistory.js b/src/js/controllers/preferencesHistory.js index 500a8bd53..d65eca2d5 100644 --- a/src/js/controllers/preferencesHistory.js +++ b/src/js/controllers/preferencesHistory.js @@ -1,8 +1,7 @@ 'use strict'; angular.module('copayApp.controllers').controller('preferencesHistory', - function($scope, $log, $stateParams, $timeout, $state, $ionicHistory, $ionicNavBarDelegate, gettextCatalog, storageService, platformInfo, profileService, lodash) { - $ionicNavBarDelegate.title(gettextCatalog.getString('Transaction History')); + function($scope, $log, $stateParams, $timeout, $state, $ionicHistory, gettextCatalog, storageService, platformInfo, profileService, lodash) { $scope.wallet = profileService.getWallet($stateParams.walletId); $scope.csvReady = false; $scope.isCordova = platformInfo.isCordova; @@ -131,4 +130,8 @@ angular.module('copayApp.controllers').controller('preferencesHistory', }, 100); }); }; + + $scope.$on("$ionicView.enter", function(event, data){ + $scope.csvHistory(); + }); }); diff --git a/src/js/controllers/preferencesInformation.js b/src/js/controllers/preferencesInformation.js index fd8d9f99c..0ffaa78a2 100644 --- a/src/js/controllers/preferencesInformation.js +++ b/src/js/controllers/preferencesInformation.js @@ -1,8 +1,7 @@ 'use strict'; angular.module('copayApp.controllers').controller('preferencesInformation', - function($scope, $log, $timeout, $ionicNavBarDelegate, $ionicHistory, platformInfo, gettextCatalog, lodash, profileService, configService, $stateParams, walletService, $state) { - $ionicNavBarDelegate.title(gettextCatalog.getString('Wallet Information')); + function($scope, $log, $timeout, $ionicHistory, platformInfo, gettextCatalog, lodash, profileService, configService, $stateParams, walletService, $state) { var base = 'xpub'; var wallet = profileService.getWallet($stateParams.walletId); var walletId = wallet.id; @@ -12,45 +11,6 @@ angular.module('copayApp.controllers').controller('preferencesInformation', $scope.isCordova = platformInfo.isCordova; config.colorFor = config.colorFor || {}; - $scope.init = function() { - var c = wallet.credentials; - var basePath = c.getBaseAddressDerivationPath(); - - $scope.wallet = wallet; - $scope.walletName = c.walletName; - $scope.walletId = c.walletId; - $scope.network = c.network; - $scope.addressType = c.addressType || 'P2SH'; - $scope.derivationStrategy = c.derivationStrategy || 'BIP45'; - $scope.basePath = basePath; - $scope.M = c.m; - $scope.N = c.n; - $scope.pubKeys = lodash.pluck(c.publicKeyRing, 'xPubKey'); - $scope.addrs = null; - - wallet.getMainAddresses({ - doNotVerify: true - }, function(err, addrs) { - if (err) { - $log.warn(err); - return; - }; - var last10 = [], - i = 0, - e = addrs.pop(); - while (i++ < 10 && e) { - e.path = base + e.path.substring(1); - last10.push(e); - e = addrs.pop(); - } - $scope.addrs = last10; - $timeout(function() { - $scope.$apply(); - }); - - }); - }; - $scope.sendAddrs = function() { function formatDate(ts) { var dateObj = new Date(ts * 1000); @@ -121,6 +81,43 @@ angular.module('copayApp.controllers').controller('preferencesInformation', $state.go('tabs.home'); }; + $scope.$on("$ionicView.enter", function(event, data){ + var c = wallet.credentials; + var basePath = c.getBaseAddressDerivationPath(); + $scope.wallet = wallet; + $scope.walletName = c.walletName; + $scope.walletId = c.walletId; + $scope.network = c.network; + $scope.addressType = c.addressType || 'P2SH'; + $scope.derivationStrategy = c.derivationStrategy || 'BIP45'; + $scope.basePath = basePath; + $scope.M = c.m; + $scope.N = c.n; + $scope.pubKeys = lodash.pluck(c.publicKeyRing, 'xPubKey'); + $scope.addrs = null; + + wallet.getMainAddresses({ + doNotVerify: true + }, function(err, addrs) { + if (err) { + $log.warn(err); + return; + }; + var last10 = [], + i = 0, + e = addrs.pop(); + while (i++ < 10 && e) { + e.path = base + e.path.substring(1); + last10.push(e); + e = addrs.pop(); + } + $scope.addrs = last10; + $timeout(function() { + $scope.$apply(); + }); + + }); + }); }); diff --git a/src/js/controllers/preferencesLanguage.js b/src/js/controllers/preferencesLanguage.js index 5ae3b2588..4a4ca07f7 100644 --- a/src/js/controllers/preferencesLanguage.js +++ b/src/js/controllers/preferencesLanguage.js @@ -1,18 +1,14 @@ 'use strict'; angular.module('copayApp.controllers').controller('preferencesLanguageController', - function($scope, $log, $ionicNavBarDelegate, $ionicHistory, gettextCatalog, configService, profileService, uxLanguage, walletService, externalLinkService) { - $ionicNavBarDelegate.title(gettextCatalog.getString('Language')); + function($scope, $log, $ionicHistory, gettextCatalog, configService, profileService, uxLanguage, walletService, externalLinkService) { + + $scope.availableLanguages = uxLanguage.getLanguages(); $scope.openExternalLink = function(url, target) { externalLinkService.open(url, target); }; - $scope.init = function() { - $scope.availableLanguages = uxLanguage.getLanguages(); - $scope.currentLanguage = uxLanguage.getCurrentLanguage(); - } - $scope.save = function(newLang) { var opts = { wallet: { @@ -33,4 +29,8 @@ angular.module('copayApp.controllers').controller('preferencesLanguageController }); }); }; + + $scope.$on("$ionicView.enter", function(event, data){ + $scope.currentLanguage = uxLanguage.getCurrentLanguage(); + }); }); diff --git a/src/js/controllers/preferencesLogs.js b/src/js/controllers/preferencesLogs.js index 6c9a8c16d..8cb067e7a 100644 --- a/src/js/controllers/preferencesLogs.js +++ b/src/js/controllers/preferencesLogs.js @@ -1,12 +1,7 @@ 'use strict'; angular.module('copayApp.controllers').controller('preferencesLogs', - function($scope, historicLog, $ionicNavBarDelegate, gettextCatalog) { - $ionicNavBarDelegate.title(gettextCatalog.getString('Session Log')); - - $scope.init = function() { - $scope.logs = historicLog.get(); - } + function($scope, historicLog, gettextCatalog) { $scope.prepare = function() { var log = 'Copay Session Logs\n Be careful, this could contain sensitive private data\n\n'; @@ -32,4 +27,8 @@ angular.module('copayApp.controllers').controller('preferencesLogs', function() {} ); }; + + $scope.$on("$ionicView.enter", function(event, data){ + $scope.logs = historicLog.get(); + }); }); diff --git a/src/js/controllers/preferencesUnit.js b/src/js/controllers/preferencesUnit.js index 3c3a2ddd9..cb480d5f2 100644 --- a/src/js/controllers/preferencesUnit.js +++ b/src/js/controllers/preferencesUnit.js @@ -1,13 +1,8 @@ 'use strict'; -angular.module('copayApp.controllers').controller('preferencesUnitController', function($scope, $log, configService, $ionicNavBarDelegate, $ionicHistory, gettextCatalog, walletService, profileService) { - $ionicNavBarDelegate.title(gettextCatalog.getString('Unit')); - - $scope.init = function() { - var config = configService.getSync(); - $scope.currentUnit = config.wallet.settings.unitCode; - } +angular.module('copayApp.controllers').controller('preferencesUnitController', function($scope, $log, configService, $ionicHistory, gettextCatalog, walletService, profileService) { + var config = configService.getSync(); $scope.unitList = [{ name: 'bits (1,000,000 bits = 1BTC)', shortName: 'bits', @@ -43,4 +38,8 @@ angular.module('copayApp.controllers').controller('preferencesUnitController', f }); }); }; + + $scope.$on("$ionicView.enter", function(event, data){ + $scope.currentUnit = config.wallet.settings.unitCode; + }); }); diff --git a/src/js/controllers/proposals.js b/src/js/controllers/proposals.js index 3747cd706..2fa6193a0 100644 --- a/src/js/controllers/proposals.js +++ b/src/js/controllers/proposals.js @@ -3,13 +3,14 @@ angular.module('copayApp.controllers').controller('proposalsController', function($timeout, $scope, profileService, $log, txpModalService) { - var self = this; + $scope.fetchingProposals = true; - $scope.init = function() { + $scope.$on("$ionicView.enter", function(event, data){ profileService.getTxps(50, function(err, txps) { + $scope.fetchingProposals = false; if (err) { - console.log('[tab-home.js.35:err:]', $log.error(err)); //TODO + $log.error(err); return; } $scope.txps = txps; @@ -17,7 +18,7 @@ angular.module('copayApp.controllers').controller('proposalsController', $scope.$apply(); }, 1); }); - } + }); $scope.openTxpModal = txpModalService.open; }); diff --git a/src/js/controllers/sellGlidera.js b/src/js/controllers/sellGlidera.js index 644b27687..defc5067c 100644 --- a/src/js/controllers/sellGlidera.js +++ b/src/js/controllers/sellGlidera.js @@ -18,36 +18,6 @@ angular.module('copayApp.controllers').controller('sellGlideraController', $log.debug('Wallet changed: ' + w.name); }); - $scope.init = function(accessToken) { - $scope.network = glideraService.getEnvironment(); - - $scope.token = accessToken; - $scope.permissions = null; - $scope.email = null; - $scope.personalInfo = null; - $scope.txs = null; - $scope.status = null; - $scope.limits = null; - - ongoingProcess.set('connectingGlidera', true); - glideraService.init($scope.token, function(err, glidera) { - ongoingProcess.set('connectingGlidera'); - if (err || !glidera) { - if (err) popupService.showAlert(gettextCatalog.getString('Error'), err); - return; - } - $scope.token = glidera.token; - $scope.permissions = glidera.permissions; - $scope.update({fullUpdate: true}); - }); - - $scope.wallets = profileService.getWallets({ - network: $scope.network, - n: 1, - onlyComplete: true - }); - }; - $scope.update = function(opts) { if (!$scope.token || !$scope.permissions) return; $log.debug('Updating Glidera Account...'); @@ -217,4 +187,34 @@ angular.module('copayApp.controllers').controller('sellGlideraController', }); }); }; + + $scope.$on("$ionicView.enter", function(event, data){ + $scope.network = glideraService.getEnvironment(); + + $scope.token = accessToken; + $scope.permissions = null; + $scope.email = null; + $scope.personalInfo = null; + $scope.txs = null; + $scope.status = null; + $scope.limits = null; + + ongoingProcess.set('connectingGlidera', true); + glideraService.init($scope.token, function(err, glidera) { + ongoingProcess.set('connectingGlidera'); + if (err || !glidera) { + if (err) popupService.showAlert(gettextCatalog.getString('Error'), err); + return; + } + $scope.token = glidera.token; + $scope.permissions = glidera.permissions; + $scope.update({fullUpdate: true}); + }); + + $scope.wallets = profileService.getWallets({ + network: $scope.network, + n: 1, + onlyComplete: true + }); + }); }); diff --git a/src/js/controllers/tab-home.js b/src/js/controllers/tab-home.js index fe9b10423..7abcd4e8e 100644 --- a/src/js/controllers/tab-home.js +++ b/src/js/controllers/tab-home.js @@ -8,14 +8,7 @@ angular.module('copayApp.controllers').controller('tabHomeController', $scope.openTxpModal = txpModalService.open; $scope.version = $window.version; $scope.name = $window.appConfig.nameCase; - $scope.homeTip = $stateParams.fromOnboarding; - configService.whenAvailable(function() { - var config = configService.getSync(); - var isWindowsPhoneApp = platformInfo.isWP && platformInfo.isCordova; - $scope.glideraEnabled = config.glidera.enabled && !isWindowsPhoneApp; - $scope.coinbaseEnabled = config.coinbase.enabled && !isWindowsPhoneApp; - }); $scope.openNotificationModal = function(n) { wallet = profileService.getWallet(n.walletId); @@ -60,18 +53,18 @@ angular.module('copayApp.controllers').controller('tabHomeController', return popupService.showAlert(null, gettextCatalog.getString('Transaction not found')); } + $scope.wallet = wallet; + $scope.btx = lodash.cloneDeep(tx); + $ionicModal.fromTemplateUrl('views/modals/tx-details.html', { + scope: $scope + }).then(function(modal) { + $scope.txDetailsModal = modal; + $scope.txDetailsModal.show(); + }); + walletService.getTxNote(wallet, n.txid, function(err, note) { if (err) $log.debug(gettextCatalog.getString('Could not fetch transaction note')); - - $scope.wallet = wallet; - $scope.btx = lodash.cloneDeep(tx); $scope.btx.note = note; - $ionicModal.fromTemplateUrl('views/modals/tx-details.html', { - scope: $scope - }).then(function(modal) { - $scope.txDetailsModal = modal; - $scope.txDetailsModal.show(); - }); }); }); }; @@ -115,7 +108,7 @@ angular.module('copayApp.controllers').controller('tabHomeController', lodash.each($scope.wallets, function(wallet) { walletService.getStatus(wallet, {}, function(err, status) { if (err) { - console.log('[tab-home.js.35:err:]', $log.error(err)); //TODO + $log.error(err); } else { wallet.status = status; } @@ -172,7 +165,7 @@ angular.module('copayApp.controllers').controller('tabHomeController', $scope.hideHomeTip = function() { $scope.homeTip = null; $state.transitionTo($state.current, null, { - reload: false, + reload: true, inherit: false, notify: false }); @@ -204,4 +197,15 @@ angular.module('copayApp.controllers').controller('tabHomeController', x(); }); }); + + $scope.$on("$ionicView.enter", function(event, data){ + configService.whenAvailable(function() { + var config = configService.getSync(); + var isWindowsPhoneApp = platformInfo.isWP && platformInfo.isCordova; + $scope.glideraEnabled = config.glidera.enabled && !isWindowsPhoneApp; + $scope.coinbaseEnabled = config.coinbase.enabled && !isWindowsPhoneApp; + }); + $scope.nextStep(); + $scope.updateAllWallets(); + }); }); diff --git a/src/js/controllers/tab-receive.js b/src/js/controllers/tab-receive.js index 19cbe0eb8..26e71e57c 100644 --- a/src/js/controllers/tab-receive.js +++ b/src/js/controllers/tab-receive.js @@ -3,15 +3,11 @@ angular.module('copayApp.controllers').controller('tabReceiveController', function($scope, $timeout, $log, $ionicModal, storageService, platformInfo, walletService, profileService, configService, lodash, gettextCatalog, popupService) { $scope.isCordova = platformInfo.isCordova; + $scope.isNW = platformInfo.isNW; - $scope.init = function() { - $scope.wallets = profileService.getWallets({ - onlyComplete: true - }); - $scope.isNW = platformInfo.isNW; - $scope.isCordova = platformInfo.isCordova; - if (!$scope.isCordova) $scope.checkTips(); - } + $scope.wallets = profileService.getWallets({ + onlyComplete: true + }); $scope.checkTips = function(force) { storageService.getReceiveTipsAccepted(function(err, accepted) { @@ -36,7 +32,7 @@ angular.module('copayApp.controllers').controller('tabReceiveController', functi } $scope.wallet = wallet; $log.debug('Wallet changed: ' + wallet.name); - $scope.setAddress(wallet); + $scope.setAddress(); }); $scope.shareAddress = function(addr) { @@ -46,25 +42,24 @@ angular.module('copayApp.controllers').controller('tabReceiveController', functi } }; - $scope.setAddress = function(wallet, forceNew) { + $scope.setAddress = function(forceNew) { if ($scope.generatingAddress) return; - var wallet = wallet || $scope.wallet; $scope.addr = null; $scope.generatingAddress = true; $timeout(function() { - walletService.getAddress(wallet, forceNew, function(err, addr) { + walletService.getAddress($scope.wallet, forceNew, function(err, addr) { $scope.generatingAddress = false; - if (err) { - popupService.showAlert(gettextCatalog.getString('Error'), err); - } else { - if (addr) - $scope.addr = addr; + if (err || lodash.isEmpty(addr)) { + popupService.showAlert(gettextCatalog.getString('Error'), err || gettextCatalog.getString('Address is empty')); + return; } - + $scope.addr = addr; $scope.$apply(); }); }, 1); }; + + if (!$scope.isCordova) $scope.checkTips(); }); diff --git a/src/js/controllers/tab-send.js b/src/js/controllers/tab-send.js index c0ca2b422..acd08dfde 100644 --- a/src/js/controllers/tab-send.js +++ b/src/js/controllers/tab-send.js @@ -4,7 +4,7 @@ angular.module('copayApp.controllers').controller('tabSendController', function( var originalList; - $scope.init = function() { + var updateList = function() { originalList = []; var wallets = profileService.getWallets({ @@ -83,8 +83,8 @@ angular.module('copayApp.controllers').controller('tabSendController', function( }); }; - $scope.$on('modal.hidden', function() { - $scope.init(); + $scope.$on("$ionicView.enter", function(event, data){ + updateList(); }); }); diff --git a/src/js/controllers/tab-settings.js b/src/js/controllers/tab-settings.js index b779d5f87..310803cdd 100644 --- a/src/js/controllers/tab-settings.js +++ b/src/js/controllers/tab-settings.js @@ -2,7 +2,7 @@ angular.module('copayApp.controllers').controller('tabSettingsController', function($scope, $rootScope, $log, $window, lodash, configService, uxLanguage, platformInfo, pushNotificationsService, profileService, feeService) { - $scope.init = function() { + var updateConfig = function() { var config = configService.getSync(); var isCordova = platformInfo.isCordova; @@ -28,10 +28,10 @@ angular.module('copayApp.controllers').controller('tabSettingsController', funct $scope.$digest(); }); } - $scope.spendUnconfirmed = config.wallet.spendUnconfirmed; - $scope.glideraEnabled = config.glidera.enabled; + $scope.spendUnconfirmed = {value : config.wallet.spendUnconfirmed}; + $scope.glideraEnabled = {value: config.glidera.enabled}; $scope.coinbaseEnabled = config.coinbase.enabled; - $scope.pushNotifications = config.pushNotifications.enabled; + $scope.pushNotifications = {value: config.pushNotifications.enabled}; $scope.otherWallets = lodash.filter(profileService.getWallets(self.network), function(w) { return w.id != self.walletId; }); @@ -44,12 +44,12 @@ angular.module('copayApp.controllers').controller('tabSettingsController', funct }, function(err) { $log.debug(err); }); - } + }; $scope.spendUnconfirmedChange = function() { var opts = { wallet: { - spendUnconfirmed: $scope.spendUnconfirmed + spendUnconfirmed: $scope.spendUnconfirmed.value } }; configService.set(opts, function(err) { @@ -60,7 +60,7 @@ angular.module('copayApp.controllers').controller('tabSettingsController', funct $scope.pushNotificationsChange = function() { var opts = { pushNotifications: { - enabled: $scope.pushNotifications + enabled: $scope.pushNotifications.value } }; configService.set(opts, function(err) { @@ -75,7 +75,7 @@ angular.module('copayApp.controllers').controller('tabSettingsController', funct $scope.glideraChange = function() { var opts = { glidera: { - enabled: $scope.glideraEnabled + enabled: $scope.glideraEnabled.value } }; configService.set(opts, function(err) { @@ -94,4 +94,8 @@ angular.module('copayApp.controllers').controller('tabSettingsController', funct }); }; + $scope.$on("$ionicView.enter", function(event, data){ + updateConfig(); + }); + }); diff --git a/src/js/controllers/termOfUse.js b/src/js/controllers/termOfUse.js index 7632e187a..46d91160f 100644 --- a/src/js/controllers/termOfUse.js +++ b/src/js/controllers/termOfUse.js @@ -1,8 +1,7 @@ 'use strict'; angular.module('copayApp.controllers').controller('termOfUseController', - function($scope, $window, uxLanguage, $ionicNavBarDelegate, gettextCatalog, externalLinkService) { - $ionicNavBarDelegate.title(gettextCatalog.getString('Terms Of Use')); + function($scope, $window, uxLanguage, gettextCatalog, externalLinkService) { $scope.lang = uxLanguage.currentLanguage; $scope.disclaimerUrl = $window.appConfig.disclaimerUrl; diff --git a/src/js/controllers/walletDetails.js b/src/js/controllers/walletDetails.js index 5734e6eac..b6a51f331 100644 --- a/src/js/controllers/walletDetails.js +++ b/src/js/controllers/walletDetails.js @@ -15,49 +15,6 @@ angular.module('copayApp.controllers').controller('walletDetailsController', fun externalLinkService.open(url, target); }; - $scope.init = function() { - currentTxHistoryPage = 0; - $scope.completeTxHistory = []; - - wallet = profileService.getWallet($stateParams.walletId); - - /* Set color for header bar */ - $rootScope.walletDetailsColor = wallet.color; - $rootScope.walletDetailsName = wallet.name; - $scope.wallet = wallet; - - $scope.requiresMultipleSignatures = wallet.credentials.m > 1; - $scope.newTx = false; - - $ionicNavBarDelegate.title(wallet.name); - - $scope.updateAll(function() { - if ($stateParams.txid) { - var tx = lodash.find($scope.completeTxHistory, { - txid: $stateParams.txid - }); - if (tx) { - $scope.openTxModal(tx); - } else { - $ionicPopup.alert({ - title: gettext('TX not available'), - }); - } - } else if ($stateParams.txpId) { - var txp = lodash.find($scope.txps, { - id: $stateParams.txpId - }); - if (txp) { - $scope.openTxpModal(txp); - } else { - $ionicPopup.alert({ - title: gettext('Proposal not longer available'), - }); - } - } - }); - } - var setPendingTxps = function(txps) { /* Uncomment to test multiple outputs */ @@ -232,11 +189,54 @@ angular.module('copayApp.controllers').controller('walletDetailsController', fun $scope.updateAll = function(cb) { $scope.updateStatus(false); $scope.updateTxHistory(cb); - } + }; $scope.hideToggle = function() { profileService.toggleHideBalanceFlag(wallet.credentials.walletId, function(err) { if (err) $log.error(err); }); - } + }; + + $scope.$on("$ionicView.beforeEnter", function(event, data){ + currentTxHistoryPage = 0; + $scope.completeTxHistory = []; + + wallet = profileService.getWallet($stateParams.walletId); + + /* Set color for header bar */ + $rootScope.walletDetailsColor = wallet.color; + $rootScope.walletDetailsName = wallet.name; + $scope.wallet = wallet; + + $scope.requiresMultipleSignatures = wallet.credentials.m > 1; + $scope.newTx = false; + + $ionicNavBarDelegate.title(wallet.name); + + $scope.updateAll(function() { + if ($stateParams.txid) { + var tx = lodash.find($scope.completeTxHistory, { + txid: $stateParams.txid + }); + if (tx) { + $scope.openTxModal(tx); + } else { + $ionicPopup.alert({ + title: gettext('TX not available'), + }); + } + } else if ($stateParams.txpId) { + var txp = lodash.find($scope.txps, { + id: $stateParams.txpId + }); + if (txp) { + $scope.openTxpModal(txp); + } else { + $ionicPopup.alert({ + title: gettext('Proposal not longer available'), + }); + } + } + }); + }); }); diff --git a/src/js/routes.js b/src/js/routes.js index eb2cfa485..ede45ee32 100644 --- a/src/js/routes.js +++ b/src/js/routes.js @@ -17,7 +17,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr $urlRouterProvider.otherwise('/starting'); // NO CACHE - $ionicConfigProvider.views.maxCache(0); + //$ionicConfigProvider.views.maxCache(0); // TABS BOTTOM $ionicConfigProvider.tabs.position('bottom'); @@ -136,6 +136,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr }) .state('uriglidera', { url: '/uri-glidera/:url', + controller: 'glideraUriController', templateUrl: 'views/glideraUri.html' }) .state('uricoinbase', { @@ -153,6 +154,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/details/{walletId}/{fromOnboarding}', views: { 'tab-home': { + controller: 'walletDetailsController', templateUrl: 'views/walletDetails.html' } }, @@ -165,6 +167,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/activity', views: { 'tab-home': { + controller: 'activityController', templateUrl: 'views/activity.html', } } @@ -173,6 +176,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/proposals', views: { 'tab-home': { + controller: 'proposalsController', templateUrl: 'views/proposals.html', } } @@ -193,6 +197,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/home/:fromOnboarding', views: { 'tab-home': { + controller: 'tabHomeController', templateUrl: 'views/tab-home.html', } } @@ -201,6 +206,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/receive', views: { 'tab-receive': { + controller: 'tabReceiveController', templateUrl: 'views/tab-receive.html', } } @@ -209,6 +215,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/send', views: { 'tab-send': { + controller: 'tabSendController', templateUrl: 'views/tab-send.html', } } @@ -217,6 +224,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/settings', views: { 'tab-settings': { + controller: 'tabSettingsController', templateUrl: 'views/tab-settings.html', } } @@ -232,6 +240,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/amount/:toAddress/:toName/:toEmail', views: { 'tab-send@tabs': { + controller: 'amountController', templateUrl: 'views/amount.html' } } @@ -240,6 +249,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/confirm/:toAddress/:toName/:toAmount/:toEmail/:description/:paypro', views: { 'tab-send@tabs': { + controller: 'confirmController', templateUrl: 'views/confirm.html' } } @@ -311,6 +321,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/language', views: { 'tab-settings@tabs': { + controller: 'preferencesLanguageController', templateUrl: 'views/preferencesLanguage.html' } } @@ -319,6 +330,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/unit', views: { 'tab-settings@tabs': { + controller: 'preferencesUnitController', templateUrl: 'views/preferencesUnit.html' } } @@ -327,6 +339,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/fee', views: { 'tab-settings@tabs': { + controller: 'preferencesFeeController', templateUrl: 'views/preferencesFee.html' } } @@ -335,6 +348,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/altCurrency', views: { 'tab-settings@tabs': { + controller: 'preferencesAltCurrencyController', templateUrl: 'views/preferencesAltCurrency.html' } } @@ -343,6 +357,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/about', views: { 'tab-settings@tabs': { + controller: 'preferencesAbout', templateUrl: 'views/preferencesAbout.html' } } @@ -351,6 +366,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/logs', views: { 'tab-settings@tabs': { + controller: 'preferencesLogs', templateUrl: 'views/preferencesLogs.html' } } @@ -359,6 +375,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/termsOfUse', views: { 'tab-settings@tabs': { + controller: 'termOfUseController', templateUrl: 'views/termsOfUse.html', } } @@ -367,6 +384,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/translators', views: { 'tab-settings@tabs': { + controller: 'translatorsController', templateUrl: 'views/translators.html' } } @@ -378,19 +396,11 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr * */ - .state('tabs.preferences', { + .state('tabs.preferences', { url: '/preferences/:walletId', - abstract: true, views: { 'tab-settings@tabs': { - template: '' - }, - } - }) - .state('tabs.preferences.main', { - url: '/main', - views: { - 'preferences': { + controller: 'preferencesController', templateUrl: 'views/preferences.html' } } @@ -398,7 +408,8 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr .state('tabs.preferences.preferencesAlias', { url: '/preferencesAlias', views: { - 'preferences': { + 'tab-settings@tabs': { + controller: 'preferencesAliasController', templateUrl: 'views/preferencesAlias.html' } } @@ -406,7 +417,8 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr .state('tabs.preferences.preferencesColor', { url: '/preferencesColor', views: { - 'preferences': { + 'tab-settings@tabs': { + controller: 'preferencesColorController', templateUrl: 'views/preferencesColor.html' } } @@ -414,7 +426,8 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr .state('tabs.preferences.preferencesEmail', { url: '/preferencesEmail', views: { - 'preferences': { + 'tab-settings@tabs': { + controller: 'preferencesEmailController', templateUrl: 'views/preferencesEmail.html' } } @@ -422,7 +435,8 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr .state('tabs.preferences.backup', { url: '/backup', views: { - 'preferences': { + 'tab-settings@tabs': { + controller: 'backupController', templateUrl: 'views/backup.html' } } @@ -430,7 +444,8 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr .state('tabs.preferences.preferencesAdvanced', { url: '/preferencesAdvanced', views: { - 'preferences': { + 'tab-settings@tabs': { + controller: 'preferencesAdvancedController', templateUrl: 'views/preferencesAdvanced.html' } } @@ -438,7 +453,8 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr .state('tabs.preferences.information', { url: '/information', views: { - 'preferences': { + 'tab-settings@tabs': { + controller: 'preferencesInformation', templateUrl: 'views/preferencesInformation.html' } } @@ -446,7 +462,8 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr .state('tabs.preferences.export', { url: '/export', views: { - 'preferences': { + 'tab-settings@tabs': { + controller: 'exportController', templateUrl: 'views/export.html' } } @@ -454,7 +471,8 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr .state('tabs.preferences.preferencesBwsUrl', { url: '/preferencesBwsUrl', views: { - 'preferences': { + 'tab-settings@tabs': { + controller: 'preferencesBwsUrlController', templateUrl: 'views/preferencesBwsUrl.html' } } @@ -462,7 +480,8 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr .state('tabs.preferences.preferencesHistory', { url: '/preferencesHistory', views: { - 'preferences': { + 'tab-settings@tabs': { + controller: 'preferencesHistory', templateUrl: 'views/preferencesHistory.html' } } @@ -470,7 +489,8 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr .state('tabs.preferences.deleteWords', { url: '/deleteWords', views: { - 'preferences': { + 'tab-settings@tabs': { + controller: 'preferencesDeleteWordsController', templateUrl: 'views/preferencesDeleteWords.html' } } @@ -478,7 +498,8 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr .state('tabs.preferences.delete', { url: '/delete', views: { - 'preferences': { + 'tab-settings@tabs': { + controller: 'preferencesDeleteWalletController', templateUrl: 'views/preferencesDeleteWallet.html' } } @@ -486,7 +507,8 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr .state('tabs.preferences.paperWallet', { url: '/paperWallet', views: { - 'preferences': { + 'tab-settings@tabs': { + controller: 'paperWalletController', templateUrl: 'views/paperWallet.html' } } @@ -665,6 +687,8 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/glidera', views: { 'tab-home@tabs': { + controller: 'glideraController', + controllerAs: 'glidera', templateUrl: 'views/glidera.html' } } @@ -673,6 +697,8 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/buy', views: { 'tab-home@tabs': { + controller: 'buyGlideraController', + controllerAs: 'buy', templateUrl: 'views/buyGlidera.html' } } @@ -681,6 +707,8 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/sell', views: { 'tab-home@tabs': { + controller: 'sellGlideraController', + controllerAs: 'sell', templateUrl: 'views/sellGlidera.html' } } @@ -689,6 +717,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/preferences', views: { 'tab-home@tabs': { + controller: 'preferencesGlideraController', templateUrl: 'views/preferencesGlidera.html' } } @@ -738,6 +767,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/amazon', views: { 'tab-home@tabs': { + controller: 'amazonController', templateUrl: 'views/amazon.html' } } @@ -746,6 +776,8 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr url: '/buy', views: { 'tab-home@tabs': { + controller: 'buyAmazonController', + controllerAs: 'buy', templateUrl: 'views/buyAmazon.html' } }