fix: correct router logic (#2342)

This commit is contained in:
Himself65
2023-05-12 13:55:45 +08:00
committed by GitHub
parent 10b4558947
commit 21fdced2bd
24 changed files with 206 additions and 332 deletions

View File

@@ -39,9 +39,6 @@ import { RootAppSidebar } from '../components/root-app-sidebar';
import { useCurrentWorkspace } from '../hooks/current/use-current-workspace';
import { useRouterHelper } from '../hooks/use-router-helper';
import { useRouterTitle } from '../hooks/use-router-title';
import { useRouterWithWorkspaceIdDefense } from '../hooks/use-router-with-workspace-id-defense';
import { useSyncRouterWithCurrentPageId } from '../hooks/use-sync-router-with-current-page-id';
import { useSyncRouterWithCurrentWorkspaceId } from '../hooks/use-sync-router-with-current-workspace-id';
import { useWorkspaces } from '../hooks/use-workspaces';
import { WorkspaceAdapters } from '../plugins';
import { ModalProvider } from '../providers/modal-provider';
@@ -137,13 +134,21 @@ export const AllWorkspaceContext = ({
export const CurrentWorkspaceContext = ({
children,
}: PropsWithChildren): ReactElement => {
const router = useRouter();
const workspaceId = useAtomValue(rootCurrentWorkspaceIdAtom);
useSyncRouterWithCurrentWorkspaceId(router);
useSyncRouterWithCurrentPageId(router);
useRouterWithWorkspaceIdDefense(router);
const metadata = useAtomValue(rootWorkspacesMetadataAtom);
const exist = metadata.find(m => m.id === workspaceId);
const router = useRouter();
const push = router.push;
useEffect(() => {
const id = setTimeout(() => {
if (!exist) {
void push('/');
}
}, 1000);
return () => {
clearTimeout(id);
};
}, [push, exist]);
if (!router.isReady) {
return <WorkspaceFallback key="router-is-loading" />;
}