diff --git a/src/app/_components/clients/EditProfile/page.tsx b/src/app/_components/clients/EditProfile/page.tsx index 095a88a89..c5a4aaa30 100644 --- a/src/app/_components/clients/EditProfile/page.tsx +++ b/src/app/_components/clients/EditProfile/page.tsx @@ -90,8 +90,8 @@ const formSchema = z message: "Student number is required", path: ["student_number"], }) - .refine(({ isUWA, student_number = "" }) => !Boolean(isUWA) || student_number?.length === 8, { - message: "Student number must be 8 digits long", + .refine(({ isUWA, student_number = "" }) => !Boolean(isUWA) || /^\d{8}$/.test(student_number), { + message: "Student number must be 8 digits", path: ["student_number"], }) .refine(({ isUWA, uni = "" }) => Boolean(isUWA) || uni || uni === "other", { @@ -146,7 +146,7 @@ const EditProfile = ({ setIsEditing, id, refetch }: EditProfileProps) => { updateUser({ ...data, student_number: data.isUWA ? data.student_number : null, - uni: data.isUWA ? null : data.uni, + uni: data.isUWA ? "UWA" : data.uni, }), updateSocials({ diff --git a/src/app/create-account/page.tsx b/src/app/create-account/page.tsx index 0dd542455..1632dd1ab 100644 --- a/src/app/create-account/page.tsx +++ b/src/app/create-account/page.tsx @@ -62,8 +62,8 @@ const formSchema = z message: "Student number is required", path: ["student_number"], }) - .refine(({ isUWA, student_number = "" }) => !Boolean(isUWA) || student_number.length === 8, { - message: "Student number must be 8 digits long", + .refine(({ isUWA, student_number = "" }) => !Boolean(isUWA) || /^\d{8}$/.test(student_number), { + message: "Student number must be 8 digits", path: ["student_number"], }) .refine(({ isUWA, uni = "" }) => Boolean(isUWA) || uni || uni === "other", { @@ -151,6 +151,7 @@ export default function CreateAccount() { if (values.isUWA) { userData.student_number = values.student_number + userData.uni = "UWA" } else { userData.uni = values.uni } diff --git a/src/app/dashboard/admin/@users/form.tsx b/src/app/dashboard/admin/@users/form.tsx index ed2e9b110..fe8fd4c83 100644 --- a/src/app/dashboard/admin/@users/form.tsx +++ b/src/app/dashboard/admin/@users/form.tsx @@ -49,8 +49,8 @@ const formSchema = z message: "Student number is required", path: ["student_number"], }) - .refine(({ isUWA, student_number = "" }) => !Boolean(isUWA) || student_number.length === 8, { - message: "Student number must be 8 digits long", + .refine(({ isUWA, student_number = "" }) => !Boolean(isUWA) || /^\d{8}$/.test(student_number), { + message: "Student number must be 8 digits", path: ["student_number"], }) .refine(({ isUWA, uni = "" }) => Boolean(isUWA) || uni || uni === "other", { @@ -99,6 +99,9 @@ const AddUserForm = () => { const onSubmit = async (values: FormSchema) => { if (process.env.NEXT_PUBLIC_VERCEL_ENV === "production") track("created-account") + if (values.isUWA) { + values.uni = "UWA" + } // move to react hook form? if (values.github !== "") { diff --git a/src/app/profile/[id]/profile/page.tsx b/src/app/profile/[id]/profile/page.tsx index fcb2d7b78..280acbdd2 100644 --- a/src/app/profile/[id]/profile/page.tsx +++ b/src/app/profile/[id]/profile/page.tsx @@ -20,9 +20,16 @@ interface ProfilePageProps { const ProfilePage = ({ id, currentUser }: ProfilePageProps) => { const [isEditing, setIsEditing] = useState(false) - const { data: user, refetch } = api.users.get.useQuery(id) - const universityLabel = user ? UNIVERSITIES.find((u) => u.value === user.university)?.label : undefined + + let universityLabel: string | undefined + if (user?.student_number?.length) { + universityLabel = "University of Western Australia" + } else if (!UNIVERSITIES.find((u) => u.value === user?.university) && user?.university !== "UWA") { + universityLabel = user?.university || undefined + } else { + universityLabel = user ? UNIVERSITIES.find((u) => u.value === user.university)?.label : undefined + } if (user) { return ( diff --git a/src/app/profile/settings/@personal/form.tsx b/src/app/profile/settings/@personal/form.tsx index b82b82aeb..8b65e4902 100644 --- a/src/app/profile/settings/@personal/form.tsx +++ b/src/app/profile/settings/@personal/form.tsx @@ -42,8 +42,8 @@ const formSchema = z message: "Student number is required", path: ["student_number"], }) - .refine(({ isUWA, student_number = "" }) => !Boolean(isUWA) || student_number?.length === 8, { - message: "Student number must be 8 digits long", + .refine(({ isUWA, student_number = "" }) => !Boolean(isUWA) || /^\d{8}$/.test(student_number), { + message: "Student number must be 8 digits", path: ["student_number"], }) .refine(({ isUWA, uni = "" }) => Boolean(isUWA) || uni || uni === "other", { @@ -78,7 +78,7 @@ const PersonalForm = (props: { defaultValues?: Partial }) => { updateUser.mutate({ ...data, student_number: !data.isUWA ? null : data.student_number, - uni: data.isUWA ? null : data.uni, + uni: data.isUWA ? "UWA" : data.uni, }) }