diff --git a/apps/web/src/app/[locale]/awooop/runs/page.tsx b/apps/web/src/app/[locale]/awooop/runs/page.tsx index 2d7189e9..05c0280b 100644 --- a/apps/web/src/app/[locale]/awooop/runs/page.tsx +++ b/apps/web/src/app/[locale]/awooop/runs/page.tsx @@ -4539,14 +4539,17 @@ export default function RunsPage() { ).length, }; }, [runs]); + const normalizedIncidentFocus = useMemo(() => { + const normalized = incidentFilter.trim().toUpperCase(); + return INCIDENT_ID_FILTER_RE.test(normalized) ? normalized : null; + }, [incidentFilter]); const runIncidentIds = useMemo(() => { - const normalizedIncidentFilter = incidentFilter.trim().toUpperCase(); const ids = runs.flatMap((run) => linkedIncidentIds(run.remediation_summary)); - if (INCIDENT_ID_FILTER_RE.test(normalizedIncidentFilter)) { - ids.unshift(normalizedIncidentFilter); + if (normalizedIncidentFocus) { + ids.unshift(normalizedIncidentFocus); } return Array.from(new Set(ids)); - }, [runs, incidentFilter]); + }, [runs, normalizedIncidentFocus]); const { statusChains: runStatusChains, isLoading: runStatusChainsLoading, @@ -4556,13 +4559,25 @@ export default function RunsPage() { refreshKey: lastRefresh?.toISOString() ?? null, limit: PER_PAGE, }); - const normalizedIncidentFocus = useMemo(() => { - const normalized = incidentFilter.trim().toUpperCase(); - return INCIDENT_ID_FILTER_RE.test(normalized) ? normalized : null; - }, [incidentFilter]); + const { + statusChains: incidentFocusStatusChains, + isLoading: incidentFocusStatusChainsLoading, + } = useIncidentStatusChains({ + incidentIds: normalizedIncidentFocus ? [normalizedIncidentFocus] : [], + projectId: projectFilter || "awoooi", + refreshKey: lastRefresh?.toISOString() ?? null, + limit: 1, + concurrency: 1, + timeoutMs: 8000, + }); const incidentFocusChain = normalizedIncidentFocus - ? runStatusChains[normalizedIncidentFocus] + ? incidentFocusStatusChains[normalizedIncidentFocus] ?? runStatusChains[normalizedIncidentFocus] : null; + const incidentFocusLoading = Boolean( + normalizedIncidentFocus + && !incidentFocusChain + && (incidentFocusStatusChainsLoading || runStatusChainsLoading) + ); return (