[accelerator] remove safety catch, always show checkout
This commit is contained in:
parent
69b346ab00
commit
da4c2f5307
@ -283,11 +283,9 @@
|
|||||||
<form [class.disabled]="error || showSuccess">
|
<form [class.disabled]="error || showSuccess">
|
||||||
<div class="row summary-row">
|
<div class="row summary-row">
|
||||||
<div>
|
<div>
|
||||||
<div class="form-group form-check mb-2">
|
<div class="mb-2">
|
||||||
<div class="float-right"><ng-container *ngTemplateOutlet="customizeButton"></ng-container></div>
|
<div class="d-flex flex-column" for="accel">
|
||||||
<input type="checkbox" [checked]="armed" class="form-check-input" [class.error-shake]="misfire" id="accel" name="accel" (change)="armed = !armed; misfire = false">
|
<span><b>Accelerate</b> to ~{{ ((userBid + estimate.txSummary.effectiveFee) / estimate.txSummary.effectiveVsize) | number : '1.0-0' }} sat/vB <ng-container *ngTemplateOutlet="customizeButton"></ng-container></span>
|
||||||
<label class="form-check-label d-flex flex-column" for="accel">
|
|
||||||
<span><b>Accelerate</b> to ~{{ ((userBid + estimate.txSummary.effectiveFee) / estimate.txSummary.effectiveVsize) | number : '1.0-0' }} sat/vB</span>
|
|
||||||
<span class="checkout-text">Confirmation expected <app-time kind="within" [time]="etaInfo.acceleratedETA" [fastRender]="false" [fixedRender]="true"></app-time><br>
|
<span class="checkout-text">Confirmation expected <app-time kind="within" [time]="etaInfo.acceleratedETA" [fastRender]="false" [fixedRender]="true"></app-time><br>
|
||||||
@if (!calculating) {
|
@if (!calculating) {
|
||||||
<app-fiat [value]="cost"></app-fiat>fee (<span><small style="font-family: monospace;">{{ cost | number }}</small> <span class="symbol" i18n="shared.sats">sats</span></span>)
|
<app-fiat [value]="cost"></app-fiat>fee (<span><small style="font-family: monospace;">{{ cost | number }}</small> <span class="symbol" i18n="shared.sats">sats</span></span>)
|
||||||
@ -295,7 +293,7 @@
|
|||||||
<span class="estimating">Calculating cost...</span>
|
<span class="estimating">Calculating cost...</span>
|
||||||
}
|
}
|
||||||
</span>
|
</span>
|
||||||
</label>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="pie d-none d-lg-flex" *ngIf="!forceMobile">
|
<div class="pie d-none d-lg-flex" *ngIf="!forceMobile">
|
||||||
@ -338,18 +336,20 @@
|
|||||||
<app-active-acceleration-box [miningStats]="miningStats" [pools]="estimate.pools" [chartOnly]="true"></app-active-acceleration-box>
|
<app-active-acceleration-box [miningStats]="miningStats" [pools]="estimate.pools" [chartOnly]="true"></app-active-acceleration-box>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@if (canPayWithBalance || !(canPayWithBitcoin || canPayWithCashapp)) {
|
<div class="payment-area mt-2 p-2" [class.disabled]="error || showSuccess" style="font-size: 14px;">
|
||||||
<div class="d-flex justify-content-center" [class.grayOut]="!canPayWithBalance || error || showSuccess">
|
<div class="row text-center justify-content-center mx-2">
|
||||||
<button type="button" class="mt-1 btn btn-purple rounded-pill align-self-center d-flex flex-row justify-content-center align-items-center" style="width: 200px" (click)="accelerate()">
|
|
||||||
<img src="/resources/mempool-accelerator-sparkles-light.svg" height="20" class="mr-2" style="margin-left: -10px">
|
|
||||||
<span>Accelerate</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
} @else {
|
|
||||||
<div class="payment-area mt-2 p-2" [class.disabled]="error || showSuccess">
|
|
||||||
<div class="row text-center justify-content-center mx-2" style="font-size: 14px;">
|
|
||||||
<p>Payment to mempool.space for acceleration of txid <a [routerLink]="'/tx/' + tx.txid" target="_blank"> {{ tx.txid.substr(0, 10) }}..{{ tx.txid.substr(-10) }}</a></p>
|
<p>Payment to mempool.space for acceleration of txid <a [routerLink]="'/tx/' + tx.txid" target="_blank"> {{ tx.txid.substr(0, 10) }}..{{ tx.txid.substr(-10) }}</a></p>
|
||||||
</div>
|
</div>
|
||||||
|
@if (canPayWithBalance || !(canPayWithBitcoin || canPayWithCashapp)) {
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm text-center d-flex flex-column justify-content-center align-items-center">
|
||||||
|
<p>Your account will be debited no more than <span><small style="font-family: monospace;">{{ cost | number }}</small> <span class="symbol" i18n="shared.sats">sats</span></span></p>
|
||||||
|
<div class="d-flex justify-content-center" [class.grayOut]="!canPayWithBalance || error || showSuccess">
|
||||||
|
<ng-container *ngTemplateOutlet="accountPayButton"></ng-container>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
} @else {
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@if (canPayWithBitcoin) {
|
@if (canPayWithBitcoin) {
|
||||||
<div class="col-sm text-center d-flex flex-column justify-content-center align-items-center">
|
<div class="col-sm text-center d-flex flex-column justify-content-center align-items-center">
|
||||||
@ -376,8 +376,8 @@
|
|||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
}
|
}
|
||||||
|
</div>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-template #loadingCheckout>
|
<ng-template #loadingCheckout>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -487,12 +487,12 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ng-template #customizeButton>
|
<ng-template #customizeButton>
|
||||||
<button type="button" *ngIf="advancedEnabled" class="btn btn-sm btn-outline-info btn-small-height ml-3" (click)="moveToStep('quote')" i18n="accelerator.customize">customize</button>
|
<button type="button" *ngIf="advancedEnabled" class="btn btn-sm btn-outline-info btn-small-height ml-2" (click)="moveToStep('quote')" i18n="accelerator.customize">customize</button>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
|
|
||||||
<ng-template #accelerateButton>
|
<ng-template #accelerateButton>
|
||||||
@if (isLoggedIn() || canPayWithBitcoin || canPayWithCashapp) {
|
@if (isLoggedIn() || canPayWithBitcoin || canPayWithCashapp) {
|
||||||
<button type="button" class="mt-1 btn btn-purple rounded-pill align-self-center d-flex flex-row justify-content-center align-items-center" [class.grayOut]="!canPay || (!armed && step === 'summary') || calculating" style="width: 200px" (click)="accelerate()">
|
<button type="button" class="mt-1 btn btn-purple rounded-pill align-self-center d-flex flex-row justify-content-center align-items-center" [class.grayOut]="!canPay || calculating" style="width: 200px" (click)="moveToStep('checkout')">
|
||||||
<img src="/resources/mempool-accelerator-sparkles-light.svg" height="20" class="mr-2" style="margin-left: -10px">
|
<img src="/resources/mempool-accelerator-sparkles-light.svg" height="20" class="mr-2" style="margin-left: -10px">
|
||||||
<span>Accelerate</span>
|
<span>Accelerate</span>
|
||||||
</button>
|
</button>
|
||||||
@ -503,3 +503,17 @@
|
|||||||
</button>
|
</button>
|
||||||
}
|
}
|
||||||
</ng-template>
|
</ng-template>
|
||||||
|
|
||||||
|
<ng-template #accountPayButton>
|
||||||
|
@if (isLoggedIn()) {
|
||||||
|
<button type="button" class="mt-1 btn btn-purple rounded-pill align-self-center d-flex flex-row justify-content-center align-items-center" [class.grayOut]="!canPay || calculating" style="width: 200px" (click)="accelerateWithMempoolAccount()">
|
||||||
|
<img src="/resources/mempool-accelerator-sparkles-light.svg" height="20" class="mr-2" style="margin-left: -10px">
|
||||||
|
<span>Pay</span>
|
||||||
|
</button>
|
||||||
|
} @else {
|
||||||
|
<button type="button" class="mt-1 btn btn-purple rounded-pill align-self-center d-flex flex-row justify-content-center align-items-center disabled" style="width: 200px">
|
||||||
|
<img src="/resources/mempool-accelerator-sparkles-light.svg" height="20" class="mr-2" style="margin-left: -10px">
|
||||||
|
<span>Coming soon</span>
|
||||||
|
</button>
|
||||||
|
}
|
||||||
|
</ng-template>
|
@ -189,22 +189,3 @@
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes box-shake {
|
|
||||||
0% { transform: rotate(0deg); }
|
|
||||||
10% { transform: rotate(-8deg); }
|
|
||||||
20% { transform: rotate(8deg); }
|
|
||||||
30% { transform: rotate(-8deg); }
|
|
||||||
40% { transform: rotate(8deg); }
|
|
||||||
50% { transform: rotate(-8deg); }
|
|
||||||
60% { transform: rotate(8deg); }
|
|
||||||
70% { transform: rotate(-8deg); }
|
|
||||||
80% { transform: rotate(8deg); }
|
|
||||||
90% { transform: rotate(-8deg); }
|
|
||||||
100% { transform: rotate(0deg); }
|
|
||||||
}
|
|
||||||
|
|
||||||
.error-shake {
|
|
||||||
box-shadow: 0 0 10px 2px var(--danger);
|
|
||||||
animation: box-shake 1.5s ease-in-out;
|
|
||||||
}
|
|
@ -62,8 +62,6 @@ export class AccelerateCheckout implements OnInit, OnDestroy {
|
|||||||
@Output() changeMode = new EventEmitter<boolean>();
|
@Output() changeMode = new EventEmitter<boolean>();
|
||||||
|
|
||||||
calculating = true;
|
calculating = true;
|
||||||
armed = false;
|
|
||||||
misfire = false;
|
|
||||||
error = '';
|
error = '';
|
||||||
math = Math;
|
math = Math;
|
||||||
isMobile: boolean = window.innerWidth <= 767.98;
|
isMobile: boolean = window.innerWidth <= 767.98;
|
||||||
@ -150,7 +148,6 @@ export class AccelerateCheckout implements OnInit, OnDestroy {
|
|||||||
|
|
||||||
moveToStep(step: CheckoutStep) {
|
moveToStep(step: CheckoutStep) {
|
||||||
this._step = step;
|
this._step = step;
|
||||||
this.misfire = false;
|
|
||||||
if (!this.estimate && ['quote', 'summary', 'checkout'].includes(this.step)) {
|
if (!this.estimate && ['quote', 'summary', 'checkout'].includes(this.step)) {
|
||||||
this.fetchEstimate();
|
this.fetchEstimate();
|
||||||
}
|
}
|
||||||
@ -265,28 +262,13 @@ export class AccelerateCheckout implements OnInit, OnDestroy {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Advanced mode acceleration button clicked
|
|
||||||
*/
|
|
||||||
accelerate(): void {
|
|
||||||
if (this.canPay && !this.calculating) {
|
|
||||||
if ((!this.armed && this.step === 'summary')) {
|
|
||||||
this.misfire = true;
|
|
||||||
} else {
|
|
||||||
if (this.isLoggedIn()) {
|
|
||||||
this.accelerateWithMempoolAccount();
|
|
||||||
} else {
|
|
||||||
this.armed = true;
|
|
||||||
this.moveToStep('checkout');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Account-based acceleration request
|
* Account-based acceleration request
|
||||||
*/
|
*/
|
||||||
accelerateWithMempoolAccount(): void {
|
accelerateWithMempoolAccount(): void {
|
||||||
|
if (!this.canPay || this.calculating) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (this.accelerationSubscription) {
|
if (this.accelerationSubscription) {
|
||||||
this.accelerationSubscription.unsubscribe();
|
this.accelerationSubscription.unsubscribe();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user