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.

111 lines (110 loc) 5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.customerFcmTokenReducer = exports.selectCustomerFcmToken = exports.resetCustomerFcmToken = exports.addCustomerFcmToken = exports.removeCustomerFcmTokens = exports.fetchCustomerFcmTokens = exports.CustomerFcmTokenActionType = 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 = { error: null, loading: 'idle' }; var CustomerFcmTokenActionType; (function (CustomerFcmTokenActionType) { CustomerFcmTokenActionType["FetchCustomerFcmTokens"] = "customer/fetchCustomerFcmTokens"; CustomerFcmTokenActionType["RemoveCustomerFcmTokens"] = "customer/removeCustomerFcmTokens"; CustomerFcmTokenActionType["AddCustomerFcmToken"] = "customer/addCustomerFcmToken"; })(CustomerFcmTokenActionType = exports.CustomerFcmTokenActionType || (exports.CustomerFcmTokenActionType = {})); exports.fetchCustomerFcmTokens = (0, toolkit_1.createAsyncThunk)(CustomerFcmTokenActionType.FetchCustomerFcmTokens, (_, { 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); return yield api.getCustomerFcmToken(token); } catch (err) { const error = err; return (0, account_1.checkAuth)(error, dispatch, () => rejectWithValue(error)); } })); exports.removeCustomerFcmTokens = (0, toolkit_1.createAsyncThunk)(CustomerFcmTokenActionType.RemoveCustomerFcmTokens, (requestData, { 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 response = yield api.deleteCustomerFcmToken(token); if (requestData.callback) requestData.callback(); return response; } catch (err) { const error = err; return (0, account_1.checkAuth)(error, dispatch, () => rejectWithValue(error)); } })); exports.addCustomerFcmToken = (0, toolkit_1.createAsyncThunk)(CustomerFcmTokenActionType.AddCustomerFcmToken, (requestData, { 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 response = yield api.postCustomerFcmToken(token, requestData.fcmToken); if (requestData.callback) requestData.callback(); return response; } catch (err) { const error = err; return (0, account_1.checkAuth)(error, dispatch, () => rejectWithValue(error)); } })); const customerFcmTokenSlice = (0, toolkit_1.createSlice)({ name: types_1.ReducerType.FcmToken, initialState, reducers: { resetCustomerFcmToken: () => initialState }, extraReducers: builder => { builder .addCase(exports.fetchCustomerFcmTokens.fulfilled, state => { state.loading = 'idle'; state.error = null; }) .addCase(exports.fetchCustomerFcmTokens.pending, state => { state.loading = 'pending'; }) .addCase(exports.fetchCustomerFcmTokens.rejected, (state, action) => { state.error = action.payload; state.loading = 'idle'; }) .addCase(exports.removeCustomerFcmTokens.fulfilled, state => { state.loading = 'idle'; state.error = null; }) .addCase(exports.removeCustomerFcmTokens.pending, state => { state.loading = 'pending'; }) .addCase(exports.removeCustomerFcmTokens.rejected, (state, action) => { state.error = action.payload; state.loading = 'idle'; }) .addCase(exports.addCustomerFcmToken.fulfilled, state => { state.loading = 'idle'; state.error = null; }) .addCase(exports.addCustomerFcmToken.pending, state => { state.loading = 'pending'; }) .addCase(exports.addCustomerFcmToken.rejected, (state, action) => { state.error = action.payload; state.loading = 'idle'; }); } }); exports.resetCustomerFcmToken = customerFcmTokenSlice.actions.resetCustomerFcmToken; const selectCustomerFcmToken = (state) => state.customer.fcmToken; exports.selectCustomerFcmToken = selectCustomerFcmToken; exports.customerFcmTokenReducer = customerFcmTokenSlice.reducer;