43 lines
1.1 KiB
TypeScript

import { createAsyncThunk } from '@reduxjs/toolkit';
import {
DeliveryAction,
RespondToOfferResponse,
PendingOfferResponse,
} from '@interfaces';
import * as deliveryApi from '../../../api/deliveryApi';
/**
* 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 deliveryApi.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<PendingOfferResponse>(
'delivery/checkPendingOffer',
async (_, { rejectWithValue }) => {
try {
return await deliveryApi.getPendingOffer();
} catch (error: any) {
return rejectWithValue(
error.message || 'Failed to check pending offers',
);
}
},
);