Merge pull request #6274 from matiu/ref/confirm

Confirm controller refactor
This commit is contained in:
Gustavo Maximiliano Cortez 2017-06-22 15:24:27 -03:00 committed by GitHub
commit f6245652d9
19 changed files with 531 additions and 579 deletions

View file

@ -53,23 +53,17 @@
</ion-content>
<click-to-accept
ng-disabled="!wallet"
ng-click="buyConfirm()"
ng-if="!isCordova"
click-send-status="sendStatus"
has-wallet-chosen="wallet"
insufficient-funds="false"
no-matching-wallet="false">
is-disabled="!wallet">
Confirm purchase
</click-to-accept>
<slide-to-accept
ng-disabled="!wallet"
ng-if="isCordova"
slide-on-confirm="buyConfirm()"
slide-send-status="sendStatus"
has-wallet-chosen="wallet"
insufficient-funds="false"
no-matching-wallet="false">
is-disabled="!wallet">
Slide to buy
</slide-to-accept>
<slide-to-accept-success

View file

@ -17,7 +17,7 @@
<div class="amount-label">
<div class="amount">{{amountUnitStr}}</div>
<div class="alternative" ng-if="buyPrice">
<span ng-show="isFiat">{{buyRequestInfo.amount.amount}} {{buyRequestInfo.amount.currency}}</span>
<span ng-show="isFiat">{{buyRequestInfo.amount.amount}} {{buyRequestInfo.amount.currency}}</span>
@ ${{buyPrice.amount}} per BTC
</div>
</div>
@ -59,7 +59,7 @@
{{fee.type}} fee
</span>
<span class="item-note">
{{fee.amount.amount}} {{fee.amount.currency}}
{{fee.amount.amount}} {{fee.amount.currency}}
</span>
</div>
<div class="item">
@ -74,23 +74,17 @@
</ion-content>
<click-to-accept
ng-disabled="!selectedPaymentMethodId.value || !buyRequestInfo || !wallet"
ng-click="buyConfirm()"
ng-if="!isCordova && buyRequestInfo"
click-send-status="sendStatus"
has-wallet-chosen="wallet"
insufficient-funds="!selectedPaymentMethodId.value"
no-matching-wallet="!buyRequestInfo">
is-disabled="!selectedPaymentMethodId.value || !buyRequestInfo || !wallet">
Confirm purchase
</click-to-accept>
<slide-to-accept
ng-disabled="!selectedPaymentMethodId.value || !buyRequestInfo || !wallet"
ng-if="isCordova && buyRequestInfo"
slide-on-confirm="buyConfirm()"
slide-send-status="sendStatus"
has-wallet-chosen="wallet"
insufficient-funds="!selectedPaymentMethodId.value"
no-matching-wallet="!buyRequestInfo">
is-disabled="!selectedPaymentMethodId.value || !buyRequestInfo || !wallet">
Slide to buy
</slide-to-accept>
<slide-to-accept-success

View file

@ -17,8 +17,8 @@
<div class="amount-label">
<div class="amount">{{amountUnitStr}}</div>
<div class="alternative">
<span ng-show="!isFiat">{{buyInfo.subtotal}} {{buyInfo.currency}}</span>
<span ng-show="isFiat">{{buyInfo.qty}} BTC</span>
<span ng-show="!isFiat">{{buyInfo.subtotal}} {{buyInfo.currency}}</span>
<span ng-show="isFiat">{{buyInfo.qty}} BTC</span>
@ ${{buyInfo.price}} per BTC
</div>
</div>
@ -64,23 +64,17 @@
</ion-content>
<click-to-accept
ng-disabled="!buyInfo || !wallet"
ng-click="buyConfirm()"
ng-if="!isCordova && buyInfo"
click-send-status="sendStatus"
has-wallet-chosen="wallet"
insufficient-funds="false"
no-matching-wallet="!buyInfo">
is-disabled="!buyInfo || !wallet">
Confirm purchase
</click-to-accept>
<slide-to-accept
ng-disabled="!buyInfo || !wallet"
ng-if="isCordova && buyInfo"
slide-on-confirm="buyConfirm()"
slide-send-status="sendStatus"
has-wallet-chosen="wallet"
insufficient-funds="false"
no-matching-wallet="!buyInfo">
is-disabled="!buyInfo || !wallet">
Slide to buy
</slide-to-accept>
<slide-to-accept-success

View file

@ -7,24 +7,24 @@
</ion-nav-back-button>
</ion-nav-bar>
<ion-content ng-class="{'add-bottom-for-cta': !insufficientFunds && !noMatchingWallet}">
<ion-content class="add-bottom-for-cta">
<div class="list">
<div class="item head">
<div class="sending-label">
<img src="img/icon-tx-sent-outline.svg">
<span translate ng-if="!useSendMax">Sending</span>
<span translate ng-if="useSendMax">Sending maximum amount</span>
<span translate ng-if="!tx.sendMax">Sending</span>
<span translate ng-if="tx.sendMax">Sending maximum amount</span>
</div>
<div class="amount-label">
<div class="amount">{{displayAmount || '...'}} <span class="unit">{{displayUnit}}</span></div>
<div class="alternative">{{alternativeAmountStr || '...'}}</div>
<div class="amount">{{tx.amountValueStr || '...'}} <span class="unit">{{tx.amountUnitStr}}</span></div>
<div class="alternative">{{tx.alternativeAmountStr || '...'}}</div>
</div>
</div>
<div class="info">
<div class="item single-line" ng-if="paypro">
<div class="item single-line" ng-if="tx.paypro">
<span class="label" translate>Payment Expires:</span>
<span class="item-note" ng-if="!paymentExpired.value">{{remainingTimeStr.value}}</span>
<span class="item-note" ng-if="paymentExpired.value" ng-style="{'color': 'red'}" translate>Expired</span>
<span class="item-note" ng-if="!paymentExpired">{{remainingTimeStr}}</span>
<span class="item-note" ng-if="paymentExpired" ng-style="{'color': 'red'}" translate>Expired</span>
</div>
<div class="item">
@ -32,36 +32,36 @@
<span class="payment-proposal-to" ng-if="!recipientType">
<img src="img/icon-bitcoin-small.svg">
<div copy-to-clipboard="toAddress" ng-if="!paypro" class="ellipsis">
<contact ng-if="!toName" address="{{toAddress}}"></contact>
<span class="m15l size-14" ng-if="toName">{{toName}}</span>
<div copy-to-clipboard="tx.toAddress" ng-if="!tx.paypro" class="ellipsis">
<contact ng-if="!tx.toName" address="{{tx.toAddress}}"></contact>
<span class="m15l size-14" ng-if="tx.toName">{{tx.toName}}</span>
</div>
<div ng-if="paypro" ng-click="openPPModal(paypro)" class="m15l size-14 w100p pointer">
<i ng-show="paypro.verified && paypro.caTrusted" class="ion-locked" style="color:green"></i>
<i ng-show="!paypro.caTrusted" class="ion-unlocked" style="color:red"></i>
<span class="ellipsis" ng-show="!toName">{{paypro.domain || paypro.toAddress}}</span>
<span ng-show="toName">{{toName}}</span>
<div ng-if="tx.paypro" ng-click="openPPModal(tx.paypro)" class="m15l size-14 w100p pointer">
<i ng-show="tx.paypro.verified && tx.paypro.caTrusted" class="ion-locked" style="color:green"></i>
<i ng-show="!tx.paypro.caTrusted" class="ion-unlocked" style="color:red"></i>
<span class="ellipsis" ng-show="!tx.toName">{{tx.paypro.domain || tx.paypro.toAddress}}</span>
<span ng-show="tx.toName">{{tx.toName}}</span>
</div>
<!-- <contact ng-if="!tx.hasMultiplesOutputs" class="ellipsis" address="{{toAddress}}"></contact>
<!-- <contact ng-if="!tx.hasMultiplesOutputs" class="ellipsis" address="{{tx.toAddress}}"></contact>
<span ng-if="tx.hasMultiplesOutputs" translate>Multiple recipients</span> -->
</span>
<div class="wallet" ng-if="recipientType == 'wallet'">
<i class="icon big-icon-svg">
<img src="img/icon-wallet.svg" ng-class="{'wallet-background-color-default': !toColor}" ng-style="{'background-color': toColor}" class="bg"/>
</i>
<div copy-to-clipboard="toAddress" class="ellipsis">
<contact ng-if="!toName" address="{{toAddress}}"></contact>
<span ng-if="toName" class="wallet-name">{{toName}}</span>
<div copy-to-clipboard="tx.toAddress" class="ellipsis">
<contact ng-if="!tx.toName" address="{{tx.toAddress}}"></contact>
<span ng-if="tx.toName" class="wallet-name">{{tx.toName}}</span>
</div>
</div>
<div ng-if="recipientType == 'contact' && !isChromeApp" class="gravatar-contact toggle" ng-click="toggleAddress()">
<gravatar class="send-gravatar" name="{{toName}}" height="30" width="30" email="{{toEmail}}"></gravatar>
<span ng-if="toName && !showAddress">{{toName}}</span>
<span ng-if="toName && showAddress">{{toAddress}}</span>
<gravatar class="send-gravatar" name="{{tx.toName}}" height="30" width="30" email="{{toEmail}}"></gravatar>
<span ng-if="tx.toName && !showAddress">{{tx.toName}}</span>
<span ng-if="tx.toName && showAddress">{{tx.toAddress}}</span>
</div>
</div>
<a class="item item-icon-right" ng-hide="!useSendMax && (insufficientFunds || noMatchingWallet)" ng-click="showWalletSelector()">
<a class="item item-icon-right" ng-hide="!wallets" ng-click="showWalletSelector()">
<span class="label" translate>From</span>
<div class="wallet" ng-if="wallet">
<i class="icon big-icon-svg">
@ -77,46 +77,39 @@
</div>
<i class="icon bp-arrow-right"></i>
</a>
<div class="item item-icon-right" ng-if="!insufficientFunds && !noMatchingWallet" ng-click="chooseFeeLevel()">
<span class="label">{{'Fee:' | translate}} {{feeLevel | translate}}</span>
<span class="m10l">{{fee || '...'}}</span>
<div class="item item-icon-right" ng-if="wallet" ng-click="chooseFeeLevel(tx, wallet)">
<span class="label">{{'Fee:' | translate}} {{tx.feeLevelName | translate}}</span>
<span class="m10l">{{tx.txp[wallet.id].feeStr || '...'}}</span>
<span class="item-note m10l">
<span>{{feeFiat || '...'}}&nbsp;<span class="fee-rate" ng-if="feeRateStr" translate>- {{feeRateStr}} of the transaction</span></span>
<span>{{tx.txp[wallet.id].alternativeFeeStr || '...'}}&nbsp;<span class="fee-rate" ng-if="tx.txp[wallet.id].feeRatePerStr" translate>- {{tx.txp[wallet.id].feeRatePerStr}} of the transaction</span></span>
</span>
<i class="icon bp-arrow-right"></i>
</div>
<a class="item item-icon-right" ng-if="!insufficientFunds && !noMatchingWallet" ng-click="showDescriptionPopup()">
<a class="item item-icon-right" ng-if="wallet" ng-click="showDescriptionPopup(tx)">
<span class="label" translate>Add Memo</span>
<span class="item-note m10l">
{{description}}
{{tx.description}}
</span>
<i class="icon bp-arrow-right"></i>
</a>
<div class="text-center" ng-show="noMatchingWallet">
<span class="badge badge-energized" translate>No wallets available</span>
</div>
<div class="text-center" ng-show="insufficientFunds">
<span class="badge badge-energized" translate>Insufficient funds</span>
<div class="text-center" ng-show="noWalletMessage">
<span class="badge badge-energized">{{noWalletMessage}}</span>
</div>
</div>
</div>
</ion-content>
<click-to-accept
ng-click="approve(statusChangeHandler)"
ng-click="approve(tx, wallet, statusChangeHandler)"
ng-if="!isCordova"
click-send-status="sendStatus"
has-wallet-chosen="wallet"
insufficient-funds="insufficientFunds"
no-matching-wallet="noMatchingWallet">
is-disabled="!wallet">
{{buttonText}}
</click-to-accept>
<slide-to-accept
ng-if="isCordova && (wallet && !insufficientFunds && !noMatchingWallet)"
slide-on-confirm="onConfirm()"
ng-if="isCordova && wallet"
slide-on-confirm="approve(tx, wallet, statusChangeHandler)"
slide-send-status="sendStatus"
has-wallet-chosen="wallet"
insufficient-funds="insufficientFunds"
no-matching-wallet="noMatchingWallet">
is-disabled="!wallet">
{{buttonText}}
</slide-to-accept>
<slide-to-accept-success
@ -132,7 +125,7 @@
wallet-selector-title="walletSelectorTitle"
wallet-selector-wallets="wallets"
wallet-selector-selected-wallet="wallet"
wallet-selector-show="showWallets"
wallet-selector-show="walletSelector"
wallet-selector-on-select="onWalletSelect">
</wallet-selector>

View file

@ -1,4 +1,4 @@
<button ng-disabled="!hasWalletChosen || insufficientFunds || noMatchingWallet" class="click-to-accept__button button button-standard button-primary" ng-class="{disable: sendStatus}">
<button ng-disabled="isDisabled" class="click-to-accept__button button button-standard button-primary" ng-class="{disable: sendStatus}">
<span ng-if="!sendStatus">
<ng-transclude></ng-transclude>
</span>

View file

@ -1,4 +1,4 @@
<ion-modal-view id="settings-fee" class="settings" ng-controller="preferencesFeeController" ng-init="init()">
<ion-modal-view id="settings-fee" class="settings" ng-controller="preferencesFeeController" >
<ion-header-bar align-title="center" class="bar-royal">
<button class="button button-clear" ng-click="hideModal()">
Close
@ -7,7 +7,7 @@
{{'Bitcoin Network Fee Policy'|translate}}
</div>
</ion-header-bar>
<ion-content>
<ion-content ng-init="init(network)">
<div class="settings-explanation">
<div class="estimates">
<div>
@ -20,6 +20,7 @@
<span class="fee-rate" ng-if="feePerSatByte">{{feePerSatByte}} satoshis/byte</span>
<span ng-if="loadingFee">...</span>
</div>
<div ng-if="network!='livenet'">[{{network}}]</span>
</div>
</div>
<div class="fee-policies">
@ -28,7 +29,10 @@
</ion-radio>
</div>
<div class="m20t">
<button class="button button-standard button-primary" ng-click="chooseNewFee()" translate>Save</button>
<button class="button button-standard button-primary" ng-click="chooseNewFee()" >
<span translate ng-if="!noSave">Save</span>
<span translate ng-if="noSave">OK</span>
</button>
</div>
</ion-content>
</ion-modal-view>

View file

@ -9,51 +9,51 @@
<div class="list">
<div class="item head">
<div class="amount-label">
<div class="amount">{{displayAmount || '...'}} <span class="unit">{{displayUnit}}</span></div>
<div class="alternative">{{alternativeAmountStr || '...'}}</div>
<div class="amount">{{tx.amountValueStr || '...'}} <span class="unit">{{tx.amountUnitStr}}</span></div>
<div class="alternative">{{tx.alternativeAmountStr || '...'}}</div>
</div>
</div>
<div class="info">
<div class="item single-line" ng-if="paypro.domain">
<div class="item single-line" ng-if="tx.paypro.domain">
<span class="label">{{'Pay To'|translate}}</span>
<span class="item-note">
{{paypro.domain}}
{{tx.paypro.domain}}
</span>
</div>
<div class="item single-line" ng-if="paypro.toAddress">
<div class="item single-line" ng-if="tx.paypro.toAddress">
<span class="label">{{'Address'|translate}}</span>
<span class="item-note m10l ellipsis">
{{paypro.toAddress}}
{{tx.paypro.toAddress}}
</span>
</div>
<div class="item">
<span class="label">{{'Certified by'|translate}}</span>
<span class="item-note w100p">
<span ng-show="paypro.caTrusted">
<span ng-show="tx.paypro.caTrusted">
<i class="ion-locked" style="color:green"></i>
{{paypro.caName}} {{'(Trusted)' | translate}}</span>
{{tx.paypro.caName}} {{'(Trusted)' | translate}}</span>
</span>
<span ng-show="!paypro.caTrusted">
<span ng-show="paypro.selfSigned">
<span ng-show="!tx.paypro.caTrusted">
<span ng-show="tx.paypro.selfSigned">
<i class="ion-unlocked" style="color:red"></i> <span translate>Self-signed Certificate</span>
</span>
<span ng-show="!paypro.selfSigned">
<i class="ion-locked" style="color:yellow"></i>{{paypro.caName}}<br>
<span ng-show="!tx.paypro.selfSigned">
<i class="ion-locked" style="color:yellow"></i>{{tx.paypro.caName}}<br>
<span translate>WARNING: UNTRUSTED CERTIFICATE</span>
</span>
</span>
</span>
</div>
<div class="item" ng-if="paypro.memo">
<div class="item" ng-if="tx.paypro.memo">
<span class="label">{{'Memo'|translate}}</span>
<span class="item-note w100p">
{{paypro.memo}}
{{tx.paypro.memo}}
</span>
</div>
<div class="item single-line" ng-if="paypro.expires">
<div class="item single-line" ng-if="tx.paypro.expires">
<span class="label">{{'Expires'|translate}}</span>
<span class="item-note">
{{paypro.expires * 1000 | amTimeAgo }}
{{tx.paypro.expires * 1000 | amTimeAgo }}
</span>
</div>
</div>

View file

@ -17,11 +17,11 @@
<div class="amount-label">
<div class="amount">{{amountUnitStr}}</div>
<div class="alternative" ng-if="sellPrice">
<span ng-show="isFiat">{{sellRequestInfo.amount.amount}} {{sellRequestInfo.amount.currency}}</span>
<span ng-show="isFiat">{{sellRequestInfo.amount.amount}} {{sellRequestInfo.amount.currency}}</span>
@ ${{sellPrice.amount}} per BTC
</div>
</div>
</div>
</div>
<div class="info">
@ -62,16 +62,16 @@
will be sent to your Coinbase account, and sold when Coinbase accepts the transaction (usually one
hour).
</div>
<div class="label" ng-if="sellRequestInfo">Estimated sale value:
<div class="label" ng-if="sellRequestInfo">Estimated sale value:
<strong>
{{sellRequestInfo.total.amount | currency : '' : 2}}
{{sellRequestInfo.total.amount | currency : '' : 2}}
{{sellRequestInfo.total.currency}}
</strong>
</div>
<div class="label" ng-if="sellRequestInfo">Still sell if price fall until:
<div class="label" ng-if="sellRequestInfo">Still sell if price fall until:
<strong>
{{(sellRequestInfo.total.amount -
(selectedPriceSensitivity.data.value / 100) * sellRequestInfo.total.amount) | currency : '' : 2}}
{{(sellRequestInfo.total.amount -
(selectedPriceSensitivity.data.value / 100) * sellRequestInfo.total.amount) | currency : '' : 2}}
{{sellRequestInfo.total.currency}}
</strong>
</div>
@ -107,23 +107,17 @@
</ion-content>
<click-to-accept
ng-disabled="!selectedPaymentMethodId.value || !sellRequestInfo || !wallet"
ng-click="sellConfirm()"
ng-if="!isCordova && sellRequestInfo"
click-send-status="sendStatus"
has-wallet-chosen="wallet"
insufficient-funds="!selectedPaymentMethodId.value"
no-matching-wallet="!sellRequestInfo">
is-disabled="!selectedPaymentMethodId.value || !sellRequestInfo || !wallet">
Confirm sale
</click-to-accept>
<slide-to-accept
ng-disabled="!selectedPaymentMethodId.value || !sellRequestInfo || !wallet"
ng-if="isCordova && sellRequestInfo"
slide-on-confirm="sellConfirm()"
slide-send-status="sendStatus"
has-wallet-chosen="wallet"
insufficient-funds="!selectedPaymentMethodId.value"
no-matching-wallet="!sellRequestInfo">
is-disabled="!selectedPaymentMethodId.value || !sellRequestInfo || !wallet">
Slide to sell
</slide-to-accept>
<slide-to-accept-success

View file

@ -17,12 +17,12 @@
<div class="amount-label">
<div class="amount">{{amountUnitStr}}</div>
<div class="alternative">
<span ng-show="!isFiat">{{sellInfo.subtotal}} {{sellInfo.currency}}</span>
<span ng-show="!isFiat">{{sellInfo.subtotal}} {{sellInfo.currency}}</span>
<span ng-show="isFiat">{{sellInfo.qty}} BTC</span>
@ ${{sellInfo.price}} per BTC
</div>
</div>
</div>
</div>
<div class="info">
@ -64,23 +64,17 @@
</ion-content>
<click-to-accept
ng-disabled="!sellInfo || !wallet"
ng-click="sellConfirm()"
ng-if="!isCordova && sellInfo"
click-send-status="sendStatus"
has-wallet-chosen="wallet"
insufficient-funds="false"
no-matching-wallet="!sellInfo">
is-disabled="!sellInfo || !wallet">
Confirm sale
</click-to-accept>
<slide-to-accept
ng-disabled="!sellInfo || !wallet"
ng-if="isCordova && sellInfo"
slide-on-confirm="sellConfirm()"
slide-send-status="sendStatus"
has-wallet-chosen="wallet"
insufficient-funds="false"
no-matching-wallet="!sellInfo">
is-disabled="!sellInfo || !wallet">
Slide to sell
</slide-to-accept>
<slide-to-accept-success

View file

@ -84,23 +84,17 @@
</ion-content>
<click-to-accept
ng-disabled="!cardInfo || !wallet"
ng-click="topUpConfirm()"
ng-if="!isCordova && cardInfo"
click-send-status="sendStatus"
has-wallet-chosen="wallet"
insufficient-funds="insufficientFunds"
no-matching-wallet="!cardInfo">
is-disabled="!cardInfo || !wallet">
Add funds
</click-to-accept>
<slide-to-accept
ng-disabled="!cardInfo || !wallet"
ng-if="isCordova && cardInfo"
slide-on-confirm="topUpConfirm()"
slide-send-status="sendStatus"
has-wallet-chosen="wallet"
insufficient-funds="insufficientFunds"
no-matching-wallet="!cardInfo">
is-disabled="!cardInfo || !wallet">
Slide to confirm
</slide-to-accept>
<slide-to-accept-success