fix(cart): refresh state after expiration

This commit is contained in:
2026-08-25 16:33:44 -03:00
parent 4a952af784
commit 1362d0c163
2 changed files with 89 additions and 9 deletions

View File

@@ -98,11 +98,12 @@ export class CartComponent {
this.clearOverride(update.cartItemId);
},
error: (err: HttpErrorResponse) => {
console.error('Error updating cart quantity', err);
const msg =
err.error?.message || 'Error al actualizar la cantidad del producto.';
this.toastService.danger(msg);
this.clearOverride(update.cartItemId);
this.handleMutationError(
err,
'Error al actualizar la cantidad del producto.',
'Error updating cart quantity',
);
},
}),
catchError(() => EMPTY),
@@ -205,9 +206,12 @@ export class CartComponent {
this.toastService.success(response.message || 'Variante actualizada.');
},
error: (error: HttpErrorResponse) => {
console.error('Error updating cart item variant', error);
this.clearVariantOverride(cartItemId);
this.toastService.danger(error.error?.message || 'No se pudo actualizar la variante.');
this.handleMutationError(
error,
'No se pudo actualizar la variante.',
'Error updating cart item variant',
);
},
});
}
@@ -305,10 +309,29 @@ export class CartComponent {
this.toastService.info(msg);
},
error: (err: HttpErrorResponse) => {
console.error('Error removing item from cart', err);
const msg = err.error?.message || 'Error al eliminar el producto del carrito.';
this.toastService.danger(msg);
this.handleMutationError(
err,
'Error al eliminar el producto del carrito.',
'Error removing item from cart',
);
},
});
}
private handleMutationError(
error: HttpErrorResponse,
fallbackMessage: string,
logMessage: string,
): void {
console.error(logMessage, error);
this.toastService.danger(error.error?.message || fallbackMessage);
if (error.error?.code !== 'stock_reservation.expired') {
return;
}
this.cartService.loadCart().subscribe({
error: (refreshError) => console.error('Error refreshing expired cart', refreshError),
});
}
}