diff --git a/packages/twenty-front/src/modules/app/components/RootAuthorizeRedirect.tsx b/packages/twenty-front/src/modules/app/components/RootAuthorizeRedirect.tsx new file mode 100644 index 0000000000..9089552865 --- /dev/null +++ b/packages/twenty-front/src/modules/app/components/RootAuthorizeRedirect.tsx @@ -0,0 +1,18 @@ +import { createSearchParams, Navigate, useLocation } from 'react-router-dom'; +import { AppPath } from 'twenty-shared/types'; + +export const RootAuthorizeRedirect = () => { + const { hash, pathname, search } = useLocation(); + + const returnToPath = `${pathname}${search}${hash}`; + + return ( + + ); +}; diff --git a/packages/twenty-front/src/modules/app/hooks/useCreateRootAppRouter.tsx b/packages/twenty-front/src/modules/app/hooks/useCreateRootAppRouter.tsx index eb57c820c9..65dfe7545d 100644 --- a/packages/twenty-front/src/modules/app/hooks/useCreateRootAppRouter.tsx +++ b/packages/twenty-front/src/modules/app/hooks/useCreateRootAppRouter.tsx @@ -9,6 +9,7 @@ import { AppPath } from 'twenty-shared/types'; import { LazyRoute } from '@/app/components/LazyRoute'; import { RootAppProviders } from '@/app/components/RootAppProviders'; +import { RootAuthorizeRedirect } from '@/app/components/RootAuthorizeRedirect'; import { VerifyEmail } from '@/auth/components/VerifyEmail'; import { OnboardingPageLoader } from '@/onboarding/components/OnboardingPageLoader'; import { OnboardingTransitionOutlet } from '@/onboarding/components/OnboardingTransitionOutlet'; @@ -21,12 +22,6 @@ const SignInUp = lazy(() => })), ); -const Authorize = lazy(() => - import('~/pages/auth/Authorize').then((module) => ({ - default: module.Authorize, - })), -); - const PasswordReset = lazy(() => import('~/pages/auth/PasswordReset').then((module) => ({ default: module.PasswordReset, @@ -68,14 +63,7 @@ const createRootAppRouter = () => } /> - - - - } - /> + } /> } diff --git a/packages/twenty-front/src/modules/auth/hooks/useVerifyLogin.ts b/packages/twenty-front/src/modules/auth/hooks/useVerifyLogin.ts index 49429b1031..7346f21289 100644 --- a/packages/twenty-front/src/modules/auth/hooks/useVerifyLogin.ts +++ b/packages/twenty-front/src/modules/auth/hooks/useVerifyLogin.ts @@ -1,3 +1,4 @@ +import { isAppEffectRedirectEnabledState } from '@/app/states/isAppEffectRedirectEnabledState'; import { useAuth } from '@/auth/hooks/useAuth'; import { tokenPairState } from '@/auth/states/tokenPairState'; import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar'; @@ -10,10 +11,15 @@ export const useVerifyLogin = () => { const { enqueueErrorSnackBar } = useSnackBar(); const navigate = useNavigateApp(); const setTokenPair = useSetAtomState(tokenPairState); + const setIsAppEffectRedirectEnabled = useSetAtomState( + isAppEffectRedirectEnabledState, + ); const { getAuthTokensFromLoginToken } = useAuth(); const { t } = useLingui(); const verifyLoginToken = async (loginToken: string) => { + // Keeps PageChangeEffect from consuming returnToPath mid token swap + setIsAppEffectRedirectEnabled(false); setTokenPair(null); try { await getAuthTokensFromLoginToken(loginToken); @@ -22,6 +28,8 @@ export const useVerifyLogin = () => { message: t`Authentication failed`, }); navigate(AppPath.SignInUp); + } finally { + setIsAppEffectRedirectEnabled(true); } };