feat: Refactor folder tree management to use FoldersManager and remove onToggle functionality
This commit is contained in:
@@ -348,18 +348,16 @@ const useDocumentsWorkspace = ({
|
||||
folderLabelMap,
|
||||
applySelectedFolder,
|
||||
ensureFolderData,
|
||||
ensureFolderAncestorsLoaded,
|
||||
expandFolderAncestors,
|
||||
isInvalidFolderDrop,
|
||||
} = useFolderTree({
|
||||
initialSelectedFolder: routeFolderId || 'root',
|
||||
tenantIdRef,
|
||||
documentsSortFieldRef: activeSortFieldRef,
|
||||
documentsSortDirectionRef: activeSortDirectionRef,
|
||||
selectionHelpers,
|
||||
setDocuments,
|
||||
setFolderContents,
|
||||
folderContentsRef,
|
||||
foldersManager,
|
||||
});
|
||||
|
||||
const {
|
||||
@@ -579,10 +577,7 @@ const useDocumentsWorkspace = ({
|
||||
);
|
||||
|
||||
const refreshCurrentFolder = useCallback(async () => {
|
||||
const contents = await ensureFolderData(selectedFolder, {
|
||||
force: true,
|
||||
prefetchDepth: 1,
|
||||
});
|
||||
const contents = await ensureFolderData(selectedFolder);
|
||||
applySelectedFolder(selectedFolder, contents);
|
||||
}, [selectedFolder, ensureFolderData, applySelectedFolder]);
|
||||
|
||||
@@ -828,8 +823,6 @@ const useDocumentsWorkspace = ({
|
||||
selectedFolder,
|
||||
setSelectedFolder,
|
||||
ensureFolderData,
|
||||
ensureFolderAncestorsLoaded,
|
||||
expandFolderAncestors,
|
||||
applySelectedFolder,
|
||||
notifyApiError,
|
||||
setStatusMessage,
|
||||
@@ -867,16 +860,20 @@ const useDocumentsWorkspace = ({
|
||||
focusedEntryKey,
|
||||
});
|
||||
const initializeAfterLogin = useCallback(async () => {
|
||||
await Promise.all([refreshTags(), refreshCorrespondents()]);
|
||||
await Promise.all([
|
||||
refreshTags(),
|
||||
refreshCorrespondents(),
|
||||
foldersManager.ensureTree(),
|
||||
]);
|
||||
const initialFolder = routeFolderId && routeFolderId !== 'root' ? routeFolderId : 'root';
|
||||
await loadFolder(initialFolder, {});
|
||||
}, [refreshTags, refreshCorrespondents, routeFolderId, loadFolder]);
|
||||
}, [refreshTags, refreshCorrespondents, routeFolderId, loadFolder, foldersManager]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!token) {
|
||||
return;
|
||||
}
|
||||
if (appStatus !== 'ready' && appStatus !== 'bootstrapping') {
|
||||
if (appStatus !== 'ready') {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -901,7 +898,12 @@ const useDocumentsWorkspace = ({
|
||||
selectFolder,
|
||||
]);
|
||||
|
||||
|
||||
const mountedRef = useRef(true);
|
||||
useEffect(() => {
|
||||
return () => {
|
||||
mountedRef.current = false;
|
||||
};
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
if (appStatus !== 'authenticated') {
|
||||
@@ -911,17 +913,16 @@ const useDocumentsWorkspace = ({
|
||||
return;
|
||||
}
|
||||
|
||||
let cancelled = false;
|
||||
const bootstrap = async () => {
|
||||
bootstrapInitializedRef.current = true;
|
||||
appDispatch({ type: 'BOOTSTRAP_START' });
|
||||
try {
|
||||
await initializeAfterLogin();
|
||||
if (!cancelled) {
|
||||
if (mountedRef.current) {
|
||||
appDispatch({ type: 'BOOTSTRAP_SUCCESS' });
|
||||
}
|
||||
} catch (error) {
|
||||
if (!cancelled) {
|
||||
if (mountedRef.current) {
|
||||
appDispatch({
|
||||
type: 'BOOTSTRAP_FAILURE',
|
||||
error: error?.message || 'Failed to initialize data.',
|
||||
@@ -932,10 +933,6 @@ const useDocumentsWorkspace = ({
|
||||
};
|
||||
|
||||
bootstrap();
|
||||
|
||||
return () => {
|
||||
cancelled = true;
|
||||
};
|
||||
}, [appStatus, appDispatch, initializeAfterLogin]);
|
||||
|
||||
const {
|
||||
|
||||
Reference in New Issue
Block a user