From 6f6ee59461714fca852c09e8f90b2e960dcf99ce Mon Sep 17 00:00:00 2001 From: Nils Schneider Date: Sat, 1 Nov 2025 13:59:46 +0100 Subject: [PATCH] fix --- frontend/src/app/AppLayout.jsx | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/AppLayout.jsx b/frontend/src/app/AppLayout.jsx index ec66ad5..9992867 100644 --- a/frontend/src/app/AppLayout.jsx +++ b/frontend/src/app/AppLayout.jsx @@ -496,12 +496,27 @@ const AppLayout = () => { const [detailPanelOpen, setDetailPanelOpen] = useState(() => selectedDocumentIds.length > 0); const [detailPanelDocIds, setDetailPanelDocIds] = useState([]); const [detailPanelDocs, setDetailPanelDocs] = useState([]); + const detailPanelAutoOpenRef = useRef(true); + const detailPanelSelectionTokenRef = useRef(selectedDocumentIds.join('|')); useEffect(() => { - if (selectedDocumentIds.length > 0 && !detailPanelOpen) { + const token = selectedDocumentIds.join('|'); + if (token !== detailPanelSelectionTokenRef.current) { + detailPanelSelectionTokenRef.current = token; + detailPanelAutoOpenRef.current = true; + } + + if (selectedDocumentIds.length === 0) { + if (detailPanelOpen) { + setDetailPanelOpen(false); + } + return; + } + + if (!detailPanelOpen && detailPanelAutoOpenRef.current && !previewDocumentId) { setDetailPanelOpen(true); } - }, [selectedDocumentIds, detailPanelOpen]); + }, [selectedDocumentIds, detailPanelOpen, previewDocumentId]); const resetWorkspaceState = useCallback(() => { const rootNode = createRootNode(); @@ -3382,6 +3397,8 @@ const AppLayout = () => { const openDocumentPreview = useCallback( (documentId, { replace = false } = {}) => { if (!documentId) return; + detailPanelAutoOpenRef.current = false; + setDetailPanelOpen(false); previewReturnPathRef.current = `${location.pathname}${location.search}`; navigate(`/documents/${documentId}`, { replace }); }, @@ -5134,6 +5151,7 @@ const AppLayout = () => { ); const handleDetailPanelClose = useCallback(() => { + detailPanelAutoOpenRef.current = false; setDetailPanelOpen(false); clearDocumentSelection(); setDetailPanelDocIds([]);