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.

60 lines (59 loc) 2.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.menuDisplayReducer = exports.selectMenuDisplay = exports.resetMenuDisplay = exports.fetchMenuDisplay = exports.MenuDisplayActionType = void 0; const tslib_1 = require("tslib"); const toolkit_1 = require("@reduxjs/toolkit"); const types_1 = require("./types"); const initialState = { loading: 'idle', error: null, categories: [] }; var MenuDisplayActionType; (function (MenuDisplayActionType) { MenuDisplayActionType["FetchMenuDisplay"] = "menuDisplay/fetchMenuDisplay"; })(MenuDisplayActionType = exports.MenuDisplayActionType || (exports.MenuDisplayActionType = {})); exports.fetchMenuDisplay = (0, toolkit_1.createAsyncThunk)(MenuDisplayActionType.FetchMenuDisplay, (requestData, { getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const { api } = getState().config; if (!api) return; try { const { menu: categories } = yield api.getMenuDisplay(requestData.revenueCenterId, requestData.serviceType, requestData.weekday, requestData.minutes); return categories; } catch (err) { return rejectWithValue(err); } })); const menuDisplaySlice = (0, toolkit_1.createSlice)({ name: types_1.ReducerType.MenuDisplay, initialState, reducers: { resetMenuDisplay: () => initialState, setMenuDisplay: (state, action) => { state.categories = action.payload; } }, extraReducers: builder => { builder .addCase(exports.fetchMenuDisplay.fulfilled, (state, action) => { state.categories = action.payload; state.loading = 'idle'; state.error = null; }) .addCase(exports.fetchMenuDisplay.pending, state => { state.loading = 'pending'; }) .addCase(exports.fetchMenuDisplay.rejected, (state, action) => { state.loading = 'idle'; state.error = action.payload; }); } }); exports.resetMenuDisplay = menuDisplaySlice.actions.resetMenuDisplay; const selectMenuDisplay = (state) => { const { categories, loading, error } = state.menuDisplay; return { categories, loading, error }; }; exports.selectMenuDisplay = selectMenuDisplay; exports.menuDisplayReducer = menuDisplaySlice.reducer;