feat(checkout): synchronize purchase countdown

This commit is contained in:
2026-08-27 08:52:42 -03:00
parent 1bffefece3
commit d61b1e4b0a
3 changed files with 157 additions and 0 deletions

View File

@@ -28,6 +28,7 @@ import { StepComponent } from '../../../../shared/components/stepper/step.compon
import { StepperComponent } from '../../../../shared/components/stepper/stepper.component';
import { CheckoutDataStepComponent } from './checkout-data-step.component';
import { CheckoutPaymentStepComponent } from './checkout-payment-step.component';
import { CheckoutCountdownService } from '../../../../core/services/checkout-countdown.service';
import {
CheckoutForm,
PaymentMethod,
@@ -64,6 +65,7 @@ export class CheckoutPageComponent implements OnInit, OnDestroy {
private readonly router = inject(Router);
private readonly tenantService = inject(TenantService);
private readonly checkoutService = inject(CheckoutService);
private readonly checkoutCountdownService = inject(CheckoutCountdownService);
private readonly authService = inject(AuthService);
private readonly globalLoadingService = inject(GlobalLoadingService);
private readonly toastService = inject(ToastService);
@@ -161,6 +163,8 @@ export class CheckoutPageComponent implements OnInit, OnDestroy {
}
ngOnInit(): void {
this.checkoutCountdownService.clear();
const purchaseId = Number(this.route.snapshot.paramMap.get('id'));
if (!Number.isInteger(purchaseId) || purchaseId <= 0) {
void this.router.navigate(['/']);
@@ -173,6 +177,7 @@ export class CheckoutPageComponent implements OnInit, OnDestroy {
ngOnDestroy(): void {
this.stopQrPolling();
this.stopTransferPolling();
this.checkoutCountdownService.clear();
}
private mapPurchaseItemToMock(item: PurchaseDetailItemResponse): CartItemMock {
@@ -228,6 +233,7 @@ export class CheckoutPageComponent implements OnInit, OnDestroy {
nombre_apellido: formValue.nombre,
});
this.createdPurchase.set(purchase);
this.checkoutCountdownService.synchronize(purchase);
this.stepper.next();
@@ -451,6 +457,8 @@ export class CheckoutPageComponent implements OnInit, OnDestroy {
return;
}
this.checkoutCountdownService.synchronize(purchase);
if (purchase.status === 'paid') {
this.navigateToPurchaseStatus(purchaseId);
return;
@@ -500,6 +508,8 @@ export class CheckoutPageComponent implements OnInit, OnDestroy {
return;
}
this.checkoutCountdownService.synchronize(purchase);
if (purchase.status === 'paid') {
this.navigateToPurchaseStatus(purchaseId);
return;
@@ -586,6 +596,8 @@ export class CheckoutPageComponent implements OnInit, OnDestroy {
return;
}
this.checkoutCountdownService.synchronize(purchase);
if (purchase.status === 'paid') {
this.handleConfirmedPayment(purchaseId);
return;
@@ -696,6 +708,7 @@ export class CheckoutPageComponent implements OnInit, OnDestroy {
this.createdPurchaseId.set(purchase.id);
this.createdPurchase.set(purchase);
this.checkoutCountdownService.synchronize(purchase);
this.checkoutStepIndex.set(purchase.status === 'pending_payment' ? 1 : 0);
if (