From 2bd9a97d2f8328d5df0bb822697f9fd139726e40 Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 18 Jul 2023 12:44:37 -0400 Subject: [PATCH] minor error handling --- components/Modal/User/ProfileSettings.tsx | 31 ++++++++++------------- lib/api/controllers/users/updateUser.ts | 20 +++++++++++++++ 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/components/Modal/User/ProfileSettings.tsx b/components/Modal/User/ProfileSettings.tsx index 1591738..57e81c4 100644 --- a/components/Modal/User/ProfileSettings.tsx +++ b/components/Modal/User/ProfileSettings.tsx @@ -78,28 +78,25 @@ export default function ProfileSettings({ if (response.ok) { toast.success("Settings Applied!"); toggleSettingsModal(); - } else toast.error(response.data as string); - setSubmitLoader(false); + if ( + user.username !== account.username || + user.name !== account.name || + user.email !== account.email + ) { + update({ + username: user.username, + email: user.username, + name: user.name, + }); - if ( - user.username !== account.username || - user.name !== account.name || - user.email !== account.email - ) { - update({ - username: user.username, - email: user.username, - name: user.name, - }); + signOut(); + } - signOut(); - } - - if (response.ok) { setUser({ ...user, newPassword: undefined }); toggleSettingsModal(); - } + } else toast.error(response.data as string); + setSubmitLoader(false); }; return ( diff --git a/lib/api/controllers/users/updateUser.ts b/lib/api/controllers/users/updateUser.ts index f6f8131..064dd84 100644 --- a/lib/api/controllers/users/updateUser.ts +++ b/lib/api/controllers/users/updateUser.ts @@ -20,6 +20,26 @@ export default async function updateUser( status: 400, }; + const userIsTaken = await prisma.user.findFirst({ + where: { + id: { not: sessionUser.id }, + OR: [ + { + username: user.username.toLowerCase(), + }, + { + email: user.email.toLowerCase(), + }, + ], + }, + }); + + if (userIsTaken) + return { + response: "Username/Email is taken.", + status: 400, + }; + // Avatar Settings const profilePic = user.profilePic;