import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { api } from '../../shared/api/endpoints'; import { queryKeys } from '../../shared/api/queryKeys'; import type { LinkDetail } from '../../shared/api/types/links'; const SUGGESTIONS_STALE_MILLISECONDS = 5 * 60 * 1000; export function useLink( linkId: number ) { return useQuery( { queryKey: queryKeys.link( linkId ), queryFn: ( { signal } ) => api.link( linkId, signal ), } ); } export function useSuggestions( linkId: number, isWanted: boolean ) { return useQuery( { queryKey: queryKeys.suggestions( linkId ), queryFn: ( { signal } ) => api.suggestions( linkId, signal ), enabled: isWanted, staleTime: SUGGESTIONS_STALE_MILLISECONDS, } ); } export function useRecheck() { const queryClient = useQueryClient(); return useMutation( { mutationFn: ( linkId: number ) => api.recheck( linkId ), onSuccess: ( link: LinkDetail ) => { queryClient.setQueryData( queryKeys.link( link.id ), link ); void queryClient.invalidateQueries( { queryKey: queryKeys.status, } ); void queryClient.invalidateQueries( { queryKey: queryKeys.linkLists, } ); }, } ); } export function useTestAddress() { return useMutation( { mutationFn: ( url: string ) => api.test( url ), } ); }