feat: refactor document opening/preview logic to support preview/sidepanel actions.

This commit is contained in:
2025-12-04 01:02:54 +01:00
parent 447b012e48
commit 8bb9f9950a
6 changed files with 37 additions and 24 deletions
+16 -3
View File
@@ -4,8 +4,8 @@ import { useNavigate } from 'react-router-dom';
import {
DocumentsFilterProvider,
} from '../documents/context/DocumentsFilterContext';
import { PreviewProvider } from '../preview/PreviewContext';
import { DocumentOpenProvider } from '../context/DocumentOpenContext';
import { PreviewProvider, usePreviewContext } from '../preview/PreviewContext';
import { DocumentOpenProvider } from '../contexts/DocumentOpenContext';
import { useWorkspaceSurface } from './useWorkspaceSurface';
import { DocumentsHeaderBreadcrumb } from '../documents/panel/DocumentsPanelHeader';
import { SidebarProvider, useSidebarContext } from '../sidebar/SidebarContext';
@@ -24,8 +24,11 @@ const DocumentsRouteContent: React.FC = () => {
const {
sidebarSuppressed,
expandSidebar,
openDetailPanel,
} = usePanelManager();
const { openPreview } = usePreviewContext();
const sidebarHidden = sidebarCollapsed || sidebarSuppressed;
const handleHeaderBreadcrumbClick = useCallback((crumb: DocumentsHeaderBreadcrumb) => {
@@ -40,6 +43,12 @@ const DocumentsRouteContent: React.FC = () => {
navigate(`/documents/${documentId}`);
}, [navigate]);
const handleOpenSidepanel = useCallback((docId: string) => {
if (openDetailPanel) {
openDetailPanel({ documentIds: [docId] });
}
}, [openDetailPanel]);
const documentsTablePropsWithNav = useMemo(() => (
surfaceConfig.documentsTableProps
? { ...surfaceConfig.documentsTableProps, onBreadcrumbNavigate: handleHeaderBreadcrumbClick }
@@ -84,7 +93,11 @@ const DocumentsRouteContent: React.FC = () => {
<PreviewProvider
onNavigate={handleDocumentNavigate}
>
<DocumentOpenProvider onOpenViewer={handleDocumentNavigate}>
<DocumentOpenProvider
onOpenViewer={handleDocumentNavigate}
onOpenPreview={openPreview}
onOpenSidepanel={handleOpenSidepanel}
>
{content}
</DocumentOpenProvider>
</PreviewProvider>