From a5759e2bb50dc0d2819162aa12cbe863b210999e Mon Sep 17 00:00:00 2001 From: ErikaKK <491649804@qq.com> Date: Wed, 30 Jul 2025 23:59:57 +0800 Subject: [PATCH 1/3] add uwa to user table uni field and check student number --- src/app/_components/clients/EditProfile/page.tsx | 6 +++--- src/app/create-account/page.tsx | 5 +++-- src/app/dashboard/admin/@users/form.tsx | 7 +++++-- src/app/profile/[id]/profile/page.tsx | 9 +++++++-- src/app/profile/settings/@personal/form.tsx | 6 +++--- 5 files changed, 21 insertions(+), 12 deletions(-) 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..b6bf1ccce 100644 --- a/src/app/profile/[id]/profile/page.tsx +++ b/src/app/profile/[id]/profile/page.tsx @@ -20,9 +20,14 @@ 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 && user.student_number && user.student_number.length > 0) { + universityLabel = "University of Western Australia" + } 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, }) } From e2271c34054de93571a79a81f3798787c6e5f020 Mon Sep 17 00:00:00 2001 From: ErikaKK <491649804@qq.com> Date: Thu, 31 Jul 2025 00:08:50 +0800 Subject: [PATCH 2/3] add label for other university --- src/app/profile/[id]/profile/page.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/app/profile/[id]/profile/page.tsx b/src/app/profile/[id]/profile/page.tsx index b6bf1ccce..eafa1a6ec 100644 --- a/src/app/profile/[id]/profile/page.tsx +++ b/src/app/profile/[id]/profile/page.tsx @@ -25,6 +25,8 @@ const ProfilePage = ({ id, currentUser }: ProfilePageProps) => { let universityLabel: string | undefined if (user && user.student_number && user.student_number.length > 0) { universityLabel = "University of Western Australia" + } else if (user && !UNIVERSITIES.find((u) => u.value === user.university) && user.university != "UWA") { + universityLabel = user.university ? user.university : undefined } else { universityLabel = user ? UNIVERSITIES.find((u) => u.value === user.university)?.label : undefined } From 9c4236f888a009b0b90d14150618d23aa7c85a2e Mon Sep 17 00:00:00 2001 From: ErikaKK <491649804@qq.com> Date: Thu, 31 Jul 2025 00:19:42 +0800 Subject: [PATCH 3/3] simplify expression --- src/app/profile/[id]/profile/page.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app/profile/[id]/profile/page.tsx b/src/app/profile/[id]/profile/page.tsx index eafa1a6ec..280acbdd2 100644 --- a/src/app/profile/[id]/profile/page.tsx +++ b/src/app/profile/[id]/profile/page.tsx @@ -23,10 +23,10 @@ const ProfilePage = ({ id, currentUser }: ProfilePageProps) => { const { data: user, refetch } = api.users.get.useQuery(id) let universityLabel: string | undefined - if (user && user.student_number && user.student_number.length > 0) { + if (user?.student_number?.length) { universityLabel = "University of Western Australia" - } else if (user && !UNIVERSITIES.find((u) => u.value === user.university) && user.university != "UWA") { - universityLabel = user.university ? user.university : undefined + } 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 }