From 3664a94722c913f2b35d2c1a43dab6cc99c4c990 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cau=C3=AA=20Faleiros?= Date: Tue, 11 Aug 2026 09:25:31 -0300 Subject: [PATCH] Avoid Olist detail render cascade --- src/pages/OlistSync.tsx | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/pages/OlistSync.tsx b/src/pages/OlistSync.tsx index 7cb058d..23755a6 100644 --- a/src/pages/OlistSync.tsx +++ b/src/pages/OlistSync.tsx @@ -72,7 +72,7 @@ const OlistSync = () => { }; }, [loadStatus]); - const loadRunDetails = useCallback(async (runId: number, pages = detailsPages) => { + const loadRunDetails = useCallback(async (runId: number, pages: { events: number; products: number }) => { setIsDetailsLoading(true); try { setRunDetails(await fetchOlistRunDetails(runId, pages.events, pages.products)); @@ -81,18 +81,13 @@ const OlistSync = () => { } finally { setIsDetailsLoading(false); } - }, [detailsPages]); - - useEffect(() => { - if (!selectedRunId) return; - void loadRunDetails(selectedRunId); - }, [selectedRunId, detailsPages, loadRunDetails]); + }, []); useEffect(() => { if (!selectedRunId || runDetails?.run.status !== 'running') return; - const intervalId = window.setInterval(() => void loadRunDetails(selectedRunId), 5_000); + const intervalId = window.setInterval(() => void loadRunDetails(selectedRunId, detailsPages), 5_000); return () => window.clearInterval(intervalId); - }, [selectedRunId, runDetails?.run.status, loadRunDetails]); + }, [selectedRunId, runDetails?.run.status, detailsPages, loadRunDetails]); const latestRun = status?.runs[0] || null; const completionPercent = useMemo(() => { @@ -137,8 +132,10 @@ const OlistSync = () => { }; const openRunDetails = (runId: number) => { - setDetailsPages({ events: 1, products: 1 }); + const initialPages = { events: 1, products: 1 }; + setDetailsPages(initialPages); setSelectedRunId(runId); + void loadRunDetails(runId, initialPages); }; if (isLoading && !status) { @@ -252,7 +249,7 @@ const OlistSync = () => { {!runDetails.events.items.length &&

Nenhum evento registrado ainda.

} {runDetails.events.items.map(event =>

{event.message}

{event.sku &&

{event.sku} · {event.productDescription}

}

{formatDateTime(event.createdAt)}

)} -
Página {runDetails.events.page}
+
Página {runDetails.events.page}

Produtos afetados

{runDetails.affectedProducts.total.toLocaleString('pt-BR')} composições importadas nesta execução

@@ -260,7 +257,7 @@ const OlistSync = () => { {!runDetails.affectedProducts.items.length &&

Nenhuma composição importada nesta execução.

} {runDetails.affectedProducts.items.map(product =>

{product.productDescription || product.sku || product.productId}

{product.sku || `ID ${product.productId}`}

{Number(product.metadata.componentCount || 0).toLocaleString('pt-BR')} componentes · {Number(product.metadata.referenceCount || 0).toLocaleString('pt-BR')} referências

)} -
Página {runDetails.affectedProducts.page}
+
Página {runDetails.affectedProducts.page}
) :
Não foi possível carregar os detalhes desta execução.
}