import { useEffect } from "react";
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { qk } from "../query/keys";
import { notificaciones_marcar_leida, notificaciones_mias_list } from "../api/notifications.api";
import { supabaseBrowser } from "../supabase/client";

export function useMisNotificaciones() {
  return useQuery({
    queryKey: qk.notificaciones(),
    queryFn: notificaciones_mias_list,
    staleTime: 10_000,
  });
}

/** 🔥 Opcional: realtime (si tienes Realtime habilitado) */
export function useRealtimeNotificaciones(enable = true) {
  const supabase = supabaseBrowser();
  const qc = useQueryClient();

  useEffect(() => {
    if (!enable) return;

    const channel = supabase
      .channel("rt-notificaciones")
      .on(
        "postgres_changes",
        { event: "*", schema: "public", table: "notificaciones" },
        () => {
          qc.invalidateQueries({ queryKey: qk.notificaciones() });
        }
      )
      .subscribe();

    return () => {
      supabase.removeChannel(channel);
    };
  }, [enable, supabase, qc]);
}

export function useMarcarNotificacionLeida() {
  const qc = useQueryClient();

  return useMutation({
    mutationFn: notificaciones_marcar_leida,
    onSuccess: () => {
      qc.invalidateQueries({ queryKey: qk.notificaciones() });
    },
  });
}
