import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import type { SettingsData } from "../../../shared/api"; export function useSettings() { const queryClient = useQueryClient(); const query = useQuery({ queryFn: fetchSettings, queryKey: ["settings"], staleTime: 60000, }); const mutation = useMutation({ mutationFn: updateSettings, onSuccess: (data) => { queryClient.setQueryData(["settings"], data); }, }); return { data: query.data, error: query.error, isLoading: query.isLoading, isUpdating: mutation.isPending, updateSettings: mutation.mutate, }; } async function fetchSettings(): Promise { const response = await fetch("/api/settings"); if (!response.ok) throw new Error(`HTTP ${response.status}`); return response.json() as Promise; } async function updateSettings(data: Partial): Promise { const response = await fetch("/api/settings", { body: JSON.stringify(data), headers: { "Content-Type": "application/json" }, method: "PUT", }); if (!response.ok) throw new Error(`HTTP ${response.status}`); return response.json() as Promise; }