import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { api } from './endpoints'; import { queryKeys } from './queryKeys'; import type { Settings, SettingsUpdate } from './types/settings'; const SETTINGS_STALE_MILLISECONDS = 60000; export function useSettings() { return useQuery( { queryKey: queryKeys.settings, queryFn: ( { signal } ) => api.settings( signal ), staleTime: SETTINGS_STALE_MILLISECONDS, } ); } export function useUpdateSettings() { const queryClient = useQueryClient(); return useMutation( { mutationFn: ( update: SettingsUpdate ) => api.updateSettings( update ), onSuccess: ( settings: Settings ) => { queryClient.setQueryData( queryKeys.settings, settings ); void queryClient.invalidateQueries( { queryKey: queryKeys.status, } ); }, } ); }