import { useMutation, useQueryClient } from '@tanstack/react-query';
import { ticketQueryKey } from '@/features/tickets/hooks/useTicket';
import { ticketCollaboratorsQueryKey } from '@/features/tickets/hooks/useTicketCollaborators';
import {
  addTicketCollaborator,
  removeTicketCollaborator,
} from '@/features/tickets/services/collaboratorService';
import type { AddTicketCollaboratorPayload } from '@/features/tickets/types/collaborator.types';

export function useTicketCollaboratorMutations(ticketId: string) {
  const queryClient = useQueryClient();

  const invalidate = () => {
    void queryClient.invalidateQueries({ queryKey: ticketQueryKey(ticketId) });
    void queryClient.invalidateQueries({ queryKey: ticketCollaboratorsQueryKey(ticketId) });
  };

  const addMutation = useMutation({
    mutationFn: (payload: AddTicketCollaboratorPayload) =>
      addTicketCollaborator(ticketId, payload),
    onSuccess: invalidate,
  });

  const removeMutation = useMutation({
    mutationFn: (userId: string) => removeTicketCollaborator(ticketId, userId),
    onSuccess: invalidate,
  });

  return {
    addCollaborator: addMutation.mutateAsync,
    removeCollaborator: removeMutation.mutateAsync,
    isAdding: addMutation.isPending,
    isRemoving: removeMutation.isPending,
  };
}
