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({ 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({ queryFn: async (_jobId) => { await new Promise((r) => setTimeout(r, 300)); return { data: undefined }; }, }), confirmPickup: builder.mutation({ 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({ queryFn: async (_args) => { await new Promise((r) => setTimeout(r, 500)); return { data: undefined }; }, }), }), }); export const { useAcceptJobMutation, useRejectJobMutation, useConfirmPickupMutation, useConfirmDeliveryMutation, useReportIssueMutation, } = jobApi;