mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2026-03-21 22:56:47 +00:00
fix: processing page reads DAG status from user room WS fallback
The processing page only read dagStatus from the transcript room WS, which loses events during page navigation and React strict mode double-mounting (WS torn down and reconnected, historical replay skips DAG_STATUS). Now also consumes useDagStatusMap() from UserEventsProvider (user room), which uses a singleton WS that survives remounts. Priority: transcript room WS > user room WS > REST API.
This commit is contained in:
@@ -13,6 +13,7 @@ import { useTranscriptGet } from "../../../../lib/apiHooks";
|
|||||||
import { parseNonEmptyString } from "../../../../lib/utils";
|
import { parseNonEmptyString } from "../../../../lib/utils";
|
||||||
import { useWebSockets } from "../../useWebSockets";
|
import { useWebSockets } from "../../useWebSockets";
|
||||||
import type { DagTask } from "../../useWebSockets";
|
import type { DagTask } from "../../useWebSockets";
|
||||||
|
import { useDagStatusMap } from "../../../../lib/UserEventsProvider";
|
||||||
import DagProgressTable from "./DagProgressTable";
|
import DagProgressTable from "./DagProgressTable";
|
||||||
|
|
||||||
type TranscriptProcessing = {
|
type TranscriptProcessing = {
|
||||||
@@ -29,13 +30,16 @@ export default function TranscriptProcessing(details: TranscriptProcessing) {
|
|||||||
const transcript = useTranscriptGet(transcriptId);
|
const transcript = useTranscriptGet(transcriptId);
|
||||||
const { status: wsStatus, dagStatus: wsDagStatus } =
|
const { status: wsStatus, dagStatus: wsDagStatus } =
|
||||||
useWebSockets(transcriptId);
|
useWebSockets(transcriptId);
|
||||||
|
const userDagStatusMap = useDagStatusMap();
|
||||||
|
const userDagStatus = userDagStatusMap.get(transcriptId) ?? null;
|
||||||
|
|
||||||
const restDagStatus: DagTask[] | null =
|
const restDagStatus: DagTask[] | null =
|
||||||
((transcript.data as Record<string, unknown>)?.dag_status as
|
((transcript.data as Record<string, unknown>)?.dag_status as
|
||||||
| DagTask[]
|
| DagTask[]
|
||||||
| null) ?? null;
|
| null) ?? null;
|
||||||
|
|
||||||
const dagStatus = wsDagStatus ?? restDagStatus;
|
// Prefer transcript room WS (most granular), then user room WS, then REST
|
||||||
|
const dagStatus = wsDagStatus ?? userDagStatus ?? restDagStatus;
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const status = wsStatus?.value ?? transcript.data?.status;
|
const status = wsStatus?.value ?? transcript.data?.status;
|
||||||
|
|||||||
Reference in New Issue
Block a user