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.
}