diff --git a/platforms/blabsy/src/components/layout/auth-layout.tsx b/platforms/blabsy/src/components/layout/auth-layout.tsx index 16435c39..8639a9c0 100644 --- a/platforms/blabsy/src/components/layout/auth-layout.tsx +++ b/platforms/blabsy/src/components/layout/auth-layout.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from 'react'; +import { useState, useEffect, useRef } from 'react'; import { useRouter } from 'next/router'; import { useAuth } from '@lib/context/auth-context'; import { sleep } from '@lib/utils'; @@ -7,7 +7,6 @@ import type { LayoutProps } from './common-layout'; export function AuthLayout({ children }: LayoutProps): JSX.Element { const [pending, setPending] = useState(true); - const { user, loading, error } = useAuth(); const { replace } = useRouter(); @@ -29,8 +28,13 @@ export function AuthLayout({ children }: LayoutProps): JSX.Element { }, [user, loading]); // If there's an auth error (user not found), redirect to login + const hasRedirected = useRef(false); useEffect(() => { - if (error) void replace('/'); + if (error && !hasRedirected.current) { + hasRedirected.current = true; + alert(error.message || 'An error occurred'); + void replace('/'); + } }, [error, replace]); if (loading || pending) return ; diff --git a/platforms/blabsy/src/lib/hooks/useRequireAuth.ts b/platforms/blabsy/src/lib/hooks/useRequireAuth.ts index 9b99ef5f..bcfaf090 100644 --- a/platforms/blabsy/src/lib/hooks/useRequireAuth.ts +++ b/platforms/blabsy/src/lib/hooks/useRequireAuth.ts @@ -1,14 +1,14 @@ -import { useEffect } from 'react'; -import { useRouter } from 'next/router'; -import { useAuth } from '@lib/context/auth-context'; -import type { User } from '@lib/types/user'; +import { useAuth } from "@lib/context/auth-context"; +import type { User } from "@lib/types/user"; +import { useRouter } from "next/router"; +import { useEffect } from "react"; export function useRequireAuth(redirectUrl?: string): User | null { const { user, loading } = useAuth(); const { replace } = useRouter(); useEffect(() => { - if (!loading && !user) void replace(redirectUrl ?? '/'); + if (!loading && !user) void replace(redirectUrl ?? "/"); // eslint-disable-next-line react-hooks/exhaustive-deps }, [user, loading]);