import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { createWidgetInstance, deleteWidgetInstance, fetchWidgetData, fetchWidgetInstances, fetchWidgetSources, fetchWidgetTypes, updateWidgetInstance, } from "../api/widgets"; import type { WidgetInstanceInput } from "../types"; export function useWidgetInstances() { return useQuery({ queryKey: ["widgets", "instances"], queryFn: fetchWidgetInstances, refetchInterval: 60_000, }); } export function useWidgetData(widgetId: string, refreshInterval: number) { return useQuery({ queryKey: ["widgets", "data", widgetId], queryFn: () => fetchWidgetData(widgetId), refetchInterval: refreshInterval || false, enabled: !!widgetId, retry: 1, }); } export function useSaveWidgetInstance() { const queryClient = useQueryClient(); return useMutation({ mutationFn: (input: WidgetInstanceInput) => input.id ? updateWidgetInstance(input) : createWidgetInstance(input), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["widgets", "instances"] }); }, }); } export function useDeleteWidgetInstance() { const queryClient = useQueryClient(); return useMutation({ mutationFn: (widgetId: string) => deleteWidgetInstance(widgetId), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["widgets", "instances"] }); }, }); } export function useWidgetSources() { return useQuery({ queryKey: ["widgets", "sources"], queryFn: fetchWidgetSources, }); } export function useWidgetTypes() { return useQuery({ queryKey: ["widgets", "types"], queryFn: fetchWidgetTypes, }); }