corregidos bugs de: ret, vs delivery, efectivo vs link, charsets, price query

This commit is contained in:
Lucas Tettamanti
2026-01-26 23:27:47 -03:00
parent 53293ce9b3
commit 493f26af17
13 changed files with 757 additions and 193 deletions

View File

@@ -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() {