From c294097c1d0d45e0bfd4d17fe07c907e54d3219c Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Mon, 13 Jun 2016 11:44:58 -0300 Subject: [PATCH] replace ongoingprocess --- public/views/walletHome.html | 61 +--- src/js/controllers/disclaimer.js | 10 +- src/js/controllers/index.js | 531 ++++++++++++++---------------- src/js/controllers/walletHome.js | 56 +--- src/js/services/profileService.js | 2 +- 5 files changed, 290 insertions(+), 370 deletions(-) diff --git a/public/views/walletHome.html b/public/views/walletHome.html index 46490b007..f57f9e87a 100644 --- a/public/views/walletHome.html +++ b/public/views/walletHome.html @@ -16,35 +16,6 @@ -
-
- - Reconnecting to Wallet Service... -
-
- -
-
- - Updating Wallet... - Scanning Wallet funds... - Recreating Wallet... - Generating .csv file... -
-
- -
-
- - {{home.onGoingProcess}}... -
-
-
@@ -114,7 +79,7 @@
-
+
@@ -335,7 +300,7 @@
Share this wallet address to receive payments. To protect your privacy, new addresses are generated automatically once you use them. - Generate new address + Generate new address
Share this wallet address to receive payments. @@ -357,10 +322,10 @@

Send Max Send Max @@ -380,7 +345,7 @@

-
+
@@ -399,7 +364,7 @@
- +
{{index.addressbook[_address] || _address}}
@@ -441,7 +406,7 @@ Amount @@ -450,7 +415,7 @@ @@ -464,19 +429,19 @@ too long!
-
-
-
+
+
- diff --git a/src/js/controllers/disclaimer.js b/src/js/controllers/disclaimer.js index fb8b840d1..d125f8d06 100644 --- a/src/js/controllers/disclaimer.js +++ b/src/js/controllers/disclaimer.js @@ -1,10 +1,12 @@ 'use strict'; angular.module('copayApp.controllers').controller('disclaimerController', - function($scope, $timeout, $log, $ionicSideMenuDelegate, profileService, applicationService, gettextCatalog, uxLanguage, go, storageService) { + function($scope, $timeout, $log, $ionicSideMenuDelegate, profileService, applicationService, gettextCatalog, uxLanguage, go, storageService, gettext, platformInfo, ongoingProcess) { var self = this; self.tries = 0; - self.creatingProfile = true; + var isCordova = platformInfo.isCordova; + + ongoingProcess.set('creatingWallet', true); var create = function(opts) { opts = opts || {}; @@ -30,7 +32,7 @@ angular.module('copayApp.controllers').controller('disclaimerController', }; $scope.error = ""; - self.creatingProfile = false; + ongoingProcess.set('creatingWallet', false); }); }; @@ -43,7 +45,7 @@ angular.module('copayApp.controllers').controller('disclaimerController', create(opts); } else { $log.info('There is already a profile'); - self.creatingProfile = false; + ongoingProcess.set('creatingWallet', false); profileService.bindProfile(profile, function(err) { if (!err || !err.message || !err.message.match('NONAGREEDDISCLAIMER')) { $log.debug('Disclaimer already accepted at #disclaimer. Redirect to Wallet Home.'); diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index 4a735ec34..7604ab3df 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('indexController', function($rootScope, $scope, $log, $filter, $timeout, $ionicScrollDelegate, $ionicPopup, latestReleaseService, feeService, bwcService, pushNotificationsService, lodash, go, profileService, configService, rateService, storageService, addressService, gettext, gettextCatalog, amMoment, addonManager, bwsError, txFormatService, uxLanguage, glideraService, coinbaseService, platformInfo, addressbookService, openURLService) { +angular.module('copayApp.controllers').controller('indexController', function($rootScope, $scope, $log, $filter, $timeout, $ionicScrollDelegate, $ionicPopup, latestReleaseService, feeService, bwcService, pushNotificationsService, lodash, go, profileService, configService, rateService, storageService, addressService, gettext, gettextCatalog, amMoment, addonManager, bwsError, txFormatService, uxLanguage, glideraService, coinbaseService, platformInfo, addressbookService, openURLService, ongoingProcess) { var self = this; var SOFT_CONFIRMATION_LIMIT = 12; var errors = bwcService.getErrors(); @@ -14,7 +14,6 @@ angular.module('copayApp.controllers').controller('indexController', function($r ret.isChromeApp = isChromeApp; ret.isSafari = platformInfo.isSafari; ret.isWindowsPhoneApp = platformInfo.isWP; - ret.onGoingProcess = {}; ret.historyShowLimit = 10; ret.historyShowMoreLimit = 10; ret.isSearching = false; @@ -81,24 +80,6 @@ angular.module('copayApp.controllers').controller('indexController', function($r storageService.setHideBalanceFlag(self.walletId, self.shouldHideBalance, function() {}); } - self.setOngoingProcess = function(processName, isOn) { - $log.debug('onGoingProcess', processName, isOn); - self[processName] = isOn; - self.onGoingProcess[processName] = isOn; - - var name; - self.anyOnGoingProcess = lodash.any(self.onGoingProcess, function(isOn, processName) { - if (isOn) - name = name || processName; - return isOn; - }); - // The first one - self.onGoingProcessName = name; - $timeout(function() { - $rootScope.$apply(); - }); - }; - self.cleanInstance = function() { $log.debug('Cleaning Index Instance'); lodash.each(self, function(v, k) { @@ -125,16 +106,17 @@ angular.module('copayApp.controllers').controller('indexController', function($r var fc = profileService.focusedClient; if (!fc) return; + ongoingProcess.clear(); self.cleanInstance(); self.loadingWallet = true; self.setSpendUnconfirmed(); $timeout(function() { $rootScope.$apply(); + self.hasProfile = true; self.isSingleAddress = false; self.noFocusedWallet = false; - self.onGoingProcess = {}; // Credentials Shortcuts self.m = fc.credentials.m; @@ -303,7 +285,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r } else { self.isSingleAddress = !!ret.wallet.singleAddress; if (!opts.quiet) - self.setOngoingProcess('scanning', ret.wallet.scanStatus == 'running'); + ongoingProcess.set('scanning', ret.wallet.scanStatus == 'running'); } return cb(err, ret); }); @@ -320,7 +302,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r $timeout(function() { if (!opts.quiet) - self.setOngoingProcess('updatingStatus', true); + ongoingProcess.set('updatingStatus', true); $log.debug('Updating Status:', fc.credentials.walletName, tries); get(function(err, walletStatus) { @@ -340,8 +322,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r if (walletId != profileService.focusedClient.credentials.walletId) return; - if (!opts.quiet) - self.setOngoingProcess('updatingStatus', false); + ongoingProcess.set('updatingStatus', false); if (err) { @@ -389,10 +370,10 @@ angular.module('copayApp.controllers').controller('indexController', function($r self.updateBalance = function() { var fc = profileService.focusedClient; $timeout(function() { - self.setOngoingProcess('updatingBalance', true); + ongoingProcess.set('updatingBalance', true); $log.debug('Updating Balance'); fc.getBalance(function(err, balance) { - self.setOngoingProcess('updatingBalance', false); + ongoingProcess.set('updatingBalance', false); if (err) { self.handleError(err); return; @@ -406,10 +387,10 @@ angular.module('copayApp.controllers').controller('indexController', function($r self.updatePendingTxps = function() { var fc = profileService.focusedClient; $timeout(function() { - self.setOngoingProcess('updatingPendingTxps', true); + ongoingProcess.set('updatingPendingTxps', true); $log.debug('Updating PendingTxps'); fc.getTxProposals({}, function(err, txps) { - self.setOngoingProcess('updatingPendingTxps', false); + ongoingProcess.set('updatingPendingTxps', false); if (err) { self.handleError(err); } else { @@ -445,10 +426,10 @@ angular.module('copayApp.controllers').controller('indexController', function($r var fc = profileService.focusedClient; $timeout(function() { $rootScope.$apply(); - self.setOngoingProcess('openingWallet', true); + ongoingProcess.set('openingWallet', true); self.updateError = false; fc.openWallet(function(err, walletStatus) { - self.setOngoingProcess('openingWallet', false); + ongoingProcess.set('openingWallet', false); if (err) { self.updateError = true; self.handleError(err); @@ -997,10 +978,10 @@ angular.module('copayApp.controllers').controller('indexController', function($r self.recreate = function(cb) { var fc = profileService.focusedClient; - self.setOngoingProcess('recreating', true); + ongoingProcess.set('recreating', true); fc.recreateWallet(function(err) { self.notAuthorized = false; - self.setOngoingProcess('recreating', false); + ongoingProcess.set('recreating', false); if (err) { self.handleError(err); @@ -1034,13 +1015,13 @@ angular.module('copayApp.controllers').controller('indexController', function($r if (!c.isComplete()) return; if (self.walletId == walletId) - self.setOngoingProcess('scanning', true); + ongoingProcess.set('scanning', true); c.startScan({ includeCopayerBranches: true, }, function(err) { if (err && self.walletId == walletId) { - self.setOngoingProcess('scanning', false); + ongoingProcess.set('scanning', false); self.handleError(err); $rootScope.$apply(); } @@ -1428,16 +1409,11 @@ angular.module('copayApp.controllers').controller('indexController', function($r }); $rootScope.$on('Local/ValidatingWallet', function() { - if (isCordova) { - window.plugins.spinnerDialog.hide(); - window.plugins.spinnerDialog.show(null, gettext('Validating wallet integrity...'), true); - } + ongoingProcess.set('validatingWallet', true); }); $rootScope.$on('Local/ProfileBound', function() { - if (isCordova) { - window.plugins.spinnerDialog.hide(); - } + ongoingProcess.set('validatingWallet', false); }); $rootScope.$on('Local/ClearHistory', function(event) { @@ -1519,93 +1495,49 @@ angular.module('copayApp.controllers').controller('indexController', function($r } }; -$rootScope.$on('Local/Resume', function(event) { - $log.debug('### Resume event'); - profileService.isDisclaimerAccepted(function(v) { - if (!v) { - $log.debug('Disclaimer not accepted, resume to home'); - go.path('disclaimer'); - } + $rootScope.$on('Local/Resume', function(event) { + $log.debug('### Resume event'); + profileService.isDisclaimerAccepted(function(v) { + if (!v) { + $log.debug('Disclaimer not accepted, resume to home'); + go.path('disclaimer'); + } + }); + self.debouncedUpdate(); }); - self.debouncedUpdate(); -}); -$rootScope.$on('Local/BackupDone', function(event, walletId) { - self.needsBackup = false; - $log.debug('Backup done'); - storageService.setBackupFlag(walletId || self.walletId, function(err) { - $log.debug('Backup stored'); - }); -}); - -$rootScope.$on('Local/DeviceError', function(event, err) { - self.showErrorPopup(err, function() { - if (isCordova && navigator && navigator.app) { - navigator.app.exitApp(); - } - }); -}); - -$rootScope.$on('Local/WalletImported', function(event, walletId) { - self.needsBackup = false; - storageService.setBackupFlag(walletId, function() { - $log.debug('Backup done stored'); - addressService.expireAddress(walletId, function(err) { - $timeout(function() { - self.txHistory = self.completeHistory = self.txHistorySearchResults = []; - storageService.removeTxHistory(walletId, function() { - self.startScan(walletId); - }); - }, 500); + $rootScope.$on('Local/BackupDone', function(event, walletId) { + self.needsBackup = false; + $log.debug('Backup done'); + storageService.setBackupFlag(walletId || self.walletId, function(err) { + $log.debug('Backup stored'); }); }); -}); -$rootScope.$on('NewIncomingTx', function() { - self.newTx = true; - self.updateAll({ - walletStatus: null, - untilItChanges: true, - triggerTxUpdate: true, + $rootScope.$on('Local/DeviceError', function(event, err) { + self.showErrorPopup(err, function() { + if (isCordova && navigator && navigator.app) { + navigator.app.exitApp(); + } + }); }); -}); - -$rootScope.$on('NewBlock', function() { - if (self.glideraEnabled) { - $timeout(function() { - self.updateGlidera(); + $rootScope.$on('Local/WalletImported', function(event, walletId) { + self.needsBackup = false; + storageService.setBackupFlag(walletId, function() { + $log.debug('Backup done stored'); + addressService.expireAddress(walletId, function(err) { + $timeout(function() { + self.txHistory = self.completeHistory = self.txHistorySearchResults = []; + storageService.removeTxHistory(walletId, function() { + self.startScan(walletId); + }); + }, 500); + }); }); - } - if (self.coinbaseEnabled) { - $timeout(function() { - self.updateCoinbase(); - }); - } - if (self.pendingAmount) { - self.updateAll({ - walletStatus: null, - untilItChanges: null, - triggerTxUpdate: true, - }); - } else if (self.hasUnsafeConfirmed) { - $log.debug('Wallet has transactions with few confirmations. Updating.') - if (self.network == 'testnet') { - self.throttledUpdateHistory(); - } else { - self.debounceUpdateHistory(); - } - } -}); + }); -$rootScope.$on('BalanceUpdated', function(e, n) { - self.setBalance(n.data); -}); - - -//untilItChange TRUE -lodash.each(['NewOutgoingTx', 'NewOutgoingTxByThirdParty'], function(eventName) { - $rootScope.$on(eventName, function(event) { + $rootScope.$on('NewIncomingTx', function() { self.newTx = true; self.updateAll({ walletStatus: null, @@ -1613,200 +1545,245 @@ lodash.each(['NewOutgoingTx', 'NewOutgoingTxByThirdParty'], function(eventName) triggerTxUpdate: true, }); }); -}); -//untilItChange FALSE -lodash.each(['NewTxProposal', 'TxProposalFinallyRejected', 'TxProposalRemoved', 'NewOutgoingTxByThirdParty', - 'Local/GlideraTx' -], function(eventName) { - $rootScope.$on(eventName, function(event) { + + $rootScope.$on('NewBlock', function() { + if (self.glideraEnabled) { + $timeout(function() { + self.updateGlidera(); + }); + } + if (self.coinbaseEnabled) { + $timeout(function() { + self.updateCoinbase(); + }); + } + if (self.pendingAmount) { + self.updateAll({ + walletStatus: null, + untilItChanges: null, + triggerTxUpdate: true, + }); + } else if (self.hasUnsafeConfirmed) { + $log.debug('Wallet has transactions with few confirmations. Updating.') + if (self.network == 'testnet') { + self.throttledUpdateHistory(); + } else { + self.debounceUpdateHistory(); + } + } + }); + + $rootScope.$on('BalanceUpdated', function(e, n) { + self.setBalance(n.data); + }); + + + //untilItChange TRUE + lodash.each(['NewOutgoingTx', 'NewOutgoingTxByThirdParty'], function(eventName) { + $rootScope.$on(eventName, function(event) { + self.newTx = true; + self.updateAll({ + walletStatus: null, + untilItChanges: true, + triggerTxUpdate: true, + }); + }); + }); + + //untilItChange FALSE + lodash.each(['NewTxProposal', 'TxProposalFinallyRejected', 'TxProposalRemoved', 'NewOutgoingTxByThirdParty', + 'Local/GlideraTx' + ], function(eventName) { + $rootScope.$on(eventName, function(event) { + self.updateAll({ + walletStatus: null, + untilItChanges: null, + triggerTxUpdate: true, + }); + }); + }); + + + //untilItChange Maybe + $rootScope.$on('Local/TxProposalAction', function(event, untilItChanges) { + self.newTx = untilItChanges; self.updateAll({ walletStatus: null, - untilItChanges: null, + untilItChanges: untilItChanges, triggerTxUpdate: true, }); }); -}); - -//untilItChange Maybe -$rootScope.$on('Local/TxProposalAction', function(event, untilItChanges) { - self.newTx = untilItChanges; - self.updateAll({ - walletStatus: null, - untilItChanges: untilItChanges, - triggerTxUpdate: true, - }); -}); - -$rootScope.$on('ScanFinished', function() { - $log.debug('Scan Finished. Updating history'); - storageService.removeTxHistory(self.walletId, function() { - self.updateAll({ - walletStatus: null, - triggerTxUpdate: true, + $rootScope.$on('ScanFinished', function() { + $log.debug('Scan Finished. Updating history'); + storageService.removeTxHistory(self.walletId, function() { + self.updateAll({ + walletStatus: null, + triggerTxUpdate: true, + }); }); }); -}); -lodash.each(['TxProposalRejectedBy', 'TxProposalAcceptedBy'], function(eventName) { - $rootScope.$on(eventName, function() { - var f = function() { - if (self.updatingStatus) { - return $timeout(f, 200); + lodash.each(['TxProposalRejectedBy', 'TxProposalAcceptedBy'], function(eventName) { + $rootScope.$on(eventName, function() { + var f = function() { + if (self.updatingStatus) { + return $timeout(f, 200); + }; + self.updatePendingTxps(); }; - self.updatePendingTxps(); - }; - f(); + f(); + }); }); -}); -$rootScope.$on('Local/NoWallets', function(event) { - $timeout(function() { - self.hasProfile = true; - self.noFocusedWallet = true; - self.isComplete = null; - self.walletName = null; + $rootScope.$on('Local/NoWallets', function(event) { + $timeout(function() { + self.hasProfile = true; + self.noFocusedWallet = true; + self.isComplete = null; + self.walletName = null; + uxLanguage.update(); + + profileService.isDisclaimerAccepted(function(v) { + if (v) { + go.path('import'); + } + }); + }); + }); + + $rootScope.$on('Local/NewFocusedWallet', function() { uxLanguage.update(); + self.setFocusedWallet(); + self.updateHistory(); + storageService.getCleanAndScanAddresses(function(err, walletId) { - profileService.isDisclaimerAccepted(function(v) { - if (v) { - go.path('import'); + if (walletId && profileService.walletClients[walletId]) { + $log.debug('Clear last address cache and Scan ', walletId); + addressService.expireAddress(walletId, function(err) { + self.startScan(walletId); + }); + storageService.removeCleanAndScanAddresses(function() { + $rootScope.$emit('Local/NewFocusedWalletReady'); + }); + } else { + $rootScope.$emit('Local/NewFocusedWalletReady'); } }); }); -}); -$rootScope.$on('Local/NewFocusedWallet', function() { - uxLanguage.update(); - self.setFocusedWallet(); - self.updateHistory(); - storageService.getCleanAndScanAddresses(function(err, walletId) { + $rootScope.$on('Local/SetTab', function(event, tab, reset) { + self.setTab(tab, reset); + }); - if (walletId && profileService.walletClients[walletId]) { - $log.debug('Clear last address cache and Scan ', walletId); - addressService.expireAddress(walletId, function(err) { - self.startScan(walletId); + $rootScope.$on('Local/NeedsConfirmation', function(event, txp, cb) { + + function openConfirmationPopup(txp, cb) { + + $scope.tx = txFormatService.processTx(txp); + + self.confirmationPopup = $ionicPopup.show({ + templateUrl: 'views/includes/confirm-tx.html', + scope: $scope, }); - storageService.removeCleanAndScanAddresses(function() { - $rootScope.$emit('Local/NewFocusedWalletReady'); - }); - } else { - $rootScope.$emit('Local/NewFocusedWalletReady'); + + $scope.processFee = function(amount, fee) { + var walletSettings = configService.getSync().wallet.settings; + var feeAlternativeIsoCode = walletSettings.alternativeIsoCode; + + $scope.feeLevel = feeService.feeOpts[feeService.getCurrentFeeLevel()]; + $scope.feeAlternativeStr = parseFloat((rateService.toFiat(fee, feeAlternativeIsoCode)).toFixed(2), 10) + ' ' + feeAlternativeIsoCode; + $scope.feeRateStr = (fee / (amount + fee) * 100).toFixed(2) + '%'; + }; + + $scope.cancel = function() { + return cb(); + }; + + $scope.accept = function() { + return cb(true); + }; } + + openConfirmationPopup(txp, function(accept) { + self.confirmationPopup.close(); + return cb(accept); + }); }); -}); -$rootScope.$on('Local/SetTab', function(event, tab, reset) { - self.setTab(tab, reset); -}); + $rootScope.$on('Local/NeedsPassword', function(event, isSetup, cb) { -$rootScope.$on('Local/NeedsConfirmation', function(event, txp, cb) { + function openPasswordPopup(isSetup, cb) { + $scope.data = {}; + $scope.data.password = null; + $scope.isSetup = isSetup; + $scope.isVerification = false; + $scope.loading = false; + var pass = null; - function openConfirmationPopup(txp, cb) { + self.passwordPopup = $ionicPopup.show({ + templateUrl: 'views/includes/password.html', + scope: $scope, + }); - $scope.tx = txFormatService.processTx(txp); + $scope.cancel = function() { + return cb('No spending password given'); + }; - self.confirmationPopup = $ionicPopup.show({ - templateUrl: 'views/includes/confirm-tx.html', - scope: $scope, + $scope.set = function() { + $scope.loading = true; + $scope.error = null; + + $timeout(function() { + if (isSetup && !$scope.isVerification) { + $scope.loading = false; + $scope.isVerification = true; + pass = $scope.data.password; + $scope.data.password = null; + return; + } + if (isSetup && pass != $scope.data.password) { + $scope.loading = false; + $scope.error = gettext('Spending Passwords do not match'); + $scope.isVerification = false; + $scope.data.password = null; + pass = null; + return; + } + return cb(null, $scope.data.password); + }, 100); + }; + }; + + openPasswordPopup(isSetup, function(err, pass) { + self.passwordPopup.close(); + return cb(err, pass); }); - $scope.processFee = function(amount, fee) { - var walletSettings = configService.getSync().wallet.settings; - var feeAlternativeIsoCode = walletSettings.alternativeIsoCode; - - $scope.feeLevel = feeService.feeOpts[feeService.getCurrentFeeLevel()]; - $scope.feeAlternativeStr = parseFloat((rateService.toFiat(fee, feeAlternativeIsoCode)).toFixed(2), 10) + ' ' + feeAlternativeIsoCode; - $scope.feeRateStr = (fee / (amount + fee) * 100).toFixed(2) + '%'; - }; - - $scope.cancel = function() { - return cb(); - }; - - $scope.accept = function() { - return cb(true); - }; - } - - openConfirmationPopup(txp, function(accept) { - self.confirmationPopup.close(); - return cb(accept); }); -}); -$rootScope.$on('Local/NeedsPassword', function(event, isSetup, cb) { + $rootScope.$on('Local/EmailUpdated', function(event, email) { + self.preferences.email = email; + }); - function openPasswordPopup(isSetup, cb) { - $scope.data = {}; - $scope.data.password = null; - $scope.isSetup = isSetup; - $scope.isVerification = false; - $scope.loading = false; - var pass = null; - - self.passwordPopup = $ionicPopup.show({ - templateUrl: 'views/includes/password.html', - scope: $scope, + lodash.each(['NewCopayer', 'CopayerUpdated'], function(eventName) { + $rootScope.$on(eventName, function() { + // Re try to open wallet (will triggers) + self.setFocusedWallet(); }); - - $scope.cancel = function() { - return cb('No spending password given'); - }; - - $scope.set = function() { - $scope.loading = true; - $scope.error = null; - - $timeout(function() { - if (isSetup && !$scope.isVerification) { - $scope.loading = false; - $scope.isVerification = true; - pass = $scope.data.password; - $scope.data.password = null; - return; - } - if (isSetup && pass != $scope.data.password) { - $scope.loading = false; - $scope.error = gettext('Spending Passwords do not match'); - $scope.isVerification = false; - $scope.data.password = null; - pass = null; - return; - } - return cb(null, $scope.data.password); - }, 100); - }; - }; - - openPasswordPopup(isSetup, function(err, pass) { - self.passwordPopup.close(); - return cb(err, pass); }); -}); - -$rootScope.$on('Local/EmailUpdated', function(event, email) { - self.preferences.email = email; -}); - -lodash.each(['NewCopayer', 'CopayerUpdated'], function(eventName) { - $rootScope.$on(eventName, function() { - // Re try to open wallet (will triggers) - self.setFocusedWallet(); + $rootScope.$on('Local/NewEncryptionSetting', function() { + var fc = profileService.focusedClient; + self.isPrivKeyEncrypted = fc.isPrivKeyEncrypted(); + $timeout(function() { + $rootScope.$apply(); + }); }); -}); - -$rootScope.$on('Local/NewEncryptionSetting', function() { - var fc = profileService.focusedClient; - self.isPrivKeyEncrypted = fc.isPrivKeyEncrypted(); - $timeout(function() { - $rootScope.$apply(); - }); -}); -/* Start setup */ -lodash.assign(self, vanillaScope); openURLService.init(); + /* Start setup */ + lodash.assign(self, vanillaScope); + openURLService.init(); }); diff --git a/src/js/controllers/walletHome.js b/src/js/controllers/walletHome.js index d3bb4f61d..91a4640b0 100644 --- a/src/js/controllers/walletHome.js +++ b/src/js/controllers/walletHome.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('copayApp.controllers').controller('walletHomeController', function($scope, $rootScope, $interval, $timeout, $filter, $modal, $log, $ionicModal, notification, txStatus, profileService, lodash, configService, rateService, storageService, bitcore, gettext, gettextCatalog, platformInfo, addressService, ledger, bwsError, confirmDialog, txFormatService, addressbookService, go, feeService, walletService, fingerprintService, nodeWebkit) { +angular.module('copayApp.controllers').controller('walletHomeController', function($scope, $rootScope, $interval, $timeout, $filter, $modal, $log, $ionicModal, notification, txStatus, profileService, lodash, configService, rateService, storageService, bitcore, gettext, gettextCatalog, platformInfo, addressService, ledger, bwsError, confirmDialog, txFormatService, addressbookService, go, feeService, walletService, fingerprintService, nodeWebkit, ongoingProcess) { var isCordova = platformInfo.isCordova; var isWP = platformInfo.isWP; @@ -93,10 +93,6 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi }; }); - var disableOngoingProcessListener = $rootScope.$on('Addon/OngoingProcess', function(e, name) { - self.setOngoingProcess(name); - }); - $scope.$on('$destroy', function() { disableAddrListener(); disableScannerListener(); @@ -104,7 +100,6 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi disableTabListener(); disableFocusListener(); disableResumeListener(); - disableOngoingProcessListener(); $rootScope.shouldHideMenuBar = false; }); @@ -398,26 +393,6 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi }, 1); }; - // subscription - this.setOngoingProcess = function(name) { - var self = this; - self.blockUx = !!name; - - if (isCordova) { - if (name) { - window.plugins.spinnerDialog.hide(); - window.plugins.spinnerDialog.show(null, name + '...', true); - } else { - window.plugins.spinnerDialog.hide(); - } - } else { - self.onGoingProcess = name; - $timeout(function() { - $rootScope.$apply(); - }); - }; - }; - this.submitForm = function() { if (!$scope._amount || !$scope._address) return; var client = profileService.focusedClient; @@ -473,9 +448,9 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi txp.excludeUnconfirmedUtxos = configWallet.spendUnconfirmed ? false : true; txp.feeLevel = walletSettings.feeLevel || 'normal'; - self.setOngoingProcess(gettextCatalog.getString('Creating transaction')); + ongoingProcess.set('creatingTx', true); walletService.createTx(client, txp, function(err, createdTxp) { - self.setOngoingProcess(); + ongoingProcess.set('creatingTx', false); if (err) { return self.setSendError(err); } @@ -511,16 +486,16 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi return self.setSendError(err); } - self.setOngoingProcess(gettextCatalog.getString('Sending transaction')); + ongoingProcess.set('sendingTx', true); walletService.publishTx(client, txp, function(err, publishedTxp) { if (err) { - self.setOngoingProcess(); + ongoingProcess.set('sendingTx', false); return self.setSendError(err); } - self.setOngoingProcess(gettextCatalog.getString('Signing transaction')); + ongoingProcess.set('signingTx', true); walletService.signTx(client, publishedTxp, function(err, signedTxp) { - self.setOngoingProcess(); + ongoingProcess.set('signingTx', false); walletService.lock(client); if (err) { $scope.$emit('Local/TxProposalAction'); @@ -531,9 +506,9 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi } if (signedTxp.status == 'accepted') { - self.setOngoingProcess(gettextCatalog.getString('Broadcasting transaction')); + ongoingProcess.set('broadcastingTx', true); walletService.broadcastTx(client, signedTxp, function(err, broadcastedTxp) { - self.setOngoingProcess(); + ongoingProcess.set('broadcastingTx', false); if (err) { return self.setSendError(err); } @@ -652,14 +627,14 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi var satToUnit = 1 / this.unitToSatoshi; var self = this; /// Get information of payment if using Payment Protocol - self.setOngoingProcess(gettextCatalog.getString('Fetching Payment Information')); + ongoingProcess.set('fetchingPayPro', true); $log.debug('Fetch PayPro Request...', uri); $timeout(function() { fc.fetchPayPro({ payProUrl: uri, }, function(err, paypro) { - self.setOngoingProcess(); + ongoingProcess.set('fetchingPayPro', false); if (err) { $log.warn('Could not fetch payment request:', err); @@ -836,11 +811,11 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi var self = this; var fc = profileService.focusedClient; this.error = null; - this.setOngoingProcess(gettextCatalog.getString('Calculating fee')); + ongoingProcess.set('calculatingFee', true); feeService.getCurrentFeeValue(function(err, feePerKb) { + ongoingProcess.set('calculatingFee', false); if (err || !lodash.isNumber(feePerKb)) { - self.setOngoingProcess(); self.error = gettext('Could not get fee value'); return; } @@ -850,10 +825,11 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi opts.returnInputs = true; var config = configService.getSync(); opts.excludeUnconfirmedUtxos = !config.wallet.spendUnconfirmed; - self.setOngoingProcess(gettextCatalog.getString('Retrieving inputs information')); + ongoingProcess.set('retrivingInputs', true); fc.getSendMaxInfo(opts, function(err, resp) { - self.setOngoingProcess(); + ongoingProcess.set('retrivingInputs', false); + if (err) { self.error = err; $scope.$apply(); diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js index 39d5d33f0..6daf48900 100644 --- a/src/js/services/profileService.js +++ b/src/js/services/profileService.js @@ -329,7 +329,7 @@ angular.module('copayApp.services') return cb(null, walletClient, secret); }); }); - }, 5); + }, 50); }; // Creates the default Copay profile and its wallet