diff --git a/packages/twenty-front/src/modules/auth/hooks/useAuth.ts b/packages/twenty-front/src/modules/auth/hooks/useAuth.ts index 88749f2d1..e3c16bf82 100644 --- a/packages/twenty-front/src/modules/auth/hooks/useAuth.ts +++ b/packages/twenty-front/src/modules/auth/hooks/useAuth.ts @@ -1,3 +1,4 @@ +import { AppPath } from '@/types/AppPath'; import { ApolloError, useApolloClient } from '@apollo/client'; import { useCallback } from 'react'; import { @@ -8,7 +9,6 @@ import { useSetRecoilState, } from 'recoil'; import { iconsState } from 'twenty-ui'; -import { AppPath } from '@/types/AppPath'; import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState'; import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState'; @@ -49,6 +49,7 @@ import { SignInUpStep, signInUpStepState, } from '@/auth/states/signInUpStepState'; +import { workspacePublicDataState } from '@/auth/states/workspacePublicDataState'; import { BillingCheckoutSession } from '@/auth/types/billingCheckoutSession.type'; import { isEmailVerificationRequiredState } from '@/client-config/states/isEmailVerificationRequiredState'; import { isMultiWorkspaceEnabledState } from '@/client-config/states/isMultiWorkspaceEnabledState'; @@ -59,7 +60,6 @@ import { useRedirectToWorkspaceDomain } from '@/domain-manager/hooks/useRedirect import { domainConfigurationState } from '@/domain-manager/states/domainConfigurationState'; import { isAppWaitingForFreshObjectMetadataState } from '@/object-metadata/states/isAppWaitingForFreshObjectMetadataState'; import { workspaceAuthProvidersState } from '@/workspace/states/workspaceAuthProvidersState'; -import { workspacePublicDataState } from '@/auth/states/workspacePublicDataState'; import { useSearchParams } from 'react-router-dom'; export const useAuth = () => { @@ -225,7 +225,9 @@ export const useAuth = () => { ); const loadCurrentUser = useCallback(async () => { - const currentUserResult = await getCurrentUser(); + const currentUserResult = await getCurrentUser({ + fetchPolicy: 'network-only', + }); if (isDefined(currentUserResult.error)) { throw new Error(currentUserResult.error.message); diff --git a/packages/twenty-front/src/modules/auth/sign-in-up/hooks/useSignInUp.ts b/packages/twenty-front/src/modules/auth/sign-in-up/hooks/useSignInUp.ts index 4eec9f55f..090aee8e3 100644 --- a/packages/twenty-front/src/modules/auth/sign-in-up/hooks/useSignInUp.ts +++ b/packages/twenty-front/src/modules/auth/sign-in-up/hooks/useSignInUp.ts @@ -3,20 +3,20 @@ import { SubmitHandler, UseFormReturn } from 'react-hook-form'; import { useParams, useSearchParams } from 'react-router-dom'; import { Form } from '@/auth/sign-in-up/hooks/useSignInUpForm'; -import { useReadCaptchaToken } from '@/captcha/hooks/useReadCaptchaToken'; -import { useRequestFreshCaptchaToken } from '@/captcha/hooks/useRequestFreshCaptchaToken'; -import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar'; -import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar'; -import { useRecoilState } from 'recoil'; -import { useIsMatchingLocation } from '~/hooks/useIsMatchingLocation'; +import { signInUpModeState } from '@/auth/states/signInUpModeState'; import { SignInUpStep, signInUpStepState, } from '@/auth/states/signInUpStepState'; -import { AppPath } from '@/types/AppPath'; -import { useAuth } from '../../hooks/useAuth'; -import { signInUpModeState } from '@/auth/states/signInUpModeState'; import { SignInUpMode } from '@/auth/types/signInUpMode'; +import { useReadCaptchaToken } from '@/captcha/hooks/useReadCaptchaToken'; +import { useRequestFreshCaptchaToken } from '@/captcha/hooks/useRequestFreshCaptchaToken'; +import { AppPath } from '@/types/AppPath'; +import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar'; +import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar'; +import { useRecoilState } from 'recoil'; +import { useIsMatchingLocation } from '~/hooks/useIsMatchingLocation'; +import { useAuth } from '../../hooks/useAuth'; export const useSignInUp = (form: UseFormReturn
) => { const { enqueueSnackBar } = useSnackBar(); diff --git a/packages/twenty-front/src/modules/domain-manager/hooks/useBuildWorkspaceUrl.ts b/packages/twenty-front/src/modules/domain-manager/hooks/useBuildWorkspaceUrl.ts index ae0c66a08..e609849c0 100644 --- a/packages/twenty-front/src/modules/domain-manager/hooks/useBuildWorkspaceUrl.ts +++ b/packages/twenty-front/src/modules/domain-manager/hooks/useBuildWorkspaceUrl.ts @@ -1,6 +1,6 @@ -import { isDefined } from '~/utils/isDefined'; import { domainConfigurationState } from '@/domain-manager/states/domainConfigurationState'; import { useRecoilValue } from 'recoil'; +import { isDefined } from '~/utils/isDefined'; export const useBuildWorkspaceUrl = () => { const domainConfiguration = useRecoilValue(domainConfigurationState); diff --git a/packages/twenty-front/src/modules/domain-manager/hooks/useRedirectToWorkspaceDomain.ts b/packages/twenty-front/src/modules/domain-manager/hooks/useRedirectToWorkspaceDomain.ts index 091dd8d3d..07f881156 100644 --- a/packages/twenty-front/src/modules/domain-manager/hooks/useRedirectToWorkspaceDomain.ts +++ b/packages/twenty-front/src/modules/domain-manager/hooks/useRedirectToWorkspaceDomain.ts @@ -1,7 +1,7 @@ import { isMultiWorkspaceEnabledState } from '@/client-config/states/isMultiWorkspaceEnabledState'; -import { useRecoilValue } from 'recoil'; import { useBuildWorkspaceUrl } from '@/domain-manager/hooks/useBuildWorkspaceUrl'; import { useRedirect } from '@/domain-manager/hooks/useRedirect'; +import { useRecoilValue } from 'recoil'; export const useRedirectToWorkspaceDomain = () => { const isMultiWorkspaceEnabled = useRecoilValue(isMultiWorkspaceEnabledState); diff --git a/packages/twenty-front/src/modules/onboarding/hooks/useSetNextOnboardingStatus.ts b/packages/twenty-front/src/modules/onboarding/hooks/useSetNextOnboardingStatus.ts index abc0a2b31..f1cef2989 100644 --- a/packages/twenty-front/src/modules/onboarding/hooks/useSetNextOnboardingStatus.ts +++ b/packages/twenty-front/src/modules/onboarding/hooks/useSetNextOnboardingStatus.ts @@ -12,6 +12,10 @@ const getNextOnboardingStatus = ( currentUser: CurrentUser | null, currentWorkspace: CurrentWorkspace | null, ) => { + if (currentUser?.onboardingStatus === OnboardingStatus.WorkspaceActivation) { + return OnboardingStatus.ProfileCreation; + } + if (currentUser?.onboardingStatus === OnboardingStatus.ProfileCreation) { return OnboardingStatus.SyncEmail; } diff --git a/packages/twenty-front/src/pages/onboarding/CreateWorkspace.tsx b/packages/twenty-front/src/pages/onboarding/CreateWorkspace.tsx index c0572160f..0d8d9ccbf 100644 --- a/packages/twenty-front/src/pages/onboarding/CreateWorkspace.tsx +++ b/packages/twenty-front/src/pages/onboarding/CreateWorkspace.tsx @@ -8,7 +8,9 @@ import { z } from 'zod'; import { SubTitle } from '@/auth/components/SubTitle'; import { Title } from '@/auth/components/Title'; +import { useAuth } from '@/auth/hooks/useAuth'; import { useOnboardingStatus } from '@/onboarding/hooks/useOnboardingStatus'; +import { useSetNextOnboardingStatus } from '@/onboarding/hooks/useSetNextOnboardingStatus'; import { WorkspaceLogoUploader } from '@/settings/workspace/components/WorkspaceLogoUploader'; import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar'; import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar'; @@ -18,7 +20,6 @@ import { useActivateWorkspaceMutation, } from '~/generated/graphql'; import { isDefined } from '~/utils/isDefined'; -import { useAuth } from '@/auth/hooks/useAuth'; const StyledContentContainer = styled.div` width: 100%; @@ -44,6 +45,7 @@ type Form = z.infer; export const CreateWorkspace = () => { const { enqueueSnackBar } = useSnackBar(); const onboardingStatus = useOnboardingStatus(); + const setNextOnboardingStatus = useSetNextOnboardingStatus(); const { loadCurrentUser } = useAuth(); const [activateWorkspace] = useActivateWorkspaceMutation(); @@ -76,13 +78,19 @@ export const CreateWorkspace = () => { throw result.errors ?? new Error('Unknown error'); } await loadCurrentUser(); + setNextOnboardingStatus(); } catch (error: any) { enqueueSnackBar(error?.message, { variant: SnackBarVariant.Error, }); } }, - [activateWorkspace, enqueueSnackBar, loadCurrentUser], + [ + activateWorkspace, + enqueueSnackBar, + loadCurrentUser, + setNextOnboardingStatus, + ], ); const handleKeyDown = (event: React.KeyboardEvent) => {