change workspacetype to worksopace until

This commit is contained in:
DiamondThree
2023-01-11 16:04:38 +08:00
parent e9b38a2380
commit 8e8e18fdf9
14 changed files with 82 additions and 53 deletions
@@ -19,8 +19,8 @@ export const CreateWorkspaceModal = ({ open, onClose }: ModalProps) => {
const router = useRouter();
const handleCreateWorkspace = async () => {
const workspace = await createWorkspace(workspaceName);
if (workspace && workspace.room) {
router.replace(`/workspace/${workspace.room}`);
if (workspace && workspace.id) {
router.replace(`/workspace/${workspace.id}`);
onClose();
} else {
console.log('create error');
+2 -2
View File
@@ -22,11 +22,11 @@ export const ImportModal = ({ open, onClose }: ImportModalProps) => {
const { currentWorkspace } = useAppState();
const { t } = useTranslation();
const _applyTemplate = function (pageId: string, template: Template) {
const page = currentWorkspace?.getPage(pageId);
const page = currentWorkspace?.blocksuiteWorkspace?.getPage(pageId);
const title = template.name;
if (page) {
currentWorkspace?.setPageMeta(page.id, { title });
currentWorkspace?.blocksuiteWorkspace?.setPageMeta(page.id, { title });
if (page && page.root === null) {
setTimeout(() => {
const editor = document.querySelector('editor-container');
@@ -80,7 +80,7 @@ export const Input = (props: {
}}
placeholder={
isPublish
? `Search in ${currentWorkspace?.meta.name}`
? `Search in ${currentWorkspace?.blocksuiteWorkspace?.meta.name}`
: 'Quick Search...'
}
/>
@@ -52,7 +52,7 @@ export const WorkspaceModal = ({ open, onClose }: WorkspaceModalProps) => {
router.replace(`/workspace/${item.id}`);
onClose();
}}
active={item.id === currentWorkspace?.room}
active={item.id === currentWorkspace?.id}
key={index}
>
<span style={{ width: '100px' }}>
@@ -11,7 +11,7 @@ export const useChangePageMeta = () => {
return useCallback<ChangePageMeta>(
(pageId, pageMeta) => {
currentWorkspace?.setPageMeta(pageId, {
currentWorkspace?.blocksuiteWorkspace?.setPageMeta(pageId, {
...pageMeta,
});
},
@@ -9,7 +9,7 @@ export const useCurrentPageMeta = (): PageMeta | null => {
return null;
}
return (
(currentWorkspace.meta.pageMetas.find(
(currentWorkspace.blocksuiteWorkspace?.meta.pageMetas.find(
p => p.id === currentPage.id
) as PageMeta) ?? null
);
@@ -22,9 +22,11 @@ export const useCurrentPageMeta = (): PageMeta | null => {
useEffect(() => {
setCurrentPageMeta(pageMetaHandler);
const dispose = currentWorkspace?.meta.pagesUpdated.on(() => {
setCurrentPageMeta(pageMetaHandler);
}).dispose;
const dispose = currentWorkspace?.blocksuiteWorkspace?.meta.pagesUpdated.on(
() => {
setCurrentPageMeta(pageMetaHandler);
}
).dispose;
return () => {
dispose?.();
+18 -11
View File
@@ -1,9 +1,10 @@
import { Workspace, uuidv4 } from '@blocksuite/store';
import { uuidv4 } from '@blocksuite/store';
import { QueryContent } from '@blocksuite/store/dist/workspace/search';
import { PageMeta, useAppState } from '@/providers/app-state-provider';
import { EditorContainer } from '@blocksuite/editor';
import { useChangePageMeta } from '@/hooks/use-change-page-meta';
import { useRouter } from 'next/router';
import { WorkspaceUnit } from '@affine/datacenter';
export type EditorHandlers = {
createPage: (params?: {
@@ -27,8 +28,10 @@ export type EditorHandlers = {
) => Promise<EditorContainer['mode']>;
};
const getPageMeta = (workspace: Workspace | null, pageId: string) => {
return workspace?.meta.pageMetas.find(p => p.id === pageId);
const getPageMeta = (workspace: WorkspaceUnit | null, pageId: string) => {
return workspace?.blocksuiteWorkspace?.meta.pageMetas.find(
p => p.id === pageId
);
};
export const usePageHelper = (): EditorHandlers => {
const router = useRouter();
@@ -44,11 +47,15 @@ export const usePageHelper = (): EditorHandlers => {
if (!currentWorkspace) {
return resolve(null);
}
currentWorkspace.createPage(pageId);
currentWorkspace.signals.pageAdded.once(addedPageId => {
currentWorkspace.setPageMeta(addedPageId, { title });
resolve(addedPageId);
});
currentWorkspace.blocksuiteWorkspace?.createPage(pageId);
currentWorkspace.blocksuiteWorkspace?.signals.pageAdded.once(
addedPageId => {
currentWorkspace.blocksuiteWorkspace?.setPageMeta(addedPageId, {
title,
});
resolve(addedPageId);
}
);
});
},
toggleFavoritePage: async pageId => {
@@ -78,7 +85,7 @@ export const usePageHelper = (): EditorHandlers => {
},
search: (query: QueryContent) => {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
return currentWorkspace!.search(query);
return currentWorkspace!.blocksuiteWorkspace!.search(query);
},
changePageMode: async (pageId, mode) => {
const pageMeta = getPageMeta(currentWorkspace, pageId);
@@ -96,7 +103,7 @@ export const usePageHelper = (): EditorHandlers => {
permanentlyDeletePage: pageId => {
// TODO: workspace.meta.removePage or workspace.removePage?
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
currentWorkspace!.meta.removePage(pageId);
currentWorkspace!.blocksuiteWorkspace?.meta.removePage(pageId);
},
openPage: (pageId, query = {}, newTab = false) => {
pageId = pageId.replace('space:', '');
@@ -116,7 +123,7 @@ export const usePageHelper = (): EditorHandlers => {
}
return (
(currentWorkspace.meta.pageMetas.find(
(currentWorkspace.blocksuiteWorkspace?.meta.pageMetas.find(
page => page.id === pageId
) as PageMeta) || null
);
@@ -1,7 +1,7 @@
import { useAppState } from '@/providers/app-state-provider';
import { useConfirm } from '@/providers/ConfirmProvider';
import { toast } from '@/ui/toast';
import { Workspace } from '@blocksuite/store';
import { WorkspaceUnit } from '@affine/datacenter';
import router from 'next/router';
export const useWorkspaceHelper = () => {
@@ -12,8 +12,8 @@ export const useWorkspaceHelper = () => {
const workspaceInfo = await dataCenter.createWorkspace({
name: name,
});
if (workspaceInfo && workspaceInfo.room) {
return await dataCenter.loadWorkspace(workspaceInfo.room);
if (workspaceInfo && workspaceInfo.id) {
return await dataCenter.loadWorkspace(workspaceInfo.id);
}
return null;
};
@@ -26,14 +26,14 @@ export const useWorkspaceHelper = () => {
const updateWorkspace = async (
{ name, avatarBlob }: { name?: string; avatarBlob?: Blob },
workspace: Workspace
workspace: WorkspaceUnit
) => {
if (name) {
await dataCenter.updateWorkspaceMeta({ name }, workspace);
}
if (avatarBlob) {
const blobId = await dataCenter.setBlob(workspace, avatarBlob);
await dataCenter.updateWorkspaceMeta({ avatar: blobId }, workspace);
// const blobId = await dataCenter.setBlob(workspace, avatarBlob);
// await dataCenter.updateWorkspaceMeta({ avatar: blobId }, workspace);
}
};
@@ -37,11 +37,11 @@ const All = () => {
const { openPage, createPage } = usePageHelper();
const { currentWorkspace } = useAppState();
const _applyTemplate = function (pageId: string, template: Template) {
const page = currentWorkspace?.getPage(pageId);
const page = currentWorkspace?.blocksuiteWorkspace?.getPage(pageId);
const title = template.name;
if (page) {
currentWorkspace?.setPageMeta(page.id, { title });
currentWorkspace?.blocksuiteWorkspace?.setPageMeta(page.id, { title });
if (page && page.root === null) {
setTimeout(async () => {
const editor = document.querySelector('editor-container');
@@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion */
import {
PropsWithChildren,
ReactElement,
@@ -31,10 +30,10 @@ const Page: NextPageWithLayout = () => {
<EditorHeader />
<MobileModal />
{currentPage && currentWorkspace && (
{currentPage && currentWorkspace?.blocksuiteWorkspace && (
<DynamicBlocksuite
page={currentPage}
workspace={currentWorkspace}
workspace={currentWorkspace.blocksuiteWorkspace}
setEditor={setEditorHandler}
/>
)}
@@ -52,9 +51,10 @@ const PageDefender = ({ children }: PropsWithChildren) => {
useEffect(() => {
const initPage = async () => {
const pageId = router.query.pageId as string;
const isPageExist = !!currentWorkspace!.meta.pageMetas.find(
p => p.id === pageId
);
const isPageExist =
currentWorkspace?.blocksuiteWorkspace?.meta?.pageMetas.find(
p => p.id === pageId
);
if (!isPageExist) {
await createPage({ pageId });
}
@@ -16,7 +16,8 @@ const WorkspaceIndex = () => {
if (!workspaceLoaded) {
return;
}
const savedPageId = currentWorkspace?.meta.pageMetas[0]?.id;
const savedPageId =
currentWorkspace?.blocksuiteWorkspace?.meta.pageMetas[0]?.id;
if (savedPageId) {
router.replace(`/workspace/${activeWorkspaceId}/${savedPageId}`);
return;
@@ -48,18 +48,21 @@ export const AppStateProvider = ({
}, []);
useEffect(() => {
if (!appState?.currentWorkspace) {
if (!appState?.currentWorkspace?.blocksuiteWorkspace) {
return;
}
const currentWorkspace = appState.currentWorkspace;
const dispose = currentWorkspace.meta.pagesUpdated.on(() => {
setAppState({
...appState,
pageList: currentWorkspace.meta.pageMetas as PageMeta[],
});
}).dispose;
const dispose = currentWorkspace?.blocksuiteWorkspace?.meta.pagesUpdated.on(
() => {
setAppState({
...appState,
pageList: currentWorkspace.blocksuiteWorkspace?.meta
.pageMetas as PageMeta[],
});
}
).dispose;
return () => {
dispose();
dispose && dispose();
};
}, [appState]);
@@ -83,7 +86,7 @@ export const AppStateProvider = ({
if (pageId === currentPage?.id) {
return;
}
const page = currentWorkspace?.getPage(pageId) || null;
const page = currentWorkspace?.blocksuiteWorkspace?.getPage(pageId) || null;
setAppState({
...appState,
currentPage: page,
@@ -103,16 +106,17 @@ export const AppStateProvider = ({
const workspace = await dataCenter.loadWorkspace(workspaceId);
const currentMetaWorkSpace = dataCenter.workspaces.find(
(item: WorkspaceUnit) => {
return item.id.toString() === workspace.room;
return item.id.toString() === workspace.id;
}
);
const pageList =
(workspace?.blocksuiteWorkspace?.meta.pageMetas as PageMeta[]) ?? [];
setAppState({
...appState,
currentWorkspace: workspace,
currentWorkspaceId: workspaceId,
currentMetaWorkSpace: currentMetaWorkSpace ?? null,
pageList: currentWorkspace?.meta.pageMetas as PageMeta[],
pageList: pageList,
currentPage: null,
editor: null,
});
@@ -3,7 +3,6 @@ import type { EditorContainer } from '@blocksuite/editor';
import type {
Page as StorePage,
Workspace as StoreWorkspace,
PageMeta as StorePageMeta,
} from '@blocksuite/store';
import { MutableRefObject } from 'react';
@@ -19,7 +18,7 @@ export type AppStateValue = {
dataCenter: DataCenter;
user: User | null;
workspaceList: WorkspaceUnit[];
currentWorkspace: StoreWorkspace | null;
currentWorkspace: WorkspaceUnit | null;
currentMetaWorkSpace: WorkspaceUnit | null;
currentWorkspaceId: string;
pageList: PageMeta[];
@@ -31,7 +30,7 @@ export type AppStateValue = {
export type AppStateFunction = {
setEditor: MutableRefObject<(page: EditorContainer) => void>;
loadWorkspace: (workspaceId: string) => Promise<StoreWorkspace | null>;
loadWorkspace: (workspaceId: string) => Promise<WorkspaceUnit | null>;
loadPage: (pageId: string) => void;
login: () => Promise<User>;
@@ -23,7 +23,23 @@ export class LocalProvider extends BaseProvider {
}
private _storeWorkspaces(workspaces: WorkspaceMeta0[]) {
storage.setItem(WORKSPACE_KEY, JSON.stringify(workspaces));
storage.setItem(
WORKSPACE_KEY,
JSON.stringify(
workspaces.map(w => {
return {
id: w.id,
name: w.name,
avatar: w.avatar,
owner: w.owner,
published: w.published,
memberCount: w.memberCount,
provider: w.provider,
syncMode: w.syncMode,
};
})
)
);
}
public override async linkLocal(workspace: BlocksuiteWorkspace) {