import { useMemo } from 'react';
import CreatedAt from '../../CreatedAt/CreatedAt';
import Table from '../../Table/Table';
import TextTable from '../../text/textTable';
import MsgTypeTxs from './MsgTypeTxs';
import RenderValue from './RenderValue';
import StatusTxs from './StatusTxs';
import styles from './TableDataTxs.module.scss';
import TxHash from './txHash';
type MessagesData = {
type: string;
value: any;
transaction_hash: string;
transaction: {
success: boolean;
block: {
timestamp: string;
};
};
};
type Props = {
accountUser: string;
data: Array<MessagesData>;
loading: boolean;
};
enum ColumnsTable {
status = 'status',
type = 'type',
timestamp = 'timestamp',
tx = 'tx',
action = 'action',
}
function TableDataTxs({ data, loading, accountUser }: Props) {
const tableData = useMemo(() => {
return data?.map((item) => {
return {
[ColumnsTable.status]: (
<TextTable>
<StatusTxs success={item.transaction.success} />
</TextTable>
),
[ColumnsTable.type]: (
<div className={styles.type}>
<MsgTypeTxs type={item.type} value={item.value} accountUser={accountUser} />
</div>
),
[ColumnsTable.timestamp]: (
<TextTable>
<CreatedAt timeAt={item.transaction.block.timestamp} />
</TextTable>
),
[ColumnsTable.tx]: (
<TextTable>
<TxHash hash={item.transaction_hash} />
</TextTable>
),
[ColumnsTable.action]: (
<TextTable display="flex">
<RenderValue value={item.value} type={item.type} accountUser={accountUser} />
</TextTable>
),
};
});
}, [data, accountUser]);
return (
<Table
isLoading={loading}
data={tableData || []}
columns={Object.values(ColumnsTable).map((item) => ({
header: item,
accessorKey: item,
enableSorting: ![ColumnsTable.action, ColumnsTable.tx].includes(item),
cell: (info) => info.getValue(),
}))}
/>
);
}
export default TableDataTxs;