import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { followsAPI } from "../api"; import { useAuthStore } from "@/stores/authStore"; export function useFollows() { const token = useAuthStore((s) => s.token); return useQuery({ queryKey: ["follows"], queryFn: () => followsAPI.list(), staleTime: 30 * 1000, enabled: !!token, }); } export function useAddFollow() { const qc = useQueryClient(); return useMutation({ mutationFn: ({ type, value }: { type: string; value: string }) => followsAPI.add(type, value), onSuccess: () => { qc.invalidateQueries({ queryKey: ["follows"] }); qc.invalidateQueries({ queryKey: ["dashboard"] }); }, }); } export function useRemoveFollow() { const qc = useQueryClient(); return useMutation({ mutationFn: (id: number) => followsAPI.remove(id), onSuccess: () => { qc.invalidateQueries({ queryKey: ["follows"] }); qc.invalidateQueries({ queryKey: ["dashboard"] }); }, }); } export function useIsFollowing(type: string, value: string) { const { data: follows = [] } = useFollows(); return follows.find((f) => f.follow_type === type && f.follow_value === value); } export function useUpdateFollowMode() { const qc = useQueryClient(); return useMutation({ mutationFn: ({ id, mode }: { id: number; mode: string }) => followsAPI.updateMode(id, mode), onSuccess: () => qc.invalidateQueries({ queryKey: ["follows"] }), }); }