"use client"; import { useState } from "react"; import Image from "next/image"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { register } from "@/lib/auth"; import { useAuth } from "@/context/AuthContext"; import BackgroundWrapper from "@/components/BackgroundWrapper"; import FormField from "@/components/FormField"; import DestructibleAlert from "@/components/DestructibleAlert"; export default function RegisterPage() { const { setToken } = useAuth(); const router = useRouter(); const [form, setForm] = useState({ name: "", institution: "", sscRoll: "", hscRoll: "", email: "", phone: "", password: "", }); const [error, setError] = useState(null); const handleError = (error: any) => { if (error?.detail) { const match = error.detail.match(/Key \((.*?)\)=\((.*?)\)/); if (match) { const field = match[1]; const value = match[2]; return `The ${field} already exists. Please use a different value.`; } } return "An unexpected error occurred. Please try again."; }; const validateForm = () => { const { sscRoll, hscRoll, password } = form; if (sscRoll === hscRoll) { return "SSC Roll and HSC Roll must be unique."; } const passwordRegex = /^(?=.*[A-Z])(?=.*[!@#$%^&*(),.?":{}|<>])[A-Za-z\d!@#$%^&*(),.?":{}|<>]{8,16}$/; if (!passwordRegex.test(password)) { return "Password must be 8-16 characters long, include at least one uppercase letter and one special character."; } return null; }; const createUser = async () => { const validationError = validateForm(); if (validationError) { setError(validationError); return; } try { await register(form, setToken); router.push("/tabs/home"); } catch (error: any) { console.error("Error:", error.response || error.message); if (error.response?.detail) { const decodedError = handleError({ detail: error.response.detail }); setError(decodedError); } else { setError(error.message || "An unexpected error occurred."); } } }; return (
Logo
setForm({ ...form, name: value })} /> setForm({ ...form, institution: value }) } /> setForm({ ...form, sscRoll: value }) } /> setForm({ ...form, hscRoll: value }) } /> setForm({ ...form, email: value })} /> setForm({ ...form, phone: value })} /> setForm({ ...form, password: value }) } placeholder={undefined} />
{error && }

Already have an account?{" "} Login here

); }