import { useMutation, useQueryClient } from '@tanstack/react-query';
import {
  deleteNotification,
  markAllNotificationsRead,
  markNotificationRead,
} from '@/features/notifications/services/notificationService';
import { unreadCountQueryKey } from '@/features/notifications/hooks/useUnreadCount';

export function useNotificationMutations() {
  const queryClient = useQueryClient();

  const invalidate = () => {
    void queryClient.invalidateQueries({ queryKey: ['notifications'] });
    void queryClient.invalidateQueries({ queryKey: unreadCountQueryKey });
  };

  const markReadMutation = useMutation({
    mutationFn: (id: string) => markNotificationRead(id),
    onSuccess: invalidate,
  });

  const markAllReadMutation = useMutation({
    mutationFn: markAllNotificationsRead,
    onSuccess: invalidate,
  });

  const deleteMutation = useMutation({
    mutationFn: (id: string) => deleteNotification(id),
    onSuccess: invalidate,
  });

  return { markReadMutation, markAllReadMutation, deleteMutation };
}
