'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 (
{state === 'loading' &&

{t('activating')}

} {state === 'ok' && ( <>

{t('success')}

{showLogin && (

{t('goLogin')}

)} )} {state === 'error' &&

{t('error')}

}
) }