|
|
|
|
@@ -73,7 +73,7 @@
|
|
|
|
|
<div class="row">
|
|
|
|
|
<div class="col">
|
|
|
|
|
<ng-container *ngIf="(etaInfo$ | async) as etaInfo; else loadingEstimate">
|
|
|
|
|
<small class="form-text checkout-text mb-2" i18n="accelerator.hashrate-percentage-description">Your transaction will be prioritized by up to <strong>{{ etaInfo.hashratePercentage | number : '1.1-1' }}%</strong> of miners.</small>
|
|
|
|
|
<small class="form-text checkout-text mb-2"><ng-container *ngTemplateOutlet="prioritizedBy; context: {$implicit:etaInfo.hashratePercentage}"></ng-container></small>
|
|
|
|
|
<small class="form-text checkout-text mb-2" i18n="accelerator.time-estimate-description">This will reduce your expected waiting time until the first confirmation to <strong><app-time kind="within" [time]="etaInfo.acceleratedETA" [fastRender]="false" [fixedRender]="true"></app-time></strong></small>
|
|
|
|
|
</ng-container>
|
|
|
|
|
</div>
|
|
|
|
|
@@ -256,7 +256,7 @@
|
|
|
|
|
<hr>
|
|
|
|
|
<div class="row mt-2 mb-2 text-center">
|
|
|
|
|
<div class="col-sm d-flex flex-column">
|
|
|
|
|
<button type="button" class="mt-1 btn btn-secondary btn-sm rounded-pill align-self-center" style="width: 200px" (click)="moveToStep('summary')">Go Back</button>
|
|
|
|
|
<button type="button" class="mt-1 btn btn-secondary btn-sm rounded-pill align-self-center" style="width: 200px" (click)="moveToStep('summary')" i18n="go-back">Go back</button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
@@ -287,12 +287,12 @@
|
|
|
|
|
<div class="form-group form-check mb-2">
|
|
|
|
|
<input type="radio" [checked]="selectedOption === 'wait'" class="form-check-input" id="wait" name="accel" (change)="selectedOptionChanged($event)">
|
|
|
|
|
<label class="form-check-label d-flex flex-column" for="wait">
|
|
|
|
|
<span class="font-weight-bold">Wait</span>
|
|
|
|
|
<span class="font-weight-bold" i18n="accelerator.wait">Wait</span>
|
|
|
|
|
@if (eta.blocks < 7) {
|
|
|
|
|
<span class="checkout-text">Confirmation expected <app-time kind="within" [time]="eta.time" [fastRender]="false" [fixedRender]="true"></app-time></span>
|
|
|
|
|
<span class="checkout-text"><ng-container i18n="accelerator.confirmation-expected">Confirmation expected</ng-container> <app-time kind="within" [time]="eta.time" [fastRender]="false" [fixedRender]="true"></app-time></span>
|
|
|
|
|
} @else {
|
|
|
|
|
<span class="checkout-text">
|
|
|
|
|
<span>Confirmation expected within several hours</span>
|
|
|
|
|
<span i18n="accelerator.confirmation-expected-within-hours">Confirmation expected within several hours</span>
|
|
|
|
|
</span>
|
|
|
|
|
}
|
|
|
|
|
</label>
|
|
|
|
|
@@ -322,7 +322,7 @@
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="pie d-none d-lg-flex">
|
|
|
|
|
<small class="form-text checkout-text mb-2" i18n="accelerator.hashrate-percentage-description">Your transaction will be prioritized by up to {{ etaInfo.hashratePercentage | number : '1.1-1' }}% of miners.</small>
|
|
|
|
|
<small class="form-text checkout-text mb-2"><ng-container *ngTemplateOutlet="prioritizedBy; context: {$implicit:etaInfo.hashratePercentage}"></ng-container></small>
|
|
|
|
|
<app-active-acceleration-box [miningStats]="miningStats" [pools]="estimate.pools" [chartOnly]="true"></app-active-acceleration-box>
|
|
|
|
|
</div>
|
|
|
|
|
<ng-container *ngTemplateOutlet="accelerateButton"></ng-container>
|
|
|
|
|
@@ -347,24 +347,24 @@
|
|
|
|
|
<span><ng-container *ngTemplateOutlet="accelerateTo; context: {$implicit:(userBid + estimate.txSummary.effectiveFee) / estimate.txSummary.effectiveVsize}"></ng-container></span>
|
|
|
|
|
<span class="checkout-text">
|
|
|
|
|
@if (!calculating) {
|
|
|
|
|
For an additional <app-fiat [value]="cost"></app-fiat> (<span><small style="font-family: monospace;">{{ cost | number }}</small> <span class="symbol" i18n="shared.sats">sats</span></span>)
|
|
|
|
|
<ng-container i18n="accelerator.for-an-additional-cost">For an additional</ng-container> <app-fiat [value]="cost"></app-fiat> (<span><small style="font-family: monospace;">{{ cost | number }}</small> <span class="symbol" i18n="shared.sats">sats</span></span>)
|
|
|
|
|
} @else {
|
|
|
|
|
<span class="estimating">Calculating cost...</span>
|
|
|
|
|
}
|
|
|
|
|
</span>
|
|
|
|
|
<span class="checkout-text" *ngIf="(etaInfo$ | async) as etaInfo">
|
|
|
|
|
Reducing expected confirmation time to <app-time kind="within" [time]="etaInfo.acceleratedETA" [fastRender]="false" [fixedRender]="true"></app-time>
|
|
|
|
|
<ng-container i18n="accelerator.reducing-expected-confirmation-time">Reducing expected confirmation time to <app-time kind="within" [time]="etaInfo.acceleratedETA" [fastRender]="false" [fixedRender]="true"></app-time></ng-container>
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md pie d-none d-md-flex" *ngIf="!forceMobile">
|
|
|
|
|
<small class="form-text checkout-text mb-2" i18n="accelerator.hashrate-percentage-description" *ngIf="(etaInfo$ | async) as etaInfo">Your transaction will be prioritized by up to {{ etaInfo.hashratePercentage | number : '1.1-1' }}% of miners.</small>
|
|
|
|
|
<small class="form-text checkout-text mb-2" *ngIf="(etaInfo$ | async) as etaInfo"><ng-container *ngTemplateOutlet="prioritizedBy; context: {$implicit:etaInfo.hashratePercentage}"></ng-container></small>
|
|
|
|
|
<app-active-acceleration-box [miningStats]="miningStats" [pools]="estimate.pools" [chartOnly]="true"></app-active-acceleration-box>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="payment-area mt-2 p-2" [class.disabled]="error || showSuccess" style="font-size: 14px;">
|
|
|
|
|
<div class="row text-center justify-content-center mx-2">
|
|
|
|
|
<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 i18n="accelerator.payment-to-mempool-space">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>
|
|
|
|
|
@if (canPayWithBalance || !(canPayWithBitcoin || canPayWithCashapp)) {
|
|
|
|
|
<div class="row">
|
|
|
|
|
@@ -380,10 +380,10 @@
|
|
|
|
|
@if (canPayWithBitcoin) {
|
|
|
|
|
<div class="col-sm text-center d-flex flex-column justify-content-center align-items-center">
|
|
|
|
|
@if (invoice) {
|
|
|
|
|
<p>Pay <span><small style="font-family: monospace;">{{ ((invoice.btcDue * 100_000_000) || cost) | number }}</small> <span class="symbol" i18n="shared.sats">sats</span></span></p>
|
|
|
|
|
<p><ng-container i18n="transaction.pay|Pay button label">Pay</ng-container> <span><small style="font-family: monospace;">{{ ((invoice.btcDue * 100_000_000) || cost) | number }}</small> <span class="symbol" i18n="shared.sats">sats</span></span></p>
|
|
|
|
|
<app-bitcoin-invoice style="width: 100%;" [invoice]="invoice" [invoiceId]="invoice.btcpayInvoiceId" [minimal]="true" (completed)="bitcoinPaymentCompleted()"></app-bitcoin-invoice>
|
|
|
|
|
} @else {
|
|
|
|
|
<p>Loading invoice...</p>
|
|
|
|
|
<p i18n="accelerator.loading-invoice">Loading invoice...</p>
|
|
|
|
|
<div class="d-flex align-items-center justify-content-center" style="width: 100%; height: 292px;">
|
|
|
|
|
<div class="m-4 spinner-border text-light" style="width: 25px; height: 25px"></div>
|
|
|
|
|
</div>
|
|
|
|
|
@@ -397,7 +397,7 @@
|
|
|
|
|
}
|
|
|
|
|
@if (canPayWithCashapp) {
|
|
|
|
|
<div class="col-sm text-center d-flex flex-column justify-content-center align-items-center">
|
|
|
|
|
<p>Pay <app-fiat [value]="cost"></app-fiat> with</p>
|
|
|
|
|
<p><ng-container i18n="transaction.pay|Pay button label">Pay</ng-container> <app-fiat [value]="cost"></app-fiat> with</p>
|
|
|
|
|
<img class="paymentMethod mx-2" src="/resources/cash-app.svg" height=55 (click)="moveToStep('cashapp')">
|
|
|
|
|
</div>
|
|
|
|
|
}
|
|
|
|
|
@@ -418,21 +418,21 @@
|
|
|
|
|
<hr>
|
|
|
|
|
<div class="row mt-2 mb-2 text-center">
|
|
|
|
|
<div class="col-sm d-flex flex-column">
|
|
|
|
|
<button type="button" class="mt-1 btn btn-secondary btn-sm rounded-pill align-self-center" style="width: 200px" (click)="moveToStep('summary')">Go Back</button>
|
|
|
|
|
<button type="button" class="mt-1 btn btn-secondary btn-sm rounded-pill align-self-center" style="width: 200px" (click)="moveToStep('summary')" i18n="go-back">Go back</button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
} @else if (step === 'cashapp') {
|
|
|
|
|
<!-- Show checkout page -->
|
|
|
|
|
<div class="row mb-md-1 text-center">
|
|
|
|
|
<div class="col-sm" id="confirm-payment-title">
|
|
|
|
|
<h1 style="font-size: larger;"><ng-content select="[slot='checkout-title']"></ng-content><span class="default-slot">Confirm your payment</span></h1>
|
|
|
|
|
<h1 style="font-size: larger;"><ng-content select="[slot='checkout-title']"></ng-content><span class="default-slot" i18n="accelerator.confirm-your-payment">Confirm your payment</span></h1>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="row text-center">
|
|
|
|
|
<div class="col-sm">
|
|
|
|
|
<div class="form-group w-100" style="font-size: 14px">
|
|
|
|
|
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>
|
|
|
|
|
<ng-container i18n="accelerator.payment-to-mempool-space">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></ng-container>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
@@ -441,11 +441,11 @@
|
|
|
|
|
<div class="row text-center mt-1">
|
|
|
|
|
<div class="col-sm">
|
|
|
|
|
<div class="form-group w-100">
|
|
|
|
|
<span><u><strong>Total additional cost</strong></u><br>
|
|
|
|
|
<span><u><strong i18n="accelerator.total-additional-cost">Total additional cost</strong></u><br>
|
|
|
|
|
<span style="font-size: 16px" class="d-block mt-2">
|
|
|
|
|
Pay
|
|
|
|
|
<ng-container i18n="transaction.pay|Pay button label">Pay</ng-container>
|
|
|
|
|
<strong><app-fiat [value]="cost"></app-fiat></strong>
|
|
|
|
|
with
|
|
|
|
|
<ng-container i18n="accelerator.pay-with">with</ng-container>
|
|
|
|
|
</span>
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
@@ -459,7 +459,7 @@
|
|
|
|
|
<div id="cash-app-pay" class="d-inline-block" [style]="loadingCashapp ? 'opacity: 0; width: 0px; height: 0px; pointer-events: none;' : ''"></div>
|
|
|
|
|
@if (loadingCashapp) {
|
|
|
|
|
<div display="d-flex flex-row justify-content-center">
|
|
|
|
|
<span>Loading payment method...</span>
|
|
|
|
|
<span i18n="accelerator.loading-payment-method">Loading payment method...</span>
|
|
|
|
|
<div class="ml-2 spinner-border text-light" style="width: 25px; height: 25px"></div>
|
|
|
|
|
</div>
|
|
|
|
|
}
|
|
|
|
|
@@ -470,14 +470,14 @@
|
|
|
|
|
<hr>
|
|
|
|
|
<div class="row mt-2 mb-2 text-center">
|
|
|
|
|
<div class="col-sm d-flex flex-column">
|
|
|
|
|
<button type="button" class="mt-1 btn btn-secondary btn-sm rounded-pill align-self-center" style="width: 200px" (click)="moveToStep('checkout')">Go Back</button>
|
|
|
|
|
<button type="button" class="mt-1 btn btn-secondary btn-sm rounded-pill align-self-center" style="width: 200px" (click)="moveToStep('checkout')" i18n="go-back">Go back</button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
}
|
|
|
|
|
@else if (step === 'processing') {
|
|
|
|
|
<div class="row mb-1 text-center">
|
|
|
|
|
<div class="col-sm">
|
|
|
|
|
<h1 style="font-size: larger;"><ng-content select="[slot='processing-title']"></ng-content><span class="default-slot">Confirming your payment</span></h1>
|
|
|
|
|
<h1 style="font-size: larger;"><ng-content select="[slot='processing-title']"></ng-content><span class="default-slot" i18n="accelerator.confirming-your-payment">Confirming your payment</span></h1>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
@@ -487,7 +487,7 @@
|
|
|
|
|
<!-- Processing payment -->
|
|
|
|
|
<div id="cash-app-pay" class="d-inline-block" [style]="'opacity: 0; width: 0px; height: 0px; pointer-events: none;'"></div>
|
|
|
|
|
<div display="d-flex flex-row justify-content-center">
|
|
|
|
|
<span>We are processing your payment...</span>
|
|
|
|
|
<span i18n="accelerator.payment-processing">We are processing your payment...</span>
|
|
|
|
|
<div class="ml-2 spinner-border text-light" style="width: 25px; height: 25px"></div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
@@ -497,14 +497,14 @@
|
|
|
|
|
@else if (step === 'paid') {
|
|
|
|
|
<div class="row mb-1 text-center">
|
|
|
|
|
<div class="col-sm">
|
|
|
|
|
<h1 style="font-size: larger;"><ng-content select="[slot='accelerating-title']"></ng-content><span class="default-slot">Accelerating your transaction</span></h1>
|
|
|
|
|
<h1 style="font-size: larger;"><ng-content select="[slot='accelerating-title']"></ng-content><span class="default-slot" i18n="accelerator.accelerating-your-transaction">Accelerating your transaction</span></h1>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="row text-center mt-1">
|
|
|
|
|
<div class="col-sm">
|
|
|
|
|
<div class="d-flex flex-row justify-content-center align-items-center">
|
|
|
|
|
<span>Confirming your acceleration with our mining pool partners...</span>
|
|
|
|
|
<span i18n="accelerator.confirming-acceleration-with-miners">Confirming your acceleration with our mining pool partners...</span>
|
|
|
|
|
<div class="ml-2 spinner-border text-light" style="width: 25px; height: 25px"></div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
@@ -514,11 +514,11 @@
|
|
|
|
|
|
|
|
|
|
<ng-template #accelerateOption let-etaInfo="etaInfo">
|
|
|
|
|
<span><ng-container *ngTemplateOutlet="accelerateTo; context: {$implicit:(userBid + estimate.txSummary.effectiveFee) / estimate.txSummary.effectiveVsize}"></ng-container> <ng-container *ngTemplateOutlet="customizeButton"></ng-container></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"><ng-container i18n="accelerator.confirmation-expected">Confirmation expected</ng-container> <app-time kind="within" [time]="etaInfo.acceleratedETA" [fastRender]="false" [fixedRender]="true"></app-time><br>
|
|
|
|
|
@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> (<span><small style="font-family: monospace;">{{ cost | number }}</small> <span class="symbol" i18n="shared.sats">sats</span></span>)
|
|
|
|
|
} @else {
|
|
|
|
|
<span class="estimating">Calculating cost...</span>
|
|
|
|
|
<span class="estimating" i18n="accelerator.calculating-cost">Calculating cost...</span>
|
|
|
|
|
}
|
|
|
|
|
</span>
|
|
|
|
|
</ng-template>
|
|
|
|
|
@@ -533,7 +533,7 @@
|
|
|
|
|
@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.disabled]="!canPay || calculating || (!advancedEnabled && selectedOption !== 'accel')" style="width: 200px" (click)="moveToStep('checkout')">
|
|
|
|
|
<img src="/resources/mempool-accelerator-sparkles-light.svg" height="20" class="mr-2" style="margin-left: -10px">
|
|
|
|
|
<span>Accelerate</span>
|
|
|
|
|
<span i18n="transaction.accelerate|Accelerate button label">Accelerate</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">
|
|
|
|
|
@@ -547,7 +547,7 @@
|
|
|
|
|
@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.disabled]="!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>
|
|
|
|
|
<span i18n="transaction.pay|Pay button label">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">
|
|
|
|
|
@@ -555,4 +555,6 @@
|
|
|
|
|
<span>Coming soon</span>
|
|
|
|
|
</button>
|
|
|
|
|
}
|
|
|
|
|
</ng-template>
|
|
|
|
|
</ng-template>
|
|
|
|
|
|
|
|
|
|
<ng-template #prioritizedBy let-i i18n="accelerator.hashrate-percentage-description">Your transaction will be prioritized by up to <strong>{{ i | number : '1.1-1' }}%</strong> of miners.</ng-template>
|
|
|
|
|
|