Midday / apps /dashboard /src /hooks /use-billable-hours.ts
Jules
Final deployment with all fixes and verified content
c09f67c
import { useQuery } from "@tanstack/react-query";
import { formatISO } from "date-fns";
import { useTRPC } from "@/trpc/client";
type UseBillableHoursParams = {
date: Date | string;
view: "week" | "month";
weekStartsOnMonday?: boolean;
enabled?: boolean;
refetchInterval?: number | false;
refetchOnWindowFocus?: boolean;
};
/**
* Single source of truth for billable hours calculations.
* All date range logic with 1-day buffer handled on backend.
*/
export function useBillableHours(params: UseBillableHoursParams) {
const {
date,
view,
weekStartsOnMonday = false,
enabled = true,
refetchInterval,
refetchOnWindowFocus,
} = params;
const trpc = useTRPC();
// Convert date to ISO string format (YYYY-MM-DD)
const dateString =
typeof date === "string"
? date
: formatISO(date, { representation: "date" });
return useQuery({
...trpc.widgets.getBillableHours.queryOptions({
date: dateString,
view,
weekStartsOnMonday,
}),
enabled,
refetchInterval,
refetchOnWindowFocus,
});
}