import { useAuthContext } from "@/contexts/AuthContext";
import { useMutation, useQueryClient } from "react-query";
import firestore from "@react-native-firebase/firestore";

export const useDeleteNote = () => {
  const { user: currentUser } = useAuthContext();
  const queryClient = useQueryClient();

  return useMutation({
    mutationKey: ["deleteNote"],
    mutationFn: async (noteId: string) => {
      try {
        const snapshot = await firestore()
          .collection("BrainDumps")
          .where("id", "==", noteId)
          .get();

        if (snapshot.empty) {
          throw new Error("Note not found");
        }

        const docId = snapshot.docs[0].id;

        const noteData = snapshot.docs[0].data();
        if (noteData.creatorId !== currentUser?.uid) {
          throw new Error("Unauthorized: You can only delete your own Note");
        }

        await firestore().collection("BrainDumps").doc(docId).delete();
      } catch (e) {
        console.error("Error deleting note: ", e);
        throw e;
      }
    },
    onSuccess: () => {
      queryClient.invalidateQueries("braindumps");
    },
  });
};
