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