From 6e8734c73f5512dd38e4f85ed3889da9d41d732e Mon Sep 17 00:00:00 2001 From: Carlos Valente Date: Wed, 6 Nov 2024 20:00:07 +0100 Subject: [PATCH] fix: prevent stale data on project change --- apps/client/src/common/hooks-query/useRundown.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/apps/client/src/common/hooks-query/useRundown.ts b/apps/client/src/common/hooks-query/useRundown.ts index 8c2c2d6a4..d12398691 100644 --- a/apps/client/src/common/hooks-query/useRundown.ts +++ b/apps/client/src/common/hooks-query/useRundown.ts @@ -1,4 +1,4 @@ -import { useEffect, useState } from 'react'; +import { useEffect, useRef, useState } from 'react'; import { useQuery } from '@tanstack/react-query'; import { NormalisedRundown, OntimeRundown, RundownCached } from 'ontime-types'; @@ -6,6 +6,8 @@ import { queryRefetchIntervalSlow } from '../../ontimeConfig'; import { RUNDOWN } from '../api/constants'; import { fetchNormalisedRundown } from '../api/rundown'; +import useProjectData from './useProjectData'; + // revision is -1 so that the remote revision is higher const cachedRundownPlaceholder = { order: [] as string[], rundown: {} as NormalisedRundown, revision: -1 }; @@ -24,7 +26,9 @@ export default function useRundown() { export function useFlatRundown() { const { data, status } = useRundown(); + const { data: projectData } = useProjectData(); + const loadedProject = useRef(''); const [prevRevision, setPrevRevision] = useState(-1); const [flatRunDown, setFlatRunDown] = useState([]); @@ -37,5 +41,14 @@ export function useFlatRundown() { } }, [data.order, data.revision, data.rundown, prevRevision]); + // TODO: should we have a project id field? + // invalidate current version if project changes + useEffect(() => { + if (projectData?.title !== loadedProject.current) { + setPrevRevision(-1); + loadedProject.current = projectData?.title ?? ''; + } + }, [projectData]); + return { data: flatRunDown, status }; }