mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-14 05:14:54 +00:00
28 lines
720 B
TypeScript
28 lines
720 B
TypeScript
import type { Page } from '@blocksuite/store';
|
|
import { useCallback, useEffect, useState } from 'react';
|
|
|
|
declare module '@blocksuite/store' {
|
|
interface PageMeta {
|
|
isPublic?: boolean;
|
|
}
|
|
}
|
|
|
|
export function useBlockSuiteWorkspacePageIsPublic(page: Page) {
|
|
const [isPublic, set] = useState<boolean>(() => page.meta.isPublic ?? false);
|
|
useEffect(() => {
|
|
page.workspace.meta.pageMetasUpdated.on(() => {
|
|
set(page.meta.isPublic ?? false);
|
|
});
|
|
}, [page]);
|
|
const setIsPublic = useCallback(
|
|
(isPublic: boolean) => {
|
|
set(isPublic);
|
|
page.workspace.setPageMeta(page.id, {
|
|
isPublic,
|
|
});
|
|
},
|
|
[page.id, page.workspace]
|
|
);
|
|
return [isPublic, setIsPublic] as const;
|
|
}
|