import React from "react"; import { qaToZil } from "src/utils/Utils"; import AddressDisp from "src/components/Misc/Disp/AddressDisp/AddressDisp"; import { isValidAddr } from "src/utils/Utils"; import "./TransactionFlowDetails.css"; interface IProps { links: { source: { id: string; color: string; type: string; }; target: { id: string; color: string; type: string; }; receipt: { event_logs: { address: string; _eventname: string; __typename: string; }[]; }; txData: { amount: string; fromAddr: string; toAddr: string; }; events: | undefined | { address: string; _eventname: string; params: { type: string; value: string; vname: string; }[]; }[]; data: | undefined | { accepted: boolean; addr: string; depth: number; msg: { params: { type: string; value: string; vname: string; __typename: string; }[]; __typename: string; _amount: string; _recipient: string; _tag: string; }; __typename: string; }; index: number; amount: string; }[]; txn: any; } const TransactionFlowDetails: React.FC = ({ links, txn }) => { let txData: any = undefined; if (txn.data !== "") { txData = JSON.parse(txn.data); } return (

Transaction flow

{links && links.length && links.map((l) => (
{l.index + 1}
{l.index === 0 ? (
{l.source.id}{" "} sent{" "} {qaToZil(l.amount)}{" "} {l.target.type === "contract" && txData && txData._tag ? ( and called{" "} {txData._tag} on ) : ( "to" )}{" "} {l.target.id}
{txData && txData.params && txData.params.length ? (
Transaction parameters:
{txData.params.map( (param: { type: string; value: string; vname: string; }) => (
{param.vname}: {param.value !== undefined && isValidAddr(param.value.toString()) ? ( ) : param.value ? ( param.value.toString() ) : null}
) )}
) : null}
) : (
{l.source.id}{" "} sent {l.data && qaToZil(l.data.msg._amount)} and invoked{" "} {l.data && l.data.msg ? l.data.msg._tag : null} {" "} to{" "} {l.target.id}
{l.data && l.data.msg.params.length > 0 && (
Transaction parameters:
{l.data && l.data.msg.params && l.data.msg.params.length ? l.data.msg.params.map( (param: { type: string; value: string; vname: string; }) => (
{param.vname}: {isValidAddr(param.value.toString()) ? ( ) : param.value ? ( param.value.toString() ) : null}
) ) : null}
)} {l.events && l.events.length ? (
{l.events.length}{" "} {l.events.length > 1 ? "events were" : "event was"}{" "} emitted during this call:
{l.events.map( (ev: { address: string; params: any[]; _eventname: string; }) => (
{ev.address} {" "} emitted{" "} {ev._eventname} {" "} with params:
{ev.params.map( (param: { type: string; value: string; vname: string; }) => (
{param.vname}: {isValidAddr( param.value.toString() as string ) ? ( ) : param.value ? ( param.value.toString() ) : null}
) )}
) )}
) : null}
)}
))}
); }; export default TransactionFlowDetails;