Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | 1x 1x 5x 5x 5x 5x 1x | import type {
Disbursement,
DisbursementHistoryPagination,
DisbursementHistoryQuery,
MarkDisbursedPayload
} from '../types/disbursement';
import {api} from './api';
interface PendingResponse {
success: boolean;
data: {disbursements: Disbursement[]};
}
interface HistoryResponse {
success: boolean;
data: {
disbursements: Disbursement[];
pagination: DisbursementHistoryPagination;
};
}
interface MarkDisbursedResponse {
success: boolean;
message: string;
data: {disbursement: Disbursement};
}
export interface DisbursementHistoryResult {
disbursements: Disbursement[];
pagination: DisbursementHistoryPagination;
}
export const disbursementApi = api.injectEndpoints({
endpoints: (builder) => ({
getPendingDisbursements: builder.query<Disbursement[], void>({
query: () => '/admin/disbursements/pending',
transformResponse: (response: PendingResponse) =>
response.data.disbursements,
providesTags: ['Disbursement']
}),
getDisbursementHistory: builder.query<
DisbursementHistoryResult,
DisbursementHistoryQuery
>({
query: ({status = 'disbursed', page = 1, perPage = 20} = {}) => ({
url: '/admin/disbursements',
params: {status, page, perPage}
}),
transformResponse: (response: HistoryResponse) => response.data,
providesTags: ['Disbursement']
}),
markDisbursed: builder.mutation<Disbursement, MarkDisbursedPayload>({
query: ({disbursementId, ...body}) => ({
url: `/admin/disbursements/${disbursementId}/mark-disbursed`,
method: 'POST',
body
}),
transformResponse: (response: MarkDisbursedResponse) =>
response.data.disbursement,
invalidatesTags: ['Disbursement', 'Loan', 'Account', 'AccountSummary']
})
})
});
export const {
useGetPendingDisbursementsQuery,
useGetDisbursementHistoryQuery,
useMarkDisbursedMutation
} = disbursementApi;
|