"use client" import React from "react" import { useForm } from "react-hook-form" import { yupResolver } from "@hookform/resolvers/yup" import { signUpValidationSchema } from "@/utils/form" import { companySizeList } from "@/constants" import pb from "@/lib/pocketbase" import { createCheckoutSession, login } from "@/app/actions" import { toast } from "react-toastify" import { useRouter } from "next/navigation" import { Dismiss20Filled } from "@fluentui/react-icons" function ModalSignUp({ setUser }) { const { register, handleSubmit, reset, formState: { errors, isSubmitting } } = useForm({ resolver: yupResolver(signUpValidationSchema) }) const router = useRouter() const generateCheckoutPage = async (price, type) => { try { const checkoutSessionResponse = await createCheckoutSession( price.price_id, type ) console.log(checkoutSessionResponse) router.push(checkoutSessionResponse.url) } catch (error) { if (error instanceof Error) { toast.error(error.message, { position: "bottom-left", autoClose: 5000, hideProgressBar: false, closeOnClick: true, pauseOnHover: true, draggable: true, progress: undefined, theme: "colored" }) } } } const onSubmit = async data => { data = { emailVisibility: false, lastSeen: new Date(), role: "Admin", displayName: `${data.firstName} ${data.lastName}`, passwordConfirm: data.password, ...data } try { //create organisation const organisation = await pb.collection("organisation").create({ name: data.organisation, organisationSize: data.organisationSize }) //create user const user = await pb .collection("user") .create({ ...data, organisation: organisation.id }) //login user const auth = await login({ email: data.email, password: data.password }) if (auth.success) { reset() document.getElementById("sign-up-modal")?.click() const price = localStorage.getItem("price") const type = localStorage.getItem("type") setUser(user) console.log("price", price) console.log("type", type) price ? generateCheckoutPage(JSON.parse(price), type ?? "") : router.push("/account") } else { throw new Error(auth.response.message) } } catch (error) { if (error instanceof Error) { toast.error( Object.values(error.data.data) .map(x => x.message) .join(), { position: "bottom-left", autoClose: 5000, hideProgressBar: false, closeOnClick: true, pauseOnHover: true, draggable: true, progress: undefined, theme: "colored" } ) } } } return ( <> { reset() }} /> ) } export default ModalSignUp