Files
ERP-core/Frontend/erp-system/hooks/use-dashboard-stats.ts
T
2026-09-19 00:22:53 +05:30

39 lines
1.1 KiB
TypeScript

"use client"
import { useEffect, useState } from "react"
import { dashboardApi } from "@/lib/api/dashboard"
import { DashboardStats } from "@/types/dashboard"
import { useAuth } from "@/components/auth/AuthProvider"
/**
* Shared cross-domain counts (pending POs, low-stock, pending leave, overdue invoices, ...)
* from GET /dashboard/stats — the same aggregate the Dashboard home page renders, reused
* here as small KPI tiles on individual list pages. Null while loading or on error, so
* callers should render nothing (or a skeleton) until it resolves.
*/
export function useDashboardStats(): DashboardStats | null {
const { activeBranchId, branchingEnabled } = useAuth()
const [stats, setStats] = useState<DashboardStats | null>(null)
useEffect(() => {
let cancelled = false
const branchId = branchingEnabled ? (activeBranchId ?? undefined) : undefined
dashboardApi
.stats({ branchId })
.then((s) => {
if (!cancelled) setStats(s)
})
.catch(() => {
if (!cancelled) setStats(null)
})
return () => {
cancelled = true
}
}, [activeBranchId, branchingEnabled])
return stats
}