mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-11 20:08:37 +00:00
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import type { Page, Workspace } from '@blocksuite/store';
|
|
import { assertExists } from '@blocksuite/store';
|
|
import {
|
|
getMilestones,
|
|
markMilestone,
|
|
revertUpdate,
|
|
} from '@toeverything/y-indexeddb';
|
|
import { useMemo } from 'react';
|
|
|
|
export function useBlockSuiteWorkspaceHelper(blockSuiteWorkspace: Workspace) {
|
|
return useMemo(
|
|
() => ({
|
|
createPage: (pageId?: string): Page => {
|
|
assertExists(blockSuiteWorkspace);
|
|
return blockSuiteWorkspace.createPage({ id: pageId });
|
|
},
|
|
markMilestone: async (name: string) => {
|
|
assertExists(blockSuiteWorkspace);
|
|
const doc = blockSuiteWorkspace.doc;
|
|
await markMilestone(blockSuiteWorkspace.id, doc, name);
|
|
},
|
|
revertMilestone: async (name: string) => {
|
|
assertExists(blockSuiteWorkspace);
|
|
const doc = blockSuiteWorkspace.doc;
|
|
const list = await getMilestones(blockSuiteWorkspace.id);
|
|
if (!list) {
|
|
throw new Error('no milestone');
|
|
}
|
|
const milestone = list[name];
|
|
if (milestone) {
|
|
revertUpdate(doc, milestone, () => 'Map');
|
|
}
|
|
},
|
|
listMilestone: async () => {
|
|
assertExists(blockSuiteWorkspace);
|
|
return await getMilestones(blockSuiteWorkspace.id);
|
|
},
|
|
}),
|
|
[blockSuiteWorkspace]
|
|
);
|
|
}
|