import { useMutation, useSuspenseQuery } from "@tanstack/react-query"; import { toast } from "sonner"; import { Button } from "~/client/components/ui/button"; import { authClient } from "~/client/lib/auth-client"; import { logger } from "~/client/lib/logger"; import { getPublicSsoProvidersOptions } from "~/client/api-client/@tanstack/react-query.gen"; export function SsoLoginSection() { const { data: ssoProviders } = useSuspenseQuery({ ...getPublicSsoProvidersOptions(), }); const ssoLoginMutation = useMutation({ mutationFn: async (providerId: string) => { const callbackPath = "/login"; const { data, error } = await authClient.signIn.sso({ providerId: providerId, callbackURL: callbackPath, errorCallbackURL: "/api/v1/auth/login-error", }); if (error) throw error; return data; }, onSuccess: (data) => { window.location.href = data.url; }, onError: (error) => { logger.error(error); toast.error("SSO Login failed", { description: error.message }); }, }); if (ssoProviders.providers.length === 0) { return null; } return (
Alternative Sign-in