corregidos bugs de: ret, vs delivery, efectivo vs link, charsets, price query
This commit is contained in:
@@ -247,11 +247,50 @@ class OrdersCrud extends HTMLElement {
|
||||
}
|
||||
});
|
||||
|
||||
// Escuchar nuevos pedidos para actualizar automáticamente
|
||||
// Usa retry con backoff porque WooCommerce puede tardar en devolver el pedido recién creado
|
||||
this._unsubOrderCreated = on("order:created", ({ order_id }) => {
|
||||
console.log("[orders-crud] order:created received, order_id:", order_id);
|
||||
this.refreshWithRetry(order_id);
|
||||
});
|
||||
|
||||
this.loadOrders();
|
||||
}
|
||||
|
||||
disconnectedCallback() {
|
||||
this._unsubRouter?.();
|
||||
this._unsubOrderCreated?.();
|
||||
}
|
||||
|
||||
/**
|
||||
* Refresca la lista de pedidos con retry si el pedido esperado no aparece
|
||||
* WooCommerce puede tardar en devolver un pedido recién creado
|
||||
*/
|
||||
async refreshWithRetry(expectedOrderId, attempt = 1) {
|
||||
const maxAttempts = 3;
|
||||
const delays = [500, 2000, 4000]; // ms entre intentos
|
||||
|
||||
// Esperar antes de refrescar
|
||||
if (attempt > 1) {
|
||||
await new Promise(r => setTimeout(r, delays[attempt - 1] || 2000));
|
||||
} else {
|
||||
// Primer intento: pequeño delay para dar tiempo a WooCommerce
|
||||
await new Promise(r => setTimeout(r, 500));
|
||||
}
|
||||
|
||||
await this.loadOrders();
|
||||
|
||||
// Verificar si el pedido esperado apareció
|
||||
if (expectedOrderId) {
|
||||
const found = this.orders.find(o => o.id === expectedOrderId);
|
||||
if (!found && attempt < maxAttempts) {
|
||||
console.log(`[orders-crud] order ${expectedOrderId} not found, retry ${attempt + 1}/${maxAttempts}...`);
|
||||
return this.refreshWithRetry(expectedOrderId, attempt + 1);
|
||||
}
|
||||
if (found) {
|
||||
console.log(`[orders-crud] order ${expectedOrderId} found on attempt ${attempt}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async loadOrders() {
|
||||
|
||||
Reference in New Issue
Block a user