diff --git a/landing-zone-configurator/app/apps/web/src/components/Configurations.tsx b/landing-zone-configurator/app/apps/web/src/components/Configurations.tsx index ff96535..1f74f4e 100644 --- a/landing-zone-configurator/app/apps/web/src/components/Configurations.tsx +++ b/landing-zone-configurator/app/apps/web/src/components/Configurations.tsx @@ -99,6 +99,7 @@ export function Configurations({ > | null>(null); const active = useRef(false); const controller = useRef(null); + const listRequest = useRef(0); useEffect(() => { if (!session) return; @@ -118,14 +119,16 @@ export function Configurations({ ); }) .catch(() => {}); + const request = ++listRequest.current; void fetch("/api/v1/configurations", { signal: lifetime.signal }) .then(checked) .then((response) => response.json()) .then((body) => { - if (!lifetime.signal.aborted) setConfigurations(body.configurations); + if (!lifetime.signal.aborted && request === listRequest.current) + setConfigurations(body.configurations); }) .catch(() => { - if (!lifetime.signal.aborted) + if (!lifetime.signal.aborted && request === listRequest.current) setError( "Konfigurationen konnten nicht geladen werden. Bitte aktualisieren.", ); @@ -177,13 +180,15 @@ export function Configurations({ }, [session, compact]); async function refresh() { + const request = ++listRequest.current; + const signal = controller.current?.signal ?? null; const response = await checked( await fetch("/api/v1/configurations", { - signal: controller.current?.signal ?? null, + signal, }), ); const body = await response.json(); - if (!controller.current?.signal.aborted) + if (!signal?.aborted && request === listRequest.current) setConfigurations(body.configurations); } diff --git a/landing-zone-configurator/app/apps/web/src/main.tsx b/landing-zone-configurator/app/apps/web/src/main.tsx index 984914b..42b1f82 100644 --- a/landing-zone-configurator/app/apps/web/src/main.tsx +++ b/landing-zone-configurator/app/apps/web/src/main.tsx @@ -88,6 +88,7 @@ function App() { setDeploymentSelection(null); }, [session?.user.id, session?.user.login, session?.tenant?.id]); const [draftEpoch, setDraftEpoch] = useState(0); + const [workspaceEpoch, setWorkspaceEpoch] = useState(0); const [configurationBinding, setConfigurationBinding] = useState(null); const [draft, setDraft] = useState(restoredDraft); @@ -115,6 +116,7 @@ function App() { setDraft(null); setConfigurationBinding(null); setSavedDraft(null); + setWorkspaceEpoch((value) => value + 1); } activeAccount.current = key; setSession(next); @@ -673,9 +675,7 @@ function App() { /> )} {platformAccess && ( - +