feat: connect pinboard and reference link (#1859)

This commit is contained in:
Qi
2023-04-11 00:49:51 +08:00
committed by GitHub
parent 9acbba7016
commit ea2a146c82
12 changed files with 243 additions and 91 deletions

View File

@@ -0,0 +1,42 @@
import { useAtomValue } from 'jotai';
import { useEffect } from 'react';
import { currentEditorAtom } from '../../atoms';
export function useReferenceLink(props?: {
pageLinkClicked?: (params: { pageId: string }) => void;
subpageLinked?: (params: { pageId: string }) => void;
subpageUnlinked?: (params: { pageId: string }) => void;
}) {
const { pageLinkClicked, subpageLinked, subpageUnlinked } = props ?? {};
const editor = useAtomValue(currentEditorAtom);
useEffect(() => {
if (!editor) {
return;
}
const linkClickedDisposable = editor.slots.pageLinkClicked.on(
({ pageId }) => {
pageLinkClicked?.({ pageId });
}
);
const subpageLinkedDisposable = editor.slots.subpageLinked.on(
({ pageId }) => {
subpageLinked?.({ pageId });
}
);
const subpageUnlinkedDisposable = editor.slots.subpageUnlinked.on(
({ pageId }) => {
subpageUnlinked?.({ pageId });
}
);
return () => {
linkClickedDisposable.dispose();
subpageLinkedDisposable.dispose();
subpageUnlinkedDisposable.dispose();
};
}, [editor, pageLinkClicked, subpageLinked, subpageUnlinked]);
}