import { useEffect, useState } from "react"; import { useEditorStore } from "@/store/module"; import { useMemoCacheStore } from "@/store/zustand"; import Icon from "../Icon"; interface FormatedMemoRelation extends MemoRelation { relatedMemo: Memo; } const RelationListView = () => { const editorStore = useEditorStore(); const memoCacheStore = useMemoCacheStore(); const [formatedMemoRelationList, setFormatedMemoRelationList] = useState([]); const relationList = editorStore.state.relationList; useEffect(() => { const fetchRelatedMemoList = async () => { const requests = relationList.map(async (relation) => { const relatedMemo = await memoCacheStore.getOrFetchMemoById(relation.relatedMemoId); return { ...relation, relatedMemo, }; }); const list = await Promise.all(requests); setFormatedMemoRelationList(list); }; fetchRelatedMemoList(); }, [relationList]); const handleDeleteRelation = async (memoRelation: FormatedMemoRelation) => { const newRelationList = relationList.filter((relation) => relation.relatedMemoId !== memoRelation.relatedMemoId); editorStore.setRelationList(newRelationList); }; return ( <> {formatedMemoRelationList.length > 0 && (
{formatedMemoRelationList.map((memoRelation) => { return (
{memoRelation.relatedMemo.content} handleDeleteRelation(memoRelation)} />
); })}
)} ); }; export default RelationListView;