Skip to content

Commit

Permalink
Fix hook
Browse files Browse the repository at this point in the history
  • Loading branch information
martmull committed Jun 10, 2024
1 parent 3304333 commit 735c4c1
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 14 deletions.
Original file line number Diff line number Diff line change
@@ -1,20 +1,42 @@
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 getNextOnboardingState = (
currentOnboardingStep: OnboardingStep,
workspaceMembers: WorkspaceMember[],
) => {
if (
currentOnboardingStep === OnboardingStep.SyncEmail &&
workspaceMembers.length > 1
) {
return workspaceMembers.length === 1 ? OnboardingStep.InviteTeam : null;
}
return null;
};

export const useSetOnboardingStep = () => {
const setCurrentUser = useSetRecoilState(currentUserState);
const { records: workspaceMembers } = useFindManyRecords<WorkspaceMember>({
objectNameSingular: CoreObjectNameSingular.WorkspaceMember,
});
return useRecoilCallback(
() => (onboardingStep: OnboardingStep | null) => {
() => (currentOnboardingStep: OnboardingStep) => {
setCurrentUser(
(current) =>
({
...current,
onboardingStep,
onboardingStep: getNextOnboardingState(
currentOnboardingStep,
workspaceMembers,
),
}) as any,
);
},
[setCurrentUser],
[setCurrentUser, workspaceMembers],
);
};
4 changes: 2 additions & 2 deletions packages/twenty-front/src/pages/onboarding/InviteTeam.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
import { MainButton } from '@/ui/input/button/components/MainButton';
import { TextInputV2 } from '@/ui/input/components/TextInputV2';
import { ActionLink } from '@/ui/navigation/link/components/ActionLink';
import { useSendInviteLinkMutation } from '~/generated/graphql';
import { OnboardingStep, useSendInviteLinkMutation } from '~/generated/graphql';
import { isDefined } from '~/utils/isDefined';

const StyledAnimatedInput = styled.div`
Expand Down Expand Up @@ -135,7 +135,7 @@ export const InviteTeam = () => {
);
const result = await sendInviteLink({ variables: { emails } });

setOnboardingStep(null);
setOnboardingStep(OnboardingStep.InviteTeam);

if (isDefined(result.errors)) {
throw result.errors;
Expand Down
2 changes: 1 addition & 1 deletion packages/twenty-front/src/pages/onboarding/SyncEmails.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ export const SyncEmails = () => {

const continueWithoutSync = async () => {
await skipSyncEmailOnboardingStepMutation();
setOnboardingStep(OnboardingStep.InviteTeam);
setOnboardingStep(OnboardingStep.SyncEmail);
};

return (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ import { DemoEnvGuard } from 'src/engine/guards/demo.env.guard';
import { JwtAuthGuard } from 'src/engine/guards/jwt.auth.guard';
import { User } from 'src/engine/core-modules/user/user.entity';
import { WorkspaceMember } from 'src/engine/core-modules/user/dtos/workspace-member.dto';
import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
import { OnboardingStep } from 'src/engine/core-modules/onboarding/enums/onboarding-step.enum';
import { OnboardingService } from 'src/engine/core-modules/onboarding/onboarding.service';

Expand Down Expand Up @@ -119,14 +117,14 @@ export class UserResolver {
}

@ResolveField(() => OnboardingStep)
async onboardingStep(
@Parent() user: User,
@AuthWorkspace() workspace: Workspace,
): Promise<OnboardingStep | null> {
if (!user || !workspace) {
async onboardingStep(@Parent() user: User): Promise<OnboardingStep | null> {
if (!user) {
return null;
}

return this.onboardingService.getOnboardingState(user, workspace);
return this.onboardingService.getOnboardingState(
user,
user.defaultWorkspace,
);
}
}

0 comments on commit 735c4c1

Please sign in to comment.