2026-07-02 14:34:19 +05:30

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;