import { useEffect, useState } from "react"; import { useMemoStore } from "@/store/v1"; import { MemoRelation, MemoRelation_Type } from "@/types/proto/api/v2/memo_relation_service"; import { Memo } from "@/types/proto/api/v2/memo_service"; import Icon from "../Icon"; interface Props { relationList: MemoRelation[]; setRelationList: (relationList: MemoRelation[]) => void; } const RelationListView = (props: Props) => { const { relationList, setRelationList } = props; const memoStore = useMemoStore(); const [referencingMemoList, setReferencingMemoList] = useState([]); useEffect(() => { (async () => { const requests = relationList .filter((relation) => relation.type === MemoRelation_Type.REFERENCE) .map(async (relation) => { return await memoStore.getOrFetchMemoById(relation.relatedMemoId, { skipStore: true }); }); const list = await Promise.all(requests); setReferencingMemoList(list); })(); }, [relationList]); const handleDeleteRelation = async (memo: Memo) => { setRelationList(relationList.filter((relation) => relation.relatedMemoId !== memo.id)); }; return ( <> {referencingMemoList.length > 0 && (
{referencingMemoList.map((memo) => { return (
handleDeleteRelation(memo)} > #{memo.id} {memo.content}
); })}
)} ); }; export default RelationListView;