// @ts-nocheck import { useQueryClient, useMutation } from 'react-query'; import useApiRequest from '../useRequest'; import { useRequestQuery } from '../useQueryRequest'; import t from './types'; const commonInvalidateQueries = (queryClient) => { // Invalidate bills. queryClient.invalidateQueries(t.BILLS); queryClient.invalidateQueries(t.BILL); // Invalidate landed cost. queryClient.invalidateQueries(t.LANDED_COST); queryClient.invalidateQueries(t.LANDED_COST_TRANSACTION); }; /** * Creates a new landed cost. */ export function useCreateLandedCost(props) { const queryClient = useQueryClient(); const apiRequest = useApiRequest(); return useMutation( ([id, values]) => apiRequest.post(`landed-cost/bills/${id}/allocate`, values), { onSuccess: (res, id) => { // Common invalidate queries. commonInvalidateQueries(queryClient); }, ...props, }, ); } /** * Deletes the given landed cost. */ export function useDeleteLandedCost(props) { const queryClient = useQueryClient(); const apiRequest = useApiRequest(); return useMutation( (landedCostId) => apiRequest.delete(`landed-cost/${landedCostId}`), { onSuccess: (res, id) => { // Common invalidate queries. commonInvalidateQueries(queryClient); }, ...props, }, ); } /** * Retrieve the landed cost transactions. */ export function useLandedCostTransaction(query, props) { return useRequestQuery( [t.LANDED_COST, query], { method: 'get', url: 'landed-cost/transactions', params: { transaction_type: query }, }, { select: (res) => res.data, defaultData: { transactions: [], }, ...props, }, ); } /** * Retrieve the bill located landed cost transactions. */ export function useBillLocatedLandedCost(id, props) { return useRequestQuery( [t.LANDED_COST_TRANSACTION, id], { method: 'get', url: `landed-cost/bills/${id}/transactions` }, { select: (res) => res.data?.data, defaultData: [], ...props, }, ); }