import ArrowForwardIcon from '@mui/icons-material/ArrowForward';
import ErrorRoundedIcon from '@mui/icons-material/ErrorRounded';
import InfoRoundedIcon from '@mui/icons-material/InfoRounded';
import { ListItemAvatar, ListItemText, Typography } from '@mui/material';
import { useNavigate } from 'react-router-dom';
import { useProcessMessage, useRouteExecution } from '../../hooks';
import { RouteExecutionStatus } from '../../stores';
import { navigationRoutes } from '../../utils';
import { StepTimer } from '../Step/StepTimer';
import { TokenAvatar, TokenAvatarGroup } from '../TokenAvatar';
import { ListItem, ListItemButton } from './ActiveTransactions.style';
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':
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()}
);
};