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.

64 lines (63 loc) 2.67 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.rewardCodeReducer = exports.selectRewardCode = exports.resetRewardCode = exports.claimReward = exports.claimRewardCode = exports.ClaimRewardCodeActionType = void 0; const tslib_1 = require("tslib"); const types_1 = require("@open-tender/types"); const toolkit_1 = require("@reduxjs/toolkit"); const customer_1 = require("./customer"); const notifications_1 = require("./notifications"); const initialState = { error: null, loading: 'idle' }; var ClaimRewardCodeActionType; (function (ClaimRewardCodeActionType) { ClaimRewardCodeActionType["ClaimRewardCode"] = "rewardCode/claimRewardCode"; })(ClaimRewardCodeActionType = exports.ClaimRewardCodeActionType || (exports.ClaimRewardCodeActionType = {})); exports.claimRewardCode = (0, toolkit_1.createAsyncThunk)(ClaimRewardCodeActionType.ClaimRewardCode, ({ rewardCode, callback }, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { try { const api = getState().config.api; const token = (0, customer_1.selectToken)(getState()); if (!token) throw new Error(types_1.MISSING_CUSTOMER); const discount = yield api.postClaimRewardCode(token, rewardCode); dispatch((0, notifications_1.showNotification)('Reward Code Claimed!')); if (callback) callback(); return discount; } catch (err) { const error = err; return (0, customer_1.checkAuth)(error, dispatch, () => rejectWithValue(error)); } })); const rewardCodeSlice = (0, toolkit_1.createSlice)({ name: 'rewardCode', initialState: initialState, reducers: { resetRewardCode: () => initialState, claimReward: state => { state.error = null; state.loading = 'idle'; } }, extraReducers: builder => { builder.addCase(exports.claimRewardCode.pending, state => { state.error = null; state.loading = 'pending'; }); builder.addCase(exports.claimRewardCode.fulfilled, state => { state.error = null; state.loading = 'idle'; }); builder.addCase(exports.claimRewardCode.rejected, (state, action) => { state.error = action.payload; state.loading = 'idle'; }); } }); _a = rewardCodeSlice.actions, exports.claimReward = _a.claimReward, exports.resetRewardCode = _a.resetRewardCode; const selectRewardCode = (state) => state.rewardCode; exports.selectRewardCode = selectRewardCode; exports.rewardCodeReducer = rewardCodeSlice.reducer;