diff --git a/frontend/src/index.jsx b/frontend/src/index.jsx index e8b616f..327b051 100644 --- a/frontend/src/index.jsx +++ b/frontend/src/index.jsx @@ -1708,7 +1708,7 @@ const AppLayout = () => { ); const loadFolder = useCallback( - async (folderId, { showLoading = true } = {}) => { + async (folderId, { showLoading = true, preserveSearch = false } = {}) => { const targetId = folderId || 'root'; setSelectedFolder(targetId); if (showLoading) setLoading(true); @@ -1722,7 +1722,9 @@ const AppLayout = () => { } } applySelectedFolder(targetId, contents); - setSearchResults(null); + if (!preserveSearch) { + setSearchResults(null); + } } catch (error) { notifyApiError(error, 'Failed to load folder contents.'); } finally { @@ -1759,14 +1761,14 @@ const AppLayout = () => { const targetId = folderId && folderId !== 'root' ? folderId : 'root'; if (!navigate || immediate) { - await loadFolder(targetId); + await loadFolder(targetId, { preserveSearch: isFilterActive }); return; } const path = targetId === 'root' ? '/documents' : `/documents/folder/${targetId}`; navigate(path, { replace }); }, - [loadFolder, navigate], + [loadFolder, navigate, isFilterActive], ); const initializeAfterLogin = useCallback(async () => { @@ -1799,7 +1801,10 @@ const AppLayout = () => { const hasData = folderContents.has(targetParam); if (targetParam !== selectedFolder || !hasData) { - loadFolder(targetParam, { showLoading: !routeDocumentId }); + loadFolder(targetParam, { + showLoading: !routeDocumentId, + preserveSearch: isFilterActive, + }); } }, [ token, @@ -1809,6 +1814,7 @@ const AppLayout = () => { selectedFolder, loadFolder, folderContents, + isFilterActive, ]); const refreshCurrentFolder = useCallback(async () => { @@ -3173,14 +3179,14 @@ const AppLayout = () => { const targetId = folderId || selectedFolder || 'root'; if (!navigate) { - loadFolder(targetId, { showLoading: false }); + loadFolder(targetId, { showLoading: false, preserveSearch: isFilterActive }); return; } const path = targetId === 'root' ? '/documents' : `/documents/folder/${targetId}`; navigate(path, { replace: false }); }, - [navigate, selectedFolder, loadFolder], + [navigate, selectedFolder, loadFolder, isFilterActive], ); useEffect(() => { @@ -3218,7 +3224,7 @@ const AppLayout = () => { const targetFolder = doc?.folder_id || routeFolderId || 'root'; if (targetFolder && targetFolder !== selectedFolder) { - await loadFolder(targetFolder, { showLoading: false }); + await loadFolder(targetFolder, { showLoading: false, preserveSearch: isFilterActive }); } if (!cancelled) { await openDocumentPreview(routeDocumentId, { replace: true, skipNavigate: true }); @@ -3248,6 +3254,7 @@ const AppLayout = () => { documents, searchResults, notifyApiError, + isFilterActive, ]); const handleDocumentTitleUpdate = useCallback(