import { useEffect, useState } from 'react'; import { useSession } from '../context/SessionContext.jsx'; import { useSettingsNamespace } from '../settings/index.js'; export default function NicknameForm({ compact = false }) { const { session, setNickname } = useSession(); const { value, save } = useSettingsNamespace('profile', { nickname: '' }); const [nicknameInput, setNicknameInput] = useState(value.nickname || ''); const [saving, setSaving] = useState(false); const canSetNickname = session?.role !== 'spectator'; useEffect(() => { setNicknameInput(value.nickname || ''); }, [value.nickname]); async function handleSave(event) { event.preventDefault(); if (!canSetNickname) return; const trimmed = (nicknameInput || '').trim().slice(0, 32); if (!trimmed) return; setSaving(true); try { await setNickname(trimmed); save({ nickname: trimmed }); } catch (err) { alert(err.message); } finally { setSaving(false); } } return (
setNicknameInput(e.target.value)} maxLength={32} placeholder="Enter a nickname" disabled={!canSetNickname} />
); }