diff --git a/packages/app/src/components/workspace-setting/SyncPage.tsx b/packages/app/src/components/workspace-setting/SyncPage.tsx index 6c15773d99..fb0dc5aabc 100644 --- a/packages/app/src/components/workspace-setting/SyncPage.tsx +++ b/packages/app/src/components/workspace-setting/SyncPage.tsx @@ -40,7 +40,7 @@ export const SyncPage = ({ workspace }: { workspace: WorkspaceInfo }) => { confirmText: user ? 'Enable' : 'Sign in and Enable', cancelText: 'Skip', }).then(async confirm => { - if (confirm) { + if (confirm && currentWorkspace) { // if (user) { // await login(); // } diff --git a/packages/app/src/hooks/use-ensure-workspace.ts b/packages/app/src/hooks/use-ensure-workspace.ts index ce1fed0741..a59f73881b 100644 --- a/packages/app/src/hooks/use-ensure-workspace.ts +++ b/packages/app/src/hooks/use-ensure-workspace.ts @@ -7,6 +7,9 @@ export const useEnsureWorkspace = () => { const [workspaceLoaded, setWorkspaceLoaded] = useState(false); const { workspaceList, loadWorkspace, user } = useAppState(); const router = useRouter(); + const [activeWorkspaceId, setActiveWorkspaceId] = useState( + router.query.workspaceId as string + ); // const defaultOutLineWorkspaceId = '99ce7eb7'; // console.log(defaultOutLineWorkspaceId); @@ -35,15 +38,15 @@ export const useEnsureWorkspace = () => { const workspaceId = (router.query.workspaceId as string) || workspaceList[0]?.id; - loadWorkspace(workspaceId).finally(() => { - console.log('workspaceId: ', workspaceId); setWorkspaceLoaded(true); + setActiveWorkspaceId(activeWorkspaceId); }); }, [loadWorkspace, router, user, workspaceList]); return { workspaceLoaded, + activeWorkspaceId, }; }; diff --git a/packages/app/src/pages/workspace/[workspaceId]/index.tsx b/packages/app/src/pages/workspace/[workspaceId]/index.tsx index 37144ff7c8..d0a9e086d1 100644 --- a/packages/app/src/pages/workspace/[workspaceId]/index.tsx +++ b/packages/app/src/pages/workspace/[workspaceId]/index.tsx @@ -9,23 +9,23 @@ const WorkspaceIndex = () => { const router = useRouter(); const { currentWorkspaceId, currentWorkspace } = useAppState(); const { createPage } = usePageHelper(); - const { workspaceLoaded } = useEnsureWorkspace(); - console.log('workspaceLoaded: ', workspaceLoaded); + const { workspaceLoaded, activeWorkspaceId } = useEnsureWorkspace(); useEffect(() => { const initPage = async () => { if (!workspaceLoaded) { return; } + const savedPageId = currentWorkspace?.meta.pageMetas[0]?.id; - console.log('savedPageId: ', savedPageId); + if (savedPageId) { - router.replace(`/workspace/${currentWorkspaceId}/${savedPageId}`); + router.replace(`/workspace/${activeWorkspaceId}/${savedPageId}`); return; } const pageId = await createPage(); - router.replace(`/workspace/${currentWorkspaceId}/${pageId}`); + router.replace(`/workspace/${activeWorkspaceId}/${pageId}`); }; initPage(); }, [ diff --git a/packages/app/src/pages/workspace/index.tsx b/packages/app/src/pages/workspace/index.tsx index 145e47e89d..1fe3ba2c17 100644 --- a/packages/app/src/pages/workspace/index.tsx +++ b/packages/app/src/pages/workspace/index.tsx @@ -11,7 +11,6 @@ export const WorkspaceIndex = () => { useEffect(() => { if (workspaceLoaded) { - console.log('workspaceLoaded: ', workspaceLoaded); router.push(`/workspace/${currentWorkspaceId}`); } }, [currentWorkspaceId, router, workspaceLoaded]); diff --git a/packages/app/src/providers/app-state-provider/Provider.tsx b/packages/app/src/providers/app-state-provider/Provider.tsx index e0a833d812..33f650d024 100644 --- a/packages/app/src/providers/app-state-provider/Provider.tsx +++ b/packages/app/src/providers/app-state-provider/Provider.tsx @@ -89,22 +89,22 @@ export const AppStateProvider = ({ const loadWorkspace = useRef(); loadWorkspace.current = async (workspaceId: string) => { - console.log('loadWorkspace'); - const { dataCenter, workspaceList, currentWorkspaceId, currentWorkspace } = appState; - if (!workspaceList.find(v => v.id === workspaceId)) { + if (!workspaceList.find(v => v.id.toString() === workspaceId)) { return null; } if (workspaceId === currentWorkspaceId) { return currentWorkspace; } + const workspace = await dataCenter.loadWorkspace(workspaceId); const currentMetaWorkSpace = dataCenter.workspaces.find( (item: WorkspaceInfo) => { return item.id === workspace.room; } ); + setAppState({ ...appState, currentWorkspace: workspace, diff --git a/packages/data-center/src/workspace-meta-collection.ts b/packages/data-center/src/workspace-meta-collection.ts index 6b7ce4a350..c50b93dcae 100644 --- a/packages/data-center/src/workspace-meta-collection.ts +++ b/packages/data-center/src/workspace-meta-collection.ts @@ -41,7 +41,7 @@ export class WorkspaceMetaCollection extends Observable<'change'> { if (this._workspacesMap.has(workspace.id)) { throw new Error(`Duplicate workspace id.`); } - this._workspacesMap.set(workspace.id, workspace); + this._workspacesMap.set(workspace.id.toString(), workspace); scopedWorkspaceIds.add(workspace.id); this.emit('change', [