import { useContext, useEffect } from "react"; import { Link } from "react-router-dom"; import Icon from "@/components/Icon"; import MemoResourceListView from "@/components/MemoResourceListView"; import useLoading from "@/hooks/useLoading"; import { useMemoStore } from "@/store/v1"; import MemoContent from ".."; import { RendererContext } from "../types"; import Error from "./Error"; interface Props { resourceId: string; params: string; } const EmbeddedMemo = ({ resourceId, params: paramsStr }: Props) => { const context = useContext(RendererContext); const loadingState = useLoading(); const memoStore = useMemoStore(); const memo = memoStore.getMemoByUid(resourceId); const resourceName = `memos/${resourceId}`; useEffect(() => { memoStore.searchMemos(`uid == "${resourceId}" && include_comments == true`).finally(() => loadingState.setFinish()); }, [resourceId]); if (loadingState.isLoading) { return null; } if (!memo) { return ; } if (memo.name === context.memoName || context.embeddedMemos.has(resourceName)) { return ; } // Add the memo to the set of embedded memos. This is used to prevent infinite loops when a memo embeds itself. context.embeddedMemos.add(resourceName); const params = new URLSearchParams(paramsStr); const inlineMode = params.has("inline"); if (inlineMode) { return (
); } return (
); }; export default EmbeddedMemo;