diff --git a/src/components/pages/folders/index.tsx b/src/components/pages/folders/index.tsx index 14f16265..12babc2a 100755 --- a/src/components/pages/folders/index.tsx +++ b/src/components/pages/folders/index.tsx @@ -8,7 +8,7 @@ import { Anchor, Breadcrumbs, Button, Group, Modal, Stack, Switch, TextInput, Ti import { useForm } from '@mantine/form'; import { notifications } from '@mantine/notifications'; import { IconFolderPlus, IconHome, IconPlus } from '@tabler/icons-react'; -import { useCallback, useMemo, useState } from 'react'; +import { useCallback, useEffect, useMemo, useState } from 'react'; import { useLocation, useNavigate } from 'react-router-dom'; import useSWR, { mutate } from 'swr'; import FolderGridView from './views/FolderGridView'; @@ -29,9 +29,11 @@ export default function DashboardFolders() { const currentFolderId = folderPath.length > 0 ? folderPath[folderPath.length - 1] : null; - const { data: currentFolder } = useSWR( - currentFolderId ? `/api/user/folders/${currentFolderId}` : null, - ); + const { + data: currentFolder, + error: currentFolderError, + isLoading, + } = useSWR(currentFolderId ? `/api/user/folders/${currentFolderId}` : null); const form = useForm({ initialValues: { @@ -106,6 +108,15 @@ export default function DashboardFolders() { const breadcrumbs = buildBreadcrumbs(); + useEffect(() => { + if (!currentFolderId) return; + if (isLoading) return; + + if (currentFolderError || !currentFolder) { + navigate('/dashboard/folders', { replace: true }); + } + }, [currentFolderId, currentFolder, currentFolderError, isLoading]); + return ( <> {