add firstname and lastname on current user state and sync it while cr… (#12781)

…eating profile and pass it to cal.com's embed
This commit is contained in:
nitin
2025-06-23 15:25:35 +05:30
committed by GitHub
parent b76dac2ca1
commit bec4a98ae7
4 changed files with 22 additions and 2 deletions

View File

@ -1,5 +1,5 @@
import { User } from '~/generated/graphql';
import { createState } from 'twenty-ui/utilities'; import { createState } from 'twenty-ui/utilities';
import { User } from '~/generated/graphql';
export type CurrentUser = Pick< export type CurrentUser = Pick<
User, User,
@ -10,6 +10,8 @@ export type CurrentUser = Pick<
| 'canImpersonate' | 'canImpersonate'
| 'onboardingStatus' | 'onboardingStatus'
| 'userVars' | 'userVars'
| 'firstName'
| 'lastName'
>; >;
export const currentUserState = createState<CurrentUser | null>({ export const currentUserState = createState<CurrentUser | null>({

View File

@ -24,6 +24,8 @@ const mockCurrentUser = {
canImpersonate: false, canImpersonate: false,
onboardingStatus: OnboardingStatus.COMPLETED, onboardingStatus: OnboardingStatus.COMPLETED,
userVars: {}, userVars: {},
firstName: 'fake-first-name',
lastName: 'fake-last-name',
}; };
const mockBilling: Billing = { const mockBilling: Billing = {

View File

@ -64,6 +64,7 @@ export const BookCall = () => {
layout: 'month_view', layout: 'month_view',
theme: theme.name === 'light' ? 'light' : 'dark', theme: theme.name === 'light' ? 'light' : 'dark',
email: currentUser?.email ?? '', email: currentUser?.email ?? '',
name: `${currentUser?.firstName} ${currentUser?.lastName}`,
}} }}
/> />
</StyledScrollWrapper> </StyledScrollWrapper>

View File

@ -2,12 +2,13 @@ import styled from '@emotion/styled';
import { zodResolver } from '@hookform/resolvers/zod'; import { zodResolver } from '@hookform/resolvers/zod';
import { useCallback, useState } from 'react'; import { useCallback, useState } from 'react';
import { Controller, SubmitHandler, useForm } from 'react-hook-form'; import { Controller, SubmitHandler, useForm } from 'react-hook-form';
import { useRecoilState } from 'recoil'; import { useRecoilState, useSetRecoilState } from 'recoil';
import { Key } from 'ts-key-enum'; import { Key } from 'ts-key-enum';
import { z } from 'zod'; import { z } from 'zod';
import { SubTitle } from '@/auth/components/SubTitle'; import { SubTitle } from '@/auth/components/SubTitle';
import { Title } from '@/auth/components/Title'; import { Title } from '@/auth/components/Title';
import { currentUserState } from '@/auth/states/currentUserState';
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState'; import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
import { useUpdateOneRecord } from '@/object-record/hooks/useUpdateOneRecord'; import { useUpdateOneRecord } from '@/object-record/hooks/useUpdateOneRecord';
@ -62,6 +63,7 @@ export const CreateProfile = () => {
const [currentWorkspaceMember, setCurrentWorkspaceMember] = useRecoilState( const [currentWorkspaceMember, setCurrentWorkspaceMember] = useRecoilState(
currentWorkspaceMemberState, currentWorkspaceMemberState,
); );
const setCurrentUser = useSetRecoilState(currentUserState);
const { updateOneRecord } = useUpdateOneRecord<WorkspaceMember>({ const { updateOneRecord } = useUpdateOneRecord<WorkspaceMember>({
objectNameSingular: CoreObjectNameSingular.WorkspaceMember, objectNameSingular: CoreObjectNameSingular.WorkspaceMember,
}); });
@ -115,6 +117,18 @@ export const CreateProfile = () => {
} }
return current; return current;
}); });
setCurrentUser((current) => {
if (isDefined(current)) {
return {
...current,
firstName: data.firstName,
lastName: data.lastName,
};
}
return current;
});
setNextOnboardingStatus(); setNextOnboardingStatus();
} catch (error: any) { } catch (error: any) {
enqueueSnackBar(error?.message, { enqueueSnackBar(error?.message, {
@ -127,6 +141,7 @@ export const CreateProfile = () => {
setNextOnboardingStatus, setNextOnboardingStatus,
enqueueSnackBar, enqueueSnackBar,
setCurrentWorkspaceMember, setCurrentWorkspaceMember,
setCurrentUser,
updateOneRecord, updateOneRecord,
], ],
); );