39246-vm/frontend/hooks/useSites.ts
abbashkyt-creator 7d8ce0e322 V0.1
2026-03-14 04:02:22 +03:00

35 lines
1.3 KiB
TypeScript

import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'
import { fetchSites, updateSite, deleteSite, reorderSites, adaptSite, fetchSiteSelectors } from '@/lib/api/sites'
import type { TargetSite } from '@/lib/types'
const KEY = ['sites']
export const useSites = () => useQuery({ queryKey: KEY, queryFn: fetchSites })
export const useSiteSelectors = (id: number) => useQuery({ queryKey: ['selectors', id], queryFn: () => fetchSiteSelectors(id), staleTime: 30_000 })
export const useUpdateSite = () => {
const qc = useQueryClient()
return useMutation({
mutationFn: ({ id, data }: { id: number; data: Partial<TargetSite> }) => updateSite(id, data),
onSuccess: () => qc.invalidateQueries({ queryKey: KEY })
})
}
export const useDeleteSite = () => {
const qc = useQueryClient()
return useMutation({ mutationFn: deleteSite, onSuccess: () => qc.invalidateQueries({ queryKey: KEY }) })
}
export const useReorderSites = () => {
const qc = useQueryClient()
return useMutation({ mutationFn: reorderSites, onSuccess: () => qc.invalidateQueries({ queryKey: KEY }) })
}
export const useAdaptSite = () => {
const qc = useQueryClient()
return useMutation({
mutationFn: adaptSite,
onSuccess: (_, id) => qc.invalidateQueries({ queryKey: ['selectors', id] })
})
}