import classNames from 'classnames' import { dateTimeFormatter } from '~/utils/formatters' import { statusEnumToString } from '~/utils/text' import { UseQueryResult } from 'react-query' import { inferQueryOutput } from '~/utils/trpc' import IconOnline from '~/icons/compiled/Online' import IconOffline from '~/icons/compiled/Offline' import IconOk from '~/icons/compiled/Ok' import IconCancel from '~/icons/compiled/Cancel' import IconRedirect from '~/icons/compiled/Redirect' export interface TransactionHistoryProps { history: UseQueryResult> onNewTransaction: (id?: string) => void currentTransactionId?: string | null } export default function TransactionHistory({ history, onNewTransaction, currentTransactionId, }: TransactionHistoryProps) { return (
{history.isLoading ? ( <> ) : history.data && history.data.length ? (
    {history.data.map(transaction => { const isAvailable = [ 'PENDING', 'RUNNING', 'COMPLETED', 'AWAITING_INPUT', ].includes(transaction.status) const isCurrent = transaction.id === currentTransactionId let Icon let iconColor if (transaction.status === 'COMPLETED') { if (transaction.resultStatus === 'SUCCESS') { Icon = IconOk iconColor = 'text-green-600' } else if (transaction.resultStatus === 'REDIRECTED') { Icon = IconRedirect iconColor = 'text-gray-500' } else { Icon = IconCancel iconColor = 'text-red-500' } } else { Icon = isAvailable ? IconOnline : IconOffline iconColor = isAvailable ? 'text-green-600' : 'text-gray-500' } return (
  1. ) })}
) : (

No history yet.

)}
) }