42 lines
1.6 KiB
TypeScript
42 lines
1.6 KiB
TypeScript
import { useQuery } from '@tanstack/react-query';
|
|
import { fetchDailySummary, fetchTimetable, fetchWakeSleepTimes, fetchSummary } from '../api/client';
|
|
import type { DailySummaryResponse, TimetableResponse, WakeupBedtimeResponse, SummaryResponse } from '../types';
|
|
|
|
export function useSummary(from_date: string, to_date: string) {
|
|
return useQuery<SummaryResponse>({
|
|
queryKey: ['summary', from_date, to_date],
|
|
queryFn: () => fetchSummary(from_date, to_date),
|
|
});
|
|
}
|
|
|
|
export function useStats(
|
|
from_date: string,
|
|
to_date: string,
|
|
day_start = '07:00',
|
|
day_end = '20:00',
|
|
wakeup_ref = '04:00',
|
|
bedtime_ref = '19:00',
|
|
timezoneOffset = 0
|
|
) {
|
|
const dailySummaryQuery = useQuery<DailySummaryResponse>({
|
|
queryKey: ['dailySummary', from_date, to_date, day_start, day_end, timezoneOffset],
|
|
queryFn: () => fetchDailySummary(from_date, to_date, day_start, day_end, timezoneOffset),
|
|
});
|
|
|
|
const timetableQuery = useQuery<TimetableResponse>({
|
|
queryKey: ['timetable', from_date, to_date, day_start, day_end, timezoneOffset],
|
|
queryFn: () => fetchTimetable(from_date, to_date, day_start, day_end, timezoneOffset),
|
|
});
|
|
|
|
const wakeupBedtimeQuery = useQuery<WakeupBedtimeResponse>({
|
|
queryKey: ['wakeSleepTimes', from_date, to_date, wakeup_ref, bedtime_ref, timezoneOffset],
|
|
queryFn: () => fetchWakeSleepTimes(from_date, to_date, wakeup_ref, bedtime_ref, timezoneOffset),
|
|
});
|
|
|
|
return {
|
|
dailySummary: dailySummaryQuery.data,
|
|
timetable: timetableQuery.data,
|
|
wakeupBedtime: wakeupBedtimeQuery.data,
|
|
isLoading: dailySummaryQuery.isLoading || timetableQuery.isLoading || wakeupBedtimeQuery.isLoading,
|
|
};
|
|
} |