import { AriaTable, AriaTbody, AriaTd, AriaTfoot, AriaThead, AriaTr, Box, Flex } from '@traefiklabs/faency'
import { useMemo } from 'react'
import { Helmet } from 'react-helmet-async'
import { FiShield } from 'react-icons/fi'
import useInfiniteScroll from 'react-infinite-scroll-hook'
import { useSearchParams } from 'react-router-dom'
import ClickableRow from 'components/ClickableRow'
import ProviderIcon from 'components/icons/providers'
import { Chips } from 'components/resources/DetailSections'
import { ResourceStatus } from 'components/resources/ResourceStatus'
import { ScrollTopButton } from 'components/ScrollTopButton'
import { SpinnerLoader } from 'components/SpinnerLoader'
import { searchParamsToState, TableFilter } from 'components/TableFilter'
import SortableTh from 'components/tables/SortableTh'
import Tooltip from 'components/Tooltip'
import TooltipText from 'components/TooltipText'
import useFetchWithPagination, { pagesResponseInterface, RenderRowType } from 'hooks/use-fetch-with-pagination'
import { EmptyPlaceholder } from 'layout/EmptyPlaceholder'
export const makeRowRender = (protocol = 'http'): RenderRowType => {
const HttpRoutersRenderRow = (row) => (
{protocol !== 'udp' && (
<>
{row.tls && (
)}
>
)}
{row.using && row.using.length > 0 && }
)
return HttpRoutersRenderRow
}
export const HttpRoutersRender = ({
error,
isEmpty,
isLoadingMore,
isReachingEnd,
loadMore,
pageCount,
pages,
}: pagesResponseInterface) => {
const [infiniteRef] = useInfiniteScroll({
loading: isLoadingMore,
hasNextPage: !isReachingEnd && !error,
onLoadMore: loadMore,
})
return (
<>
{pages}
{(isEmpty || !!error) && (
)}
{isLoadingMore ? : isReachingEnd && pageCount > 1 && }
>
)
}
export const HttpRouters = () => {
const renderRow = makeRowRender()
const [searchParams] = useSearchParams()
const query = useMemo(() => searchParamsToState(searchParams), [searchParams])
const { pages, pageCount, isLoadingMore, isReachingEnd, loadMore, error, isEmpty } = useFetchWithPagination(
'/http/routers',
{
listContextKey: JSON.stringify(query),
renderRow,
renderLoader: () => null,
query,
},
)
return (
<>
HTTP Routers - Traefik Proxy
>
)
}