UNPKG

@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
"use strict"; 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;