feat: refine frontend folder management and display by merging folder tree data.

This commit is contained in:
2025-12-09 12:37:27 +01:00
parent 463046c970
commit 8a16293f0e
7 changed files with 155 additions and 190 deletions
@@ -57,7 +57,6 @@ import { listFolderContents } from '../../lib/api/apiClient';
import { useApi } from '../../lib/context/ApiContext';
import { useWorkspaceSelection } from '../../app/useWorkspaceSelection';
import useDocumentPreview from '../../app/useDocumentPreview';
import { createRootNode } from '../../app/workspaceUtils';
import type { DocumentId, FolderNodeId, Identifier } from '../../types/identifiers';
const EntryType = Object.freeze({
@@ -250,7 +249,6 @@ const useDocumentsWorkspace = ({
});
const {
folderNodes,
setFolderNodes,
selectedFolder,
setSelectedFolder,
currentFolderName,
@@ -261,6 +259,7 @@ const useDocumentsWorkspace = ({
const folderState = {
...folderStateRaw,
setCreatingFolder,
foldersManager,
};
const [currentSubfolders, setCurrentSubfolders] = useState<Array<{ id?: FolderNodeId; name?: string | null;[key: string]: unknown }>>([]);
@@ -299,7 +298,10 @@ const useDocumentsWorkspace = ({
if (includeDocuments) {
setDocuments((data.documents || []) as Document[]);
}
setCurrentSubfolders((data.subfolders || []) as any[]);
const subfolders = (data.subfolders || []) as any[];
setCurrentSubfolders(subfolders);
foldersManager.ingest(subfolders);
if (includeDocuments) {
setSelectedEntries((prev) => reconcileSelectionWithFolderData(
@@ -316,6 +318,7 @@ const useDocumentsWorkspace = ({
setCurrentSubfolders,
reconcileSelectionWithFolderData,
selectedFolderRef,
foldersManager,
]
);
@@ -580,8 +583,6 @@ const useDocumentsWorkspace = ({
});
const resetWorkspaceState = useCallback(() => {
const rootNode = createRootNode();
setFolderNodes(new Map([[rootNode.id, rootNode]]));
setSelectedFolder('root');
setCurrentSubfolders([]);
setDocuments([]);
@@ -617,7 +618,6 @@ const useDocumentsWorkspace = ({
setFocusedDocumentId,
setSelectedEntries,
setSelectionOrder,
setFolderNodes,
setSelectedFolder,
setCurrentSubfolders,
setDocuments,
@@ -637,9 +637,10 @@ const useDocumentsWorkspace = ({
useEffect(() => {
if (appStatus === 'logged-out' || appStatus === 'selecting-tenant') {
foldersManager.invalidateTree();
resetWorkspaceState();
}
}, [appStatus, resetWorkspaceState]);
}, [appStatus, resetWorkspaceState, foldersManager]);
const removeDocumentsFromCaches = useCallback(