import type { RouteExtended } from '@lifi/sdk' import DeleteOutline from '@mui/icons-material/DeleteOutlined' import { Tooltip, Typography } from '@mui/material' import type { JSX, MouseEvent } from 'react' import { useTranslation } from 'react-i18next' import { useActionMessage } from '../../hooks/useActionMessage.js' import { RouteExecutionStatus } from '../../stores/routes/types.js' import { getExpiryTimestamp } from '../../utils/timer.js' import { ActionRow } from '../ActionRow/ActionRow.js' import { Card } from '../Card/Card.js' import { IconCircle } from '../IconCircle/IconCircle.js' import { RouteTokens } from '../RouteCard/RouteTokens.js' import { ExecutionTimerText } from '../Timer/ExecutionTimerText.js' import { CircularProgressPending } from '../Timer/StepStatusTimer.style.js' import { DeleteButton, PendingCircle } from './ActiveTransactionCard.style.js' interface ActiveTransactionCardProps { route: RouteExtended status?: RouteExecutionStatus onClick: () => void onDelete: (e: MouseEvent) => void } export const ActiveTransactionCard = ({ route, status, onClick, onDelete, }: ActiveTransactionCardProps): JSX.Element => { const { t } = useTranslation() const lastActiveStep = route.steps.findLast((step) => step.execution) const lastActiveAction = lastActiveStep?.execution?.actions?.at(-1) const { title } = useActionMessage(lastActiveStep, lastActiveAction) const isFailed = status === RouteExecutionStatus.Failed const statusIcon = (() => { if (isFailed) { return } if ( ['ACTION_REQUIRED', 'MESSAGE_REQUIRED', 'RESET_REQUIRED'].includes( lastActiveAction?.status ?? '' ) ) { return } return ( ) })() return ( ) : lastActiveStep?.execution?.signedAt ? ( ) : undefined } /> ) }