diff --git a/src/js/controllers/addresses.js b/src/js/controllers/addresses.js index 9b31e431f..90cf0bb5e 100644 --- a/src/js/controllers/addresses.js +++ b/src/js/controllers/addresses.js @@ -104,14 +104,14 @@ angular.module('copayApp.controllers').controller('addressesController', functio $timeout(function() { $scope.showInfo = !$scope.showInfo; $ionicScrollDelegate.resize(); - }); + }, 10); }; $scope.readMore = function() { $timeout(function() { $scope.showMore = !$scope.showMore; $ionicScrollDelegate.resize(); - }); + }, 10); }; $scope.showMenu = function(allAddresses, $event) { diff --git a/src/js/controllers/advancedSettings.js b/src/js/controllers/advancedSettings.js index 22256de57..4abb4c261 100644 --- a/src/js/controllers/advancedSettings.js +++ b/src/js/controllers/advancedSettings.js @@ -30,22 +30,24 @@ angular.module('copayApp.controllers').controller('advancedSettingsController', }; $scope.global = $rootScope; - if(!$scope.global.developmentUtilitiesEnabled){ + if (!$scope.global.developmentUtilitiesEnabled) { $scope.global.developmentUtilitiesEnabled = { value: false }; } - $scope.toggledDevelopmentUtils = function (){ - if($scope.global.developmentUtilitiesEnabled.value){ + $scope.toggledDevelopmentUtils = function() { + if ($scope.global.developmentUtilitiesEnabled.value) { $log.debug('User enabled development utilities.'); - $ionicScrollDelegate.resize(); + $timeout(function() { + $ionicScrollDelegate.resize(); + }, 10); } else { $log.debug('User disabled development utilities.'); } } - $scope.activateFeedbackCard = function () { + $scope.activateFeedbackCard = function() { $scope.feedbackCardActivating = true; storageService.getFeedbackInfo(function(error, info) { var feedbackInfo = JSON.parse(info); @@ -56,10 +58,10 @@ angular.module('copayApp.controllers').controller('advancedSettingsController', storageService.setFeedbackInfo(JSON.stringify(feedbackInfo), function() { $log.debug('Activated feedback card with: ' + JSON.stringify(feedbackInfo)); $ionicHistory.clearCache(); - $timeout(function(){ + $timeout(function() { $scope.feedbackCardActivating = false; $scope.feedbackCardActivated = true; - $timeout(function(){ + $timeout(function() { $scope.feedbackCardActivated = false; }, 10000); }, 500); @@ -67,7 +69,7 @@ angular.module('copayApp.controllers').controller('advancedSettingsController', }); } - $scope.resetActivateFeedbackCard = function(){ + $scope.resetActivateFeedbackCard = function() { $scope.feedbackCardActivated = false; } diff --git a/src/js/controllers/confirm.js b/src/js/controllers/confirm.js index ee0f148ae..36573dbfb 100644 --- a/src/js/controllers/confirm.js +++ b/src/js/controllers/confirm.js @@ -483,20 +483,12 @@ angular.module('copayApp.controllers').controller('confirmController', function( } }); return; - } - - if (!wallet.canSign() && !wallet.isPrivKeyExternal()) { - $log.info('No signing proposal: No private key'); - - return walletService.onlyPublish(wallet, txp, function(err, txp) { - if (err) return setSendError(err); - }); - } + } ongoingProcess.set('creatingTx', true, onSendStatusChange); createTx(wallet, false, function(err, txp) { ongoingProcess.set('creatingTx', false, onSendStatusChange); - if (err) return; + if (err) return; var config = configService.getSync(); var spendingPassEnabled = walletService.isEncrypted(wallet); @@ -539,7 +531,12 @@ angular.module('copayApp.controllers').controller('confirmController', function( function statusChangeHandler(processName, showName, isOn) { $log.debug('statusChangeHandler: ', processName, showName, isOn); - if ((processName === 'broadcastingTx' || ((processName === 'signingTx') && $scope.wallet.m > 1)) && !isOn) { + if ( + ( + processName === 'broadcastingTx' || + ((processName === 'signingTx') && $scope.wallet.m > 1) || + (processName == 'sendingTx' && !$scope.wallet.canSign() && !$scope.wallet.isPrivKeyExternal()) + ) && !isOn) { $scope.sendStatus = 'success'; $scope.$digest(); } else if (showName) { @@ -760,6 +757,15 @@ angular.module('copayApp.controllers').controller('confirmController', function( }; function publishAndSign(wallet, txp, onSendStatusChange) { + + if (!wallet.canSign() && !wallet.isPrivKeyExternal()) { + $log.info('No signing proposal: No private key'); + + return walletService.onlyPublish(wallet, txp, function(err) { + if (err) setSendError(err); + }, onSendStatusChange); + } + walletService.publishAndSign(wallet, txp, function(err, txp) { if (err) return setSendError(err); diff --git a/src/js/controllers/create.js b/src/js/controllers/create.js index 73ef2f64d..ed567bf0d 100644 --- a/src/js/controllers/create.js +++ b/src/js/controllers/create.js @@ -1,7 +1,7 @@ 'use strict'; angular.module('copayApp.controllers').controller('createController', - function($scope, $rootScope, $timeout, $log, lodash, $state, $ionicScrollDelegate, $ionicHistory, profileService, configService, gettextCatalog, ledger, trezor, platformInfo, derivationPathHelper, ongoingProcess, walletService, storageService, popupService) { + function($scope, $rootScope, $timeout, $log, lodash, $state, $ionicScrollDelegate, $ionicHistory, profileService, configService, gettextCatalog, ledger, trezor, platformInfo, derivationPathHelper, ongoingProcess, walletService, storageService, popupService, $window) { var isChromeApp = platformInfo.isChromeApp; var isCordova = platformInfo.isCordova; @@ -33,7 +33,6 @@ angular.module('copayApp.controllers').controller('createController', $scope.formData.derivationPath = derivationPathHelper.default; $scope.setTotalCopayers(tc); updateRCSelect(tc); - updateSeedSourceSelect(tc); }; $scope.showAdvChange = function() { @@ -44,7 +43,7 @@ angular.module('copayApp.controllers').controller('createController', $scope.resizeView = function() { $timeout(function() { $ionicScrollDelegate.resize(); - }); + }, 10); checkPasswordFields(); }; @@ -75,18 +74,27 @@ angular.module('copayApp.controllers').controller('createController', $scope.seedSource = seedOptions[0]; - if (n > 1 && isChromeApp) - seedOptions.push({ - id: 'ledger', - label: 'Ledger Hardware Wallet', - }); + /* - if (isChromeApp || isDevel) { - seedOptions.push({ - id: 'trezor', - label: 'Trezor Hardware Wallet', - }); + Disable Hardware Wallets for BitPay distribution + + */ + + if ($window.appConfig.name == 'copay') { + if (n > 1 && isChromeApp) { + seedOptions.push({ + id: 'ledger', + label: 'Ledger Hardware Wallet', + }); + } + if (isChromeApp || isDevel) { + seedOptions.push({ + id: 'trezor', + label: 'Trezor Hardware Wallet', + }); + } } + $scope.seedOptions = seedOptions; }; diff --git a/src/js/controllers/export.js b/src/js/controllers/export.js index 358a211da..bec190995 100644 --- a/src/js/controllers/export.js +++ b/src/js/controllers/export.js @@ -12,7 +12,7 @@ angular.module('copayApp.controllers').controller('exportController', $scope.resizeView = function() { $timeout(function() { $ionicScrollDelegate.resize(); - }); + }, 10); }; function getPassword(cb) { diff --git a/src/js/controllers/import.js b/src/js/controllers/import.js index af9dd6e31..959509775 100644 --- a/src/js/controllers/import.js +++ b/src/js/controllers/import.js @@ -1,7 +1,7 @@ 'use strict'; angular.module('copayApp.controllers').controller('importController', - function($scope, $timeout, $log, $state, $stateParams, $ionicHistory, $ionicScrollDelegate, profileService, configService, sjcl, ledger, trezor, derivationPathHelper, platformInfo, bwcService, ongoingProcess, walletService, popupService, gettextCatalog) { + function($scope, $timeout, $log, $state, $stateParams, $ionicHistory, $ionicScrollDelegate, profileService, configService, sjcl, ledger, trezor, derivationPathHelper, platformInfo, bwcService, ongoingProcess, walletService, popupService, gettextCatalog, $window) { var isChromeApp = platformInfo.isChromeApp; var isDevel = platformInfo.isDevel; @@ -17,6 +17,7 @@ angular.module('copayApp.controllers').controller('importController', $scope.formData.derivationPath = derivationPathHelper.default; $scope.formData.account = 1; $scope.importErr = false; + $scope.showHardwareWallet = $window.appConfig.name == 'copay'; if ($stateParams.code) $scope.processWalletInfo($stateParams.code); @@ -359,7 +360,7 @@ angular.module('copayApp.controllers').controller('importController', $scope.resizeView = function() { $timeout(function() { $ionicScrollDelegate.resize(); - }); + }, 10); }; }); diff --git a/src/js/controllers/join.js b/src/js/controllers/join.js index d15f152b4..8dbf6cffb 100644 --- a/src/js/controllers/join.js +++ b/src/js/controllers/join.js @@ -1,7 +1,7 @@ 'use strict'; angular.module('copayApp.controllers').controller('joinController', - function($scope, $rootScope, $timeout, $state, $ionicHistory, $ionicScrollDelegate, profileService, configService, storageService, applicationService, gettextCatalog, lodash, ledger, trezor, platformInfo, derivationPathHelper, ongoingProcess, walletService, $log, $stateParams, popupService) { + function($scope, $rootScope, $timeout, $state, $ionicHistory, $ionicScrollDelegate, profileService, configService, storageService, applicationService, gettextCatalog, lodash, ledger, trezor, platformInfo, derivationPathHelper, ongoingProcess, walletService, $log, $stateParams, popupService, $window) { var isChromeApp = platformInfo.isChromeApp; var isDevel = platformInfo.isDevel; @@ -20,7 +20,7 @@ angular.module('copayApp.controllers').controller('joinController', $scope.resizeView = function() { $timeout(function() { $ionicScrollDelegate.resize(); - }); + }, 10); checkPasswordFields(); }; @@ -57,19 +57,26 @@ angular.module('copayApp.controllers').controller('joinController', }]; $scope.seedSource = self.seedOptions[0]; + /* - if (isChromeApp) { - self.seedOptions.push({ - id: 'ledger', - label: 'Ledger Hardware Wallet', - }); - } + Disable Hardware Wallets - if (isChromeApp || isDevel) { - self.seedOptions.push({ - id: 'trezor', - label: 'Trezor Hardware Wallet', - }); + */ + + if ($window.appConfig.name == 'copay') { + if (isChromeApp) { + self.seedOptions.push({ + id: 'ledger', + label: 'Ledger Hardware Wallet', + }); + } + + if (isChromeApp || isDevel) { + self.seedOptions.push({ + id: 'trezor', + label: 'Trezor Hardware Wallet', + }); + } } }; diff --git a/src/js/controllers/onboarding/backupWarning.js b/src/js/controllers/onboarding/backupWarning.js index ee57c03d5..f6e6ab68c 100644 --- a/src/js/controllers/onboarding/backupWarning.js +++ b/src/js/controllers/onboarding/backupWarning.js @@ -9,8 +9,8 @@ angular.module('copayApp.controllers').controller('backupWarningController', fun $scope.openPopup = function() { $ionicModal.fromTemplateUrl('views/includes/screenshotWarningModal.html', { scope: $scope, - backdropClickToClose: false, - hardwareBackButtonClose: false + backdropClickToClose: true, + hardwareBackButtonClose: true }).then(function(modal) { $scope.warningModal = modal; $scope.warningModal.show(); diff --git a/src/js/controllers/preferencesAltCurrency.js b/src/js/controllers/preferencesAltCurrency.js index 5f9ab9910..6e45f40bc 100644 --- a/src/js/controllers/preferencesAltCurrency.js +++ b/src/js/controllers/preferencesAltCurrency.js @@ -1,29 +1,35 @@ 'use strict'; angular.module('copayApp.controllers').controller('preferencesAltCurrencyController', - function($scope, $log, $timeout, $ionicHistory, configService, rateService, lodash, profileService, walletService) { + function($scope, $log, $timeout, $ionicHistory, configService, rateService, lodash, profileService, walletService, storageService) { var next = 10; var completeAlternativeList; - var config = configService.getSync(); - $scope.currentCurrency = config.wallet.settings.alternativeIsoCode; - $scope.listComplete = false; + function init() { + var unusedCurrencyList = [{ + isoCode: 'LTL' + }, { + isoCode: 'BTC' + }]; + rateService.whenAvailable(function() { - var unusedCurrencyList = [{ - isoCode: 'LTL' - }, { - isoCode: 'BTC' - }]; + $scope.listComplete = false; - var idx = lodash.indexBy(unusedCurrencyList, 'isoCode'); + var idx = lodash.indexBy(unusedCurrencyList, 'isoCode'); + var idx2 = lodash.indexBy($scope.lastUsedAltCurrencyList, 'isoCode'); - rateService.whenAvailable(function() { - completeAlternativeList = lodash.reject(rateService.listAlternatives(), function(c) { - return idx[c.isoCode]; + completeAlternativeList = lodash.reject(rateService.listAlternatives(true), function(c) { + return idx[c.isoCode] || idx2[c.isoCode]; + }); + + $scope.altCurrencyList = completeAlternativeList.slice(0, 10); + + $timeout(function() { + $scope.$apply(); + }); }); - $scope.altCurrencyList = completeAlternativeList.slice(0, next); - }); + } $scope.loadMore = function() { $timeout(function() { @@ -34,6 +40,17 @@ angular.module('copayApp.controllers').controller('preferencesAltCurrencyControl }, 100); }; + $scope.findCurrency = function(search) { + if (!search) init(); + $scope.altCurrencyList = lodash.filter(completeAlternativeList, function(item) { + var val = item.name; + return lodash.includes(val.toLowerCase(), search.toLowerCase()); + }); + $timeout(function() { + $scope.$apply(); + }); + }; + $scope.save = function(newAltCurrency) { var opts = { wallet: { @@ -48,9 +65,27 @@ angular.module('copayApp.controllers').controller('preferencesAltCurrencyControl if (err) $log.warn(err); $ionicHistory.goBack(); + saveLastUsed(newAltCurrency); walletService.updateRemotePreferences(profileService.getWallets(), {}, function() { $log.debug('Remote preferences saved'); }); }); }; + + function saveLastUsed(newAltCurrency) { + $scope.lastUsedAltCurrencyList.unshift(newAltCurrency); + $scope.lastUsedAltCurrencyList = lodash.uniq($scope.lastUsedAltCurrencyList, 'isoCode'); + $scope.lastUsedAltCurrencyList = $scope.lastUsedAltCurrencyList.slice(0, 3); + storageService.setLastCurrencyUsed(JSON.stringify($scope.lastUsedAltCurrencyList), function() {}); + }; + + $scope.$on("$ionicView.beforeEnter", function(event, data) { + var config = configService.getSync(); + $scope.currentCurrency = config.wallet.settings.alternativeIsoCode; + + storageService.getLastCurrencyUsed(function(err, lastUsedAltCurrency) { + $scope.lastUsedAltCurrencyList = lastUsedAltCurrency ? JSON.parse(lastUsedAltCurrency) : []; + init(); + }); + }); }); diff --git a/src/js/controllers/proposals.js b/src/js/controllers/proposals.js index 2fa6193a0..1e0e65030 100644 --- a/src/js/controllers/proposals.js +++ b/src/js/controllers/proposals.js @@ -1,24 +1,34 @@ - 'use strict'; angular.module('copayApp.controllers').controller('proposalsController', - function($timeout, $scope, profileService, $log, txpModalService) { + function($timeout, $scope, profileService, $log, txpModalService, addressbookService) { $scope.fetchingProposals = true; - $scope.$on("$ionicView.enter", function(event, data){ - profileService.getTxps(50, function(err, txps) { - $scope.fetchingProposals = false; - if (err) { - $log.error(err); - return; - } - $scope.txps = txps; - $timeout(function() { - $scope.$apply(); - }, 1); + $scope.$on("$ionicView.enter", function(event, data) { + addressbookService.list(function(err, ab) { + if (err) $log.error(err); + $scope.addressbook = ab || {}; + + profileService.getTxps(50, function(err, txps) { + $scope.fetchingProposals = false; + if (err) { + $log.error(err); + return; + } + $scope.txps = txps; + $timeout(function() { + $scope.$apply(); + }); + }); }); }); $scope.openTxpModal = txpModalService.open; + + $scope.createdWithinPastDay = function(time) { + var now = new Date(); + var date = new Date(time * 1000); + return (now.getTime() - date.getTime()) < (1000 * 60 * 60 * 24); + }; }); diff --git a/src/js/controllers/tab-home.js b/src/js/controllers/tab-home.js index d520ef88e..195ac752b 100644 --- a/src/js/controllers/tab-home.js +++ b/src/js/controllers/tab-home.js @@ -126,6 +126,12 @@ angular.module('copayApp.controllers').controller('tabHomeController', }); }); + $scope.createdWithinPastDay = function(time) { + var now = new Date(); + var date = new Date(time * 1000); + return (now.getTime() - date.getTime()) < (1000 * 60 * 60 * 24); + }; + $scope.openExternalLink = function() { var url = 'https://github.com/bitpay/copay/releases/latest'; var optIn = true; @@ -187,7 +193,7 @@ angular.module('copayApp.controllers').controller('tabHomeController', $timeout(function() { $ionicScrollDelegate.resize(); $scope.$apply(); - }, 100); + }, 10); }) }; @@ -240,7 +246,7 @@ angular.module('copayApp.controllers').controller('tabHomeController', $timeout(function() { $ionicScrollDelegate.resize(); $scope.$apply(); - }, 100); + }, 10); }); }; @@ -269,7 +275,7 @@ angular.module('copayApp.controllers').controller('tabHomeController', $timeout(function() { $ionicScrollDelegate.resize(); $scope.$apply(); - }, 100); + }, 10); }; var bitpayCardCache = function() { diff --git a/src/js/controllers/tab-receive.js b/src/js/controllers/tab-receive.js index 14a61732a..3aeb9d577 100644 --- a/src/js/controllers/tab-receive.js +++ b/src/js/controllers/tab-receive.js @@ -86,7 +86,7 @@ angular.module('copayApp.controllers').controller('tabReceiveController', functi $scope.setWallet = function(index) { $scope.wallet = $scope.wallets[index]; $scope.walletIndex = index; - if ($scope.walletAddrs[$scope.walletIndex].addr) $scope.addr = $scope.walletAddrs[$scope.walletIndex].addr; + if ($scope.walletAddrs[$scope.wallet.id].addr) $scope.addr = $scope.walletAddrs[$scope.walletIndex].addr; else $scope.setAddress(false); } diff --git a/src/js/controllers/tab-send.js b/src/js/controllers/tab-send.js index b905b16a6..c4deabc97 100644 --- a/src/js/controllers/tab-send.js +++ b/src/js/controllers/tab-send.js @@ -55,7 +55,7 @@ angular.module('copayApp.controllers').controller('tabSendController', function( $timeout(function() { $ionicScrollDelegate.resize(); $scope.$apply(); - }); + }, 10); }); }; @@ -145,15 +145,15 @@ angular.module('copayApp.controllers').controller('tabSendController', function( if (index == wallets.length) { $scope.checkingBalance = false; + if ($scope.hasFunds != true) { + $ionicScrollDelegate.freezeScroll(true); + } $timeout(function() { $scope.$apply(); }); } }); }); - if ($scope.hasFunds != true) { - $ionicScrollDelegate.freezeScroll(true); - } }; $scope.$on("$ionicView.beforeEnter", function(event, data) { diff --git a/src/js/services/rateService.js b/src/js/services/rateService.js index 394c556b4..9cbfe2821 100644 --- a/src/js/services/rateService.js +++ b/src/js/services/rateService.js @@ -111,18 +111,24 @@ RateService.prototype.fromFiat = function(amount, code) { return amount / this.getRate(code) * this.BTC_TO_SAT; }; -RateService.prototype.listAlternatives = function() { +RateService.prototype.listAlternatives = function(sort) { var self = this; if (!this.isAvailable()) { return []; } - return self.lodash.map(this.getAlternatives(), function(item) { + var alternatives = self.lodash.map(this.getAlternatives(), function(item) { return { name: item.name, isoCode: item.isoCode } }); + if (sort) { + alternatives.sort(function(a, b) { + return a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1; + }); + } + return self.lodash.uniq(alternatives, 'isoCode'); }; angular.module('copayApp.services').factory('rateService', function($http, lodash) { diff --git a/src/js/services/storageService.js b/src/js/services/storageService.js index 7a82a1b90..f179dd1ab 100644 --- a/src/js/services/storageService.js +++ b/src/js/services/storageService.js @@ -77,25 +77,25 @@ angular.module('copayApp.services') //////////////////////////////////////////////////////////////////////////// // // UPGRADING STORAGE - // + // // 1. Write a function to upgrade the desired storage key(s). The function should have the protocol: - // + // // _upgrade_x(key, network, cb), where: - // + // // `x` is the name of the storage key - // `key` is the name of the storage key being upgraded + // `key` is the name of the storage key being upgraded // `network` is one of 'livenet', 'testnet' // // 2. Add the storage key to `_upgraders` object using the name of the key as the `_upgrader` object key // with the value being the name of the upgrade function (e.g., _upgrade_x). In order to avoid conflicts // when a storage key is involved in multiple upgraders as well as predicte the order in which upgrades - // occur the `_upgrader` object key should be prefixed with '##_' (e.g., '01_') to create a unique and + // occur the `_upgrader` object key should be prefixed with '##_' (e.g., '01_') to create a unique and // sortable name. This format is interpreted by the _upgrade() function. - // + // // Upgraders are executed in numerical order per the '##_' object key prefix. - // + // var _upgraders = { - '00_bitpayDebitCards' : _upgrade_bitpayDebitCards // 2016-11: Upgrade bitpayDebitCards-x to bitpayAccounts-x + '00_bitpayDebitCards': _upgrade_bitpayDebitCards // 2016-11: Upgrade bitpayDebitCards-x to bitpayAccounts-x }; function _upgrade_bitpayDebitCards(key, network, cb) { @@ -375,6 +375,14 @@ angular.module('copayApp.services') storage.remove('nextStep-' + service, cb); }; + root.setLastCurrencyUsed = function(lastCurrencyUsed, cb) { + storage.set('lastCurrencyUsed', lastCurrencyUsed, cb) + }; + + root.getLastCurrencyUsed = function(cb) { + storage.get('lastCurrencyUsed', cb) + }; + root.checkQuota = function() { var block = ''; // 50MB @@ -487,12 +495,14 @@ angular.module('copayApp.services') bitpayAccounts = bitpayAccounts || {}; Object.keys(bitpayAccounts).forEach(function(userId) { var data = bitpayAccounts[userId]['bitpayDebitCards-' + network]; - var newCards = lodash.reject(data.cards, {'eid': card.eid}); + var newCards = lodash.reject(data.cards, { + 'eid': card.eid + }); data.cards = newCards; root.setBitpayDebitCards(network, data, function(err) { if (err) cb(err); // If there are no more cards in storage then re-enable the next step entry. - root.getBitpayDebitCards(network, function(err, cards){ + root.getBitpayDebitCards(network, function(err, cards) { if (err) cb(err); if (cards.length == 0) { root.removeNextStep('BitpayCard', cb); diff --git a/src/js/services/walletService.js b/src/js/services/walletService.js index 9ca86ae54..844db435e 100644 --- a/src/js/services/walletService.js +++ b/src/js/services/walletService.js @@ -891,20 +891,14 @@ angular.module('copayApp.services').factory('walletService', function($log, $tim }; - root.onlyPublish = function(wallet, txp, cb) { - ongoingProcess.set('sendingTx', true); + root.onlyPublish = function(wallet, txp, cb, customStatusHandler) { + ongoingProcess.set('sendingTx', true, customStatusHandler); root.publishTx(wallet, txp, function(err, publishedTxp) { root.invalidateCache(wallet); - - ongoingProcess.set('sendingTx', false); - if (err) return cb(err); - - var type = root.getViewStatus(wallet, createdTxp); - root.openStatusModal(type, createdTxp, function() { - $rootScope.$emit('Local/TxAction', wallet.id); - return; - }); - return cb(null, publishedTxp); + ongoingProcess.set('sendingTx', false, customStatusHandler); + if (err) return cb(bwcError.msg(err)); + $rootScope.$emit('Local/TxAction', wallet.id); + return cb(); }); }; diff --git a/www/views/confirm.html b/www/views/confirm.html index 9af5b7664..a3cef657d 100644 --- a/www/views/confirm.html +++ b/www/views/confirm.html @@ -58,8 +58,8 @@ From - To - From + To + From
@@ -123,7 +123,7 @@ ng-if="!isCordova && wallets[0] && !insufficientFunds && !noMatchingWallet" click-send-status="sendStatus" has-wallet-chosen="wallet"> - Click to pay + {{'Accept' | translate}} - Slide to pay + {{'Accept' | translate}} - Payment Sent - Proposal Created + Payment Sent + Proposal Created + Transaction created
A transfer has been initiated from your bank account. Your bitcoins should arrive to your wallet in 2-4 business day A transfer has been initiated to your bank account. Should arrive in 4-6 business days diff --git a/www/views/import.html b/www/views/import.html index b5ce0d8fb..e3a7af0c7 100644 --- a/www/views/import.html +++ b/www/views/import.html @@ -16,7 +16,7 @@ File/Text
+ {'border-bottom-style': 'solid'}" ng-show="showHardwareWallet"> Hardware wallet
diff --git a/www/views/modals/txp-details.html b/www/views/modals/txp-details.html index ba62411f0..1496acc64 100644 --- a/www/views/modals/txp-details.html +++ b/www/views/modals/txp-details.html @@ -166,19 +166,19 @@ ng-if="tx.pendingForUs && canSign && !paymentExpired && hasClick" click-send-status="sendStatus" has-wallet-chosen="true"> - Click to accept + {{'Accept'| translate}} - Slide to accept + {{'Accept'| translate}} - Payment Sent + {{'Payment Sent' | translate}} diff --git a/www/views/preferencesAltCurrency.html b/www/views/preferencesAltCurrency.html index 0954fa8b5..dc9be4286 100644 --- a/www/views/preferencesAltCurrency.html +++ b/www/views/preferencesAltCurrency.html @@ -7,13 +7,27 @@ - {{altCurrency.name}} - +
+ +
+
+ {{lastUsedAltCurrency.name}} + +
+
+ {{altCurrency.name}} + +
- + ng-if="!listComplete" + on-infinite="loadMore()" + distance="50%"> +