'use client' import { useState } from 'react' import { useRouter } from '@/i18n/navigation' import type { DeletedCharacter } from '@/lib/restore-character' function restoreError(error?: string): string { switch (error) { case 'notFound': return 'Ese personaje borrado no es de tu cuenta.' case 'notDeleted': return 'Ese personaje no está borrado.' case 'levelTooLow': return 'Solo se pueden recuperar personajes de nivel superior a 60.' case 'tooOld': return 'El personaje se borró hace más de 30 días y ya no es recuperable.' case 'dkExists': return 'No puedes recuperar un Caballero de la Muerte: ya tienes uno activo en la cuenta.' case 'nameTaken': return 'El nombre original ya está en uso por otro personaje.' case 'cooldown': return 'Solo puedes intentar recuperar el mismo personaje una vez cada 12 horas.' case 'notAuthenticated': return 'Tu sesión ha expirado. Inicia sesión de nuevo.' default: return 'No se pudo recuperar el personaje. Inténtalo de nuevo.' } } export function RestoreCharacterForm({ characters }: { characters: DeletedCharacter[] }) { const router = useRouter() const [guid, setGuid] = useState('') const [busy, setBusy] = useState(false) const [done, setDone] = useState(false) const [message, setMessage] = useState<{ ok: boolean; text: string } | null>(null) const selectedCss = characters.find((c) => String(c.guid) === guid)?.classCss if (characters.length === 0) { return (


No hay personajes
) } async function handleSubmit(e: React.FormEvent) { e.preventDefault() if (busy || done || !guid) return setBusy(true) setMessage(null) try { const res = await fetch('/api/character/restore', { method: 'POST', headers: { 'Content-Type': 'application/json' }, credentials: 'same-origin', body: JSON.stringify({ guid: Number(guid) }), }) const data: { success?: boolean; error?: string; name?: string } = await res.json() if (data.success) { setDone(true) setMessage({ ok: true, text: `¡Personaje "${data.name}" recuperado! Lo verás al entrar al reino.` }) setTimeout(() => router.refresh(), 3000) } else { setMessage({ ok: false, text: restoreError(data.error) }) } } catch { setMessage({ ok: false, text: restoreError() }) } finally { setBusy(false) } } return (


{message && {message.text}}
) }