@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
JavaScript
;
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;