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);
}
};