mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-13 21:05:19 +00:00
- document folder - full-text search - blob storage - basic edgeless support Co-authored-by: tzhangchi <terry.zhangchi@outlook.com> Co-authored-by: QiShaoXuan <qishaoxuan777@gmail.com> Co-authored-by: DiamondThree <diamond.shx@gmail.com> Co-authored-by: MingLiang Wang <mingliangwang0o0@gmail.com> Co-authored-by: JimmFly <yangjinfei001@gmail.com> Co-authored-by: Yifeng Wang <doodlewind@toeverything.info> Co-authored-by: Himself65 <himself65@outlook.com> Co-authored-by: lawvs <18554747+lawvs@users.noreply.github.com> Co-authored-by: Qi <474021214@qq.com>
38 lines
1011 B
TypeScript
38 lines
1011 B
TypeScript
import { useCallback, useEffect, useState } from 'react';
|
|
import { useAppState, PageMeta } from '@/providers/app-state-provider';
|
|
|
|
export const useCurrentPageMeta = (): PageMeta | null => {
|
|
const { currentPage, currentWorkspace } = useAppState();
|
|
|
|
const pageMetaHandler = useCallback((): PageMeta | null => {
|
|
if (!currentPage || !currentWorkspace) {
|
|
return null;
|
|
}
|
|
return (
|
|
(currentWorkspace.meta.pageMetas.find(
|
|
p => p.id === currentPage.id
|
|
) as PageMeta) ?? null
|
|
);
|
|
}, [currentPage, currentWorkspace]);
|
|
|
|
const [currentPageMeta, setCurrentPageMeta] = useState<PageMeta | null>(
|
|
pageMetaHandler
|
|
);
|
|
|
|
useEffect(() => {
|
|
setCurrentPageMeta(pageMetaHandler);
|
|
|
|
const dispose = currentWorkspace?.meta.pagesUpdated.on(() => {
|
|
setCurrentPageMeta(pageMetaHandler);
|
|
}).dispose;
|
|
|
|
return () => {
|
|
dispose?.();
|
|
};
|
|
}, [currentPage, currentWorkspace, pageMetaHandler]);
|
|
|
|
return currentPageMeta;
|
|
};
|
|
|
|
export default useCurrentPageMeta;
|