'use client'; import { UAParser } from 'ua-parser-js'; import { api } from '~/trpc/react'; import { Separator } from '@usesend/ui/src/separator'; import { EmailStatusBadge, EmailStatusIcon } from './email-status-badge'; import { formatDate } from 'date-fns'; import { motion } from 'framer-motion'; import { EmailStatus } from '@prisma/client'; import { JsonValue } from '@prisma/client/runtime/library'; import { SesBounce, SesClick, SesComplaint, SesDeliveryDelay, SesOpen, } from '~/types/aws-types'; import { BOUNCE_ERROR_MESSAGES, COMPLAINT_ERROR_MESSAGES, DELIVERY_DELAY_ERRORS, } from '~/lib/constants/ses-errors'; import CancelEmail from './cancel-email'; import { useEffect } from 'react'; import { useState } from 'react'; export default function EmailDetails({ emailId }: { emailId: string }) { const emailQuery = api.email.getEmail.useQuery({ id: emailId }); return (

{emailQuery.data?.to}

{/*
From {emailQuery.data?.from}
To {emailQuery.data?.to}
Subject {emailQuery.data?.subject}
*/}
{/*
{emailQuery.data?.to}
*/}
Subject: {emailQuery.data?.subject}
From: {emailQuery.data?.from}
{emailQuery.data?.latestStatus === 'SCHEDULED' && emailQuery.data?.scheduledAt ? ( <>
Scheduled at {formatDate( emailQuery.data?.scheduledAt, "MMM dd'th', hh:mm a", )}
) : null}
{emailQuery.data?.latestStatus !== 'SCHEDULED' ? (
Events History
{emailQuery.data?.emailEvents.map((evt) => (
{formatDate(evt.createdAt, 'MMM dd, hh:mm a')}
))}
) : null}
); } const EmailPreview = ({ html }: { html: string }) => { const [show, setShow] = useState(false); useEffect(() => { const timer = setTimeout(() => { setShow(true); }, 200); return () => clearTimeout(timer); }, []); if (!show) { return (
); } return (