From 4c8c54877067562319dd3737e87f8d6c2377b095 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 30 Jun 2026 10:10:19 +0000 Subject: [PATCH] Fix transition --- .../previews/GlobalPreviewDrawer.tsx | 5 --- .../src/components/previews/PreviewDrawer.tsx | 40 +++++++++++++------ .../src/states/PreviewDrawerState.tsx | 7 +--- 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/src/frontend/src/components/previews/GlobalPreviewDrawer.tsx b/src/frontend/src/components/previews/GlobalPreviewDrawer.tsx index d398f404ea..43b768d470 100644 --- a/src/frontend/src/components/previews/GlobalPreviewDrawer.tsx +++ b/src/frontend/src/components/previews/GlobalPreviewDrawer.tsx @@ -8,11 +8,6 @@ export default function GlobalPreviewDrawer() { const instance = usePreviewDrawerState((state) => state.instance); const closePreview = usePreviewDrawerState((state) => state.closePreview); - // Only skip rendering before the drawer has ever been opened - if (modelType === undefined || id === undefined) { - return null; - } - return ( ; opened: boolean; onClose: () => void; }>) { - const modelInfo = getModelInfo(modelType); - const apiEndpoint = ModelInformationDict[modelType].api_endpoint; + const modelInfo = modelType ? getModelInfo(modelType) : null; + const apiEndpoint = modelType + ? ModelInformationDict[modelType].api_endpoint + : undefined; const { instance: fetchedInstance, instanceQuery } = useInstance({ - endpoint: apiEndpoint, + endpoint: apiEndpoint!, pk: id, hasPrimaryKey: true, defaultValue: {}, params: filters, - disabled: !!providedInstance + disabled: !!providedInstance || !modelType || !id }); const instance = useMemo(() => { return providedInstance ?? fetchedInstance; }, [providedInstance, fetchedInstance]); - const previewComponent: PreviewType = useMemo(() => { + const previewComponent: PreviewType | null = useMemo(() => { + if (!modelType || !modelInfo || id == null) return null; + const component: PreviewType | null = getPreviewComponentForModel({ - modelType + modelType, + instance, + modelId: typeof id === 'string' ? Number(id) : id }); if (component == null) { @@ -55,13 +61,17 @@ export default function PreviewDrawer({ } return component; - }, [modelType]); + }, [modelType, id, instance]); return ( {previewComponent.title}} + title={ + previewComponent ? ( + {previewComponent.title} + ) : null + } opened={opened} onClose={onClose} withCloseButton @@ -72,9 +82,13 @@ export default function PreviewDrawer({ }} > - - - {previewComponent.preview} + {previewComponent && ( + <> + + + {previewComponent.preview} + + )} ); diff --git a/src/frontend/src/states/PreviewDrawerState.tsx b/src/frontend/src/states/PreviewDrawerState.tsx index 479e7644e3..9e2c82bb54 100644 --- a/src/frontend/src/states/PreviewDrawerState.tsx +++ b/src/frontend/src/states/PreviewDrawerState.tsx @@ -30,12 +30,7 @@ export const usePreviewDrawerState = create()( }, closePreview: () => { - set({ - isOpen: false, - modelType: undefined, - id: undefined, - instance: undefined - }); + set({ isOpen: false }); } }) );