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,
			} );
		},
	} );
}
