import * as React from "react"; import * as z from "zod"; import { useForm, zodResolver } from "@mantine/form"; import { Container, Title, TextInput, Button, PasswordInput, Box, Stack, } from "@mantine/core"; import { useParams, useSearchParams } from "react-router-dom"; import { IRegister } from "@/features/auth/types/auth.types"; import useAuth from "@/features/auth/hooks/use-auth"; import classes from "@/features/auth/components/auth.module.css"; import { useGetInvitationQuery } from "@/features/workspace/queries/workspace-query.ts"; import { useRedirectIfAuthenticated } from "@/features/auth/hooks/use-redirect-if-authenticated.ts"; const formSchema = z.object({ name: z.string().min(2), password: z.string().min(8), }); type FormValues = z.infer; export function InviteSignUpForm() { const params = useParams(); const [searchParams] = useSearchParams(); const { data: invitation, isError } = useGetInvitationQuery( params?.invitationId, ); const { invitationSignup, isLoading } = useAuth(); useRedirectIfAuthenticated(); const form = useForm({ validate: zodResolver(formSchema), initialValues: { name: "", password: "", }, }); async function onSubmit(data: IRegister) { const invitationToken = searchParams.get("token"); await invitationSignup({ invitationId: invitation.id, name: data.name, password: data.password, token: invitationToken, }); } if (isError) { return
invalid invitation link
; } if (!invitation) { return
; } return ( Join the workspace
); }