/* eslint-disable react/no-array-index-key */
import type { Route } from '@lifi/sdk';
import { Collapse, Grow, Stack, Typography } from '@mui/material';
import { useTranslation } from 'react-i18next';
import { useMatch, useNavigate } from 'react-router-dom';
import { useRoutes } from '../../hooks';
import { useWidgetConfig } from '../../providers';
import { useSetExecutableRoute, useValidation } from '../../stores';
import { navigationRoutes } from '../../utils';
import { PageContainer } from '../PageContainer';
import { ProgressToNextUpdate } from '../ProgressToNextUpdate';
import { RouteCard, RouteCardSkeleton, RouteNotFoundCard } from '../RouteCard';
import {
CollapseContainer,
Container,
Header,
ScrollableContainer,
} from './RoutesExpanded.style';
const timeout = { enter: 225, exit: 225, appear: 0 };
export const RoutesExpanded = () => {
const element = useMatch('/');
return (
);
};
export const RoutesExpandedElement = () => {
const { t } = useTranslation();
const navigate = useNavigate();
const setExecutableRoute = useSetExecutableRoute();
const { subvariant, containerStyle } = useWidgetConfig();
const { isValid, isValidating } = useValidation();
const {
routes,
isLoading,
isFetching,
isFetched,
dataUpdatedAt,
refetchTime,
refetch,
} = useRoutes();
const currentRoute = routes?.[0];
const handleRouteClick = (route: Route) => {
if (isValid && !isValidating) {
setExecutableRoute(route);
navigate(navigationRoutes.transactionExecution, {
state: { routeId: route.id },
});
}
};
const expanded = Boolean(
currentRoute || isLoading || isFetching || isFetched,
);
const routeNotFound = !currentRoute && !isLoading && !isFetching && expanded;
return (
{subvariant === 'nft'
? t('main.fromAmount')
: t('header.youGet')}
refetch()}
sx={{ marginRight: -1 }}
/>
{routeNotFound ? (
) : isLoading || (isFetching && !routes?.length) ? (
Array.from({ length: 3 }).map((_, index) => (
))
) : (
routes?.map((route: Route, index: number) => (
handleRouteClick(route)}
active={index === 0}
expanded={routes?.length === 1}
/>
))
)}
);
};