satupeta-main/shared/hooks/use-auth-api.ts

43 lines
1.0 KiB
TypeScript
Raw Permalink Normal View History

2026-01-27 02:31:12 +00:00
"use client";
import { useSession, signOut } from "next-auth/react";
import { useEffect, useRef } from "react";
import { setupApiInterceptors } from "../services/api";
import authApi from "../services/auth";
export const handleLogout = async () => {
try {
await authApi.logout();
await signOut({ redirect: true, callbackUrl: "/" });
} catch (e) {
console.error(e);
await signOut({ redirect: true, callbackUrl: "/" });
}
};
export function useAuthApi() {
const { data: session, status, update } = useSession();
const isInitialized = useRef(false);
useEffect(() => {
if (status !== "authenticated" || isInitialized.current) return;
const getToken = () => {
if (!session?.access_token) return null;
return session.access_token;
};
setupApiInterceptors(getToken);
isInitialized.current = true;
}, [session, status]);
return {
session,
status,
isAuthenticated: status === "authenticated",
isLoading: status === "loading",
update,
};
}