fix: validate member in enter details store

This commit is contained in:
Christel Westerberg
2024-11-01 15:10:42 +01:00
parent ccca27d2e6
commit 3e41703df1
7 changed files with 31 additions and 14 deletions

View File

@@ -13,7 +13,7 @@ import Input from "@/components/TempDesignSystem/Form/Input"
import Phone from "@/components/TempDesignSystem/Form/Phone"
import Body from "@/components/TempDesignSystem/Text/Body"
import { detailsSchema, signedInDetailsSchema } from "./schema"
import { guestDetailsSchema, signedInDetailsSchema } from "./schema"
import Signup from "./Signup"
import styles from "./details.module.css"
@@ -53,7 +53,7 @@ export default function Details({ user }: DetailsProps) {
},
criteriaMode: "all",
mode: "all",
resolver: zodResolver(user ? signedInDetailsSchema : detailsSchema),
resolver: zodResolver(user ? signedInDetailsSchema : guestDetailsSchema),
reValidateMode: "onChange",
})

View File

@@ -36,15 +36,17 @@ export const joinDetailsSchema = baseDetailsSchema.merge(
})
)
export const detailsSchema = z.discriminatedUnion("join", [
export const guestDetailsSchema = z.discriminatedUnion("join", [
notJoinDetailsSchema,
joinDetailsSchema,
])
// For signed in users we accept partial or invalid data. Users cannot
// change their info in this flow, so we don't want to validate it.
export const signedInDetailsSchema = z.object({
countryCode: z.string().optional(),
email: z.string().email().optional(),
email: z.string().optional(),
firstName: z.string().optional(),
lastName: z.string().optional(),
phoneNumber: phoneValidator().optional(),
phoneNumber: z.string().optional(),
})