From c1d926c6fa7263830622866de7eaa2de8ad6eda3 Mon Sep 17 00:00:00 2001
From: Yangshun Tay <tay.yang.shun@gmail.com>
Date: Mon, 7 Nov 2022 18:56:25 +0800
Subject: [PATCH] [portal][feat] allow changing email on settings page

---
 apps/portal/src/pages/settings.tsx           | 12 ++++++++++++
 apps/portal/src/server/router/user-router.ts |  2 ++
 2 files changed, 14 insertions(+)

diff --git a/apps/portal/src/pages/settings.tsx b/apps/portal/src/pages/settings.tsx
index d35f9cc9..a7d112d3 100644
--- a/apps/portal/src/pages/settings.tsx
+++ b/apps/portal/src/pages/settings.tsx
@@ -34,6 +34,7 @@ function SettingsForm({
   );
 
   const [name, setName] = useState(session?.user?.name);
+  const [email, setEmail] = useState(session?.user?.email);
 
   return (
     <div className="lg:py-18 bg-white py-12">
@@ -50,6 +51,7 @@ function SettingsForm({
             onSubmit={(event) => {
               event.preventDefault();
               updateProfileMutation.mutate({
+                email: email ? email : undefined,
                 name: name ? name : undefined,
               });
             }}>
@@ -58,10 +60,20 @@ function SettingsForm({
                 <TextInput
                   description="This name will be used across the entire platform"
                   label="Name"
+                  placeholder="John Doe"
                   value={name ?? undefined}
                   onChange={(val) => setName(val)}
                 />
               </div>
+              <div className="sm:col-span-3">
+                <TextInput
+                  label="Email"
+                  placeholder="john.doe@example.com"
+                  type="email"
+                  value={email ?? undefined}
+                  onChange={(val) => setEmail(val)}
+                />
+              </div>
               {/* <div className="sm:col-span-6">
                 <label
                   className="block text-sm font-medium text-gray-700"
diff --git a/apps/portal/src/server/router/user-router.ts b/apps/portal/src/server/router/user-router.ts
index 036d609a..6a6283d8 100644
--- a/apps/portal/src/server/router/user-router.ts
+++ b/apps/portal/src/server/router/user-router.ts
@@ -6,12 +6,14 @@ export const userRouter = createProtectedRouter().mutation(
   'settings.profile.update',
   {
     input: z.object({
+      email: z.string().optional(),
       name: z.string().optional(),
     }),
     async resolve({ ctx, input }) {
       const userId = ctx.session?.user?.id;
       return await ctx.prisma.user.update({
         data: {
+          email: input.email,
           name: input.name,
         },
         where: {