import Link from 'next/link'
import { createHash } from 'node:crypto'
import { createAdminClient } from '@/lib/supabase/admin'
import { withinMs } from '@/lib/domain/time'

/** Confirms a new delivery address (2026-09-22, §14). One use; 24-hour link. */
export default async function VerifyEmailPage({ params }: { params: Promise<{ token: string }> }) {
  const { token } = await params
  const admin = createAdminClient()
  const hash = createHash('sha256').update(token).digest('hex')
  const { data: p } = await admin.from('profiles').select('id, pending_email, pending_email_sent_at').eq('pending_email_token_hash', hash).maybeSingle()
  const fresh = withinMs(p?.pending_email_sent_at, 24 * 3_600_000)
  let ok = false
  if (p?.pending_email && fresh) {
    const { error } = await admin.from('profiles').update({ delivery_email: p.pending_email, pending_email: null, pending_email_token_hash: null, pending_email_sent_at: null }).eq('id', p.id)
    ok = !error
  }
  return (
    <main className="mx-auto max-w-xl px-4 py-10">
      <h1 className="text-2xl font-bold tracking-tight">{ok ? 'Email address verified' : 'This link is not valid or has expired'}</h1>
      <p className="mt-3 text-sm text-neutral-600">{ok ? `HeavyHaul Agent will now deliver to ${p?.pending_email}.` : 'Request a new verification link from Settings → Email.'}</p>
      <p className="mt-4 text-sm"><Link href="/settings" className="font-semibold underline">Back to Settings</Link></p>
    </main>
  )
}
