43 lines
1.1 KiB
TypeScript
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',
|
|
);
|
|
}
|
|
},
|
|
);
|