From 2c1beffef8241342717a3a3b0427f1b23ea8b1d9 Mon Sep 17 00:00:00 2001 From: Kevin_Ramirez Date: Tue, 6 Jan 2026 09:10:51 -0600 Subject: [PATCH] Se corrigio el bug de eliminacion de regsitros --- .../customs_brokers/data-table.svelte | 3 -- .../dashboard/customs_brokers/+page.svelte | 51 +++++++------------ 2 files changed, 17 insertions(+), 37 deletions(-) diff --git a/frontend/src/lib/components/dashboard/customs_brokers/data-table.svelte b/frontend/src/lib/components/dashboard/customs_brokers/data-table.svelte index 40e3b137..ca2d16aa 100644 --- a/frontend/src/lib/components/dashboard/customs_brokers/data-table.svelte +++ b/frontend/src/lib/components/dashboard/customs_brokers/data-table.svelte @@ -13,9 +13,6 @@ let { data, columns }: DataTableProps = $props(); - /* ========================= - TABLA REACTIVA (RUNES) - ========================= */ const table = $derived( createSvelteTable({ diff --git a/frontend/src/routes/dashboard/customs_brokers/+page.svelte b/frontend/src/routes/dashboard/customs_brokers/+page.svelte index b345c3ac..611dce23 100644 --- a/frontend/src/routes/dashboard/customs_brokers/+page.svelte +++ b/frontend/src/routes/dashboard/customs_brokers/+page.svelte @@ -13,13 +13,9 @@ import { companyStore } from '$lib/stores/company.svelte'; import { Plus, Search, Trash2, Loader2 } from 'lucide-svelte'; - // Los datos iniciales vienen del servidor let { data }: { data: PageData } = $props(); - - // Estado para el diálogo de crear let showCreateDialog = $state(false); - // Estado para la lista de agentes aduanales let brokersList = $state(data.brokers || []); let listLoading = $state(false); let listError = $state(data.error || null); @@ -30,29 +26,16 @@ let searchLoading = $state(false); let searchError = $state(null); - // Control para evitar bucles de recarga - let lastLoadedCompanyId = $state(""); - - // --- REACTIVIDAD AUTOMÁTICA --- - // 1. Sincronizar si cambia la data del servidor (navegación) - $effect(() => { - if (data.brokers) { - brokersList = data.brokers; - if (data.currentCompanyId) { - lastLoadedCompanyId = data.currentCompanyId.toString(); - } - } - }); + let lastLoadedCompanyId = $state(data.currentCompanyId?.toString() || ""); - // 2. Sincronizar si cambia el store de la empresa $effect(() => { const currentId = companyStore.activeCompany?.id?.toString(); - // Solo recargamos si hay ID, si es diferente al último y estamos en el navegador + if (browser && currentId && currentId !== lastLoadedCompanyId) { lastLoadedCompanyId = currentId; - // Recarga normal (false), muestra loading porque cambiamos de empresa + reloadData(false); } }); @@ -115,7 +98,7 @@ /** * Recarga los datos. - * @param silent Si es true, NO bloquea la tabla con el spinner (ideal para delete/create). + * @param silent Si es true, NO bloquea la tabla con el spinner */ async function reloadData(silent = false) { searchKey = ''; @@ -124,7 +107,6 @@ if (!companyStore.activeCompany) return; - // Solo mostramos el spinner visual si NO es silencioso if (!silent) { listLoading = true; } @@ -146,7 +128,14 @@ } if (response.data) { - brokersList = response.data; + if (Array.isArray(response.data)) { + brokersList = response.data; + } else if (response.data.items && Array.isArray(response.data.items)) { + brokersList = response.data.items; + } else { + console.error("⚠️ Estructura de datos inesperada:", response.data); + brokersList = []; + } } } catch (e) { listError = 'Error recargando datos'; @@ -161,10 +150,7 @@ } function handleSuccess() { - // Esperamos 300ms a la DB y recargamos "en silencio" (sin bloquear la tabla) - setTimeout(() => { - reloadData(true); - }, 300); + reloadData(false); } const columns = createColumns(handleSuccess); @@ -275,13 +261,10 @@ {/if}
- - {#key brokers} - - {/key} +
{/if}