Merge branch 'wallet/prod' into master

This commit is contained in:
Jean-Baptiste Dominguez 2018-09-22 10:59:24 +02:00 committed by GitHub
commit 49a6711970
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
88 changed files with 5949 additions and 2708 deletions

View file

@ -53,11 +53,12 @@
</div>
<div class="keypad-container" style="background: #fff; position: absolute; bottom: 0; margin-bottom: 57px; width: 100%;">
<div class="sendmax" ng-if="vm.availableFunds && !vm.isRequestingSpecificAmount">
<div class="sendmax" ng-if="vm.showSendMaxButton || vm.showSendLimitMaxButton">
<button class="button button-sendmax" ng-click="vm.sendMax()">
<span>
<span translate>Use All Available Funds</span>&ensp;
<span class="available-funds-amount">(<formatted-amount value="{{vm.availableFunds}}"></formatted-amount>)</span>
<span ng-if="vm.showSendMaxButton" translate>Use All Available Funds</span>
<span ng-if="vm.showSendLimitMaxButton" translate>Send Maximum Amount</span>&ensp;
<span class="available-funds-amount">(<formatted-amount value="{{vm.sendableFunds}}"></formatted-amount>)</span>
</span>
</button>
</div>

View file

@ -26,7 +26,7 @@
<i class="icon big-icon-svg theme-circle theme-circle-community">
<div class="bg icon-share"></div>
</i>
<span>Share the Wallet App</span>
<span translate>Share the Wallet App</span>
<i class="icon bp-arrow-right"></i>
</a>
</div>

View file

@ -9,21 +9,21 @@
<img src="img/icon-bitcoin-small.svg">
</div>
<div class="incoming-data-menu__url__text">
{{data}}
{{data.original}}
</div>
</div>
</div>
<a class="incoming-data-menu__item item item-icon-right" ng-click="addToAddressBook(data)">
<a class="incoming-data-menu__item item item-icon-right" ng-click="addToAddressBook(data.toAddress)">
<img src="img/icon-contacts.svg">
<div class="incoming-data-menu__item__text" translate>Add as a contact</div>
<i class="icon bp-arrow-right"></i>
</a>
<a class="incoming-data-menu__item item item-icon-right" ng-click="sendPaymentToAddress(data)">
<a class="incoming-data-menu__item item item-icon-right" ng-click="sendPaymentToAddress(data.toAddress)">
<img src="img/icon-send-alt.svg">
<div class="incoming-data-menu__item__text" translate>Send payment to this address</div>
<i class="icon bp-arrow-right"></i>
</a>
<a class="incoming-data-menu__item item item-icon-right" copy-to-clipboard="data">
<a class="incoming-data-menu__item item item-icon-right" copy-to-clipboard="data.original">
<img src="img/icon-paperclip.svg">
<div class="incoming-data-menu__item__text" translate>Copy to clipboard</div>
<i class="icon bp-arrow-right"></i>
@ -38,11 +38,11 @@
<div class="incoming-data-menu__header" translate>Text</div>
<div class="incoming-data-menu__url">
<div class="incoming-data-menu__url__text" style="border: 0;">
{{data}}
{{data.original}}
</div>
</div>
</div>
<a class="incoming-data-menu__item item item-icon-right" copy-to-clipboard="data">
<a class="incoming-data-menu__item item item-icon-right" copy-to-clipboard="data.original">
<img src="img/icon-paperclip.svg">
<div class="incoming-data-menu__item__text" translate>Copy to clipboard</div>
<i class="icon bp-arrow-right"></i>
@ -57,16 +57,40 @@
<div class="incoming-data-menu__header" translate>Private Key</div>
<div class="incoming-data-menu__url">
<div class="incoming-data-menu__url__text" style="border: 0;">
{{data}}
{{data.original}}
</div>
</div>
</div>
<a class="incoming-data-menu__item item item-icon-right" ng-click="scanPaperWallet(data)">
<a class="incoming-data-menu__item item item-icon-right" ng-click="scanPaperWallet(data.original)">
<img src="img/icon-import.svg">
<div class="incoming-data-menu__item__text" translate>Sweep paper wallet</div>
<i class="icon bp-arrow-right"></i>
</a>
<a class="incoming-data-menu__item item item-icon-right" copy-to-clipboard="data">
<a class="incoming-data-menu__item item item-icon-right" copy-to-clipboard="data.original">
<img src="img/icon-paperclip.svg">
<div class="incoming-data-menu__item__text" translate>Copy to clipboard</div>
<i class="icon bp-arrow-right"></i>
</a>
<a class="incoming-data-menu__cancel item" ng-click="hide()" translate>
Cancel
</a>
</div>
<div ng-if="type === 'url'">
<div class="incoming-data-menu__item head">
<div class="incoming-data-menu__header" translate>URL</div>
<div class="incoming-data-menu__url">
<div class="incoming-data-menu__url__text" style="border: 0;">
{{data.original}}
</div>
</div>
</div>
<a class="incoming-data-menu__item item item-icon-right" ng-click="goToUrl(data.original)">
<img src="img/icon-link-external.svg">
<div class="incoming-data-menu__item__text" translate>Open in web browser</div>
<i class="icon bp-arrow-right"></i>
</a>
<a class="incoming-data-menu__item item item-icon-right" copy-to-clipboard="data.original">
<img src="img/icon-paperclip.svg">
<div class="incoming-data-menu__item__text" translate>Copy to clipboard</div>
<i class="icon bp-arrow-right"></i>

View file

@ -3,9 +3,9 @@
<a ng-show="walletNotRegistered" ng-click="recreate()" translate>Tap to recreate</a>
<a ng-show="updateStatusError" ng-click="updateAll(true)" translate>Tap to retry</a>
</div>
<span ng-click="onRefresh()" class="right" ng-show="(!updatingStatus && !updatingTxHistory)">&#8635;</span>
<ion-spinner class="spinner-dark recent right loading-wallet" icon="crescent" ng-show="(updatingStatus || updatingTxHistory) &&
!walletNotRegistered && !updateStatusError && !updateTxHistoryError"></ion-spinner>
<span ng-click="onRefresh()" class="right" ng-show="(!updatingStatus && !vm.updatingTxHistory && !vm.gettingInitialHistory)">&#8635;</span>
<ion-spinner class="spinner-dark recent right loading-wallet" icon="crescent" ng-show="(updatingStatus || vm.updatingTxHistory || vm.gettingInitialHistory) &&
!walletNotRegistered && !updateStatusError && !vm.updateTxHistoryFailed"></ion-spinner>
<div>
<span ng-show="wallet.status.wallet.singleAddress" class="size-12"><span translate>Auditable</span></span>

View file

@ -1,6 +1,6 @@
<ion-view hide-tabs>
<ion-nav-bar class="bar-royal">
<ion-nav-title>{{'Sweep paper wallet' | translate}}</ion-nav-title>
<ion-nav-title>{{'Sweep Paper Wallet' | translate}}</ion-nav-title>
<ion-nav-back-button>
</ion-nav-back-button>
</ion-nav-bar>
@ -45,19 +45,19 @@
</div>
<div ng-class="ng-hide" ng-show="noMatchingBchWallet">
<div class="text-center size-12 text-gray">
<span>No Bitcoin Cash wallet to transfer funds to found.</span>
<span translate>No Bitcoin Cash wallet to transfer funds to found.</span>
</div>
</div>
</div>
<div ng-class="ng-hide" ng-show="!bchBalance && readyToShow">
<div class="text-center">
<h4 class="text-bold" translate>No Bitcoin Cash found</h4>
<h4 class="text-bold" translate>No Bitcoin Cash found.</h4>
</div>
</div>
<div ng-class="ng-hide" ng-show="btcBalance">
<div class="row">
<div class="col text-center">
<h4 class="text-bold" translate>Bitcoin found:</h4>
<h4 class="text-bold" translate>Bitcoin Core found:</h4>
<div class="size-24">
<span>{{btcBalanceText}}</span>
<div class="size-14 amount-alternative">
@ -95,13 +95,13 @@
</div>
<div ng-class="ng-hide" ng-show="noMatchingBtcWallet">
<div class="text-center size-12 text-gray">
<span>No Bitcoin wallet to transfer funds to found.</span>
<span translate>No Bitcoin Core wallet to transfer funds to found.</span>
</div>
</div>
</div>
<div ng-class="ng-hide" ng-show="!btcBalance && readyToShow">
<div class="text-center">
<h4 class="text-bold" translate>No Bitcoin found</h4>
<h4 class="text-bold" translate>No Bitcoin Core found.</h4>
</div>
</div>
<slide-to-accept-success

View file

@ -15,9 +15,11 @@
<img src="img/icon-update.svg" class="bg"/>
</i>
<div class="item title">{{updateText}}</div>
<div class="item title">{{newReleaseText}}</div>
<div class="item release-notes" ng-if="newReleaseNotes"><span ng-bind-html="newReleaseNotes"></span></div>
<div class="button" ng-click="openExternalLink()">
<div class="button" ng-click="showUpdatePopup()">
<span translate>Download</span>
</div>
</div>

View file

@ -17,14 +17,13 @@
</i>
<h2>{{fromWallet.name}}</h2>
<wallet-balance
display-as-fiat="{{displayBalanceAsFiat}}"
display-as-fiat="{{displayBalanceAsFiat}}"
wallet-coin="{{fromWallet.coin}}"
wallet-status="{{fromWallet.status}}"
wallet-cached-balance="{{fromWallet.cachedBalance}}"
wallet-cached-balance-updated-on="{{fromWallet.cachedBalanceUpdatedOn}}"
wallet-cached-status="{{fromWallet.cachedStatus}}"
total-balance-sat="{{fromWallet.status.totalBalanceSat}}"></wallet-balance>
<!--<p ng-show="vm.origin.balanceAmount">{{vm.origin.balanceAmount}} {{vm.origin.balanceCurrency}}</p>-->
<!--<formatted-amount value="{{fromWallet.status.totalBalanceStr ? fromWallet.status.totalBalanceStr : ( fromWallet.cachedBalance ? fromWallet.cachedBalance + (fromWallet.cachedBalanceUpdatedOn ? ' &middot; ' + ( fromWallet.cachedBalanceUpdatedOn * 1000 | amTimeAgo) : '') : '' ) }}"></formatted-amount>-->
</div>
</div>
</div>

View file

@ -16,79 +16,74 @@
}
</style>
<div class="bp-content" ng-class="{'status-bar': isCordova}">
<div class="bp-content" ng-class="{'status-bar': isCordova, 'collapse': scrollPosition > 50}">
<div class="amount-wrapper" ng-show="wallet && wallet.isComplete() && amountIsCollapsible" ng-class="{'wallet-background-color-default': !wallet.color}" ng-style="{'background-color':wallet.color}">
<div class="amount-wrapper" ng-show="wallet && wallet.isComplete()" ng-class="{'wallet-background-color-default': !wallet.color}" ng-style="{'background-color':wallet.color}">
<div
ng-style="{'background-color':wallet.color, 'height': amountHeight}"
class="amount"
ng-class="{collapsible: amountIsCollapsible, 'wallet-background-color-default': !wallet.color, 'no-alternative': wallet.network != 'livenet'}"
ng-style="{'background-color':wallet.color}"
class="amount collapsible"
ng-class="{'wallet-background-color-default': !wallet.color, 'no-alternative': wallet.network != 'livenet'}"
>
<div class="amount__error" ng-style="{opacity: altAmountOpacity}" ng-show="updateStatusError">
<div class="amount__error" ng-show="updateStatusError">
<span>{{updateStatusError}}</span>
</div>
<div class="amount__error" ng-style="{opacity: altAmountOpacity}" ng-show="walletNotRegistered">
<div class="amount__error" ng-show="walletNotRegistered">
<span translate>This wallet is not registered at the given Bitcore Wallet Service (BWS). You can recreate it from the local information.</span>
</div>
<div
ng-show="selectedPriceDisplay=='fiat' && !updateStatusError && !wallet.balanceHidden && !wallet.scanning"
ng-if="selectedPriceDisplay=='fiat' && !updateStatusError && !wallet.balanceHidden && !wallet.scanning"
on-hold="hideToggle()"
ng-style="{'transform': amountScale}"
ng-class="{amount__balance: amountIsCollapsible}">
class="amount__balance amount__scale">
<strong class="size-36" ng-show="status.totalBalanceAlternative">
<formatted-amount value="{{status.totalBalanceAlternative}}" currency="{{status.alternativeIsoCode}}"></formatted-amount>
</strong>
<div
class="size-14 amount-alternative"
ng-if="status.totalBalanceStr && wallet.network == 'livenet'"
ng-style="{opacity: altAmountOpacity}">
ng-if="status.totalBalanceStr && wallet.network == 'livenet'">
<formatted-amount value="{{status.totalBalanceStr}}" size-equal="true"></formatted-amount>
</div>
</div>
<div
ng-show="selectedPriceDisplay=='crypto' && !updateStatusError && !wallet.balanceHidden && !wallet.scanning"
on-hold="hideToggle()"
ng-style="{'transform': amountScale}"
ng-if="status.totalBalanceStr"
ng-class="{amount__balance: amountIsCollapsible}">
ng-if="status.totalBalanceStr && selectedPriceDisplay=='crypto' && !updateStatusError && !wallet.balanceHidden && !wallet.scanning"
class="amount__balance amount__scale">
<strong class="size-36">
<formatted-amount value="{{status.totalBalanceStr}}"></formatted-amount>
</strong>
<div
class="size-14 amount-alternative"
ng-if="status.totalBalanceAlternative && wallet.network == 'livenet'"
ng-style="{opacity: altAmountOpacity}">
ng-if="status.totalBalanceAlternative && wallet.network == 'livenet'">
<formatted-amount value="{{status.totalBalanceAlternative}}" currency="{{status.alternativeIsoCode}}"></formatted-amount>
</div>
</div>
<div ng-style="{'transform': amountScale}"
class="amount__balance"
ng-show="!updateStatusError && wallet.balanceHidden && !wallet.scanning"
<div
class="amount__balance amount__scale"
ng-if="!updateStatusError && wallet.balanceHidden && !wallet.scanning"
on-hold="hideToggle()">
<strong class="size-24" translate>[Balance Hidden]</strong>
<div ng-style="{opacity: altAmountOpacity}" class="size-14 amount-alternative" translate>
<div class="size-14 amount-alternative" translate>
Tap and hold to show
</div>
</div>
<div ng-style="{'transform': amountScale}"
class="amount__balance"
ng-show="!updateStatusError && wallet.scanning">
<div
class="amount__balance amount__scale"
ng-if="!updateStatusError && wallet.scanning">
<strong class="size-24" translate>[Scanning Funds]</strong>
<div ng-style="{opacity: altAmountOpacity}" class="size-14 amount-alternative" translate>
<div class="size-14 amount-alternative" translate>
Please wait
</div>
</div>
<div ng-if="!wallet.balanceHidden && !wallet.scanning && showBalanceButton" ng-style="{'opacity': altAmountOpacity, 'transform': amountScale}">
<div ng-if="!wallet.balanceHidden && !wallet.scanning && showBalanceButton" class="amount__scale">
<button class="button button-standard button-primary amount__button-balance size-14" ng-click="openBalanceModal()">
<i class="icon ion-ios-checkmark-outline"></i>
<strong>
@ -101,7 +96,7 @@
</button>
</div>
<div class="send-receive-buttons row" ng-if="(status.availableBalanceSat || status.availableBalanceSat === 0) && (buttonsOpacity > 0 || isAndroid)" ng-style="{opacity: buttonsOpacity}">
<div class="send-receive-buttons row" ng-if="(status.availableBalanceSat || status.availableBalanceSat === 0)">
<div class="col">
<div class="button button-outline button-white-outline" ng-click="goToReceive()">
<span translate>Receive</span>
@ -118,136 +113,18 @@
</div>
</div>
<div class="wallet-details-wallet-info" ng-style="{opacity: altAmountOpacity}">
<div class="wallet-details-wallet-info">
<span ng-include="'views/includes/walletInfo.html'"></span>
</div>
</div>
<ion-content ng-style="{'margin-top': contentMargin}" ng-class="{collapsible: amountIsCollapsible}">
<ion-content class="amount__balance">
<ion-refresher
pulling-icon="ion-ios-refresh"
spinner="ios-small"
on-refresh="onRefresh()">
</ion-refresher>
<!-- Start Balance view duplicate (for Android compatibility) -->
<div class="amount-wrapper" ng-show="wallet && wallet.isComplete() && !amountIsCollapsible" ng-class="{'wallet-background-color-default': !wallet.color}" ng-style="{'background-color':wallet.color}">
<div
ng-style="{'background-color':wallet.color, 'height': amountHeight}"
class="amount"
ng-class="{collapsible: amountIsCollapsible, 'wallet-background-color-default': !wallet.color, 'no-alternative': wallet.network != 'livenet'}"
>
<div class="amount__error" ng-style="{opacity: altAmountOpacity}" ng-show="updateStatusError">
<span>{{updateStatusError}}</span>
</div>
<div class="amount__error" ng-style="{opacity: altAmountOpacity}" ng-show="walletNotRegistered">
<span translate>This wallet is not registered at the given Bitcore Wallet Service (BWS). You can recreate it from the local information.</span>
</div>
<div
ng-click='updateAll(true)'
ng-show="selectedPriceDisplay=='crypto' && !updateStatusError && !wallet.balanceHidden && !wallet.scanning"
on-hold="hideToggle()"
ng-style="{'transform': amountScale}"
ng-class="{amount__balance: amountIsCollapsible}">
<strong ng-if="status.totalBalanceStr" class="size-36"><formatted-amount value="{{status.totalBalanceStr}}"></formatted-amount></strong>
<div
class="size-14 amount-alternative"
ng-if="status.totalBalanceAlternative && wallet.network == 'livenet'"
ng-style="{opacity: altAmountOpacity}">
<formatted-amount value="{{status.totalBalanceAlternative}}" currency="{{status.alternativeIsoCode}}"></formatted-amount>
</div>
</div>
<div
ng-click='updateAll(true)'
ng-show="selectedPriceDisplay=='fiat' && !updateStatusError && !wallet.balanceHidden && !wallet.scanning"
on-hold="hideToggle()"
ng-style="{'transform': amountScale}"
ng-class="{amount__balance: amountIsCollapsible}">
<strong class="size-36"><formatted-amount value="{{status.totalBalanceAlternative}}" currency="{{status.alternativeIsoCode}}"></formatted-amount></strong>
<div
class="size-14 amount-alternative"
ng-if="status.totalBalanceStr && wallet.network == 'livenet'"
ng-style="{opacity: altAmountOpacity}">
<formatted-amount value="{{status.totalBalanceStr}}"></formatted-amount>
</div>
</div>
<div ng-style="{'transform': amountScale}"
class="amount__balance"
ng-show="!updateStatusError && wallet.balanceHidden && !wallet.scanning"
on-hold="hideToggle()">
<strong class="size-24" translate>[Balance Hidden]</strong>
<div ng-style="{opacity: altAmountOpacity}" class="size-16 amount-alternative" translate>
Tap and hold to show
</div>
</div>
<div ng-style="{'transform': amountScale}"
class="amount__balance"
ng-show="!updateStatusError && wallet.scanning">
<strong class="size-24" translate>[Scanning Funds]</strong>
<div ng-style="{opacity: altAmountOpacity}" class="size-16 amount-alternative" translate>
Please wait
</div>
</div>
<div ng-if="selectedPriceDisplay=='crypto' && !wallet.balanceHidden && !wallet.scanning && showBalanceButton" ng-style="{'opacity': altAmountOpacity, 'transform': amountScale}">
<button class="button button-standard button-primary amount__button-balance size-14" ng-click="openBalanceModal()">
<i class="icon ion-ios-checkmark-outline"></i>
<strong>
{{status.spendableBalanceStr}}
</strong>
&nbsp;
<span>
<formatted-amount value="{{status.spendableBalanceAlternative}}" currency="{{status.alternativeIsoCode}}"></formatted-amount>
</span>
</button>
</div>
<div ng-if="selectedPriceDisplay=='fiat' && !wallet.balanceHidden && !wallet.scanning && showBalanceButton" ng-style="{'opacity': altAmountOpacity, 'transform': amountScale}">
<button class="button button-standard button-primary amount__button-balance size-14" ng-click="openBalanceModal()">
<i class="icon ion-ios-checkmark-outline"></i>
<strong>
<formatted-amount value="{{status.spendableBalanceAlternative}}" currency="{{status.alternativeIsoCode}}"></formatted-amount>
</strong>
&nbsp;
<span>
{{status.spendableBalanceStr}}
</span>
</button>
</div>
<div class="send-receive-buttons row" ng-if="(status.availableBalanceSat || status.availableBalanceSat === 0) && (buttonsOpacity > 0 || isAndroid)" ng-style="{opacity: buttonsOpacity}">
<div class="col">
<div class="button button-outline button-white-outline" ng-click="goToReceive()">
<span translate>Receive</span>
</div>
</div>
<div class="col">
<div class="button button-outline button-white-outline" ng-if="!status.availableBalanceSat" ng-click="goToBuy()">
<span translate>Buy Bitcoin</span>
</div>
<div class="button button-outline button-white-outline" ng-if="status.availableBalanceSat>0" ng-click="goToSend()">
<span translate>Send</span>
</div>
</div>
</div>
</div>
<div class="wallet-details-wallet-info" ng-style="{opacity: altAmountOpacity}">
<span ng-include="'views/includes/walletInfo.html'"></span>
</div>
</div>
<!-- End Balance view duplicate (for Android compatibility) -->
<a class="wallet-not-backed-up-warning" ng-if="wallet.needsBackup" ui-sref="tabs.wallet.backupWarning({from: 'tabs.wallet'})" translate>
Wallet not backed up
</a>
@ -284,29 +161,29 @@
<!-- Transactions -->
<div class="wallet-details__no-transaction"
ng-show="!txHistory[0] && !updatingTxHistory && !updateTxHistoryError && !updateStatusError" translate>
ng-show="!txHistory[0] && !vm.gettingInitialHistory && !vm.updateTxHistoryFailed && !updateStatusError" translate>
No transactions yet
</div>
<div class="wallet-details__no-update-history"
ng-show="!txHistory[0] && !updatingTxHistory && updateTxHistoryError" translate>
ng-show="!txHistory[0] && !vm.gettingInitialHistory && vm.updateTxHistoryFailed" translate>
Could not update transaction history
</div>
<div ng-show="updatingTxHistory && updatingTxHistoryProgress>5" class="wallet-details__updating-history">
<div ng-show="vm.gettingInitialHistory && updatingTxHistoryProgress>5" class="wallet-details__updating-history">
<span translate>Updating transaction history. Please stand by.</span><br>
<span translate>{{updatingTxHistoryProgress}} transactions downloaded</span>
</div>
<div class="wallet-details__list" ng-show="txHistory[0] && !updatingTxHistory">
<div ng-style="{'padding-bottom': txHistoryPaddingBottom}" class="wallet-details__list" ng-show="txHistory[0] && !updatingTxHistory">
<div ng-repeat="btx in txHistory track by $index" ng-click="openTxModal(btx)">
<span ng-include="'views/includes/walletHistory.html'"></span>
</div>
</div>
<ion-infinite-scroll
ng-if="txHistory[0] && !updatingTxHistory && txHistoryShowMore"
ng-if="txHistory[0] && vm.allowInfiniteScroll"
on-infinite="showMore()"
distance="1%">
</ion-infinite-scroll>

View file

@ -13,7 +13,7 @@
<div class="header--request__amount-alt" ng-show="requestAmountSecondary" translate>{{requestAmountSecondary}} {{requestCurrencySecondary}}</div>
</div>
<div class="wallets-header">
<div class="title">
<div class="title" ng-if="walletsBch.length > 0 || walletsBtc.length > 0 || walletsInsufficientFunds.length > 0">
{{headerTitle}}
</div>
</div>