refactor: Replace useWorkspaceBreadcrumbs hook with resolveBreadcrumbs utility
This commit is contained in:
@@ -58,7 +58,7 @@ import useTags from './useTags';
|
||||
import useCorrespondents from './useCorrespondents';
|
||||
import useDocumentCorrespondentActions from '../features/correspondents/useDocumentCorrespondentActions';
|
||||
import usePasskeys from '../../settings/usePasskeys';
|
||||
import useWorkspaceBreadcrumbs from '../logic/useWorkspaceBreadcrumbs';
|
||||
import { resolveBreadcrumbs } from '../logic/breadcrumbs';
|
||||
import useWorkspaceSelectionSync from '../features/selection/useWorkspaceSelectionSync';
|
||||
import type { DocumentId, FolderNodeId, Identifier } from '../../types/identifiers';
|
||||
|
||||
@@ -100,7 +100,6 @@ interface UseDocumentsWorkspaceOptions {
|
||||
onDocumentsSortDirectionToggle?: () => void;
|
||||
searchIncludeDescendants?: boolean;
|
||||
onSetSearchIncludeDescendants?: (value: boolean) => void;
|
||||
sortRefreshReadyRef?: MutableRefObject<boolean>;
|
||||
}
|
||||
|
||||
const useDocumentsWorkspace = ({
|
||||
@@ -114,7 +113,6 @@ const useDocumentsWorkspace = ({
|
||||
onDocumentsSortDirectionToggle,
|
||||
searchIncludeDescendants = true,
|
||||
onSetSearchIncludeDescendants,
|
||||
sortRefreshReadyRef,
|
||||
}: UseDocumentsWorkspaceOptions = {}) => {
|
||||
const handleDocumentsViewModeChange = onDocumentsViewModeChange || noop;
|
||||
const handleDocumentsSortFieldChange = onDocumentsSortFieldChange || noop;
|
||||
@@ -133,8 +131,6 @@ const useDocumentsWorkspace = ({
|
||||
activeSortDirectionRef.current = documentsSortDirection;
|
||||
}, [documentsSortDirection, activeSortDirectionRef]);
|
||||
|
||||
const fallbackSortRefreshReadyRef = useRef(false);
|
||||
const activeSortRefreshReadyRef = sortRefreshReadyRef || fallbackSortRefreshReadyRef;
|
||||
const navigate = useNavigate();
|
||||
const location = useLocation();
|
||||
const appState = useAppState();
|
||||
@@ -332,7 +328,6 @@ const useDocumentsWorkspace = ({
|
||||
foldersManager,
|
||||
});
|
||||
|
||||
const [currentFolder, setCurrentFolder] = useState<FolderContentsEntry['folder'] | null>(null);
|
||||
const [currentSubfolders, setCurrentSubfolders] = useState<FolderContentsEntry['subfolders']>([]);
|
||||
|
||||
const ensureFolderData = useCallback(
|
||||
@@ -358,7 +353,6 @@ const useDocumentsWorkspace = ({
|
||||
setDocuments((data.documents || []) as Document[]);
|
||||
}
|
||||
setCurrentSubfolders((data.subfolders || []) as any[]);
|
||||
setCurrentFolder(data.folder || null);
|
||||
|
||||
// Update selection state based on new documents
|
||||
if (includeDocuments) {
|
||||
@@ -396,7 +390,6 @@ const useDocumentsWorkspace = ({
|
||||
activeSortFieldRef,
|
||||
activeSortDirectionRef,
|
||||
setDocuments,
|
||||
setCurrentFolder,
|
||||
setSelectedEntries,
|
||||
notifyApiError,
|
||||
setCurrentSubfolders,
|
||||
@@ -404,20 +397,11 @@ const useDocumentsWorkspace = ({
|
||||
]
|
||||
);
|
||||
|
||||
// Reactively fetch documents when selectedFolder changes
|
||||
useEffect(() => {
|
||||
if (selectedFolder) {
|
||||
ensureFolderData(selectedFolder);
|
||||
}
|
||||
}, [selectedFolder, ensureFolderData]);
|
||||
|
||||
// Also re-fetch when sort changes
|
||||
useEffect(() => {
|
||||
if (selectedFolder && sortRefreshReadyRef?.current) {
|
||||
ensureFolderData(selectedFolder);
|
||||
}
|
||||
}, [documentsSortField, documentsSortDirection, selectedFolder, ensureFolderData, sortRefreshReadyRef]);
|
||||
|
||||
}, [selectedFolder, documentsSortField, documentsSortDirection, ensureFolderData]);
|
||||
|
||||
const {
|
||||
searchQuery,
|
||||
@@ -690,28 +674,10 @@ const useDocumentsWorkspace = ({
|
||||
handleEntrySelection,
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
if (!activeSortRefreshReadyRef.current) {
|
||||
activeSortRefreshReadyRef.current = true;
|
||||
return;
|
||||
}
|
||||
if (!isFilterActive && token) {
|
||||
refreshCurrentFolder();
|
||||
}
|
||||
}, [
|
||||
documentsSortField,
|
||||
documentsSortDirection,
|
||||
isFilterActive,
|
||||
refreshCurrentFolder,
|
||||
token,
|
||||
activeSortRefreshReadyRef,
|
||||
]);
|
||||
|
||||
const resetWorkspaceState = useCallback(() => {
|
||||
const rootNode = createRootNode();
|
||||
setFolderNodes(new Map([[rootNode.id, rootNode]]));
|
||||
setSelectedFolder('root');
|
||||
setCurrentFolder(null);
|
||||
setCurrentSubfolders([]);
|
||||
setDocuments([]);
|
||||
setSelectedEntries([]);
|
||||
@@ -747,9 +713,7 @@ const useDocumentsWorkspace = ({
|
||||
setSelectedEntries,
|
||||
setSelectionOrder,
|
||||
setFolderNodes,
|
||||
// setFolderContents,
|
||||
setSelectedFolder,
|
||||
setCurrentFolder,
|
||||
setCurrentSubfolders,
|
||||
setDocuments,
|
||||
setDraggedDocumentIds,
|
||||
@@ -858,7 +822,6 @@ const useDocumentsWorkspace = ({
|
||||
setSelectedFolder,
|
||||
notifyApiError,
|
||||
setStatusMessage,
|
||||
setCurrentFolder,
|
||||
navigate,
|
||||
handleFileDrop,
|
||||
moveDocumentsToFolder,
|
||||
@@ -1184,13 +1147,9 @@ const useDocumentsWorkspace = ({
|
||||
},
|
||||
});
|
||||
|
||||
const breadcrumbs = useWorkspaceBreadcrumbs({
|
||||
selectedFolder,
|
||||
folderNodes,
|
||||
currentFolder,
|
||||
breadcrumbFetchRef,
|
||||
ensureFolderData,
|
||||
});
|
||||
const breadcrumbs = useMemo(() => {
|
||||
return resolveBreadcrumbs(selectedFolder || 'root', folderNodes as any);
|
||||
}, [selectedFolder, folderNodes]);
|
||||
|
||||
const { handleTenantSelect } = useTenantManager({
|
||||
appDispatch,
|
||||
|
||||
Reference in New Issue
Block a user