Spaces:
Build error
Build error
| import { useEffect } from "react"; | |
| import { useLocation, useNavigate } from "react-router"; | |
| import { useIsAuthed } from "./query/use-is-authed"; | |
| import { LoginMethod, setLoginMethod } from "#/utils/local-storage"; | |
| import { useConfig } from "./query/use-config"; | |
| /** | |
| * Hook to handle authentication callback and set login method after successful authentication | |
| */ | |
| export const useAuthCallback = () => { | |
| const location = useLocation(); | |
| const { data: isAuthed, isLoading: isAuthLoading } = useIsAuthed(); | |
| const { data: config } = useConfig(); | |
| const navigate = useNavigate(); | |
| useEffect(() => { | |
| // Only run in SAAS mode | |
| if (config?.APP_MODE !== "saas") { | |
| return; | |
| } | |
| // Wait for auth to load | |
| if (isAuthLoading) { | |
| return; | |
| } | |
| // Only set login method if authentication was successful | |
| if (!isAuthed) { | |
| return; | |
| } | |
| // Check if we have a login_method query parameter | |
| const searchParams = new URLSearchParams(location.search); | |
| const loginMethod = searchParams.get("login_method"); | |
| // Set the login method if it's valid | |
| if ( | |
| loginMethod === LoginMethod.GITHUB || | |
| loginMethod === LoginMethod.GITLAB | |
| ) { | |
| setLoginMethod(loginMethod as LoginMethod); | |
| // Clean up the URL by removing the login_method parameter | |
| searchParams.delete("login_method"); | |
| const newUrl = `${location.pathname}${searchParams.toString() ? `?${searchParams.toString()}` : ""}`; | |
| navigate(newUrl, { replace: true }); | |
| } | |
| }, [isAuthed, isAuthLoading, location.search, config?.APP_MODE]); | |
| }; | |