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