'use client'

import { useEffect, useRef, useState } from 'react'
import { useTranslations } from 'next-intl'
import { Link } from '@/i18n/navigation'

/** Cliente genérico que confirma un hash contra un endpoint (POST) al abrir la página. */
export function ConfirmClient({
  hash,
  endpoint,
  namespace,
  showLogin = false,
}: {
  hash: string
  endpoint: string
  namespace: string
  showLogin?: boolean
}) {
  const t = useTranslations(namespace)
  const [state, setState] = useState<'loading' | 'ok' | 'error'>('loading')
  const ran = useRef(false)

  useEffect(() => {
    if (ran.current) return
    ran.current = true
    if (!hash) {
      setState('error')
      return
    }
    fetch(endpoint, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ hash }),
    })
      .then((r) => r.json())
      .then((d: { success?: boolean }) => setState(d.success ? 'ok' : 'error'))
      .catch(() => setState('error'))
  }, [hash, endpoint])

  return (
    <div className="text-center">
      {state === 'loading' && <p>{t('activating')}</p>}
      {state === 'ok' && (
        <>
          <p className="text-green-400">{t('success')}</p>
          {showLogin && (
            <p className="mt-4">
              <Link href="/login" className="text-sky-400 underline">
                {t('goLogin')}
              </Link>
            </p>
          )}
        </>
      )}
      {state === 'error' && <p className="text-red-400">{t('error')}</p>}
    </div>
  )
}
