'use client'

import { useMutation } from '@tanstack/react-query'
import { useRouter } from 'next/navigation'
import { toast } from 'sonner'
import { loginApi } from '@/lib/api/auth.api'
import { setAuthCookie } from '@/lib/auth/session'
import { ADMIN_ROLES, SUPPLIER_ROLES } from '@/lib/constants/auth'
import { ROUTES } from '@/lib/constants/routes'
import type { LoginRequest } from '@/types/auth'

export function useLogin() {
  const router = useRouter()

  return useMutation({
    mutationFn: (payload: LoginRequest) => loginApi(payload),
    onSuccess: (data) => {
      setAuthCookie(data.accessToken)
      toast.success('Login successful')

      // Role-based redirect
      const role = data.user.role
      if (ADMIN_ROLES.includes(role as any)) {
        router.push(ROUTES.ADMIN.DASHBOARD)
      } else if (SUPPLIER_ROLES.includes(role as any)) {
        router.push(ROUTES.SUPPLIER.DASHBOARD)
      } else {
        // Fallback — should not happen for portal users
        router.push(ROUTES.AUTH.LOGIN)
      }
    },
    onError: (error: any) => {
      const message =
        error?.response?.data?.message ?? 'Login failed. Please check your credentials.'
      toast.error(message)
    },
  })
}
