mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-09-24 04:27:27 +08:00
fix(core): fix home page init cloud (#6654)
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user