diff --git a/packages/app/src/components/create-workspace/index.tsx b/packages/app/src/components/create-workspace/index.tsx
index a3d9f3f1a4..43e18a6967 100644
--- a/packages/app/src/components/create-workspace/index.tsx
+++ b/packages/app/src/components/create-workspace/index.tsx
@@ -14,10 +14,11 @@ interface ModalProps {
export const CreateWorkspaceModal = ({ open, onClose }: ModalProps) => {
const [workspaceName, setWorkspaceName] = useState('');
- const { createWorkspace } = useTemporaryHelper();
+ const { createWorkspace, setActiveWorkspace } = useTemporaryHelper();
const handleCreateWorkspace = () => {
- const { id } = createWorkspace(workspaceName);
- onClose({ workspaceId: id });
+ const workspace = createWorkspace(workspaceName);
+ onClose({ workspaceId: workspace.id });
+ setActiveWorkspace(workspace);
};
return (
diff --git a/packages/app/src/components/workspace-setting/SyncPage.tsx b/packages/app/src/components/workspace-setting/SyncPage.tsx
index e647852067..c16ea3f0a2 100644
--- a/packages/app/src/components/workspace-setting/SyncPage.tsx
+++ b/packages/app/src/components/workspace-setting/SyncPage.tsx
@@ -4,14 +4,9 @@ import {
StyledPublishExplanation,
} from './style';
import { DownloadIcon } from '@blocksuite/icons';
-import { useEffect, useState } from 'react';
import { Button } from '@/ui/button';
import { Menu, MenuItem } from '@/ui/menu';
-import {
- deleteMember,
- updateWorkspaceMeta,
- Workspace,
-} from '@/hooks/mock-data/mock';
+import { deleteMember, Workspace } from '@/hooks/mock-data/mock';
import { useTemporaryHelper } from '@/providers/temporary-helper-provider';
export const SyncPage = ({ workspace }: { workspace: Workspace }) => {
@@ -20,18 +15,18 @@ export const SyncPage = ({ workspace }: { workspace: Workspace }) => {
return (
- {currentWorkspace.type === 'local' ? (
+ {currentWorkspace?.type === 'local' ? (
<>
- {workspace.name} is Local Workspace. All data is stored on the
- current device. You can enable AFFiNE Cloud for this workspace to
- keep data in sync with the cloud.
+ {currentWorkspace.name} is Local Workspace. All data is stored on
+ the current device. You can enable AFFiNE Cloud for this workspace
+ to keep data in sync with the cloud.
{
- updateWorkspaceMeta(workspace.id, {
+ updateWorkspaceMeta(currentWorkspace.id, {
type: 'cloud',
});
}}
@@ -45,8 +40,8 @@ export const SyncPage = ({ workspace }: { workspace: Workspace }) => {
) : (
<>
- {workspace.name} is Cloud Workspace. All data will be
- synchronized and saved to the AFFiNE
+ {currentWorkspace && currentWorkspace.name} is Cloud
+ Workspace. All data will be synchronized and saved to the AFFiNE
{
const { refreshWorkspacesMeta } = useAppState();
- const { currentWorkspace } = useTemporaryHelper();
+ const { updateWorkspaceMeta } = useTemporaryHelper();
const [showDelete, setShowDelete] = useState(false);
const [showLeave, setShowLeave] = useState(false);
const [uploading, setUploading] = useState(false);
@@ -47,7 +47,7 @@ export const GeneralPage = ({ workspace }: { workspace: Workspace }) => {
setShowLeave(false);
};
const handleUpdateWorkspaceName = () => {
- updateWorkspaceMeta(workspace.id, { name: workspaceName });
+ workspace && updateWorkspaceMeta(workspace.id, { name: workspaceName });
};
const fileChange = async (file: File) => {
diff --git a/packages/app/src/components/workspace-setting/workspace-setting.tsx b/packages/app/src/components/workspace-setting/workspace-setting.tsx
index 6e4ad0ccd0..92d3ad6bbf 100644
--- a/packages/app/src/components/workspace-setting/workspace-setting.tsx
+++ b/packages/app/src/components/workspace-setting/workspace-setting.tsx
@@ -16,7 +16,6 @@ import {
} from '@blocksuite/icons';
import { useEffect, useState } from 'react';
import { GeneralPage } from './general';
-import { getActiveWorkspace } from '@/hooks/mock-data/mock';
import { MembersPage } from './MembersPage';
import { PublishPage } from './PublishPage';
import { SyncPage } from './SyncPage';
@@ -142,16 +141,16 @@ export const WorkspaceSetting = ({
) : null}
- {activeTab === ActiveTab.general && (
+ {activeTab === ActiveTab.general && currentWorkspace && (
)}
- {activeTab === ActiveTab.sync && (
+ {activeTab === ActiveTab.sync && currentWorkspace && (
)}
{activeTab === ActiveTab.members && currentWorkspace && (
)}
- {activeTab === ActiveTab.publish && (
+ {activeTab === ActiveTab.publish && currentWorkspace && (
)}