"use client"; import { Table, TableHeader, TableRow, TableHead, TableBody, TableCell, } from "@unsend/ui/src/table"; import { api } from "~/trpc/react"; import { useUrlState } from "~/hooks/useUrlState"; import { Button } from "@unsend/ui/src/button"; import Spinner from "@unsend/ui/src/spinner"; import { formatDistanceToNow } from "date-fns"; import { CampaignStatus } from "@prisma/client"; import DeleteCampaign from "./delete-campaign"; import Link from "next/link"; import DuplicateCampaign from "./duplicate-campaign"; import { Select, SelectTrigger, SelectContent, SelectItem, } from "@unsend/ui/src/select"; export default function CampaignList() { const [page, setPage] = useUrlState("page", "1"); const [status, setStatus] = useUrlState("status"); const pageNumber = Number(page); const campaignsQuery = api.campaign.getCampaigns.useQuery({ page: pageNumber, status: status as CampaignStatus | null, }); return (
Name Status Created At Actions {campaignsQuery.isLoading ? ( ) : campaignsQuery.data?.campaigns.length ? ( campaignsQuery.data?.campaigns.map((campaign) => ( {campaign.name}
{campaign.status.toLowerCase()}
{formatDistanceToNow(new Date(campaign.createdAt), { addSuffix: true, })}
)) ) : ( No campaigns found )}
); }