5623 add an inviteteam onboarding step (#5769)

## Changes
- add a new invite Team onboarding step
- update currentUser.state to currentUser.onboardingStep

## Edge cases
We will never display invite team onboarding step 
- if number of workspaceMember > 1
- if a workspaceMember as been deleted

## Important changes
Update typeorm package version to 0.3.20 because we needed a fix on
`indexPredicates` pushed in 0.3.20 version
(https://github.com/typeorm/typeorm/issues/10191)

## Result
<img width="844" alt="image"
src="https://github.com/twentyhq/twenty/assets/29927851/0dab54cf-7c66-4c64-b0c9-b0973889a148">



https://github.com/twentyhq/twenty/assets/29927851/13268d0a-cfa7-42a4-84c6-9e1fbbe48912
This commit is contained in:
martmull
2024-06-12 21:13:18 +02:00
committed by GitHub
parent 2fdd2f4949
commit 3986824017
60 changed files with 1009 additions and 372 deletions

View File

@ -0,0 +1,41 @@
import { useRecoilCallback, useSetRecoilState } from 'recoil';
import { currentUserState } from '@/auth/states/currentUserState';
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
import { WorkspaceMember } from '@/workspace-member/types/WorkspaceMember';
import { OnboardingStep } from '~/generated/graphql';
const getNextOnboardingStep = (
currentOnboardingStep: OnboardingStep,
workspaceMembers: WorkspaceMember[],
) => {
if (currentOnboardingStep === OnboardingStep.SyncEmail) {
return workspaceMembers && workspaceMembers.length > 1
? null
: OnboardingStep.InviteTeam;
}
return null;
};
export const useSetNextOnboardingStep = () => {
const setCurrentUser = useSetRecoilState(currentUserState);
const { records: workspaceMembers } = useFindManyRecords<WorkspaceMember>({
objectNameSingular: CoreObjectNameSingular.WorkspaceMember,
});
return useRecoilCallback(
() => (currentOnboardingStep: OnboardingStep) => {
setCurrentUser(
(current) =>
({
...current,
onboardingStep: getNextOnboardingStep(
currentOnboardingStep,
workspaceMembers,
),
}) as any,
);
},
[setCurrentUser, workspaceMembers],
);
};