@open-tender/cloud
Version:
A library of hooks, reducers, utility functions, and types for use with Open Tender applications that utilize our cloud-based Order API.
78 lines (77 loc) • 3.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.orderFulfillmentReducer = exports.selectOrderFulfillment = exports.resetOrderFulfillment = exports.updateOrderFulfillment = exports.fetchOrderFulfillment = exports.OrderFulfillmentActionType = void 0;
const tslib_1 = require("tslib");
const toolkit_1 = require("@reduxjs/toolkit");
const types_1 = require("./types");
const initialState = {
orderFulfillment: null,
loading: 'idle',
error: null
};
var OrderFulfillmentActionType;
(function (OrderFulfillmentActionType) {
OrderFulfillmentActionType["FetchOrderFulfillment"] = "orderFulfillment/fetchOrderFulfillment";
OrderFulfillmentActionType["UpdateOrderFulfillment"] = "orderFulfillment/updateOrderFulfillment";
})(OrderFulfillmentActionType = exports.OrderFulfillmentActionType || (exports.OrderFulfillmentActionType = {}));
exports.fetchOrderFulfillment = (0, toolkit_1.createAsyncThunk)(OrderFulfillmentActionType.FetchOrderFulfillment, (orderId, { getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const { api } = getState().config;
if (!api)
return;
try {
const response = yield api.getOrderFulfillment(orderId);
return response;
}
catch (err) {
return rejectWithValue(err);
}
}));
exports.updateOrderFulfillment = (0, toolkit_1.createAsyncThunk)(OrderFulfillmentActionType.UpdateOrderFulfillment, ({ orderId, data }, { getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const { api } = getState().config;
if (!api)
return;
try {
return yield api.putOrderFulfillment(orderId, data);
}
catch (err) {
return rejectWithValue(err);
}
}));
const orderFulfillmentSlice = (0, toolkit_1.createSlice)({
name: types_1.ReducerType.OrderFulfillment,
initialState,
reducers: {
resetOrderFulfillment: () => initialState
},
extraReducers: builder => {
builder
.addCase(exports.fetchOrderFulfillment.fulfilled, (state, action) => {
state.orderFulfillment = action.payload;
state.loading = 'idle';
state.error = null;
})
.addCase(exports.fetchOrderFulfillment.pending, state => {
state.loading = 'pending';
})
.addCase(exports.fetchOrderFulfillment.rejected, (state, action) => {
state.error = action.payload;
state.loading = 'idle';
})
.addCase(exports.updateOrderFulfillment.fulfilled, (state, action) => {
state.orderFulfillment = action.payload;
state.loading = 'idle';
state.error = null;
})
.addCase(exports.updateOrderFulfillment.pending, state => {
state.loading = 'pending';
})
.addCase(exports.updateOrderFulfillment.rejected, (state, action) => {
state.error = action.payload;
state.loading = 'idle';
});
}
});
exports.resetOrderFulfillment = orderFulfillmentSlice.actions.resetOrderFulfillment;
const selectOrderFulfillment = (state) => state.orderFulfillment;
exports.selectOrderFulfillment = selectOrderFulfillment;
exports.orderFulfillmentReducer = orderFulfillmentSlice.reducer;