From bec4a98ae768a81a8d50c20c5af60b11bae33c69 Mon Sep 17 00:00:00 2001 From: nitin <142569587+ehconitin@users.noreply.github.com> Date: Mon, 23 Jun 2025 15:25:35 +0530 Subject: [PATCH] =?UTF-8?q?add=20firstname=20and=20lastname=20on=20current?= =?UTF-8?q?=20user=20state=20and=20sync=20it=20while=20cr=E2=80=A6=20(#127?= =?UTF-8?q?81)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …eating profile and pass it to cal.com's embed --- .../src/modules/auth/states/currentUserState.ts | 4 +++- .../useSettingsNavigationItems.test.tsx | 2 ++ .../src/pages/onboarding/BookCall.tsx | 1 + .../src/pages/onboarding/CreateProfile.tsx | 17 ++++++++++++++++- 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/packages/twenty-front/src/modules/auth/states/currentUserState.ts b/packages/twenty-front/src/modules/auth/states/currentUserState.ts index d71203a21..18d45e8d1 100644 --- a/packages/twenty-front/src/modules/auth/states/currentUserState.ts +++ b/packages/twenty-front/src/modules/auth/states/currentUserState.ts @@ -1,5 +1,5 @@ -import { User } from '~/generated/graphql'; import { createState } from 'twenty-ui/utilities'; +import { User } from '~/generated/graphql'; export type CurrentUser = Pick< User, @@ -10,6 +10,8 @@ export type CurrentUser = Pick< | 'canImpersonate' | 'onboardingStatus' | 'userVars' + | 'firstName' + | 'lastName' >; export const currentUserState = createState({ diff --git a/packages/twenty-front/src/modules/settings/hooks/__tests__/useSettingsNavigationItems.test.tsx b/packages/twenty-front/src/modules/settings/hooks/__tests__/useSettingsNavigationItems.test.tsx index 640e9fd58..b80cd5a21 100644 --- a/packages/twenty-front/src/modules/settings/hooks/__tests__/useSettingsNavigationItems.test.tsx +++ b/packages/twenty-front/src/modules/settings/hooks/__tests__/useSettingsNavigationItems.test.tsx @@ -24,6 +24,8 @@ const mockCurrentUser = { canImpersonate: false, onboardingStatus: OnboardingStatus.COMPLETED, userVars: {}, + firstName: 'fake-first-name', + lastName: 'fake-last-name', }; const mockBilling: Billing = { diff --git a/packages/twenty-front/src/pages/onboarding/BookCall.tsx b/packages/twenty-front/src/pages/onboarding/BookCall.tsx index 87c2172c0..a5324206f 100644 --- a/packages/twenty-front/src/pages/onboarding/BookCall.tsx +++ b/packages/twenty-front/src/pages/onboarding/BookCall.tsx @@ -64,6 +64,7 @@ export const BookCall = () => { layout: 'month_view', theme: theme.name === 'light' ? 'light' : 'dark', email: currentUser?.email ?? '', + name: `${currentUser?.firstName} ${currentUser?.lastName}`, }} /> diff --git a/packages/twenty-front/src/pages/onboarding/CreateProfile.tsx b/packages/twenty-front/src/pages/onboarding/CreateProfile.tsx index 74a98c958..f204bead6 100644 --- a/packages/twenty-front/src/pages/onboarding/CreateProfile.tsx +++ b/packages/twenty-front/src/pages/onboarding/CreateProfile.tsx @@ -2,12 +2,13 @@ import styled from '@emotion/styled'; import { zodResolver } from '@hookform/resolvers/zod'; import { useCallback, useState } from 'react'; import { Controller, SubmitHandler, useForm } from 'react-hook-form'; -import { useRecoilState } from 'recoil'; +import { useRecoilState, useSetRecoilState } from 'recoil'; import { Key } from 'ts-key-enum'; import { z } from 'zod'; import { SubTitle } from '@/auth/components/SubTitle'; import { Title } from '@/auth/components/Title'; +import { currentUserState } from '@/auth/states/currentUserState'; import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState'; import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { useUpdateOneRecord } from '@/object-record/hooks/useUpdateOneRecord'; @@ -62,6 +63,7 @@ export const CreateProfile = () => { const [currentWorkspaceMember, setCurrentWorkspaceMember] = useRecoilState( currentWorkspaceMemberState, ); + const setCurrentUser = useSetRecoilState(currentUserState); const { updateOneRecord } = useUpdateOneRecord({ objectNameSingular: CoreObjectNameSingular.WorkspaceMember, }); @@ -115,6 +117,18 @@ export const CreateProfile = () => { } return current; }); + + setCurrentUser((current) => { + if (isDefined(current)) { + return { + ...current, + firstName: data.firstName, + lastName: data.lastName, + }; + } + return current; + }); + setNextOnboardingStatus(); } catch (error: any) { enqueueSnackBar(error?.message, { @@ -127,6 +141,7 @@ export const CreateProfile = () => { setNextOnboardingStatus, enqueueSnackBar, setCurrentWorkspaceMember, + setCurrentUser, updateOneRecord, ], );