import { useEffect, useState } from 'react'; import { useSelector } from 'react-redux'; import { handleSnapRequest } from '../../store/actions'; import { getPermissionSubjects } from '../../selectors'; const INSIGHT_PERMISSION = 'endowment:transaction-insight'; export function useTransactionInsightSnap({ transaction, chainId, snapId }) { const subjects = useSelector(getPermissionSubjects); if (!subjects[snapId]?.permissions[INSIGHT_PERMISSION]) { throw new Error( 'This snap does not have the transaction insight endowment.', ); } const [data, setData] = useState(undefined); useEffect(() => { async function fetchInsight() { const d = await handleSnapRequest({ snapId, origin: '', handler: 'onTransaction', request: { jsonrpc: '2.0', method: ' ', params: { transaction, chainId }, }, }); setData(d); } if (transaction) { fetchInsight(); } }, [snapId, transaction, chainId]); return data; }