import { createAsyncThunk } from '@reduxjs/toolkit'; import { Job } from '@app-types/index'; import * as jobApi from '../../../api/jobApi'; export const acceptJobThunk = createAsyncThunk( 'job/acceptJob', async (jobId, { rejectWithValue }) => { try { return await jobApi.acceptJob(jobId); } catch (error: any) { return rejectWithValue(error.message || 'Failed to accept job'); } } ); export const rejectJobThunk = createAsyncThunk( 'job/rejectJob', async (jobId, { rejectWithValue }) => { try { return await jobApi.rejectJob(jobId); } catch (error: any) { return rejectWithValue(error.message || 'Failed to reject job'); } } ); export const confirmPickupThunk = createAsyncThunk( 'job/confirmPickup', async (jobId, { rejectWithValue }) => { try { return await jobApi.confirmPickup(jobId); } catch (error: any) { return rejectWithValue(error.message || 'Failed to confirm pickup'); } } ); export const confirmDeliveryThunk = createAsyncThunk<{ earnings: number }, { jobId: string; rating: number }>( 'job/confirmDelivery', async ({ jobId, rating }, { rejectWithValue }) => { try { return await jobApi.confirmDelivery(jobId, rating); } catch (error: any) { return rejectWithValue(error.message || 'Failed to confirm delivery'); } } ); export const reportIssueThunk = createAsyncThunk( 'job/reportIssue', async ({ jobId, reason }, { rejectWithValue }) => { try { return await jobApi.reportIssue(jobId, reason); } catch (error: any) { return rejectWithValue(error.message || 'Failed to report issue'); } } );