"use client"; import createUserAction from "@/modules/auth/actions/createUserAction"; import createUser from "@/modules/auth/actions/createUserAction"; import { CreateUserSchema } from "@/modules/auth/formSchemas/CreateUserFormSchema"; import DashboardError from "@/modules/dashboard/errors/DashboardError"; import withServerAction from "@/modules/dashboard/utils/withServerAction"; import { Paper, PasswordInput, Stack, Text, TextInput, Group, Anchor, Button, } from "@mantine/core"; import { useForm } from "@mantine/form"; import { showNotification } from "@mantine/notifications"; import React, { useEffect, useState } from "react"; export default function RegisterPage() { const [errorMessage, setErrorMessage] = useState(""); const form = useForm({ initialValues: { email: "", plainPassword: "", plainPasswordConfirmation: "", name: "", }, validate: { email: (value: string) => /^\S+@\S+$/.test(value) ? null : "Invalid email", plainPassword: (value: string) => value.length >= 6 ? null : "Password should be at least 6 characters", plainPasswordConfirmation: (value: string, values: CreateUserSchema) => value === values.plainPassword ? null : "Passwords should match", name: (value: string) => value.length > 0 ? null : "Name is required", }, }); const handleSubmit = async (values: CreateUserSchema) => { withServerAction(createUserAction, form.values) .then((response) => { showNotification({message: "Register Success", color: "green"}) }) .catch((e) => { if (e instanceof DashboardError) { if (e.errorCode === "INVALID_FORM_DATA") { form.setErrors(e.formErrors ?? {}); } else { setErrorMessage(`ERROR: ${e.message} (${e.errorCode})`); } } else if (e instanceof Error) { setErrorMessage(`ERROR: ${e.message}`); } else { setErrorMessage( `Unkown error is occured. Please contact administrator` ); } }) }; return (
Register
handleSubmit(values))} > toggle()} size="xs" href="/login" > Already have an account? Login
); }