"use client"; import { useMemo, useState } from "react"; import { Card, CardContent, CardHeader, CardTitle } from "@usesend/ui/src/card"; import { Label } from "@usesend/ui/src/label"; import { Switch } from "@usesend/ui/src/switch"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@usesend/ui/src/select"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@usesend/ui/src/table"; import Spinner from "@usesend/ui/src/spinner"; import { api } from "~/trpc/react"; import { isCloud } from "~/utils/common"; import { timeframeOptions } from "./constants"; import { keepPreviousData } from "@tanstack/react-query"; export default function AdminEmailAnalyticsPage() { const isCloudEnv = isCloud(); const [timeframe, setTimeframe] = useState<(typeof timeframeOptions)[number]["value"]>("today"); const [paidOnly, setPaidOnly] = useState(false); const analyticsQuery = api.admin.getEmailAnalytics.useQuery( { timeframe, paidOnly, }, { enabled: isCloudEnv, placeholderData: keepPreviousData } ); const data = analyticsQuery.data; const totals = data?.totals ?? { sent: 0, delivered: 0, opened: 0, clicked: 0, bounced: 0, complained: 0, hardBounced: 0, }; const rows = useMemo(() => data?.rows ?? [], [data]); if (!isCloudEnv) { return (
Since {data.timeframe === "today" ? "today" : data.periodStart}
) : null}{value.toLocaleString()}