'use client'; import React, { useState, useEffect, useCallback, Suspense } from 'react'; import Link from 'next/link'; import { useAuth } from '@/contexts/AuthContext'; import { useRouter, useSearchParams } from 'next/navigation'; const SITES = ['avbeat','avbeat','backlotbeat','broadcastengineering']; function DnsRow({ label, valid, checkedAt }: { label: string; valid: boolean; checkedAt: string | null }) { return (
{label}
{valid ? '✓ Pass' : '✗ Fail'} {checkedAt && {new Date(checkedAt).toLocaleDateString()}}
); } function DomainsContent() { const { user, loading } = useAuth(); const router = useRouter(); const sp = useSearchParams(); const [domains, setDomains] = useState([]); const [loadingData, setLoadingData] = useState(true); const [filterSite, setFilterSite] = useState(sp.get('site') ?? ''); const [expanded, setExpanded] = useState(null); const [verifying, setVerifying] = useState(null); const [showBypass, setShowBypass] = useState(null); const [bypassReason, setBypassReason] = useState(''); const [showAddForm, setShowAddForm] = useState(false); const [addForm, setAddForm] = useState({ site: '', domain: '', domain_type: 'subdomain', is_primary: false, sort_order: 0 }); const [saving, setSaving] = useState(false); useEffect(() => { if (!loading && !user) router.push('/login?next=' + encodeURIComponent(window.location.pathname)); }, [user, loading, router]); const load = useCallback(async () => { setLoadingData(true); const params = new URLSearchParams(); if (filterSite) params.set('site', filterSite); const r = await fetch(`/api/email/rmp/domains?${params}`); const d = await r.json(); setDomains(d.domains ?? []); setLoadingData(false); }, [filterSite]); useEffect(() => { if (user) load(); }, [user, load]); async function runVerify(domainId: string) { setVerifying(domainId); await fetch(`/api/email/domains/${domainId}/verify`); setVerifying(null); load(); } async function toggleActive(domainId: string, current: boolean) { await fetch(`/api/email/rmp/domains/${domainId}`, { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ is_active: !current }) }); load(); } async function setBypass(domainId: string) { await fetch(`/api/email/rmp/domains/${domainId}/bypass`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ reason: bypassReason }) }); setShowBypass(null); setBypassReason(''); load(); } async function handleAddDomain(e: React.FormEvent) { e.preventDefault(); setSaving(true); await fetch('/api/email/rmp/domains', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(addForm) }); setSaving(false); setShowAddForm(false); load(); } if (loading) return
; if (!user) return null; return (

Sending Domains

← Email
{showAddForm && (

Add Rotation Domain

setAddForm(p => ({ ...p, domain: e.target.value }))} placeholder="mail.example.com" className="w-full px-2 py-1.5 bg-[#0a0a0a] border border-[#DCE6F2] rounded text-xs text-white focus:outline-none focus:border-[#1D4ED8]" />
)} {/* Bypass modal */} {showBypass && (

⚠ Override DNS Verification

This allows sending before DNS is verified. Use with caution.