From 481859bc8f39b236fd03132d36bf74cb7372f081 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Thu, 25 Jul 2024 15:54:24 +0200 Subject: [PATCH 1/9] [accelerator] add support for Google Pay payment --- .../accelerate-checkout.component.html | 16 ++- .../accelerate-checkout.component.ts | 132 ++++++++++++++++-- .../src/app/services/services-api.service.ts | 4 + frontend/src/resources/google-pay.png | Bin 0 -> 34146 bytes 4 files changed, 138 insertions(+), 14 deletions(-) create mode 100644 frontend/src/resources/google-pay.png diff --git a/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.html b/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.html index 82391dc89..04b76055c 100644 --- a/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.html +++ b/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.html @@ -389,13 +389,13 @@ } - @if (canPayWithCashapp || canPayWithApplePay) { + @if (canPayWithCashapp || canPayWithApplePay || canPayWithGooglePay) {

OR

} } - @if (canPayWithCashapp || canPayWithApplePay) { + @if (canPayWithCashapp || canPayWithApplePay || canPayWithGooglePay) {

Pay  with

@if (canPayWithCashapp) { @@ -405,6 +405,10 @@ @if (canPayWithCashapp) {
} } + @if (canPayWithGooglePay) { + @if (canPayWithCashapp || canPayWithApplePay) {
} + + }
} @@ -427,7 +431,7 @@ - } @else if (step === 'cashapp' || step === 'applepay') { + } @else if (step === 'cashapp' || step === 'applepay' || step === 'googlepay') {
@@ -443,7 +447,7 @@
- @if (step === 'cashapp' && !loadingCashapp || step === 'applepay' && !loadingApplePay) { + @if (step === 'cashapp' && !loadingCashapp || step === 'applepay' && !loadingApplePay || step === 'googlepay' && !loadingGooglePay) {
@@ -466,8 +470,10 @@
} @else if (step === 'cashapp') {
+ } @else if (step === 'googlepay') { +
} - @if (loadingCashapp || loadingApplePay) { + @if (loadingCashapp || loadingApplePay || loadingGooglePay) {
Loading payment method...
diff --git a/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.ts b/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.ts index 71c46e2da..f2a2e6e7c 100644 --- a/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.ts +++ b/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.ts @@ -47,7 +47,7 @@ export const MIN_BID_RATIO = 1; export const DEFAULT_BID_RATIO = 2; export const MAX_BID_RATIO = 4; -type CheckoutStep = 'quote' | 'summary' | 'checkout' | 'cashapp' | 'applepay' | 'processing' | 'paid' | 'success'; +type CheckoutStep = 'quote' | 'summary' | 'checkout' | 'cashapp' | 'applepay' | 'googlepay' | 'processing' | 'paid' | 'success'; @Component({ selector: 'app-accelerate-checkout', @@ -62,6 +62,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { @Input() scrollEvent: boolean; @Input() cashappEnabled: boolean = true; @Input() applePayEnabled: boolean = false; + @Input() googlePayEnabled: boolean = true; @Input() advancedEnabled: boolean = false; @Input() forceMobile: boolean = false; @Input() showDetails: boolean = false; @@ -83,7 +84,6 @@ export class AccelerateCheckout implements OnInit, OnDestroy { private _step: CheckoutStep = 'summary'; simpleMode: boolean = true; - paymentMethod: 'cashapp' | 'btcpay'; timeoutTimer: any; authSubscription$: Subscription; @@ -112,11 +112,13 @@ export class AccelerateCheckout implements OnInit, OnDestroy { // square loadingCashapp = false; loadingApplePay = false; + loadingGooglePay = false; cashappError = false; cashappSubmit: any; payments: any; cashAppPay: any; applePay: any; + googlePay: any; conversionsSubscription: Subscription; conversions: any; @@ -228,6 +230,11 @@ export class AccelerateCheckout implements OnInit, OnDestroy { this.insertSquare(); this.setupSquare(); this.scrollToElementWithTimeout('confirm-title', 'center', 100); + } else if (this._step === 'googlepay' && this.googlePayEnabled) { + this.loadingGooglePay = true; + this.insertSquare(); + this.setupSquare(); + this.scrollToElementWithTimeout('confirm-title', 'center', 100); } else if (this._step === 'paid') { this.timePaid = Date.now(); this.timeoutTimer = setTimeout(() => { @@ -443,6 +450,8 @@ export class AccelerateCheckout implements OnInit, OnDestroy { await this.requestCashAppPayment(); } else if (this._step === 'applepay') { await this.requestApplePayPayment(); + } else if (this._step === 'googlepay') { + await this.requestGooglePayPayment(); } } catch (e) { console.debug('Error loading Square Payments', e); @@ -541,6 +550,92 @@ export class AccelerateCheckout implements OnInit, OnDestroy { ); } + /** + * GOOGLE PAY + */ + async requestGooglePayPayment() { + if (this.conversionsSubscription) { + this.conversionsSubscription.unsubscribe(); + } + + this.conversionsSubscription = this.stateService.conversions$.subscribe( + async (conversions) => { + this.conversions = conversions; + if (this.googlePay) { + this.googlePay.destroy(); + } + + const costUSD = this.cost / 100_000_000 * conversions.USD; + const paymentRequest = this.payments.paymentRequest({ + countryCode: 'US', + currencyCode: 'USD', + total: { + amount: costUSD.toFixed(2), + label: 'Total' + } + }); + this.googlePay = await this.payments.googlePay(paymentRequest , { + referenceId: `accelerator-${this.tx.txid.substring(0, 15)}-${Math.round(new Date().getTime() / 1000)}`, + }); + + await this.googlePay.attach(`#google-pay-button`, { + buttonType: 'pay', + onClick: (e) => { console.log(e, 'hi') } + }); + this.loadingGooglePay = false; + + document.getElementById('google-pay-button').addEventListener('click', async event => { + event.preventDefault(); + const tokenResult = await this.googlePay.tokenize(); + if (tokenResult?.status === 'OK') { + const card = tokenResult.details?.card; + if (!card || !card.brand || !card.expMonth || !card.expYear || !card.last4) { + console.error(`Cannot retreive payment card details`); + this.accelerateError = 'apple_pay_no_card_details'; + return; + } + const cardTag = md5(`${card.brand}${card.expMonth}${card.expYear}${card.last4}`.toLowerCase()); + this.servicesApiService.accelerateWithGooglePay$( + this.tx.txid, + tokenResult.token, + cardTag, + `accelerator-${this.tx.txid.substring(0, 15)}-${Math.round(new Date().getTime() / 1000)}`, + this.accelerationUUID + ).subscribe({ + next: () => { + this.audioService.playSound('ascend-chime-cartoon'); + if (this.googlePay) { + this.googlePay.destroy(); + } + setTimeout(() => { + this.moveToStep('paid'); + }, 1000); + }, + error: (response) => { + this.accelerateError = response.error; + if (!(response.status === 403 && response.error === 'not_available')) { + setTimeout(() => { + // Reset everything by reloading the page :D, can be improved + const urlParams = new URLSearchParams(window.location.search); + window.location.assign(window.location.toString().replace(`?cash_request_id=${urlParams.get('cash_request_id')}`, ``)); + }, 3000); + } + } + }); + } else { + let errorMessage = `Tokenization failed with status: ${tokenResult.status}`; + if (tokenResult.errors) { + errorMessage += ` and errors: ${JSON.stringify( + tokenResult.errors, + )}`; + } + throw new Error(errorMessage); + } + }); + } + ); + } + /** * CASHAPP */ @@ -566,18 +661,14 @@ export class AccelerateCheckout implements OnInit, OnDestroy { label: 'Total', pending: true, productUrl: `${redirectHostname}/tracker/${this.tx.txid}`, - }, - button: { shape: 'semiround', size: 'small', theme: 'light'} + } }); this.cashAppPay = await this.payments.cashAppPay(paymentRequest, { redirectURL: `${redirectHostname}/tracker/${this.tx.txid}`, - referenceId: `accelerator-${this.tx.txid.substring(0, 15)}-${Math.round(new Date().getTime() / 1000)}`, - button: { shape: 'semiround', size: 'small', theme: 'light'} + referenceId: `accelerator-${this.tx.txid.substring(0, 15)}-${Math.round(new Date().getTime() / 1000)}` }); - if (this.step === 'cashapp') { - await this.cashAppPay.attach(`#cash-app-pay`, { theme: 'light', size: 'small', shape: 'semiround' }) - } + await this.cashAppPay.attach(`#cash-app-pay`, { theme: 'light', size: 'small', shape: 'semiround' }) this.loadingCashapp = false; this.cashAppPay.addEventListener('ontokenization', event => { @@ -686,6 +777,13 @@ export class AccelerateCheckout implements OnInit, OnDestroy { return !!this.estimate?.availablePaymentMethods?.applePay; } + get couldPayWithGooglePay() { + if (!this.googlePayEnabled) { + return false; + } + return !!this.estimate?.availablePaymentMethods?.googlePay; + } + get couldPayWithBalance() { if (!this.hasAccessToBalanceMode) { return false; @@ -734,6 +832,22 @@ export class AccelerateCheckout implements OnInit, OnDestroy { return false; } + get canPayWithGooglePay() { + if (!this.googlePayEnabled || !this.conversions) { + return false; + } + + const paymentMethod = this.estimate?.availablePaymentMethods?.googlePay; + if (paymentMethod) { + const costUSD = (this.cost / 100_000_000 * this.conversions.USD); + if (costUSD >= paymentMethod.min && costUSD <= paymentMethod.max) { + return true; + } + } + + return false; + } + get canPayWithBalance() { if (!this.hasAccessToBalanceMode) { return false; diff --git a/frontend/src/app/services/services-api.service.ts b/frontend/src/app/services/services-api.service.ts index c26075198..919fc72da 100644 --- a/frontend/src/app/services/services-api.service.ts +++ b/frontend/src/app/services/services-api.service.ts @@ -141,6 +141,10 @@ export class ServicesApiServices { return this.httpClient.post(`${this.stateService.env.SERVICES_API}/accelerator/accelerate/applePay`, { txInput: txInput, cardTag: cardTag, token: token, referenceId: referenceId, accelerationUUID: accelerationUUID }); } + accelerateWithGooglePay$(txInput: string, token: string, cardTag: string, referenceId: string, accelerationUUID: string) { + return this.httpClient.post(`${this.stateService.env.SERVICES_API}/accelerator/accelerate/googlePay`, { txInput: txInput, cardTag: cardTag, token: token, referenceId: referenceId, accelerationUUID: accelerationUUID }); + } + getAccelerations$(): Observable { return this.httpClient.get(`${this.stateService.env.SERVICES_API}/accelerator/accelerations`); } diff --git a/frontend/src/resources/google-pay.png b/frontend/src/resources/google-pay.png new file mode 100644 index 0000000000000000000000000000000000000000..77b6a6574c925d5cd2f408b78993452263e17a8a GIT binary patch literal 34146 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 aBf{IdzfRh8_SnG4AxMhKeJ&B!|NcKUOg29N literal 0 HcmV?d00001 From d3e3650cac33a88403cccc3a4c80a02468cbefcc Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Thu, 25 Jul 2024 21:49:48 +0200 Subject: [PATCH 2/9] [accelerator] avoid premature square setup call --- .../accelerate-checkout.component.ts | 40 +++++++++---------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.ts b/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.ts index f2a2e6e7c..72dfc5de2 100644 --- a/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.ts +++ b/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.ts @@ -90,7 +90,6 @@ export class AccelerateCheckout implements OnInit, OnDestroy { auth: IAuth | null = null; // accelerator stuff - square: { appId: string, locationId: string}; accelerationUUID: string; accelerationSubscription: Subscription; difficultySubscription: Subscription; @@ -113,7 +112,6 @@ export class AccelerateCheckout implements OnInit, OnDestroy { loadingCashapp = false; loadingApplePay = false; loadingGooglePay = false; - cashappError = false; cashappSubmit: any; payments: any; cashAppPay: any; @@ -170,13 +168,6 @@ export class AccelerateCheckout implements OnInit, OnDestroy { this.moveToStep('summary'); } - this.servicesApiService.setupSquare$().subscribe(ids => { - this.square = { - appId: ids.squareAppId, - locationId: ids.squareLocationId - }; - }); - this.conversionsSubscription = this.stateService.conversions$.subscribe( async (conversions) => { this.conversions = conversions; @@ -443,20 +434,27 @@ export class AccelerateCheckout implements OnInit, OnDestroy { } async initSquare(): Promise { try { - //@ts-ignore - this.payments = window.Square.payments(this.square.appId, this.square.locationId) - const urlParams = new URLSearchParams(window.location.search); - if (this._step === 'cashapp' || urlParams.get('cash_request_id')) { - await this.requestCashAppPayment(); - } else if (this._step === 'applepay') { - await this.requestApplePayPayment(); - } else if (this._step === 'googlepay') { - await this.requestGooglePayPayment(); - } + this.servicesApiService.setupSquare$().subscribe({ + next: async (ids) => { + //@ts-ignore + this.payments = window.Square.payments(ids.squareAppId, ids.squareLocationId) + const urlParams = new URLSearchParams(window.location.search); + if (this._step === 'cashapp' || urlParams.get('cash_request_id')) { + await this.requestCashAppPayment(); + } else if (this._step === 'applepay') { + await this.requestApplePayPayment(); + } else if (this._step === 'googlepay') { + await this.requestGooglePayPayment(); + } + }, + error: () => { + console.debug('Error loading Square Payments'); + this.accelerateError = 'cannot_setup_square'; + } + }); } catch (e) { console.debug('Error loading Square Payments', e); - this.cashappError = true; - return; + this.accelerateError = 'cannot_setup_square'; } } From 845123fc636ec62efc30b58be090115066c65743 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Thu, 25 Jul 2024 23:04:53 +0200 Subject: [PATCH 3/9] [services] getJWT call returns nothing if non official --- frontend/src/app/services/services-api.service.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frontend/src/app/services/services-api.service.ts b/frontend/src/app/services/services-api.service.ts index c26075198..d12fc959f 100644 --- a/frontend/src/app/services/services-api.service.ts +++ b/frontend/src/app/services/services-api.service.ts @@ -118,6 +118,9 @@ export class ServicesApiServices { } getJWT$() { + if (!this.stateService.env.OFFICIAL_MEMPOOL_SPACE) { + return of(null); + } return this.httpClient.get(`${this.stateService.env.SERVICES_API}/auth/getJWT`); } From 3c7deafffdeea2e3364e2a7836fd07838c311c6d Mon Sep 17 00:00:00 2001 From: natsoni Date: Fri, 26 Jul 2024 00:00:14 +0200 Subject: [PATCH 4/9] Fix loading spinner z-index --- .../acceleration-fees-graph.component.ts | 2 +- .../components/address-graph/address-graph.component.ts | 2 +- .../block-fee-rates-graph.component.ts | 2 +- .../block-fees-graph/block-fees-graph.component.ts | 2 +- .../block-fees-subsidy-graph.component.ts | 2 +- .../block-health-graph/block-health-graph.component.ts | 2 +- .../block-rewards-graph/block-rewards-graph.component.ts | 2 +- .../block-sizes-weights-graph.component.ts | 2 +- .../difficulty-adjustments-table.components.ts | 2 +- .../components/hashrate-chart/hashrate-chart.component.ts | 2 +- .../hashrate-chart-pools.component.scss | 2 +- .../hashrate-chart-pools.component.ts | 2 +- .../incoming-transactions-graph.component.ts | 2 +- .../lbtc-pegs-graph/lbtc-pegs-graph.component.ts | 2 +- .../reserves-ratio/reserves-ratio.component.scss | 2 +- .../loading-indicator/loading-indicator.component.scss | 2 +- .../components/mempool-graph/mempool-graph.component.ts | 2 +- .../components/pool-ranking/pool-ranking.component.scss | 2 +- frontend/src/app/components/pool/pool.component.scss | 2 +- .../src/app/components/tracker/tracker.component.scss | 2 +- frontend/src/app/lightning/channel/channel.component.scss | 2 +- .../lightning/node-fee-chart/node-fee-chart.component.ts | 2 +- .../node-statistics-chart.component.ts | 2 +- .../nodes-channels-map/nodes-channels-map.component.scss | 8 ++++---- .../lightning/nodes-channels/node-channels.component.scss | 2 +- .../src/app/lightning/nodes-map/nodes-map.component.scss | 2 +- .../nodes-networks-chart.component.ts | 2 +- .../nodes-per-isp-chart.component.scss | 2 +- .../lightning-statistics-chart.component.ts | 2 +- 29 files changed, 32 insertions(+), 32 deletions(-) diff --git a/frontend/src/app/components/acceleration/acceleration-fees-graph/acceleration-fees-graph.component.ts b/frontend/src/app/components/acceleration/acceleration-fees-graph/acceleration-fees-graph.component.ts index b5e575409..d78b663a4 100644 --- a/frontend/src/app/components/acceleration/acceleration-fees-graph/acceleration-fees-graph.component.ts +++ b/frontend/src/app/components/acceleration/acceleration-fees-graph/acceleration-fees-graph.component.ts @@ -23,7 +23,7 @@ import { RelativeUrlPipe } from '../../../shared/pipes/relative-url/relative-url position: absolute; top: 50%; left: calc(50% - 15px); - z-index: 100; + z-index: 99; } `], changeDetection: ChangeDetectionStrategy.OnPush, diff --git a/frontend/src/app/components/address-graph/address-graph.component.ts b/frontend/src/app/components/address-graph/address-graph.component.ts index 9793c6a2e..6d40a8ebb 100644 --- a/frontend/src/app/components/address-graph/address-graph.component.ts +++ b/frontend/src/app/components/address-graph/address-graph.component.ts @@ -30,7 +30,7 @@ const periodSeconds = { position: absolute; top: 50%; left: calc(50% - 15px); - z-index: 100; + z-index: 99; } `], changeDetection: ChangeDetectionStrategy.OnPush, diff --git a/frontend/src/app/components/block-fee-rates-graph/block-fee-rates-graph.component.ts b/frontend/src/app/components/block-fee-rates-graph/block-fee-rates-graph.component.ts index ba3489e17..c533626e7 100644 --- a/frontend/src/app/components/block-fee-rates-graph/block-fee-rates-graph.component.ts +++ b/frontend/src/app/components/block-fee-rates-graph/block-fee-rates-graph.component.ts @@ -23,7 +23,7 @@ import { ActivatedRoute, Router } from '@angular/router'; position: absolute; top: 50%; left: calc(50% - 15px); - z-index: 100; + z-index: 99; } `], changeDetection: ChangeDetectionStrategy.OnPush, diff --git a/frontend/src/app/components/block-fees-graph/block-fees-graph.component.ts b/frontend/src/app/components/block-fees-graph/block-fees-graph.component.ts index eb567c2a6..33e3eb19e 100644 --- a/frontend/src/app/components/block-fees-graph/block-fees-graph.component.ts +++ b/frontend/src/app/components/block-fees-graph/block-fees-graph.component.ts @@ -23,7 +23,7 @@ import { StateService } from '../../services/state.service'; position: absolute; top: 50%; left: calc(50% - 15px); - z-index: 100; + z-index: 99; } `], changeDetection: ChangeDetectionStrategy.OnPush, diff --git a/frontend/src/app/components/block-fees-subsidy-graph/block-fees-subsidy-graph.component.ts b/frontend/src/app/components/block-fees-subsidy-graph/block-fees-subsidy-graph.component.ts index 18e57ada8..42d05510f 100644 --- a/frontend/src/app/components/block-fees-subsidy-graph/block-fees-subsidy-graph.component.ts +++ b/frontend/src/app/components/block-fees-subsidy-graph/block-fees-subsidy-graph.component.ts @@ -24,7 +24,7 @@ import { RelativeUrlPipe } from '../../shared/pipes/relative-url/relative-url.pi position: absolute; top: 50%; left: calc(50% - 15px); - z-index: 100; + z-index: 99; } `], changeDetection: ChangeDetectionStrategy.OnPush, diff --git a/frontend/src/app/components/block-health-graph/block-health-graph.component.ts b/frontend/src/app/components/block-health-graph/block-health-graph.component.ts index 59f34cd45..6a7168d6b 100644 --- a/frontend/src/app/components/block-health-graph/block-health-graph.component.ts +++ b/frontend/src/app/components/block-health-graph/block-health-graph.component.ts @@ -21,7 +21,7 @@ import { StateService } from '../../services/state.service'; position: absolute; top: 50%; left: calc(50% - 15px); - z-index: 100; + z-index: 99; } `], changeDetection: ChangeDetectionStrategy.OnPush, diff --git a/frontend/src/app/components/block-rewards-graph/block-rewards-graph.component.ts b/frontend/src/app/components/block-rewards-graph/block-rewards-graph.component.ts index d0c154420..63a543674 100644 --- a/frontend/src/app/components/block-rewards-graph/block-rewards-graph.component.ts +++ b/frontend/src/app/components/block-rewards-graph/block-rewards-graph.component.ts @@ -23,7 +23,7 @@ import { StateService } from '../../services/state.service'; position: absolute; top: 50%; left: calc(50% - 15px); - z-index: 100; + z-index: 99; } `], changeDetection: ChangeDetectionStrategy.OnPush, diff --git a/frontend/src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts b/frontend/src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts index bf591ad70..b0069dca2 100644 --- a/frontend/src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts +++ b/frontend/src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts @@ -21,7 +21,7 @@ import { StateService } from '../../services/state.service'; position: absolute; top: 50%; left: calc(50% - 15px); - z-index: 100; + z-index: 99; } `], changeDetection: ChangeDetectionStrategy.OnPush, diff --git a/frontend/src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.components.ts b/frontend/src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.components.ts index 7db1367ea..438a50f74 100644 --- a/frontend/src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.components.ts +++ b/frontend/src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.components.ts @@ -15,7 +15,7 @@ import { StateService } from '../../services/state.service'; position: absolute; top: 50%; left: calc(50% - 15px); - z-index: 100; + z-index: 99; } `], }) diff --git a/frontend/src/app/components/hashrate-chart/hashrate-chart.component.ts b/frontend/src/app/components/hashrate-chart/hashrate-chart.component.ts index 8aaa983fa..0d193514d 100644 --- a/frontend/src/app/components/hashrate-chart/hashrate-chart.component.ts +++ b/frontend/src/app/components/hashrate-chart/hashrate-chart.component.ts @@ -23,7 +23,7 @@ import { seoDescriptionNetwork } from '../../shared/common.utils'; position: absolute; top: 50%; left: calc(50% - 15px); - z-index: 100; + z-index: 99; } `], changeDetection: ChangeDetectionStrategy.OnPush, diff --git a/frontend/src/app/components/hashrates-chart-pools/hashrate-chart-pools.component.scss b/frontend/src/app/components/hashrates-chart-pools/hashrate-chart-pools.component.scss index fe38ce89b..87ee1b45d 100644 --- a/frontend/src/app/components/hashrates-chart-pools/hashrate-chart-pools.component.scss +++ b/frontend/src/app/components/hashrates-chart-pools/hashrate-chart-pools.component.scss @@ -59,7 +59,7 @@ position: absolute; top: 50%; left: calc(50% - 15px); - z-index: 100; + z-index: 99; } .loadingGraphs.widget { top: 75%; diff --git a/frontend/src/app/components/hashrates-chart-pools/hashrate-chart-pools.component.ts b/frontend/src/app/components/hashrates-chart-pools/hashrate-chart-pools.component.ts index 5ac2cc10d..3fca15bf3 100644 --- a/frontend/src/app/components/hashrates-chart-pools/hashrate-chart-pools.component.ts +++ b/frontend/src/app/components/hashrates-chart-pools/hashrate-chart-pools.component.ts @@ -28,7 +28,7 @@ interface Hashrate { position: absolute; top: 50%; left: calc(50% - 15px); - z-index: 100; + z-index: 99; } `], changeDetection: ChangeDetectionStrategy.OnPush, diff --git a/frontend/src/app/components/incoming-transactions-graph/incoming-transactions-graph.component.ts b/frontend/src/app/components/incoming-transactions-graph/incoming-transactions-graph.component.ts index d3d7d8237..3487d6fb0 100644 --- a/frontend/src/app/components/incoming-transactions-graph/incoming-transactions-graph.component.ts +++ b/frontend/src/app/components/incoming-transactions-graph/incoming-transactions-graph.component.ts @@ -17,7 +17,7 @@ const OUTLIERS_MEDIAN_MULTIPLIER = 4; position: absolute; top: 50%; left: calc(50% - 16px); - z-index: 100; + z-index: 99; } `], changeDetection: ChangeDetectionStrategy.OnPush, diff --git a/frontend/src/app/components/lbtc-pegs-graph/lbtc-pegs-graph.component.ts b/frontend/src/app/components/lbtc-pegs-graph/lbtc-pegs-graph.component.ts index aca469ff8..a8ec36bec 100644 --- a/frontend/src/app/components/lbtc-pegs-graph/lbtc-pegs-graph.component.ts +++ b/frontend/src/app/components/lbtc-pegs-graph/lbtc-pegs-graph.component.ts @@ -11,7 +11,7 @@ import { StateService } from '../../services/state.service'; position: absolute; top: 50%; left: calc(50% - 16px); - z-index: 100; + z-index: 99; } `], templateUrl: './lbtc-pegs-graph.component.html', diff --git a/frontend/src/app/components/liquid-reserves-audit/reserves-ratio/reserves-ratio.component.scss b/frontend/src/app/components/liquid-reserves-audit/reserves-ratio/reserves-ratio.component.scss index 9881148fc..b58e706e5 100644 --- a/frontend/src/app/components/liquid-reserves-audit/reserves-ratio/reserves-ratio.component.scss +++ b/frontend/src/app/components/liquid-reserves-audit/reserves-ratio/reserves-ratio.component.scss @@ -2,5 +2,5 @@ position: absolute; top: 50%; left: calc(50% - 16px); - z-index: 100; + z-index: 99; } \ No newline at end of file diff --git a/frontend/src/app/components/loading-indicator/loading-indicator.component.scss b/frontend/src/app/components/loading-indicator/loading-indicator.component.scss index b919fa2b8..9217263bd 100644 --- a/frontend/src/app/components/loading-indicator/loading-indicator.component.scss +++ b/frontend/src/app/components/loading-indicator/loading-indicator.component.scss @@ -1,7 +1,7 @@ .sticky-loading { position: absolute; right: 10px; - z-index: 100; + z-index: 99; font-size: 14px; @media (width >= 992px) { left: 32px; diff --git a/frontend/src/app/components/mempool-graph/mempool-graph.component.ts b/frontend/src/app/components/mempool-graph/mempool-graph.component.ts index 63fb52a0c..3a707987f 100644 --- a/frontend/src/app/components/mempool-graph/mempool-graph.component.ts +++ b/frontend/src/app/components/mempool-graph/mempool-graph.component.ts @@ -18,7 +18,7 @@ import { download, formatterXAxis, formatterXAxisLabel } from '../../shared/grap position: absolute; top: 50%; left: calc(50% - 16px); - z-index: 100; + z-index: 99; } `], changeDetection: ChangeDetectionStrategy.OnPush, diff --git a/frontend/src/app/components/pool-ranking/pool-ranking.component.scss b/frontend/src/app/components/pool-ranking/pool-ranking.component.scss index 9001fc085..cf53ebe14 100644 --- a/frontend/src/app/components/pool-ranking/pool-ranking.component.scss +++ b/frontend/src/app/components/pool-ranking/pool-ranking.component.scss @@ -60,7 +60,7 @@ position: absolute; top: 50%; left: calc(50% - 15px); - z-index: 100; + z-index: 99; } .pool-distribution { diff --git a/frontend/src/app/components/pool/pool.component.scss b/frontend/src/app/components/pool/pool.component.scss index 36bdc93e9..5c2fedd26 100644 --- a/frontend/src/app/components/pool/pool.component.scss +++ b/frontend/src/app/components/pool/pool.component.scss @@ -167,7 +167,7 @@ div.scrollable { .loadingGraphs { position: absolute; left: calc(50% - 15px); - z-index: 100; + z-index: 99; top: 475px; @media (max-width: 992px) { top: 600px; diff --git a/frontend/src/app/components/tracker/tracker.component.scss b/frontend/src/app/components/tracker/tracker.component.scss index 56f0b5f0a..614691426 100644 --- a/frontend/src/app/components/tracker/tracker.component.scss +++ b/frontend/src/app/components/tracker/tracker.component.scss @@ -49,7 +49,7 @@ position: relative; background: var(--nav-bg); box-shadow: 0 -5px 15px #000; - z-index: 100; + z-index: 99; align-items: center; justify-content: space-between; diff --git a/frontend/src/app/lightning/channel/channel.component.scss b/frontend/src/app/lightning/channel/channel.component.scss index 9451c8112..89a43acf3 100644 --- a/frontend/src/app/lightning/channel/channel.component.scss +++ b/frontend/src/app/lightning/channel/channel.component.scss @@ -68,7 +68,7 @@ h3 { .loading-spinner { position: absolute; top: 400px; - z-index: 100; + z-index: 99; width: 100%; left: 0; @media (max-width: 767.98px) { diff --git a/frontend/src/app/lightning/node-fee-chart/node-fee-chart.component.ts b/frontend/src/app/lightning/node-fee-chart/node-fee-chart.component.ts index 7f329eaf2..aa0837fce 100644 --- a/frontend/src/app/lightning/node-fee-chart/node-fee-chart.component.ts +++ b/frontend/src/app/lightning/node-fee-chart/node-fee-chart.component.ts @@ -16,7 +16,7 @@ import { StateService } from '../../services/state.service'; position: absolute; top: 50%; left: calc(50% - 15px); - z-index: 100; + z-index: 99; } `], }) diff --git a/frontend/src/app/lightning/node-statistics-chart/node-statistics-chart.component.ts b/frontend/src/app/lightning/node-statistics-chart/node-statistics-chart.component.ts index 35cd8b236..91813400d 100644 --- a/frontend/src/app/lightning/node-statistics-chart/node-statistics-chart.component.ts +++ b/frontend/src/app/lightning/node-statistics-chart/node-statistics-chart.component.ts @@ -19,7 +19,7 @@ import { StateService } from '../../services/state.service'; position: absolute; top: 50%; left: calc(50% - 15px); - z-index: 100; + z-index: 99; } `], }) diff --git a/frontend/src/app/lightning/nodes-channels-map/nodes-channels-map.component.scss b/frontend/src/app/lightning/nodes-channels-map/nodes-channels-map.component.scss index 16482a0da..ad71cfb8e 100644 --- a/frontend/src/app/lightning/nodes-channels-map/nodes-channels-map.component.scss +++ b/frontend/src/app/lightning/nodes-channels-map/nodes-channels-map.component.scss @@ -102,7 +102,7 @@ position: absolute; top: 50%; left: calc(50% - 15px); - z-index: 100; + z-index: 99; @media (max-width: 767.98px) { top: 550px; } @@ -110,7 +110,7 @@ .loading-spinner.widget { position: absolute; top: 200px; - z-index: 100; + z-index: 99; width: 100%; left: 0; @media (max-width: 767.98px) { @@ -120,7 +120,7 @@ .loading-spinner.nodepage { position: absolute; top: 200px; - z-index: 100; + z-index: 99; width: 100%; left: 0; } @@ -128,7 +128,7 @@ .loading-spinner.channelpage { position: absolute; top: 400px; - z-index: 100; + z-index: 99; width: 100%; left: 0; @media (max-width: 767.98px) { diff --git a/frontend/src/app/lightning/nodes-channels/node-channels.component.scss b/frontend/src/app/lightning/nodes-channels/node-channels.component.scss index 78510203f..08dc5c2cb 100644 --- a/frontend/src/app/lightning/nodes-channels/node-channels.component.scss +++ b/frontend/src/app/lightning/nodes-channels/node-channels.component.scss @@ -8,7 +8,7 @@ left: 0; right: 0; width: 100%; - z-index: 100; + z-index: 99; } .spinner-border { diff --git a/frontend/src/app/lightning/nodes-map/nodes-map.component.scss b/frontend/src/app/lightning/nodes-map/nodes-map.component.scss index 82362a257..d0fa1016f 100644 --- a/frontend/src/app/lightning/nodes-map/nodes-map.component.scss +++ b/frontend/src/app/lightning/nodes-map/nodes-map.component.scss @@ -68,7 +68,7 @@ position: absolute; top: 50%; left: calc(50% - 15px); - z-index: 100; + z-index: 99; @media (max-width: 767.98px) { top: 550px; } diff --git a/frontend/src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts b/frontend/src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts index 9784e0a5b..d947bb327 100644 --- a/frontend/src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts +++ b/frontend/src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts @@ -22,7 +22,7 @@ import { StateService } from '../../services/state.service'; position: absolute; top: 50%; left: calc(50% - 15px); - z-index: 100; + z-index: 99; } `], changeDetection: ChangeDetectionStrategy.OnPush, diff --git a/frontend/src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.scss b/frontend/src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.scss index b9490d579..e1b66cc2b 100644 --- a/frontend/src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.scss +++ b/frontend/src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.scss @@ -46,7 +46,7 @@ position: absolute; top: 50%; left: calc(50% - 15px); - z-index: 100; + z-index: 99; } .pool-distribution { diff --git a/frontend/src/app/lightning/statistics-chart/lightning-statistics-chart.component.ts b/frontend/src/app/lightning/statistics-chart/lightning-statistics-chart.component.ts index 44f359ae8..77ce42f26 100644 --- a/frontend/src/app/lightning/statistics-chart/lightning-statistics-chart.component.ts +++ b/frontend/src/app/lightning/statistics-chart/lightning-statistics-chart.component.ts @@ -22,7 +22,7 @@ import { StateService } from '../../services/state.service'; position: absolute; top: 50%; left: calc(50% - 15px); - z-index: 100; + z-index: 99; } `], }) From 6081daaceffd11d7de77855554d87cc9c092136a Mon Sep 17 00:00:00 2001 From: Mononaut Date: Fri, 26 Jul 2024 09:06:47 +0000 Subject: [PATCH 5/9] [accelerator] add missing getters etc --- .../accelerate-checkout.component.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.ts b/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.ts index 72dfc5de2..3d97b336e 100644 --- a/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.ts +++ b/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.ts @@ -11,7 +11,7 @@ import { IAuth, AuthServiceMempool } from '../../services/auth.service'; import { EnterpriseService } from '../../services/enterprise.service'; import { ApiService } from '../../services/api.service'; -export type PaymentMethod = 'balance' | 'bitcoin' | 'cashapp'; +export type PaymentMethod = 'balance' | 'bitcoin' | 'cashapp' | 'applepay' | 'googlepay'; export type AccelerationEstimate = { hasAccess: boolean; @@ -24,7 +24,7 @@ export type AccelerationEstimate = { mempoolBaseFee: number; vsizeFee: number; pools: number[]; - availablePaymentMethods: {[method: string]: {min: number, max: number}}; + availablePaymentMethods: Record; unavailable?: boolean; options: { // recommended bid options fee: number; // recommended userBid in sats @@ -512,6 +512,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { this.accelerationUUID ).subscribe({ next: () => { + this.apiService.logAccelerationRequest$(this.tx.txid).subscribe(); this.audioService.playSound('ascend-chime-cartoon'); if (this.applePay) { this.applePay.destroy(); @@ -601,6 +602,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { this.accelerationUUID ).subscribe({ next: () => { + this.apiService.logAccelerationRequest$(this.tx.txid).subscribe(); this.audioService.playSound('ascend-chime-cartoon'); if (this.googlePay) { this.googlePay.destroy(); @@ -790,7 +792,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { } get couldPay() { - return this.couldPayWithBalance || this.couldPayWithBitcoin || this.couldPayWithCashapp || this.couldPayWithApplePay; + return this.couldPayWithBalance || this.couldPayWithBitcoin || this.couldPayWithCashapp || this.couldPayWithApplePay || this.couldPayWithGooglePay; } get canPayWithBitcoin() { @@ -855,7 +857,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { } get canPay() { - return this.canPayWithBalance || this.canPayWithBitcoin || this.canPayWithCashapp || this.canPayWithApplePay; + return this.canPayWithBalance || this.canPayWithBitcoin || this.canPayWithCashapp || this.canPayWithApplePay || this.canPayWithGooglePay; } get hasAccessToBalanceMode() { From 6adbda5185ca4fd4dd76763ce812bdd051f87132 Mon Sep 17 00:00:00 2001 From: Mononaut Date: Fri, 26 Jul 2024 09:27:18 +0000 Subject: [PATCH 6/9] Fix accelerator checkout linting & type errors --- .../accelerate-checkout.component.ts | 100 +++++++++--------- .../src/app/interfaces/websocket.interface.ts | 2 +- frontend/src/app/services/state.service.ts | 2 +- 3 files changed, 50 insertions(+), 54 deletions(-) diff --git a/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.ts b/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.ts index 3d97b336e..d9f270111 100644 --- a/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.ts +++ b/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.ts @@ -1,7 +1,8 @@ +/* eslint-disable no-console */ import { Component, OnInit, OnDestroy, Output, EventEmitter, Input, ChangeDetectorRef, SimpleChanges, HostListener } from '@angular/core'; import { Subscription, tap, of, catchError, Observable, switchMap } from 'rxjs'; import { ServicesApiServices } from '../../services/services-api.service'; -import { md5, nextRoundNumber, insecureRandomUUID } from '../../shared/common.utils'; +import { md5, insecureRandomUUID } from '../../shared/common.utils'; import { StateService } from '../../services/state.service'; import { AudioService } from '../../services/audio.service'; import { ETA, EtaService } from '../../services/eta.service'; @@ -11,7 +12,7 @@ import { IAuth, AuthServiceMempool } from '../../services/auth.service'; import { EnterpriseService } from '../../services/enterprise.service'; import { ApiService } from '../../services/api.service'; -export type PaymentMethod = 'balance' | 'bitcoin' | 'cashapp' | 'applepay' | 'googlepay'; +export type PaymentMethod = 'balance' | 'bitcoin' | 'cashapp' | 'applePay' | 'googlePay'; export type AccelerationEstimate = { hasAccess: boolean; @@ -112,14 +113,13 @@ export class AccelerateCheckout implements OnInit, OnDestroy { loadingCashapp = false; loadingApplePay = false; loadingGooglePay = false; - cashappSubmit: any; payments: any; cashAppPay: any; applePay: any; googlePay: any; conversionsSubscription: Subscription; - conversions: any; - + conversions: Record; + // btcpay loadingBtcpayInvoice = false; invoice = undefined; @@ -137,13 +137,13 @@ export class AccelerateCheckout implements OnInit, OnDestroy { this.accelerationUUID = insecureRandomUUID(); // Check if Apple Pay available - // @ts-ignore https://developer.apple.com/documentation/apple_pay_on_the_web/apple_pay_js_api/checking_for_apple_pay_availability#overview - if (window.ApplePaySession) { + // https://developer.apple.com/documentation/apple_pay_on_the_web/apple_pay_js_api/checking_for_apple_pay_availability#overview + if (window['ApplePaySession']) { this.applePayEnabled = true; } } - ngOnInit() { + ngOnInit(): void { this.authSubscription$ = this.authService.getAuth$().subscribe((auth) => { if (this.auth?.user?.userId !== auth?.user?.userId) { this.auth = auth; @@ -175,7 +175,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { ); } - ngOnDestroy() { + ngOnDestroy(): void { if (this.estimateSubscription) { this.estimateSubscription.unsubscribe(); } @@ -195,7 +195,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { } } - moveToStep(step: CheckoutStep) { + moveToStep(step: CheckoutStep): void { this._step = step; if (this.timeoutTimer) { clearTimeout(this.timeoutTimer); @@ -232,7 +232,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { if (this.step === 'paid') { this.accelerateError = 'internal_server_error'; } - }, 120000) + }, 120000); } this.hasDetails.emit(this._step === 'quote'); } @@ -250,7 +250,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { this.scrollToElement(id, position); }, timeout); } - scrollToElement(id: string, position: ScrollLogicalPosition) { + scrollToElement(id: string, position: ScrollLogicalPosition): void { const acceleratePreviewAnchor = document.getElementById(id); if (acceleratePreviewAnchor) { this.cd.markForCheck(); @@ -265,7 +265,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { /** * Accelerator */ - fetchEstimate() { + fetchEstimate(): void { if (this.estimateSubscription) { this.estimateSubscription.unsubscribe(); } @@ -329,7 +329,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { } }), - catchError((response) => { + catchError(() => { this.estimate = undefined; this.quoteError = `cannot_accelerate_tx`; this.estimateSubscription.unsubscribe(); @@ -400,8 +400,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { * Square */ insertSquare(): void { - //@ts-ignore - if (window.Square) { + if (window['Square']) { return; } let statsUrl = 'https://sandbox.web.squarecdn.com/v1/square.js'; @@ -413,19 +412,17 @@ export class AccelerateCheckout implements OnInit, OnDestroy { statsUrl = 'https://web.squarecdn.com/v1/square.js'; } - (function() { + (function(): void { const d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; - // @ts-ignore g.type='text/javascript'; g.src=statsUrl; s.parentNode.insertBefore(g, s); })(); } - setupSquare() { - const init = () => { + setupSquare(): void { + const init = (): void => { this.initSquare(); }; - //@ts-ignore - if (!window.Square) { + if (!window['Square']) { console.debug('Square.js failed to load properly. Retrying in 1 second.'); setTimeout(init, 1000); } else { @@ -436,8 +433,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { try { this.servicesApiService.setupSquare$().subscribe({ next: async (ids) => { - //@ts-ignore - this.payments = window.Square.payments(ids.squareAppId, ids.squareLocationId) + this.payments = window['Square'].payments(ids.squareAppId, ids.squareLocationId); const urlParams = new URLSearchParams(window.location.search); if (this._step === 'cashapp' || urlParams.get('cash_request_id')) { await this.requestCashAppPayment(); @@ -451,7 +447,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { console.debug('Error loading Square Payments'); this.accelerateError = 'cannot_setup_square'; } - }); + }); } catch (e) { console.debug('Error loading Square Payments', e); this.accelerateError = 'cannot_setup_square'; @@ -461,11 +457,11 @@ export class AccelerateCheckout implements OnInit, OnDestroy { /** * APPLE PAY */ - async requestApplePayPayment() { + async requestApplePayPayment(): Promise { if (this.conversionsSubscription) { this.conversionsSubscription.unsubscribe(); } - + this.conversionsSubscription = this.stateService.conversions$.subscribe( async (conversions) => { this.conversions = conversions; @@ -552,11 +548,11 @@ export class AccelerateCheckout implements OnInit, OnDestroy { /** * GOOGLE PAY */ - async requestGooglePayPayment() { + async requestGooglePayPayment(): Promise { if (this.conversionsSubscription) { this.conversionsSubscription.unsubscribe(); } - + this.conversionsSubscription = this.stateService.conversions$.subscribe( async (conversions) => { this.conversions = conversions; @@ -579,7 +575,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { await this.googlePay.attach(`#google-pay-button`, { buttonType: 'pay', - onClick: (e) => { console.log(e, 'hi') } + onClick: (e) => { console.log(e); } }); this.loadingGooglePay = false; @@ -630,7 +626,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { )}`; } throw new Error(errorMessage); - } + } }); } ); @@ -639,11 +635,11 @@ export class AccelerateCheckout implements OnInit, OnDestroy { /** * CASHAPP */ - async requestCashAppPayment() { + async requestCashAppPayment(): Promise { if (this.conversionsSubscription) { this.conversionsSubscription.unsubscribe(); } - + this.conversionsSubscription = this.stateService.conversions$.subscribe( async (conversions) => { this.conversions = conversions; @@ -668,7 +664,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { referenceId: `accelerator-${this.tx.txid.substring(0, 15)}-${Math.round(new Date().getTime() / 1000)}` }); - await this.cashAppPay.attach(`#cash-app-pay`, { theme: 'light', size: 'small', shape: 'semiround' }) + await this.cashAppPay.attach(`#cash-app-pay`, { theme: 'light', size: 'small', shape: 'semiround' }); this.loadingCashapp = false; this.cashAppPay.addEventListener('ontokenization', event => { @@ -717,7 +713,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { /** * BTCPay */ - async requestBTCPayInvoice() { + async requestBTCPayInvoice(): Promise { this.servicesApiService.generateBTCPayAcceleratorInvoice$(this.tx.txid, this.userBid).pipe( switchMap(response => { return this.servicesApiService.retreiveInvoice$(response.btcpayInvoiceId); @@ -747,60 +743,60 @@ export class AccelerateCheckout implements OnInit, OnDestroy { /** * UI events */ - selectedOptionChanged(event) { + selectedOptionChanged(event): void { this.selectedOption = event.target.id; } - get step() { + get step(): CheckoutStep { return this._step; } - get paymentMethods() { - return Object.keys(this.estimate?.availablePaymentMethods || {}); + get paymentMethods(): PaymentMethod[] { + return Object.keys(this.estimate?.availablePaymentMethods || {}) as PaymentMethod[]; } - get couldPayWithBitcoin() { + get couldPayWithBitcoin(): boolean { return !!this.estimate?.availablePaymentMethods?.bitcoin; } - get couldPayWithCashapp() { + get couldPayWithCashapp(): boolean { if (!this.cashappEnabled) { return false; } return !!this.estimate?.availablePaymentMethods?.cashapp; } - get couldPayWithApplePay() { + get couldPayWithApplePay(): boolean { if (!this.applePayEnabled) { return false; } return !!this.estimate?.availablePaymentMethods?.applePay; } - get couldPayWithGooglePay() { + get couldPayWithGooglePay(): boolean { if (!this.googlePayEnabled) { return false; } return !!this.estimate?.availablePaymentMethods?.googlePay; } - get couldPayWithBalance() { + get couldPayWithBalance(): boolean { if (!this.hasAccessToBalanceMode) { return false; } return !!this.estimate?.availablePaymentMethods?.balance; } - get couldPay() { + get couldPay(): boolean { return this.couldPayWithBalance || this.couldPayWithBitcoin || this.couldPayWithCashapp || this.couldPayWithApplePay || this.couldPayWithGooglePay; } - get canPayWithBitcoin() { + get canPayWithBitcoin(): boolean { const paymentMethod = this.estimate?.availablePaymentMethods?.bitcoin; return paymentMethod && this.cost >= paymentMethod.min && this.cost <= paymentMethod.max; } - get canPayWithCashapp() { + get canPayWithCashapp(): boolean { if (!this.cashappEnabled || !this.conversions) { return false; } @@ -816,7 +812,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { return false; } - get canPayWithApplePay() { + get canPayWithApplePay(): boolean { if (!this.applePayEnabled || !this.conversions) { return false; } @@ -832,7 +828,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { return false; } - get canPayWithGooglePay() { + get canPayWithGooglePay(): boolean { if (!this.googlePayEnabled || !this.conversions) { return false; } @@ -848,7 +844,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { return false; } - get canPayWithBalance() { + get canPayWithBalance(): boolean { if (!this.hasAccessToBalanceMode) { return false; } @@ -856,11 +852,11 @@ export class AccelerateCheckout implements OnInit, OnDestroy { return paymentMethod && this.cost >= paymentMethod.min && this.cost <= paymentMethod.max && this.cost <= this.estimate?.userBalance; } - get canPay() { + get canPay(): boolean { return this.canPayWithBalance || this.canPayWithBitcoin || this.canPayWithCashapp || this.canPayWithApplePay || this.canPayWithGooglePay; } - get hasAccessToBalanceMode() { + get hasAccessToBalanceMode(): boolean { return this.isLoggedIn() && this.estimate?.hasAccess; } diff --git a/frontend/src/app/interfaces/websocket.interface.ts b/frontend/src/app/interfaces/websocket.interface.ts index 22789986e..35e0ffa09 100644 --- a/frontend/src/app/interfaces/websocket.interface.ts +++ b/frontend/src/app/interfaces/websocket.interface.ts @@ -7,7 +7,7 @@ export interface WebsocketResponse { backend?: 'esplora' | 'electrum' | 'none'; block?: BlockExtended; blocks?: BlockExtended[]; - conversions?: any; + conversions?: Record; txConfirmed?: string; historicalDate?: string; mempoolInfo?: MempoolInfo; diff --git a/frontend/src/app/services/state.service.ts b/frontend/src/app/services/state.service.ts index 05f1ac69f..8928245a7 100644 --- a/frontend/src/app/services/state.service.ts +++ b/frontend/src/app/services/state.service.ts @@ -138,7 +138,7 @@ export class StateService { blocksSubject$ = new BehaviorSubject([]); blocks$: Observable; transactions$ = new BehaviorSubject(null); - conversions$ = new ReplaySubject(1); + conversions$ = new ReplaySubject>(1); bsqPrice$ = new ReplaySubject(1); mempoolInfo$ = new ReplaySubject(1); mempoolBlocks$ = new ReplaySubject(1); From 8d3b4733f5a0c86da68a97b6c574fbbf5b3312e1 Mon Sep 17 00:00:00 2001 From: Mononaut Date: Fri, 26 Jul 2024 09:49:42 +0000 Subject: [PATCH 7/9] [accelerator] remove dumb 405 log request response --- backend/src/api/mining/mining-routes.ts | 4 ---- backend/src/api/services/acceleration.ts | 7 +++++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/backend/src/api/mining/mining-routes.ts b/backend/src/api/mining/mining-routes.ts index 08ea0d1bc..f49abd7b0 100644 --- a/backend/src/api/mining/mining-routes.ts +++ b/backend/src/api/mining/mining-routes.ts @@ -465,10 +465,6 @@ class MiningRoutes { } private async $requestAcceleration(req: Request, res: Response): Promise { - if (config.MEMPOOL_SERVICES.ACCELERATIONS || config.MEMPOOL.OFFICIAL) { - res.status(405).send('not available.'); - return; - } res.setHeader('Pragma', 'no-cache'); res.setHeader('Cache-control', 'private, no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0'); res.setHeader('expires', -1); diff --git a/backend/src/api/services/acceleration.ts b/backend/src/api/services/acceleration.ts index 386c40b8e..88289382b 100644 --- a/backend/src/api/services/acceleration.ts +++ b/backend/src/api/services/acceleration.ts @@ -37,6 +37,7 @@ export interface AccelerationHistory { }; class AccelerationApi { + private onDemandPollingEnabled = !config.MEMPOOL_SERVICES.ACCELERATIONS; private apiPath = config.MEMPOOL.OFFICIAL ? (config.MEMPOOL_SERVICES.API + '/accelerator/accelerations') : (config.EXTERNAL_DATA_SERVER.MEMPOOL_API + '/accelerations'); private _accelerations: Acceleration[] | null = null; private lastPoll = 0; @@ -52,7 +53,9 @@ class AccelerationApi { } public accelerationRequested(txid: string): void { - this.myAccelerations[txid] = { status: 'requested', added: Date.now() }; + if (this.onDemandPollingEnabled) { + this.myAccelerations[txid] = { status: 'requested', added: Date.now() }; + } } public accelerationConfirmed(): void { @@ -70,7 +73,7 @@ class AccelerationApi { } public async $updateAccelerations(): Promise { - if (config.MEMPOOL_SERVICES.ACCELERATIONS) { + if (!this.onDemandPollingEnabled) { const accelerations = await this.$fetchAccelerations(); if (accelerations) { this._accelerations = accelerations; From 62a72755c7ecc5c9b33b3f4ac12508b4b32f4480 Mon Sep 17 00:00:00 2001 From: softsimon Date: Fri, 26 Jul 2024 10:25:29 -0500 Subject: [PATCH 8/9] pull from transifex --- frontend/src/locale/messages.nl.xlf | 112 ++++++++++++++++++++++++++++ frontend/src/locale/messages.pt.xlf | 83 +++++++++++++++++++-- frontend/src/locale/messages.ru.xlf | 4 +- 3 files changed, 192 insertions(+), 7 deletions(-) diff --git a/frontend/src/locale/messages.nl.xlf b/frontend/src/locale/messages.nl.xlf index a8f5537c4..390a9df3b 100644 --- a/frontend/src/locale/messages.nl.xlf +++ b/frontend/src/locale/messages.nl.xlf @@ -417,6 +417,7 @@ Sorry, something went wrong! + Sorry, er ging iets mis! src/app/components/accelerate-checkout/accelerate-checkout.component.html 5 @@ -425,6 +426,7 @@ We were not able to accelerate this transaction. Please try again later. + We hebben deze transactie niet kunnen versnellen. Probeer het later opnieuw. src/app/components/accelerate-checkout/accelerate-checkout.component.html 11 @@ -433,6 +435,7 @@ Close + Sluiten src/app/components/accelerate-checkout/accelerate-checkout.component.html 18 @@ -633,6 +636,7 @@ How much faster? + Hoeveel sneller? src/app/components/accelerate-checkout/accelerate-checkout.component.html 71 @@ -641,6 +645,7 @@ This will reduce your expected waiting time until the first confirmation to + Dit verkort de verwachte wachttijd tot de eerste bevestiging tot src/app/components/accelerate-checkout/accelerate-checkout.component.html 76,77 @@ -649,6 +654,7 @@ Summary + Samenvatting src/app/components/accelerate-checkout/accelerate-checkout.component.html 100 @@ -697,6 +703,7 @@ Target rate + Doeltarief src/app/components/accelerate-checkout/accelerate-checkout.component.html 131 @@ -705,6 +712,7 @@ Extra fee required + Extra vergoeding vereist src/app/components/accelerate-checkout/accelerate-checkout.component.html 139 @@ -758,6 +766,7 @@ Acceleration cost + Acceleratiekosten src/app/components/accelerate-checkout/accelerate-checkout.component.html 206 @@ -775,6 +784,7 @@ Go back + Ga terug src/app/components/accelerate-checkout/accelerate-checkout.component.html 258 @@ -791,6 +801,7 @@ Accelerate your Bitcoin transaction? + Bitcoin-transactie versnellen? src/app/components/accelerate-checkout/accelerate-checkout.component.html 273 @@ -799,6 +810,7 @@ Wait + Wacht src/app/components/accelerate-checkout/accelerate-checkout.component.html 285 @@ -807,6 +819,7 @@ Confirmation expected + Bevestiging verwacht src/app/components/accelerate-checkout/accelerate-checkout.component.html 287 @@ -819,6 +832,7 @@ Confirmation not expected any time soon + Bevestiging wordt niet snel verwacht src/app/components/accelerate-checkout/accelerate-checkout.component.html 290 @@ -827,6 +841,7 @@ For an additional + Voor een extra src/app/components/accelerate-checkout/accelerate-checkout.component.html 345 @@ -835,6 +850,7 @@ Reducing expected confirmation time to + Verkort verwachte bevestigingstijd naar src/app/components/accelerate-checkout/accelerate-checkout.component.html 351,352 @@ -843,6 +859,7 @@ Payment to mempool.space for acceleration of txid .. + Betaling aan mempool.space voor versnelling van txid .. src/app/components/accelerate-checkout/accelerate-checkout.component.html 362,363 @@ -855,6 +872,7 @@ Your account will be debited no more than + Er wordt maximaal van uw rekening afgeschreven src/app/components/accelerate-checkout/accelerate-checkout.component.html 367 @@ -863,6 +881,7 @@ Pay + Betalen src/app/components/accelerate-checkout/accelerate-checkout.component.html 378 @@ -884,6 +903,7 @@ Failed to load invoice + Kan betaling niet laden src/app/components/accelerate-checkout/accelerate-checkout.component.html 381 @@ -892,6 +912,7 @@ Loading invoice... + Betaling laden... src/app/components/accelerate-checkout/accelerate-checkout.component.html 386 @@ -900,6 +921,7 @@ OR + OF src/app/components/accelerate-checkout/accelerate-checkout.component.html 394 @@ -908,6 +930,7 @@ Confirm your payment + Bevestig uw betaling src/app/components/accelerate-checkout/accelerate-checkout.component.html 428 @@ -916,6 +939,7 @@ Total additional cost + Totale extra kosten src/app/components/accelerate-checkout/accelerate-checkout.component.html 444 @@ -924,6 +948,7 @@ with + met src/app/components/accelerate-checkout/accelerate-checkout.component.html 448 @@ -932,6 +957,7 @@ Loading payment method... + Betaalmethode laden... src/app/components/accelerate-checkout/accelerate-checkout.component.html 462 @@ -940,6 +966,7 @@ Confirming your payment + Betaling aan het bevestigen src/app/components/accelerate-checkout/accelerate-checkout.component.html 480 @@ -948,6 +975,7 @@ We are processing your payment... + Wij verwerken uw betaling... src/app/components/accelerate-checkout/accelerate-checkout.component.html 490 @@ -956,6 +984,7 @@ Accelerating your transaction + Transactie aan het versnellen src/app/components/accelerate-checkout/accelerate-checkout.component.html 500 @@ -964,6 +993,7 @@ Confirming your acceleration with our mining pool partners... + Bevestiging van uw versnelling met onze mining-partners... src/app/components/accelerate-checkout/accelerate-checkout.component.html 507 @@ -972,6 +1002,7 @@ ...sorry, this is taking longer than expected... + ...sorry, dit duurt langer dan verwacht... src/app/components/accelerate-checkout/accelerate-checkout.component.html 509 @@ -980,6 +1011,7 @@ Your transaction is being accelerated! + Uw transactie wordt versneld! src/app/components/accelerate-checkout/accelerate-checkout.component.html 518 @@ -988,6 +1020,7 @@ Your transaction has been accepted for acceleration by our mining pool partners. + Uw transactie is geaccepteerd voor versnelling door onze mining-partners. src/app/components/accelerate-checkout/accelerate-checkout.component.html 524 @@ -996,6 +1029,7 @@ Calculating cost... + Kosten berekenen... src/app/components/accelerate-checkout/accelerate-checkout.component.html 543 @@ -1004,6 +1038,7 @@ customize + aanpassen src/app/components/accelerate-checkout/accelerate-checkout.component.html 549 @@ -1012,6 +1047,7 @@ Accelerate to ~ sat/vB + Versnellen naar ~ sat/vB src/app/components/accelerate-checkout/accelerate-checkout.component.html 552 @@ -1038,6 +1074,7 @@ Your transaction will be prioritized by up to % of miners. + Uw transactie krijgt prioriteit door maximaal % van de miners. src/app/components/accelerate-checkout/accelerate-checkout.component.html 580 @@ -1116,6 +1153,7 @@ accelerated + versneld src/app/components/accelerate-checkout/accelerate-fee-graph.component.ts 91 @@ -1405,6 +1443,7 @@ Total vSize + Totaal vSize src/app/components/acceleration/acceleration-stats/acceleration-stats.component.html 20 @@ -1425,6 +1464,7 @@ of blocks + van blokken src/app/components/acceleration/acceleration-stats/acceleration-stats.component.html 23 @@ -1674,6 +1714,7 @@ (1 day) + (1 dag) src/app/components/acceleration/accelerator-dashboard/accelerator-dashboard.component.html 27 @@ -1682,6 +1723,7 @@ (1 week) + (1 week) src/app/components/acceleration/accelerator-dashboard/accelerator-dashboard.component.html 30 @@ -1690,6 +1732,7 @@ (1 month) + (1 maand) src/app/components/acceleration/accelerator-dashboard/accelerator-dashboard.component.html 33 @@ -1698,6 +1741,7 @@ (all time) + (altijd) src/app/components/acceleration/accelerator-dashboard/accelerator-dashboard.component.html 36 @@ -1752,6 +1796,7 @@ Accelerated to + Versneld naar src/app/components/acceleration/active-acceleration-box/active-acceleration-box.component.html 7 @@ -1761,6 +1806,7 @@ Accelerated by + Versneld door src/app/components/acceleration/active-acceleration-box/active-acceleration-box.component.html 30 @@ -1770,6 +1816,7 @@ of hashrate + van hashrate src/app/components/acceleration/active-acceleration-box/active-acceleration-box.component.html 32 @@ -1778,6 +1825,7 @@ not accelerating + niet versneld src/app/components/acceleration/active-acceleration-box/active-acceleration-box.component.ts 85 @@ -1807,6 +1855,7 @@ of block + van blok src/app/components/acceleration/pending-stats/pending-stats.component.html 23 @@ -2099,6 +2148,7 @@ all + alle src/app/components/address/address.component.html 84 @@ -2107,6 +2157,7 @@ recent + recent src/app/components/address/address.component.html 87 @@ -2115,6 +2166,7 @@ of transaction + van transactie src/app/components/address/address.component.html 101 @@ -2123,6 +2175,7 @@ of transactions + van transacties src/app/components/address/address.component.html 102 @@ -2144,6 +2197,7 @@ There are too many transactions on this address, more than your backend can handle. See more on setting up a stronger backend. Consider viewing this address on the official Mempool website instead: + Er zijn te veel transacties op dit adres, meer dan uw backend aankan. Bekijk meer informatie over het opzetten van een sterkere backend. Bekijk in plaats daarvan dit adres op de officiële Mempool-website: src/app/components/address/address.component.html 204,207 @@ -2152,6 +2206,7 @@ Confirmed balance + Bevestigd saldo src/app/components/address/address.component.html 247 @@ -2160,6 +2215,7 @@ Confirmed UTXOs + Bevestigde UTXO's src/app/components/address/address.component.html 257 @@ -2168,6 +2224,7 @@ Pending UTXOs + UTXO's in behandeling src/app/components/address/address.component.html 262 @@ -2553,6 +2610,7 @@ Change (7d) + Wijziging (7d) src/app/components/balance-widget/balance-widget.component.html 14 @@ -2565,6 +2623,7 @@ Change (30d) + Wijziging (30d) src/app/components/balance-widget/balance-widget.component.html 23 @@ -2689,6 +2748,7 @@ Block Fees Vs Subsidy + Blokkosten versus subsidie src/app/components/block-fees-subsidy-graph/block-fees-subsidy-graph.component.html 6 @@ -2705,6 +2765,7 @@ See the mining fees earned per Bitcoin block compared to the Bitcoin block subsidy, visualized in BTC and USD over time. + Bekijk de verdiende miningkosten per Bitcoin-blok ten opzichte van de Bitcoin-bloksubsidie, gevisualiseerd in BTC en USD in de loop van de tijd. src/app/components/block-fees-subsidy-graph/block-fees-subsidy-graph.component.ts 79 @@ -2712,6 +2773,7 @@ At block + Bij blok src/app/components/block-fees-subsidy-graph/block-fees-subsidy-graph.component.ts 185 @@ -2719,6 +2781,7 @@ Around block + Rond blok src/app/components/block-fees-subsidy-graph/block-fees-subsidy-graph.component.ts 187 @@ -3459,6 +3522,7 @@ transaction + transactie src/app/components/block/block-transactions.component.html 4 @@ -3479,6 +3543,7 @@ transactions + transacties src/app/components/block/block-transactions.component.html 5 @@ -3875,6 +3940,7 @@ Error loading block data. + Fout bij het laden van blokgegevens. src/app/components/block/block.component.html 367 @@ -4343,6 +4409,7 @@ Treasury + Schatkist src/app/components/custom-dashboard/custom-dashboard.component.html 228 @@ -4351,6 +4418,7 @@ Treasury Transactions + Schatkisttransacties src/app/components/custom-dashboard/custom-dashboard.component.html 251 @@ -4359,6 +4427,7 @@ X Timeline + X Tijdlijn src/app/components/custom-dashboard/custom-dashboard.component.html 265 @@ -4706,6 +4775,7 @@ Testnet4 Faucet + Testnet4 kraan src/app/components/faucet/faucet.component.html 4 @@ -4714,6 +4784,7 @@ Amount (sats) + Bedrag (sat) src/app/components/faucet/faucet.component.html 51 @@ -4722,6 +4793,7 @@ Request Testnet4 Coins + Testnet4-munten aanvragen src/app/components/faucet/faucet.component.html 70 @@ -5467,6 +5539,7 @@ Number of times that the Federation's BTC holdings fall below 95% of the total L-BTC supply + Aantal keren dat de BTC-bezit van de Federatie onder de 95% van het totale L-BTC-aanbod daalt src/app/components/liquid-reserves-audit/reserves-ratio-stats/reserves-ratio-stats.component.html 6 @@ -5575,6 +5648,7 @@ Faucet + Kraan src/app/components/master-page/master-page.component.html 105 @@ -6094,6 +6168,7 @@ Error loading pool data. + Fout bij het laden van poolgegevens. src/app/components/pool/pool.component.html 467 @@ -6390,6 +6465,7 @@ Mining Pools + Mining pools src/app/components/search-form/search-results/search-results.component.html 47 @@ -6530,6 +6606,7 @@ Test Transactions + Test-transacties src/app/components/test-transactions/test-transactions.component.html 2 @@ -6547,6 +6624,7 @@ Raw hex + Ruwe hexcode src/app/components/test-transactions/test-transactions.component.html 5 @@ -6555,6 +6633,7 @@ Comma-separated list of raw transactions + Komma-gescheiden lijst met ruwe transacties src/app/components/test-transactions/test-transactions.component.html 7 @@ -6563,6 +6642,7 @@ Maximum fee rate (sat/vB) + Maximale kosten (sat/vB) src/app/components/test-transactions/test-transactions.component.html 9 @@ -6571,6 +6651,7 @@ Allowed? + Toegestaan? src/app/components/test-transactions/test-transactions.component.html 23 @@ -6579,6 +6660,7 @@ Rejection reason + Reden van afwijzing src/app/components/test-transactions/test-transactions.component.html 26 @@ -6731,6 +6813,7 @@ within ~ + binnen ~ src/app/components/time/time.component.ts 211 @@ -6910,6 +6993,7 @@ Sent + Verstuurd src/app/components/tracker/tracker-bar.component.html 2 @@ -6918,6 +7002,7 @@ Soon + Spoedig src/app/components/tracker/tracker-bar.component.html 6 @@ -6954,6 +7039,7 @@ Not any time soon + Niet snel src/app/components/tracker/tracker.component.html 74 @@ -6967,6 +7053,7 @@ Confirmed at + Bevestigd om src/app/components/tracker/tracker.component.html 87 @@ -6975,6 +7062,7 @@ Block height + Blokhoogte src/app/components/tracker/tracker.component.html 96 @@ -6983,6 +7071,7 @@ Your transaction has been accelerated + Uw transactie is versneld src/app/components/tracker/tracker.component.html 143 @@ -6991,6 +7080,7 @@ Waiting for your transaction to appear in the mempool + Wachten tot uw transactie in de mempool verschijnt src/app/components/tracker/tracker.component.html 150 @@ -6999,6 +7089,7 @@ Your transaction is in the mempool, but it will not be confirmed for some time. + Uw transactie staat in de mempool, maar wordt binnenkort niet bevestigd. src/app/components/tracker/tracker.component.html 156 @@ -7007,6 +7098,7 @@ Your transaction is near the top of the mempool, and is expected to confirm soon. + Uw transactie staat bovenaan de mempool en zal naar verwachting binnenkort worden bevestigd. src/app/components/tracker/tracker.component.html 162 @@ -7015,6 +7107,7 @@ Your transaction is expected to confirm in the next block + Uw transactie wordt naar verwachting in het volgende blok bevestigd src/app/components/tracker/tracker.component.html 168 @@ -7023,6 +7116,7 @@ Your transaction is confirmed! + Uw transactie is bevestigd! src/app/components/tracker/tracker.component.html 174 @@ -7031,6 +7125,7 @@ Your transaction has been replaced by a newer version! + Uw transactie is vervangen door een nieuwere versie! src/app/components/tracker/tracker.component.html 180 @@ -7039,6 +7134,7 @@ See more details + Zie meer details src/app/components/tracker/tracker.component.html 189 @@ -7124,6 +7220,7 @@ Hide accelerator + Verberg versneller src/app/components/transaction/transaction.component.html 131 @@ -7132,6 +7229,7 @@ RBF Timeline + RBF-geschiedenis src/app/components/transaction/transaction.component.html 158 @@ -7141,6 +7239,7 @@ Acceleration Timeline + Accelatiegeschiedenis src/app/components/transaction/transaction.component.html 167 @@ -9650,6 +9749,7 @@ fee + kosten src/app/shared/components/address-type/address-type.component.html 3 @@ -9658,6 +9758,7 @@ empty + leeg src/app/shared/components/address-type/address-type.component.html 6 @@ -9666,6 +9767,7 @@ provably unspendable + aantoonbaar onbruikbaar src/app/shared/components/address-type/address-type.component.html 18 @@ -9674,6 +9776,7 @@ bare multisig + kale multisig src/app/shared/components/address-type/address-type.component.html 21 @@ -9758,6 +9861,7 @@ Test Transaction + Test transactie src/app/shared/components/global-footer/global-footer.component.html 64 @@ -9839,6 +9943,7 @@ Research + Onderzoek src/app/shared/components/global-footer/global-footer.component.html 75 @@ -9865,6 +9970,7 @@ Testnet3 Explorer + Testnet3 Verkenner src/app/shared/components/global-footer/global-footer.component.html 81 @@ -9873,6 +9979,7 @@ Testnet4 Explorer + Testnet4 Verkenner src/app/shared/components/global-footer/global-footer.component.html 82 @@ -9975,6 +10082,7 @@ Your balance is too low.Please top up your account. + Uw saldo is te laag.waardeer alstublieft uw account op . src/app/shared/components/mempool-error/mempool-error.component.html 9 @@ -9992,6 +10100,7 @@ Testnet3 is deprecated, and will soon be replaced by Testnet4 + Testnet3 is verouderd en wordt binnenkort vervangen door Testnet4 src/app/shared/components/testnet-alert/testnet-alert.component.html 6 @@ -10000,6 +10109,7 @@ Testnet4 is not yet finalized, and may be reset at anytime. + Testnet4 is nog niet afgerond en kan op elk moment worden gereset. src/app/shared/components/testnet-alert/testnet-alert.component.html 9 @@ -10008,6 +10118,7 @@ Batch payment + Batchbetaling src/app/shared/filters.utils.ts 108 @@ -10167,6 +10278,7 @@ Multisig of + Multisig van src/app/shared/script.utils.ts 168 diff --git a/frontend/src/locale/messages.pt.xlf b/frontend/src/locale/messages.pt.xlf index e13c9c7ea..01f35e4b1 100644 --- a/frontend/src/locale/messages.pt.xlf +++ b/frontend/src/locale/messages.pt.xlf @@ -409,6 +409,7 @@ Learn more about The Mempool Open Source Project®: enterprise sponsors, individual sponsors, integrations, who contributes, FOSS licensing, and more. + Saiba mais sobre o Mempool Open Source Project®: patrocinadores empresariais, patrocinadores individuais, integrações, quem contribui, licenciamento FOSS e muito mais. src/app/components/about/about.component.ts 50 @@ -2122,6 +2123,7 @@ See mempool transactions, confirmed transactions, balance, and more for address . + Veja transações no mempool, transações confirmadas, saldo, e mais para o endereço . src/app/components/address/address-preview.component.ts 72 @@ -2195,6 +2197,7 @@ There are too many transactions on this address, more than your backend can handle. See more on setting up a stronger backend. Consider viewing this address on the official Mempool website instead: + Há muitas transações neste endereço, mais do que seu back-end pode suportar. Veja mais sobre como configurar um back-end mais robusto. Considere visualizar este endereço no site oficial do Mempool: src/app/components/address/address.component.html 204,207 @@ -2221,6 +2224,7 @@ Pending UTXOs + UTXOs pendentes src/app/components/address/address.component.html 262 @@ -2409,6 +2413,7 @@ Browse an overview of the Liquid asset (): see issued amount, burned amount, circulating amount, related transactions, and more. + Navegue por uma visão geral do ativo Liquid (): veja valor emitido, valor queimado, valor circulante, transações relacionadas e mais. src/app/components/asset/asset.component.ts 108 @@ -2532,6 +2537,7 @@ Explore all the assets issued on the Liquid network like L-BTC, L-CAD, USDT, and more. + Explore todos os ativos emitidos na rede Liquid, como L-BTC, L-CAD, USDT e muito mais. src/app/components/assets/assets-nav/assets-nav.component.ts 43 @@ -2673,6 +2679,7 @@ See Bitcoin feerates visualized over time, including minimum and maximum feerates per block along with feerates at various percentiles. + Veja as taxas de Bitcoin visualizadas ao longo do tempo, incluindo taxas mínimas e máximas por bloco, juntamente com taxas em vários percentis. src/app/components/block-fee-rates-graph/block-fee-rates-graph.component.ts 73 @@ -2697,6 +2704,7 @@ See the average mining fees earned per Bitcoin block visualized in BTC and USD over time. + Veja as taxas médias de mineração ganhas por bloco Bitcoin visualizadas em BTC e USD ao longo do tempo. src/app/components/block-fees-graph/block-fees-graph.component.ts 70 @@ -2740,6 +2748,7 @@ Block Fees Vs Subsidy + Taxas dos blocos versus subsídio src/app/components/block-fees-subsidy-graph/block-fees-subsidy-graph.component.html 6 @@ -2756,6 +2765,7 @@ See the mining fees earned per Bitcoin block compared to the Bitcoin block subsidy, visualized in BTC and USD over time. + Veja as taxas de mineração ganhas por bloco Bitcoin em comparação com o subsídio do bloco Bitcoin, visualizadas em BTC e USD ao longo do tempo. src/app/components/block-fees-subsidy-graph/block-fees-subsidy-graph.component.ts 79 @@ -2779,6 +2789,7 @@ select filter categories to highlight matching transactions + selecione categorias de filtro para destacar as transações correspondentes src/app/components/block-filters/block-filters.component.html 2 @@ -2812,7 +2823,7 @@ Match - Selecionar + Confere src/app/components/block-filters/block-filters.component.html 19 @@ -2882,6 +2893,7 @@ See Bitcoin block health visualized over time. Block health is a measure of how many expected transactions were included in an actual mined block. Expected transactions are determined using Mempool's re-implementation of Bitcoin Core's transaction selection algorithm. + Veja a integridade do bloco Bitcoin visualizada ao longo do tempo. A integridade do bloco é uma medida de quantas transações esperadas foram incluídas em um bloco minado de fato. As transações esperadas são determinadas usando a reimplementação do algoritmo de seleção de transações do Bitcoin Core pelo Mempool. src/app/components/block-health-graph/block-health-graph.component.ts 64 @@ -3216,6 +3228,7 @@ See Bitcoin block rewards in BTC and USD visualized over time. Block rewards are the total funds miners earn from the block subsidy and fees. + Veja as recompensas do bloco Bitcoin em BTC e USD visualizadas ao longo do tempo. As recompensas do bloco são o total de fundos que os mineradores ganham com os subsídios e taxas do bloco. src/app/components/block-rewards-graph/block-rewards-graph.component.ts 68 @@ -3240,6 +3253,7 @@ See Bitcoin block sizes (MB) and block weights (weight units) visualized over time. + Veja os tamanhos dos blocos Bitcoin (MB) e os pesos dos blocos (unidades de peso) visualizados ao longo do tempo. src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts 65 @@ -3363,6 +3377,7 @@ See size, weight, fee range, included transactions, and more for Liquid block (). + Veja tamanho, peso, faixa de taxas, transações incluídas e muito mais para o bloco Liquid (). src/app/components/block-view/block-view.component.ts 112 @@ -3378,6 +3393,7 @@ See size, weight, fee range, included transactions, audit (expected v actual), and more for Bitcoin block (). + Veja tamanho, peso, faixa de taxas, transações incluídas, auditoria (esperada x real) e muito mais para Bitcoin bloco ( ). src/app/components/block-view/block-view.component.ts 114 @@ -4109,6 +4125,7 @@ See the most recent Liquid blocks along with basic stats such as block height, block size, and more. + Veja os blocos Liquid mais recentes junto com estatísticas básicas, como altura e tamanho do bloco e muito mais. src/app/components/blocks-list/blocks-list.component.ts 71 @@ -4116,6 +4133,7 @@ See the most recent Bitcoin blocks along with basic stats such as block height, block reward, block size, and more. + Veja os blocos Bitcoin mais recentes junto com estatísticas básicas, como altura do bloco, recompensa do bloco, tamanho do bloco e muito mais. src/app/components/blocks-list/blocks-list.component.ts 73 @@ -4409,6 +4427,7 @@ X Timeline + Linha do Tempo no 𝕏 src/app/components/custom-dashboard/custom-dashboard.component.html 265 @@ -5097,6 +5116,7 @@ See hashrate and difficulty for the Bitcoin network visualized over time. + Veja o hashrate e a dificuldade da rede Bitcoin visualizados ao longo do tempo. src/app/components/hashrate-chart/hashrate-chart.component.ts 76 @@ -5124,6 +5144,7 @@ See Bitcoin mining pool dominance visualized over time: see how top mining pools' share of total hashrate has fluctuated over time. + Veja o domínio do pool de mineração de Bitcoin visualizado ao longo do tempo: veja como a participação dos principais pools de mineração no hashrate total flutuou ao longo do tempo. src/app/components/hashrates-chart-pools/hashrate-chart-pools.component.ts 75 @@ -5237,6 +5258,7 @@ Non-Dust Expired + Poeira Expirada src/app/components/liquid-reserves-audit/expired-utxos-stats/expired-utxos-stats.component.html 3 @@ -5245,6 +5267,7 @@ Total amount of BTC held in non-dust Federation UTXOs that have expired timelocks + Quantidade total de BTC mantidos em UTXOs da Federação sem poeira que têm timelocks expirados src/app/components/liquid-reserves-audit/expired-utxos-stats/expired-utxos-stats.component.html 5 @@ -5279,6 +5302,7 @@ Total amount of BTC held in Federation UTXOs that have expired timelocks + Quantidade total de BTC mantidos em UTXOs da Federação que possuem timelocks expirados src/app/components/liquid-reserves-audit/expired-utxos-stats/expired-utxos-stats.component.html 15 @@ -5388,6 +5412,7 @@ Timelock-Expired UTXOs + UTXOs expirados por timelock src/app/components/liquid-reserves-audit/federation-wallet/federation-wallet.component.html 12 @@ -5442,6 +5467,7 @@ Fund / Redemption Tx + Tx de Depósito/Resgate src/app/components/liquid-reserves-audit/recent-pegs-list/recent-pegs-list.component.html 15 @@ -5459,6 +5485,7 @@ Peg out in progress... + Peg out em andamento... src/app/components/liquid-reserves-audit/recent-pegs-list/recent-pegs-list.component.html 70 @@ -5467,6 +5494,7 @@ 24h Peg-In Volume + Volume de Peg-In 24h src/app/components/liquid-reserves-audit/recent-pegs-stats/recent-pegs-stats.component.html 12 @@ -5484,6 +5512,7 @@ 24h Peg-Out Volume + Volume de Peg-Out 24h src/app/components/liquid-reserves-audit/recent-pegs-stats/recent-pegs-stats.component.html 18 @@ -5510,6 +5539,7 @@ Number of times that the Federation's BTC holdings fall below 95% of the total L-BTC supply + Número de vezes que as participações de BTC da Federação caem abaixo de 95% do fornecimento total de L-BTC src/app/components/liquid-reserves-audit/reserves-ratio-stats/reserves-ratio-stats.component.html 6 @@ -5527,6 +5557,7 @@ Avg Peg Ratio + Razão Média de Peg src/app/components/liquid-reserves-audit/reserves-ratio-stats/reserves-ratio-stats.component.html 14 @@ -5561,7 +5592,7 @@ L-BTC in circulation - L-BTC em circulação + L-BTC circulando src/app/components/liquid-reserves-audit/reserves-supply-stats/reserves-supply-stats.component.html 3 @@ -5626,6 +5657,7 @@ See stats for transactions in the mempool: fee range, aggregate size, and more. Mempool blocks are updated in real-time as the network receives new transactions. + Veja estatísticas de transações no mempool: faixa de taxas, tamanho agregado e muito mais. Os blocos no mempool são atualizados em tempo real à medida que a rede recebe novas transações. src/app/components/mempool-block/mempool-block.component.ts 62 @@ -5721,6 +5753,7 @@ Get real-time Bitcoin mining stats like hashrate, difficulty adjustment, block rewards, pool dominance, and more. + Obtenha estatísticas de mineração de Bitcoin em tempo real, como hashrate, ajuste de dificuldade, recompensas de bloco, domínio de pool e muito mais. src/app/components/mining-dashboard/mining-dashboard.component.ts 30 @@ -5905,6 +5938,7 @@ See the top Bitcoin mining pools ranked by number of blocks mined, over your desired timeframe. + Veja os principais pools de mineração de Bitcoin classificados por número de blocos minerados, durante o período desejado. src/app/components/pool-ranking/pool-ranking.component.ts 60 @@ -5998,6 +6032,7 @@ See mining pool stats for : most recent mined blocks, hashrate over time, total block reward to date, known coinbase addresses, and more. + Veja as estatísticas do pool de mineração : blocos minerados mais recentes, taxa de hash ao longo do tempo, recompensa total do bloco até o momento, endereços de coinbase conhecidos e muito mais. src/app/components/pool/pool-preview.component.ts 86 @@ -6202,6 +6237,7 @@ Broadcast a transaction to the network using the transaction's hash. + Transmita uma transação para a rede usando o hash da transação. src/app/components/push-transaction/push-transaction.component.ts 39 @@ -6231,6 +6267,7 @@ See the most recent RBF replacements on the Bitcoin network, updated in real-time. + Veja as substituições de RBF mais recentes na rede Bitcoin, atualizadas em tempo real. src/app/components/rbf-list/rbf-list.component.ts 62 @@ -6553,6 +6590,7 @@ See mempool size (in MvB) and transactions per second (in vB/s) visualized over time. + Veja o tamanho do mempool (em MvB) e as transações por segundo (em vB/s) visualizadas ao longo do tempo. src/app/components/statistics/statistics.component.ts 66 @@ -6560,6 +6598,7 @@ See Bitcoin blocks and mempool congestion in real-time in a simplified format perfect for a TV. + Veja blocos de Bitcoin e congestionamento da mempool em tempo real em um formato simplificado, perfeito para uma TV. src/app/components/television/television.component.ts 40 @@ -6621,6 +6660,7 @@ Rejection reason + Motivo da rejeição src/app/components/test-transactions/test-transactions.component.html 26 @@ -6833,7 +6873,7 @@ After - Depois de + Depois de src/app/components/time/time.component.ts 234 @@ -6893,6 +6933,7 @@ before + antes src/app/components/time/time.component.ts 257 @@ -7118,6 +7159,7 @@ Get real-time status, addresses, fees, script info, and more for transaction with txid . + Obtenha status em tempo real, endereços, taxas, informações de script e muito mais para transações com txid . src/app/components/tracker/tracker.component.ts 410 @@ -7247,7 +7289,7 @@ Inputs & Outputs - Entradas & Saídas + Entradas e Saídas src/app/components/transaction/transaction.component.html 218 @@ -7289,6 +7331,7 @@ Sigops + Sigops src/app/components/transaction/transaction.component.html 273 @@ -7343,6 +7386,7 @@ This transaction was projected to be included in the block + Esta transação foi projetada para ser incluída no bloco src/app/components/transaction/transaction.component.html 520 @@ -7361,6 +7405,7 @@ This transaction was seen in the mempool prior to mining + Esta transação foi vista na mempool antes da mineração src/app/components/transaction/transaction.component.html 522 @@ -7379,6 +7424,7 @@ This transaction was missing from our mempool prior to mining + Esta transação estava faltando em nossa mempool antes da mineração src/app/components/transaction/transaction.component.html 524 @@ -7793,6 +7839,7 @@ Liquid Federation Holdings + Holdings da Liquid Federation src/app/dashboard/dashboard.component.html 165 @@ -7805,6 +7852,7 @@ Federation Timelock-Expired UTXOs + UTXOs expirados por timelock da Federação src/app/dashboard/dashboard.component.html 174 @@ -7817,6 +7865,7 @@ L-BTC Supply Against BTC Holdings + Oferta de L-BTC contra holdings BTC src/app/dashboard/dashboard.component.html 184 @@ -7846,6 +7895,7 @@ mempool.space merely provides data about the Bitcoin network. It cannot help you with retrieving funds, wallet issues, etc.For any such requests, you need to get in touch with the entity that helped make the transaction (wallet software, exchange company, etc). + mempool.space apenas fornece dados sobre a rede Bitcoin. Ele não pode ajudá-lo a recuperar fundos, problemas de carteira etc.Para qualquer solicitação desse tipo, você precisa entrar em contato com a entidade que ajudou a fazer a transação (software de carteira, corretora, etc.). src/app/docs/api-docs/api-docs.component.html 15,16 @@ -7948,6 +7998,7 @@ Get answers to common questions like: What is a mempool? Why isn't my transaction confirming? How can I run my own instance of The Mempool Open Source Project? And more. + Obtenha respostas para perguntas comuns como: O que é um mempool? Por que minha transação não está sendo confirmada? Como posso executar minha própria instância do The Mempool Open Source Project? E mais. src/app/docs/docs/docs.component.ts 47 @@ -7963,6 +8014,7 @@ Documentation for the liquid.network REST API service: get info on addresses, transactions, assets, blocks, and more. + Documentação para o serviço API REST liquid.network: obtenha informações sobre endereços, transações, ativos, blocos e muito mais. src/app/docs/docs/docs.component.ts 53 @@ -7970,6 +8022,7 @@ Documentation for the mempool.space REST API service: get info on addresses, transactions, blocks, fees, mining, the Lightning network, and more. + Documentação para o serviço REST API mempool.space: obtenha informações sobre endereços, transações, blocos, taxas, mineração, rede Lightning e muito mais. src/app/docs/docs/docs.component.ts 55 @@ -7985,6 +8038,7 @@ Documentation for the liquid.network WebSocket API service: get real-time info on blocks, mempools, transactions, addresses, and more. + Documentação para o serviço API WebSocket liquid.network: obtenha informações em tempo real sobre blocos, mempools, transações, endereços e muito mais. src/app/docs/docs/docs.component.ts 61 @@ -7992,6 +8046,7 @@ Documentation for the mempool.space WebSocket API service: get real-time info on blocks, mempools, transactions, addresses, and more. + Documentação para o serviço API WebSocket mempool.space: obtenha informações em tempo real sobre blocos, mempools, transações, endereços e muito mais. src/app/docs/docs/docs.component.ts 63 @@ -8007,6 +8062,7 @@ Documentation for our Electrum RPC interface: get instant, convenient, and reliable access to an Esplora instance. + Documentação para nossa interface Electrum RPC: obtenha acesso instantâneo, conveniente e confiável a uma instância Esplora. src/app/docs/docs/docs.component.ts 68 @@ -8323,6 +8379,7 @@ Overview for Lightning channel . See channel capacity, the Lightning nodes involved, related on-chain transactions, and more. + Visão geral do canal Lightning . Veja a capacidade do canal, os nós do Lightning envolvidos, as transações relacionadas on-chain e muito mais. src/app/lightning/channel/channel-preview.component.ts 37 @@ -8950,6 +9007,7 @@ Get stats on the Lightning network (aggregate capacity, connectivity, etc), Lightning nodes (channels, liquidity, etc) and Lightning channels (status, fees, etc). + Obtenha estatísticas sobre a rede Lightning (capacidade agregada, conectividade, etc.), nós Lightning (canais, liquidez, etc.) e canais Lightning (status, taxas, etc.). src/app/lightning/lightning-dashboard/lightning-dashboard.component.ts 34 @@ -9059,6 +9117,7 @@ Overview for the Lightning network node named . See channels, capacity, location, fee stats, and more. + Visão geral do nó da rede Lightning denominado . Veja canais, capacidade, localização, estatísticas de taxas e muito mais. src/app/lightning/node/node-preview.component.ts 52 @@ -9258,6 +9317,7 @@ See the channels of non-Tor Lightning network nodes visualized on a world map. Hover/tap on points on the map for node names and details. + Veja os canais de nós da rede não-Tor Lightning visualizados em um mapa mundial. Passe o mouse/toque nos pontos do mapa para obter nomes e detalhes dos nós. src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts 74 @@ -9282,6 +9342,7 @@ See the locations of non-Tor Lightning network nodes visualized on a world map. Hover/tap on points on the map for node names and details. + Veja as localizações dos nós da rede não-Tor Lightning visualizados em um mapa mundial. Passe o mouse/toque nos pontos do mapa para obter nomes e detalhes dos nós. src/app/lightning/nodes-map/nodes-map.component.ts 52 @@ -9289,6 +9350,7 @@ See the number of Lightning network nodes visualized over time by network: clearnet only (IPv4, IPv6), darknet (Tor, I2p, cjdns), and both. + Veja o número de nós da rede Lightning visualizados ao longo do tempo por rede: somente clearnet (IPv4, IPv6), darknet (Tor, I2p, cjdns) e ambos. src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 74 @@ -9344,7 +9406,7 @@ Share - Compartilhar + Cota src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html 29 @@ -9357,6 +9419,7 @@ See a geographical breakdown of the Lightning network: how many Lightning nodes are hosted in countries around the world, aggregate BTC capacity for each country, and more. + Veja um detalhamento geográfico da rede Lightning: quantos nós Lightning estão hospedados em países ao redor do mundo, capacidade agregada de BTC para cada país e muito mais. src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.ts 47 @@ -9427,6 +9490,7 @@ Explore all the Lightning nodes hosted in and see an overview of each node's capacity, number of open channels, and more. + Explore todos os nós do Lightning hospedados em e tenha uma visão geral da capacidade de cada nó, número de canais abertos e muito mais. src/app/lightning/nodes-per-country/nodes-per-country.component.ts 44 @@ -9509,6 +9573,7 @@ Browse the top 100 ISPs hosting Lightning nodes along with stats like total number of nodes per ISP, aggregate BTC capacity per ISP, and more + Navegue pelos 100 principais provedores que hospedam nós Lightning junto com estatísticas como número total de nós por provedor, capacidade agregada de BTC por provedor e muito mais src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.ts 54 @@ -9571,6 +9636,7 @@ Browse all Bitcoin Lightning nodes using the [AS] ISP and see aggregate stats like total number of nodes, total capacity, and more for the ISP. + Navegue por todos os nós Bitcoin Lightning usando o provedor [AS] e veja estatísticas agregadas, como número total de nós, capacidade total, e muito mais para o provedor. src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.ts 45 @@ -9626,6 +9692,7 @@ See the oldest nodes on the Lightning network along with their capacity, number of channels, location, etc. + Veja os nós mais antigos da rede Lightning junto com sua capacidade, número de canais, localização, etc. src/app/lightning/nodes-ranking/oldest-nodes/oldest-nodes.component.ts 28 @@ -9633,6 +9700,7 @@ See Lightning nodes with the most BTC liquidity deployed along with high-level stats like number of open channels, location, node age, and more. + Veja os nós do Lightning com a maior liquidez BTC implantada, juntamente com estatísticas de alto nível, como número de canais abertos, localização, idade do nó e muito mais. src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.ts 35 @@ -9640,6 +9708,7 @@ See Lightning nodes with the most channels open along with high-level stats like total node capacity, node age, and more. + Veja os nós do Lightning com o maior número de canais abertos, juntamente com estatísticas de alto nível, como capacidade total do nó, idade do nó e muito mais. src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts 39 @@ -9664,6 +9733,7 @@ See the top Lightning network nodes ranked by liquidity, connectivity, and age. + Veja os principais nós da rede Lightning classificados por liquidez, conectividade e idade. src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.ts 23 @@ -9671,6 +9741,7 @@ See the capacity of the Lightning network visualized over time in terms of the number of open channels and total bitcoin capacity. + Veja a capacidade da rede Lightning visualizada ao longo do tempo em termos de número de canais abertos e capacidade total de bitcoin. src/app/lightning/statistics-chart/lightning-statistics-chart.component.ts 71 @@ -9696,6 +9767,7 @@ provably unspendable + comprovadamente impossível de gastar src/app/shared/components/address-type/address-type.component.html 18 @@ -9704,6 +9776,7 @@ bare multisig + multisig simples src/app/shared/components/address-type/address-type.component.html 21 diff --git a/frontend/src/locale/messages.ru.xlf b/frontend/src/locale/messages.ru.xlf index 82b63285f..b2c7867ad 100644 --- a/frontend/src/locale/messages.ru.xlf +++ b/frontend/src/locale/messages.ru.xlf @@ -645,7 +645,7 @@ This will reduce your expected waiting time until the first confirmation to - Это сократит время ожидания до первого подтверждения на + Это сократит время ожидания до первого подтверждения src/app/components/accelerate-checkout/accelerate-checkout.component.html 76,77 @@ -6813,7 +6813,7 @@ within ~ - в пределах ~ + примерно на src/app/components/time/time.component.ts 211 From 12456735754d43c97289f9f7818253b41150332e Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Fri, 26 Jul 2024 17:39:58 +0200 Subject: [PATCH 9/9] [accelerator] polish UI --- .../accelerate-checkout.component.html | 18 ++-- .../accelerate-checkout.component.ts | 4 +- frontend/src/resources/apple-pay.png | Bin 0 -> 47582 bytes frontend/src/resources/apple-pay.svg | 84 ------------------ frontend/src/resources/google-pay.png | Bin 34146 -> 30980 bytes 5 files changed, 13 insertions(+), 93 deletions(-) create mode 100644 frontend/src/resources/apple-pay.png delete mode 100755 frontend/src/resources/apple-pay.svg diff --git a/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.html b/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.html index 04b76055c..b9a176055 100644 --- a/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.html +++ b/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.html @@ -402,12 +402,16 @@ } @if (canPayWithApplePay) { - @if (canPayWithCashapp) {
} - + @if (canPayWithCashapp) { } +
+ +
} @if (canPayWithGooglePay) { - @if (canPayWithCashapp || canPayWithApplePay) {
} - + @if (canPayWithCashapp || canPayWithApplePay) { } +
+ +
}
} @@ -467,11 +471,11 @@
@if (step === 'applepay') { -
+
} @else if (step === 'cashapp') { -
+
} @else if (step === 'googlepay') { -
+
} @if (loadingCashapp || loadingApplePay || loadingGooglePay) {
diff --git a/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.ts b/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.ts index d9f270111..624df2ca3 100644 --- a/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.ts +++ b/frontend/src/app/components/accelerate-checkout/accelerate-checkout.component.ts @@ -575,7 +575,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { await this.googlePay.attach(`#google-pay-button`, { buttonType: 'pay', - onClick: (e) => { console.log(e); } + buttonSizeMode: 'fill', }); this.loadingGooglePay = false; @@ -664,7 +664,7 @@ export class AccelerateCheckout implements OnInit, OnDestroy { referenceId: `accelerator-${this.tx.txid.substring(0, 15)}-${Math.round(new Date().getTime() / 1000)}` }); - await this.cashAppPay.attach(`#cash-app-pay`, { theme: 'light', size: 'small', shape: 'semiround' }); + await this.cashAppPay.attach(`#cash-app-pay`, { theme: 'dark' }); this.loadingCashapp = false; this.cashAppPay.addEventListener('ontokenization', event => { diff --git a/frontend/src/resources/apple-pay.png b/frontend/src/resources/apple-pay.png new file mode 100644 index 0000000000000000000000000000000000000000..3c446c69825937735eaab0b1c6e79513bff881a7 GIT binary patch literal 47582 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 literal 0 HcmV?d00001 diff --git a/frontend/src/resources/apple-pay.svg b/frontend/src/resources/apple-pay.svg deleted file mode 100755 index 0c6ecafef..000000000 --- a/frontend/src/resources/apple-pay.svg +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/frontend/src/resources/google-pay.png b/frontend/src/resources/google-pay.png index 77b6a6574c925d5cd2f408b78993452263e17a8a..a44046d37d19cbba7e6bf45cb3cf1ae13b62fca7 100644 GIT binary patch literal 30980 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 aBf{IdzfRh8_SnG4AxMhKeJ&B!|NcKUOg29N