import { h, type TargetedSubmitEvent } from 'preact' import { useCallback } from 'preact/hooks' import rek, { type FetchError } from 'rek' import useRequestState from '../../shared/hooks/use_request_state.ts' import Button from './button.tsx' import Input from './input.tsx' import Message from './message.tsx' const RegisterForm = () => { const [{ error, pending, success }, actions] = useRequestState() const params = location.search ? new URLSearchParams(location.search) : null const register = useCallback(async (e: TargetedSubmitEvent) => { e.preventDefault() actions.pending() const form = e.currentTarget try { await rek.post('/auth/register', { email: form.email.value, password: form.password.value, ...(params ? { inviteEmail: params.get('email'), inviteToken: params.get('token'), } : {}), }) actions.success() } catch (err) { actions.error(err as FetchError) } }, []) return success ? ( Success! Go to login. ) : (
{error && ( {error.status}: {error.body?.message || error.message} )}
) } export default RegisterForm