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.

58 lines (57 loc) 2.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.customerQRCodeReducer = exports.selectCustomerQRCode = exports.resetCustomerQRCode = exports.fetchCustomerQRCode = exports.CustomerQRCodeActionType = 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 = { qrcode: null, error: null, loading: 'idle' }; var CustomerQRCodeActionType; (function (CustomerQRCodeActionType) { CustomerQRCodeActionType["FetchCustomerQRCode"] = "customer/fetchCustomerQRCode"; })(CustomerQRCodeActionType = exports.CustomerQRCodeActionType || (exports.CustomerQRCodeActionType = {})); exports.fetchCustomerQRCode = (0, toolkit_1.createAsyncThunk)(CustomerQRCodeActionType.FetchCustomerQRCode, (_, { 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 { qr_code_url } = yield api.getCustomerQRCode(token); return qr_code_url; } catch (err) { const error = err; return (0, account_1.checkAuth)(error, dispatch, () => rejectWithValue(error)); } })); const customerQRCodeSlice = (0, toolkit_1.createSlice)({ name: types_1.ReducerType.QRCode, initialState, reducers: { resetCustomerQRCode: () => initialState }, extraReducers: builder => { builder .addCase(exports.fetchCustomerQRCode.fulfilled, (state, action) => { state.qrcode = action.payload; state.loading = 'idle'; state.error = null; }) .addCase(exports.fetchCustomerQRCode.pending, state => { state.loading = 'pending'; }) .addCase(exports.fetchCustomerQRCode.rejected, (state, action) => { state.error = action.payload; state.loading = 'idle'; }); } }); exports.resetCustomerQRCode = customerQRCodeSlice.actions.resetCustomerQRCode; const selectCustomerQRCode = (state) => state.customer.qrcode; exports.selectCustomerQRCode = selectCustomerQRCode; exports.customerQRCodeReducer = customerQRCodeSlice.reducer;