mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-16 17:46:18 +08:00
change workspacetype to worksopace until
This commit is contained in:
@@ -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');
|
||||
|
||||
@@ -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?.();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user