'use client' import { useState } from 'react' import { useRouter } from '@/i18n/navigation' import type { GmGuild } from '@/lib/guild' function renameError(error?: string): string { switch (error) { case 'missingFields': return 'Completa todos los campos.' case 'invalidName': return 'El nombre debe tener de 1 a 24 caracteres, solo letras (A-Z, a-z) y espacios.' case 'invalidToken': return 'El token de seguridad no es válido.' case 'notGuildMaster': return 'No eres Maestro de esa hermandad.' case 'nameTaken': return 'Ya existe una hermandad con ese nombre.' case 'insufficientPoints': return 'No tienes suficientes PD (se requieren 1000).' case 'soapError': return 'No se pudo aplicar el cambio (servidor de juego no disponible). Inténtalo más tarde.' case 'notAuthenticated': return 'Tu sesión ha expirado. Inicia sesión de nuevo.' default: return 'No se pudo renombrar la hermandad. Inténtalo de nuevo.' } } export function RenameGuildForm({ guilds }: { guilds: GmGuild[] }) { const router = useRouter() const [guildId, setGuildId] = useState('') const [newName, setNewName] = useState('') const [token, setToken] = useState('') const [showToken, setShowToken] = useState(false) const [busy, setBusy] = useState(false) const [done, setDone] = useState(false) const [message, setMessage] = useState<{ ok: boolean; text: string } | null>(null) if (guilds.length === 0) { return (

No hay personajes Maestros de hermandad
) } async function handleSubmit(e: React.FormEvent) { e.preventDefault() if (busy || done) return if (!guildId || !newName.trim() || !token.trim()) { setMessage({ ok: false, text: renameError('missingFields') }) return } if (!window.confirm('¿Estás seguro de renombrar la hermandad seleccionada?')) return setBusy(true) setMessage(null) try { const res = await fetch('/api/guild/rename', { method: 'POST', headers: { 'Content-Type': 'application/json' }, credentials: 'same-origin', body: JSON.stringify({ guildId: Number(guildId), newName: newName.trim(), token: token.trim() }), }) const data: { success?: boolean; error?: string; newName?: string } = await res.json() if (data.success) { setDone(true) setMessage({ ok: true, text: `¡Hermandad renombrada a "${data.newName}"! Puede que los miembros conectados deban reconectar para verlo.` }) setNewName('') setToken('') setTimeout(() => router.refresh(), 3000) } else { setMessage({ ok: false, text: renameError(data.error) }) } } catch { setMessage({ ok: false, text: renameError() }) } finally { setBusy(false) } } return (
setNewName(e.target.value)} required />
setToken(e.target.value)} required />{' '} setShowToken((s) => !s)} />

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