import type { FormEvent } from 'react' import { useState } from 'react' import { Link, useNavigate } from 'react-router-dom' import { register } from '../services/authService' import './RegisterPage.css' type RegisterPageProps = { onRegisterSuccess?: () => void } function RegisterPage({ onRegisterSuccess }: RegisterPageProps) { const navigate = useNavigate() const [username, setUsername] = useState('') const [email, setEmail] = useState('') const [newPassword, setNewPassword] = useState('') const [acceptedTerms, setAcceptedTerms] = useState(false) const [error, setError] = useState('') const handleSubmit = async (event: FormEvent) => { event.preventDefault() // Validazione esplicita: se i termini non sono accettati, blocca l'invio. if (!acceptedTerms) { setError("Devi accettare i Termini di servizio e l'Informativa sulla privacy.") return } // Recupera preferenze accumulate durante l'onboarding (se presenti) let macroTopics: string[] | undefined = undefined let keywords: string[] | undefined = undefined try { const raw = localStorage.getItem('briefai-onboarding') if (raw) { const parsed = JSON.parse(raw) macroTopics = parsed.selectedTopics || undefined keywords = parsed.keywords || undefined } } catch (e) { // ignore parsing errors } // Basic email format validation on client const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/ if (!emailRegex.test(String(email).toLowerCase())) { setError('Formato email non valido.') return } try { await register({ email, password: newPassword, username, preferences: { macroTopics, keywords, }, }) setError('') // Pulizia locale setUsername('') setEmail('') setNewPassword('') setAcceptedTerms(false) if (typeof onRegisterSuccess === 'function') onRegisterSuccess() // Dopo la registrazione il token รจ salvato dal servizio; redirige al feed navigate('/feed') } catch (err: any) { // Estrae il messaggio d'errore lanciato dal backend (`throw await res.json()`), // oppure mostra un fallback se l'API non risponde correttamente. const errorMessage = err?.error || err?.message || 'Errore nella registrazione' setError(errorMessage) } } return (

BriefAI

Registrati

Crea il tuo account per iniziare.

setUsername(event.target.value)} placeholder="Il tuo username" autoComplete="username" required /> setEmail(event.target.value)} placeholder="nome@email.com" autoComplete="email" required /> setNewPassword(event.target.value)} placeholder="Nuova password" autoComplete="new-password" required /> {error && (

{error}

)}

Se hai gia un account fai accesso

Torna alla home

) } export default RegisterPage