mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 23:28:33 -06:00
38 lines
1.0 KiB
TypeScript
38 lines
1.0 KiB
TypeScript
import { canvasService } from "@/services/canvas/canvasService";
|
|
import { useSuspenseQuery } from "@tanstack/react-query";
|
|
|
|
export const canvasKeys = {
|
|
allTerms: ["all canvas terms"] as const,
|
|
allAroundDate: (date: Date) => ["all canvas terms", date] as const,
|
|
};
|
|
|
|
export const useAllCanvasTermsQuery = () =>
|
|
useSuspenseQuery({
|
|
queryKey: canvasKeys.allTerms,
|
|
queryFn: canvasService.getAllTerms,
|
|
});
|
|
export const useCanvasTermsQuery = (queryDate: Date) => {
|
|
const { data: terms } = useAllCanvasTermsQuery();
|
|
|
|
return useSuspenseQuery({
|
|
queryKey: canvasKeys.allAroundDate(queryDate),
|
|
queryFn: () => {
|
|
const currentTerms = terms
|
|
.filter((t) => {
|
|
if (!t.end_at) return false;
|
|
|
|
const endDate = new Date(t.end_at);
|
|
return endDate > queryDate;
|
|
})
|
|
.sort(
|
|
(a, b) =>
|
|
new Date(a.start_at ?? "").getTime() -
|
|
new Date(b.start_at ?? "").getTime()
|
|
)
|
|
.slice(0, 3);
|
|
|
|
return currentTerms;
|
|
},
|
|
});
|
|
};
|