'use client' import { useState } from 'react' import { useForm } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import { useRouter, useSearchParams } from 'next/navigation' import { Button } from 'components/ui/button' import { pinEntrySchema, type PinEntryForm as PinEntryFormType } from 'lib/validations/code' export function PinEntryForm() { const [loading, setLoading] = useState(false) const [error, setError] = useState(null) const router = useRouter() const searchParams = useSearchParams() const code = searchParams.get('code') const { register, handleSubmit, formState: { errors } } = useForm({ resolver: zodResolver(pinEntrySchema) }) const onSubmit = async (data: PinEntryFormType) => { if (!code) { setError('Chybí kód místnosti') return } try { setLoading(true) setError(null) const response = await fetch('/api/codes/verify-pin', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ code: code.toUpperCase(), pin: data.pin }) }) const result = await response.json() if (!response.ok) { if (response.status === 401) { setError('Neplatný PIN') } else if (response.status === 429) { setError('Příliš mnoho pokusů. Zkuste to později.') } else { setError(result.error || 'Nastala chyba při ověřování PIN') } return } if (result.roomId) { router.push(`/room/${result.roomId}?code=${code}`) } } catch { setError('Došlo k neočekávané chybě') } finally { setLoading(false) } } return (
{errors.pin && (

{errors.pin.message}

)}
{error && (
{error}
)}
) }