import { useCallback } from "react"; import { useAuthStore } from "@/stores/auth.store"; import { setAuthTokens, clearAuthTokens } from "@/lib/api"; import { setGraphQLToken } from "@/lib/graphql"; import { disconnectSocket } from "@/lib/socket"; import type { User } from "@investplay/types"; export function useAuth() { const store = useAuthStore(); const login = useCallback( (user: User, accessToken: string, refreshToken: string) => { setAuthTokens(accessToken, refreshToken); setGraphQLToken(accessToken); store.login(user, accessToken, refreshToken); }, [store], ); const register = useCallback( (user: User, accessToken: string, refreshToken: string) => { setAuthTokens(accessToken, refreshToken); setGraphQLToken(accessToken); store.register(user, accessToken, refreshToken); }, [store], ); const logout = useCallback(() => { clearAuthTokens(); setGraphQLToken(null); disconnectSocket(); store.logout(); }, [store]); const updateUser = useCallback( (partial: Partial) => { store.updateUser(partial); }, [store], ); return { user: store.user, accessToken: store.accessToken, isAuthenticated: store.isAuthenticated, isLoading: store.isLoading, login, register, logout, updateUser, }; }