Files
readest/apps/readest-app/src/helpers/auth.ts
T
2024-12-17 10:50:52 +01:00

51 lines
1.1 KiB
TypeScript

import { User } from '@supabase/supabase-js';
import { supabase } from '@/utils/supabase';
interface UseAuthCallbackOptions {
accessToken?: string | null;
refreshToken?: string | null;
login: (accessToken: string, user: User) => void;
navigate: (path: string) => void;
next?: string;
}
export function handleAuthCallback({
accessToken,
refreshToken,
login,
navigate,
next = '/',
}: UseAuthCallbackOptions) {
async function finalizeSession() {
if (!accessToken || !refreshToken) {
console.error('No access token or refresh token');
navigate('/auth/error');
return;
}
const { error } = await supabase.auth.setSession({
access_token: accessToken,
refresh_token: refreshToken,
});
if (error) {
console.error('Error setting session:', error);
navigate('/auth/error');
return;
}
const {
data: { user },
} = await supabase.auth.getUser();
if (user) {
login(accessToken, user);
navigate(next);
} else {
console.error('Error fetching user data');
navigate('/auth/error');
}
}
finalizeSession();
}