import ArrowForward from '@mui/icons-material/ArrowForward'
import ErrorRounded from '@mui/icons-material/ErrorRounded'
import InfoRounded from '@mui/icons-material/InfoRounded'
import { ListItemAvatar, ListItemText, Typography } from '@mui/material'
import { useNavigate } from 'react-router-dom'
import { useProcessMessage } from '../../hooks/useProcessMessage.js'
import { useRouteExecution } from '../../hooks/useRouteExecution.js'
import { RouteExecutionStatus } from '../../stores/routes/types.js'
import { navigationRoutes } from '../../utils/navigationRoutes.js'
import { TokenAvatarGroup } from '../Avatar/Avatar.style.js'
import { TokenAvatar } from '../Avatar/TokenAvatar.js'
import { StepTimer } from '../Timer/StepTimer.js'
import { ListItem, ListItemButton } from './ActiveTransactions.style.js'
export const ActiveTransactionItem: React.FC<{
routeId: string
dense?: boolean
}> = ({ routeId, dense }) => {
const navigate = useNavigate()
const { route, status } = useRouteExecution({
routeId,
executeInBackground: true,
})
const lastActiveStep = route?.steps.findLast((step) => step.execution)
const lastActiveProcess = lastActiveStep?.execution?.process.at(-1)
const { title } = useProcessMessage(lastActiveStep, lastActiveProcess)
if (!route || !lastActiveStep) {
return null
}
const handleClick = () => {
navigate(navigationRoutes.transactionExecution, { state: { routeId } })
}
const getStatusComponent = () => {
switch (lastActiveProcess?.status) {
case 'ACTION_REQUIRED':
case 'MESSAGE_REQUIRED':
case 'RESET_REQUIRED':
return
case 'FAILED':
return
default:
return (
)
}
}
const ListItemComponent = dense ? ListItem : ListItemButton
return (
{route.fromToken.symbol}
{route.toToken.symbol}
}
secondary={
status !== RouteExecutionStatus.Done ? (
{title}
) : null
}
/>
{getStatusComponent()}
)
}