'use client' import { useState } from 'react' import { useForm } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import { useRouter } from 'next/navigation' import { codeEntrySchema, type CodeEntryForm as CodeEntryFormType } from 'lib/validations/code' export function CodeEntryForm() { const [loading, setLoading] = useState(false) const [error, setError] = useState(null) const router = useRouter() const { register, handleSubmit, formState: { errors } } = useForm({ resolver: zodResolver(codeEntrySchema) }) const onSubmit = async (data: CodeEntryFormType) => { try { setLoading(true) setError(null) const response = await fetch('/api/codes/validate', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ code: data.code.toUpperCase() }) }) const result = await response.json() if (!response.ok) { if (response.status === 429) { setError('Příliš mnoho pokusů. Zkuste to později.') } else if (response.status === 404) { setError('Kód nenalezen. Zkontrolujte správnost zadání.') } else { setError(result.error || 'Nastala chyba při ověřování kódu.') } return } if (result.needsPin) { router.push(`/enter-pin?code=${data.code.toUpperCase()}`) } else if (result.roomId) { router.push(`/room/${result.roomId}?code=${data.code.toUpperCase()}`) } else { router.push(`/setup?code=${data.code.toUpperCase()}`) } } catch { setError('Došlo k neočekávané chybě.') } finally { setLoading(false) } } return (
{error && (
{error}
)}
) }