import { createAsyncThunk } from '@reduxjs/toolkit'; import { DeliveryAction, RespondToOfferResponse, PendingOfferResponse, } from '@interfaces'; import { changeOrderStatus, getPendingOffer, respondToOffer } from '@api'; /** * Respond to a delivery offer (ACCEPT / REJECT). */ export const respondToOfferThunk = createAsyncThunk< RespondToOfferResponse, { deliveryId: string; action: DeliveryAction } >( 'delivery/respondToOffer', async ({ deliveryId, action }, { rejectWithValue }) => { try { return await respondToOffer(deliveryId, action); } catch (error: any) { return rejectWithValue( error.message || 'Failed to respond to delivery offer', ); } }, ); /** * Check for any pending delivery offer (e.g. on app launch / reconnect). */ export const checkPendingOfferThunk = createAsyncThunk( 'delivery/checkPendingOffer', async (_, { rejectWithValue }) => { try { return await getPendingOffer(); } catch (error: any) { return rejectWithValue(error.message || 'Failed to check pending offers'); } }, ); export const changeOrderStatusThunk = createAsyncThunk( 'delivery/changeOrderStatus', async ( { deliveryId, action, proofKey, }: { deliveryId: string; action: string; proofKey?: string }, { rejectWithValue }, ) => { try { return await changeOrderStatus(deliveryId, action, proofKey); } catch (error: any) { return rejectWithValue(error.message || 'Failed to change order status'); } }, );