import { Await, createLazyFileRoute, getRouteApi, useNavigate } from '@tanstack/react-router'; import { Suspense, useEffect, useState } from 'react'; import CommonPageHeader from '@/components/custom/page/commonPage'; import UsersSubscriptionFilter from '@/components/custom/usersSubscription/filters'; import UsersSubscriptionTableBody from '@/components/custom/usersSubscription/tableBody'; import { Table, TableBody } from '@/components/ui/table'; import TableHeaderColumn from '@/components/custom/table/header'; import TableDataLoadingState from '@/components/custom/table/bodyLoadingState'; import { useDebounce } from '@/utils/useDebounce.hook'; import { SubscriptionStatus } from '@/apis/common/types'; import Pagination from '@/components/custom/table/pagination'; import { usersSubscriptionTableHeaders } from '@/static/tables/usersSubscripionTable'; export const Route = createLazyFileRoute('/_authenticated/users-subscription')({ component: SurveyResponses, }); const routeApi = getRouteApi('/_authenticated/users-subscription/'); function SurveyResponses() { const { usersSubscriptionData } = routeApi.useLoaderData(); const routeSearch = routeApi.useSearch(); const [email, setEmail] = useState(() => routeSearch.email); const [status, setStatus] = useState(() => routeSearch.status); const [page, setPage] = useState(() => routeSearch.page || 1); const [totalPages, setTotalPages] = useState(1); const debouncedEmail = useDebounce(email, 1000); const navigate = useNavigate({ from: '/users-subscription' }); const onClearFilter = () => { setEmail(undefined); setStatus(undefined); setPage(1); }; const refreshData = () => { const search: any = { page, status }; if (debouncedEmail) search.email = debouncedEmail; if (routeSearch.email !== search.email || routeSearch.status !== search.status) { setPage(1); } else { search.page = page; } navigate({ to: '/users-subscription/', search, }); }; useEffect(() => { refreshData(); }, [debouncedEmail, status, page]); return (
( ))} > {(data) => { setTotalPages(data.data.totalPages); return ( <> ); }}
); }