62 lines
1.8 KiB
TypeScript
62 lines
1.8 KiB
TypeScript
import { createApi, fakeBaseQuery } from '@reduxjs/toolkit/query/react';
|
|
import { Job } from '@app-types/index';
|
|
import { JobStatus } from '@utils/constants';
|
|
import { mockJobOffer } from '@store/mockData/mockJobs';
|
|
|
|
export const jobApi = createApi({
|
|
reducerPath: 'jobApi',
|
|
baseQuery: fakeBaseQuery(),
|
|
endpoints: (builder) => ({
|
|
acceptJob: builder.mutation<Job, string>({
|
|
queryFn: async (jobId) => {
|
|
await new Promise((r) => setTimeout(r, 500));
|
|
return {
|
|
data: {
|
|
...mockJobOffer,
|
|
jobId,
|
|
orderId: '#ORD125487',
|
|
status: JobStatus.Accepted,
|
|
acceptedAt: new Date().toISOString(),
|
|
collectAmount: 0,
|
|
},
|
|
};
|
|
},
|
|
}),
|
|
rejectJob: builder.mutation<void, string>({
|
|
queryFn: async (_jobId) => {
|
|
await new Promise((r) => setTimeout(r, 300));
|
|
return { data: undefined };
|
|
},
|
|
}),
|
|
confirmPickup: builder.mutation<void, string>({
|
|
queryFn: async (_jobId) => {
|
|
await new Promise((r) => setTimeout(r, 500));
|
|
return { data: undefined };
|
|
},
|
|
}),
|
|
confirmDelivery: builder.mutation<
|
|
{ earnings: number },
|
|
{ jobId: string; rating: number }
|
|
>({
|
|
queryFn: async ({ jobId: _jobId }) => {
|
|
await new Promise((r) => setTimeout(r, 800));
|
|
return { data: { earnings: 78 } };
|
|
},
|
|
}),
|
|
reportIssue: builder.mutation<void, { jobId: string; reason: string }>({
|
|
queryFn: async (_args) => {
|
|
await new Promise((r) => setTimeout(r, 500));
|
|
return { data: undefined };
|
|
},
|
|
}),
|
|
}),
|
|
});
|
|
|
|
export const {
|
|
useAcceptJobMutation,
|
|
useRejectJobMutation,
|
|
useConfirmPickupMutation,
|
|
useConfirmDeliveryMutation,
|
|
useReportIssueMutation,
|
|
} = jobApi;
|