"use client"; import { api } from "~/trpc/react"; import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from "@unsend/ui/src/breadcrumb"; import Link from "next/link"; import AddContact from "./add-contact"; import ContactList from "./contact-list"; import { TextWithCopyButton } from "@unsend/ui/src/text-with-copy"; import { formatDistanceToNow } from "date-fns"; import EmojiPicker, { Theme } from "emoji-picker-react"; import { Popover, PopoverContent, PopoverTrigger, } from "@unsend/ui/src/popover"; import { Button } from "@unsend/ui/src/button"; import { useTheme } from "@unsend/ui"; export default function ContactsPage({ params, }: { params: { contactBookId: string }; }) { const { theme } = useTheme(); const contactBookDetailQuery = api.contacts.getContactBookDetails.useQuery({ contactBookId: params.contactBookId, }); const utils = api.useUtils(); const updateContactBookMutation = api.contacts.updateContactBook.useMutation({ onMutate: async (data) => { await utils.contacts.getContactBookDetails.cancel(); utils.contacts.getContactBookDetails.setData( { contactBookId: params.contactBookId, }, (old) => { if (!old) return old; return { ...old, ...data, }; } ); }, onSettled: () => { utils.contacts.getContactBookDetails.invalidate({ contactBookId: params.contactBookId, }); }, }); return (
Metrics
Details
Recent campaigns
{!contactBookDetailQuery.isLoading && contactBookDetailQuery.data?.campaigns.length === 0 ? (