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.

70 lines (69 loc) 3.09 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.customerOrdersReducer = exports.selectHasOrders = exports.selectCustomerOrders = exports.setCustomerOrders = exports.resetCustomerOrdersError = exports.resetCustomerOrders = exports.fetchCustomerOrders = exports.CustomerOrdersActionType = void 0; const tslib_1 = require("tslib"); const toolkit_1 = require("@reduxjs/toolkit"); const types_1 = require("../types"); const types_2 = require("@open-tender/types"); const account_1 = require("./account"); const initialState = { entities: [], error: null, loading: 'idle', lookup: {} }; var CustomerOrdersActionType; (function (CustomerOrdersActionType) { CustomerOrdersActionType["FetchCustomerOrders"] = "customer/fetchCustomerOrders"; })(CustomerOrdersActionType = exports.CustomerOrdersActionType || (exports.CustomerOrdersActionType = {})); exports.fetchCustomerOrders = (0, toolkit_1.createAsyncThunk)(CustomerOrdersActionType.FetchCustomerOrders, (limit, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { try { const api = getState().config.api; const token = (0, account_1.selectToken)(getState()); if (!token) throw new Error(types_2.MISSING_CUSTOMER); const { data: orders } = yield api.getCustomerOrders(token, limit); return orders.filter((i) => i.cart.length > 0); } catch (err) { const error = err; return (0, account_1.checkAuth)(error, dispatch, () => rejectWithValue(error)); } })); const customerOrdersSlice = (0, toolkit_1.createSlice)({ name: types_1.ReducerType.Orders, initialState, reducers: { resetCustomerOrders: () => initialState, resetCustomerOrdersError: state => { state.error = null; state.loading = 'idle'; }, setCustomerOrders: (state, action) => { state.entities = action.payload; state.error = null; } }, extraReducers: builder => { builder .addCase(exports.fetchCustomerOrders.fulfilled, (state, action) => { state.entities = action.payload; state.loading = 'idle'; state.error = null; }) .addCase(exports.fetchCustomerOrders.pending, state => { state.loading = 'pending'; }) .addCase(exports.fetchCustomerOrders.rejected, (state, action) => { state.error = action.payload; state.loading = 'idle'; }); } }); _a = customerOrdersSlice.actions, exports.resetCustomerOrders = _a.resetCustomerOrders, exports.resetCustomerOrdersError = _a.resetCustomerOrdersError, exports.setCustomerOrders = _a.setCustomerOrders; const selectCustomerOrders = (state) => state.customer.orders; exports.selectCustomerOrders = selectCustomerOrders; const selectHasOrders = (state) => state.customer.orders.entities.length > 0; exports.selectHasOrders = selectHasOrders; exports.customerOrdersReducer = customerOrdersSlice.reducer;