import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query" import ExpenseRepository from "../repositories/ExpsenseRepository" import showToast from "../services/toastService" import { queryClient } from "../layouts/AuthLayout"; // -------------------Query------------------------------------------------------ export const useExpenseList=( pageSize, pageNumber, filter ) =>{ return useQuery({ queryKey: ["expenses", pageNumber, pageSize, filter], queryFn: async() => await ExpenseRepository.GetExpenseList( pageSize, pageNumber, filter ).then((res) => res.data), keepPreviousData: true, }); } export const useExpense =(ExpenseId)=>{ return useQuery({ queryKey:["Expense",ExpenseId], queryFn:async()=>await ExpenseRepository.GetExpenseDetails(ExpenseId) }) } // ---------------------------Mutation--------------------------------------------- export const useCreateExpnse =(onSuccessCallBack)=>{ const queryClient = useQueryClient() return useMutation({ mutationFn: async(payload)=>{ await ExpenseRepository.CreateExpense(payload) }, onSuccess:(_,variables)=>{ showToast("Expense Created Successfully","success") queryClient.invalidateQueries({queryKey:["expenses"]}) if (onSuccessCallBack) onSuccessCallBack(); }, onError:(error)=>{ showToast(error.message || "Something went wrong please try again !","error") } }) } export const useActionOnExpense=(onSuccessCallBack)=>{ const queryClient = useQueryClient() return useMutation({ mutationFn: async(payload)=>{ await ExpenseRepository.ActionOnExpense(payload) }, onSuccess:(data,variables)=>{ console.log(data) showToast("Expense Created Successfully","success") if (onSuccessCallBack) onSuccessCallBack(); }, onError:(error)=>{ showToast(error.message || "Something went wrong please try again !","error") } }) }