refactor!: next generation AFFiNE code structure (#1176)

This commit is contained in:
Himself65
2023-03-01 01:40:01 -06:00
committed by GitHub
parent 2dcccc772c
commit e0481d29ad
270 changed files with 8308 additions and 6829 deletions
+49
View File
@@ -0,0 +1,49 @@
import { PageMeta } from '@blocksuite/store';
import { useEffect, useMemo, useState } from 'react';
import { BlockSuiteWorkspace } from '../shared';
declare module '@blocksuite/store' {
interface PageMeta {
mode?: 'page' | 'edgeless';
favorite?: boolean;
trash?: boolean;
}
}
export function usePageMeta(
blockSuiteWorkspace: BlockSuiteWorkspace | null
): PageMeta[] {
const [pageMeta, setPageMeta] = useState<PageMeta[]>(
() => blockSuiteWorkspace?.meta.pageMetas ?? []
);
const [prev, setPrev] = useState(() => blockSuiteWorkspace);
if (prev !== blockSuiteWorkspace) {
setPrev(blockSuiteWorkspace);
if (blockSuiteWorkspace) {
setPageMeta(blockSuiteWorkspace.meta.pageMetas);
}
}
useEffect(() => {
if (blockSuiteWorkspace) {
const dispose = blockSuiteWorkspace.meta.pagesUpdated.on(() => {
setPageMeta(blockSuiteWorkspace.meta.pageMetas);
});
return () => {
dispose.dispose();
};
}
}, [blockSuiteWorkspace]);
return pageMeta;
}
export function usePageMetaHelper(blockSuiteWorkspace: BlockSuiteWorkspace) {
return useMemo(
() => ({
setPageMeta: (pageId: string, pageMeta: Partial<PageMeta>) => {
blockSuiteWorkspace.meta.setPageMeta(pageId, pageMeta);
},
}),
[blockSuiteWorkspace]
);
}