'use client' import { useAuthStore } from '../store/authStore' import { useApi } from './useApi' import { useRouter } from 'next/navigation' export interface LoginCredentials { email: string password: string } export interface SignupData { email: string password: string display_name?: string } export interface AuthResponse { access_token: string refresh_token: string user: { id: string email: string display_name?: string is_verified: boolean } } export function useAuth() { const router = useRouter() const { user, isAuthenticated, setAuth, clearAuth, updateUser } = useAuthStore() const loginApi = useApi() const signupApi = useApi() const login = async (credentials: LoginCredentials) => { const data = await loginApi.execute({ method: 'POST', url: '/auth/login', data: credentials, }) if (data) { setAuth(data.user, data.access_token, data.refresh_token) router.push('/dashboard') return true } return false } const signup = async (signupData: SignupData) => { const data = await signupApi.execute({ method: 'POST', url: '/auth/signup', data: signupData, }) if (data) { setAuth(data.user, data.access_token, data.refresh_token) router.push('/dashboard') return true } return false } const logout = async () => { try { // Call logout endpoint await loginApi.execute({ method: 'POST', url: '/auth/logout', }) } catch (error) { console.error('Logout error:', error) } finally { // Clear auth state regardless of API result clearAuth() router.push('/') } } return { user, isAuthenticated, login, signup, logout, updateUser, isLoading: loginApi.isLoading || signupApi.isLoading, error: loginApi.error || signupApi.error, } }