"use client";
import { useMutation, useQueryClient } from "@tanstack/react-query";
import { toast } from "react-toastify";
import { useParseError } from "@/utils/lib/helpers";
import { putData } from "@/utils/fetch";

export const useExpenseStatusUpdate = (expenseId: string) => {
  const queryClient = useQueryClient();

  const {
    mutate: updateStatus,
    isPending,
    error,
    isError,
    isSuccess,
  } = useMutation({
    mutationFn: async (status: string) => {
      const api_url = `/api/v1/expense-status/${expenseId}`;
      const { data } = await putData(api_url, {
        status: status,
      });
      return data;
    },
    onSuccess: (data, status) => {
      queryClient.invalidateQueries({ queryKey: ["expenses"] });
      const statusText = status === "approved" ? "approved" : "declined";
      toast.success(`Expense ${statusText} successfully!`);
    },
    onError: (error: any) => {
      toast.error(useParseError(error));
    },
  });

  return {
    updateStatus,
    isPending,
    error,
    isError,
    isSuccess,
  };
};

export default useExpenseStatusUpdate;
