import { useState } from 'react'; import { useQuery } from '@tanstack/react-query'; import { useTrackedMutation } from '../hooks/useTrackedMutation'; import { previewDigest, sendDigest } from '../api/client'; import PageHeader from '../components/PageHeader'; import ErrorState from '../components/ErrorState'; export default function DigestPage() { const [showConfirm, setShowConfirm] = useState(false); const { data: html, isLoading, error, refetch } = useQuery({ queryKey: ['digest-preview'], queryFn: previewDigest, retry: false, }); const sendMutation = useTrackedMutation({ mutationFn: sendDigest, invalidates: 'noop', noopReason: 'sendDigest dispatches an email server-side; no cached client query reflects digest-send state', onSuccess: () => setShowConfirm(false), }); return ( <> setShowConfirm(true)} disabled={!html || sendMutation.isPending} className="btn btn-primary text-xs disabled:opacity-50" > Send Digest Now } />
{sendMutation.isSuccess && (
Digest sent successfully.
)} {sendMutation.isError && (
Failed to send digest: {(sendMutation.error as Error).message}
)} {isLoading && (
Loading digest preview...
)} {error && ( refetch()} /> )} {html && (
Email Preview