62 lines
2.0 KiB
JavaScript
62 lines
2.0 KiB
JavaScript
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")
|
|
}
|
|
})
|
|
}
|