refactor: init hook useRouterTargetWorkspace (#1127)

This commit is contained in:
Himself65
2023-02-20 01:37:18 -06:00
committed by GitHub
parent 54963842ed
commit e583725cd2
9 changed files with 191 additions and 211 deletions

View File

@@ -1,44 +1,48 @@
import { useRouter } from 'next/router';
import { useCallback, useEffect } from 'react';
import { useEffect } from 'react';
import { PageLoading } from '@/components/loading';
import useEnsureWorkspace from '@/hooks/use-ensure-workspace';
import usePageHelper from '@/hooks/use-page-helper';
import { useGlobalState } from '@/store/app';
import { useRouterTargetWorkspace } from '@/hooks/use-router-target-workspace';
const WorkspaceIndex = () => {
const router = useRouter();
const currentWorkspace = useGlobalState(
useCallback(store => store.currentDataCenterWorkspace, [])
);
const { targetWorkspace, exist } = useRouterTargetWorkspace();
const { createPage } = usePageHelper();
const { workspaceLoaded, activeWorkspaceId } = useEnsureWorkspace();
useEffect(() => {
if (!exist) {
router.push('/404');
return;
}
const abortController = new AbortController();
const initPage = async () => {
if (!workspaceLoaded) {
if (abortController.signal.aborted) {
return;
}
if (!targetWorkspace) {
return;
}
const savedPageId =
currentWorkspace?.blocksuiteWorkspace?.meta.pageMetas.find(
targetWorkspace.blocksuiteWorkspace?.meta.pageMetas.find(
meta => !meta.trash
)?.id;
if (savedPageId) {
router.replace(`/workspace/${activeWorkspaceId}/${savedPageId}`);
router.replace(`/workspace/${targetWorkspace.id}/${savedPageId}`);
return;
} else {
const pageId = await createPage();
if (abortController.signal.aborted) {
return;
}
router.replace(`/workspace/${targetWorkspace.id}/${pageId}`);
}
const pageId = await createPage();
router.replace(`/workspace/${activeWorkspaceId}/${pageId}`);
};
initPage();
}, [
currentWorkspace,
createPage,
router,
workspaceLoaded,
activeWorkspaceId,
]);
return () => {
abortController.abort();
};
}, [targetWorkspace, createPage, router, exist]);
return <PageLoading />;
};

View File

@@ -1,23 +1,19 @@
import { useRouter } from 'next/router';
import { useCallback, useEffect } from 'react';
import { useEffect } from 'react';
import { PageLoading } from '@/components/loading';
import useEnsureWorkspace from '@/hooks/use-ensure-workspace';
import { useGlobalState } from '@/store/app';
import { useRouterTargetWorkspace } from '@/hooks/use-router-target-workspace';
export const WorkspaceIndex = () => {
const router = useRouter();
const currentWorkspace = useGlobalState(
useCallback(store => store.currentDataCenterWorkspace, [])
);
const { workspaceLoaded } = useEnsureWorkspace();
const { targetWorkspace, exist } = useRouterTargetWorkspace();
useEffect(() => {
if (workspaceLoaded) {
router.push(`/workspace/${currentWorkspace?.id}`);
if (!exist) {
router.push('/404');
} else if (targetWorkspace) {
router.push(`/workspace/${targetWorkspace.id}`);
}
}, [currentWorkspace, router, workspaceLoaded]);
}, [targetWorkspace, exist, router]);
return <PageLoading />;
};