/* 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} /> )) )}
); };