fix(core): fix home page init cloud (#6654)

This commit is contained in:
EYHN
2024-04-22 08:05:20 +00:00
parent 6c84b7acac
commit 9fd3f29d1b
+37 -23
View File
@@ -1,7 +1,6 @@
import { Menu } from '@affine/component/ui/menu'; import { Menu } from '@affine/component/ui/menu';
import { WorkspaceFlavour } from '@affine/env/workspace'; import { WorkspaceFlavour } from '@affine/env/workspace';
import { import {
initEmptyPage,
useLiveData, useLiveData,
useService, useService,
WorkspacesService, WorkspacesService,
@@ -16,7 +15,10 @@ import {
} from 'react'; } from 'react';
import { type LoaderFunction, useSearchParams } from 'react-router-dom'; import { type LoaderFunction, useSearchParams } from 'react-router-dom';
import { createFirstAppData } from '../bootstrap/first-app-data'; import {
buildShowcaseWorkspace,
createFirstAppData,
} from '../bootstrap/first-app-data';
import { UserWithWorkspaceList } from '../components/pure/workspace-slider-bar/user-with-workspace-list'; import { UserWithWorkspaceList } from '../components/pure/workspace-slider-bar/user-with-workspace-list';
import { WorkspaceFallback } from '../components/workspace'; import { WorkspaceFallback } from '../components/workspace';
import { useNavigateHelper } from '../hooks/use-navigate-helper'; import { useNavigateHelper } from '../hooks/use-navigate-helper';
@@ -54,40 +56,52 @@ export const Component = () => {
const createCloudWorkspace = useCallback(() => { const createCloudWorkspace = useCallback(() => {
if (createOnceRef.current) return; if (createOnceRef.current) return;
createOnceRef.current = true; createOnceRef.current = true;
workspacesService buildShowcaseWorkspace(
.create(WorkspaceFlavour.AFFINE_CLOUD, async workspace => { workspacesService,
workspace.meta.setName('AFFiNE Cloud'); WorkspaceFlavour.AFFINE_CLOUD,
const page = workspace.createDoc(); 'AFFiNE Cloud'
initEmptyPage(page); )
})
.then(workspace => openPage(workspace.id, WorkspaceSubPath.ALL)) .then(workspace => openPage(workspace.id, WorkspaceSubPath.ALL))
.catch(err => console.error('Failed to create cloud workspace', err)); .catch(err => console.error('Failed to create cloud workspace', err));
}, [openPage, workspacesService]); }, [openPage, workspacesService]);
useLayoutEffect(() => { useLayoutEffect(() => {
if (!navigating) {
return;
}
if (listIsLoading) { if (listIsLoading) {
return; return;
} }
// check is user logged in && has cloud workspace // check is user logged in && has cloud workspace
if (searchParams.get('initCloud') === 'true' && loggedIn) { if (searchParams.get('initCloud') === 'true') {
searchParams.delete('initCloud'); if (loggedIn) {
if (list.every(w => w.flavour !== WorkspaceFlavour.AFFINE_CLOUD)) { searchParams.delete('initCloud');
createCloudWorkspace(); if (list.every(w => w.flavour !== WorkspaceFlavour.AFFINE_CLOUD)) {
createCloudWorkspace();
return;
}
// open first cloud workspace
const openWorkspace =
list.find(w => w.flavour === WorkspaceFlavour.AFFINE_CLOUD) ??
list[0];
openPage(openWorkspace.id, WorkspaceSubPath.ALL);
} else {
return; return;
} }
} else {
if (list.length === 0) {
setNavigating(false);
return;
}
// open last workspace
const lastId = localStorage.getItem('last_workspace_id');
const openWorkspace = list.find(w => w.id === lastId) ?? list[0];
openPage(openWorkspace.id, WorkspaceSubPath.ALL);
} }
if (list.length === 0) {
setNavigating(false);
return;
}
// open last workspace
const lastId = localStorage.getItem('last_workspace_id');
const openWorkspace = list.find(w => w.id === lastId) ?? list[0];
openPage(openWorkspace.id, WorkspaceSubPath.ALL);
}, [ }, [
createCloudWorkspace, createCloudWorkspace,
list, list,