feat: refine frontend folder management and display by merging folder tree data.
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user