@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.
79 lines (78 loc) • 2.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.unsubscribeReducer = exports.selectUnsubscribe = exports.resetUnsubscribe = exports.unsubscribeByKey = exports.unsubscribe = exports.UnsubscribeActionType = void 0;
const tslib_1 = require("tslib");
const toolkit_1 = require("@reduxjs/toolkit");
const types_1 = require("./types");
const initialState = {
loading: 'idle',
error: null,
success: false
};
var UnsubscribeActionType;
(function (UnsubscribeActionType) {
UnsubscribeActionType["Unsubscribe"] = "unsubscribe/unsubscribe";
UnsubscribeActionType["UnsubscribeByKey"] = "unsubscribe/unsubscribeByKey";
})(UnsubscribeActionType = exports.UnsubscribeActionType || (exports.UnsubscribeActionType = {}));
exports.unsubscribe = (0, toolkit_1.createAsyncThunk)(UnsubscribeActionType.Unsubscribe, ({ customer_id, campaign_id }, { getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const { api } = getState().config;
if (!api)
return;
try {
yield api.postUnsubscribe(customer_id, campaign_id);
return;
}
catch (err) {
return rejectWithValue(err);
}
}));
exports.unsubscribeByKey = (0, toolkit_1.createAsyncThunk)(UnsubscribeActionType.UnsubscribeByKey, ({ key }, { getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const { api } = getState().config;
if (!api)
return;
try {
yield api.postUnsubscribeByKey(key);
return;
}
catch (err) {
return rejectWithValue(err);
}
}));
const unsubscribeSlice = (0, toolkit_1.createSlice)({
name: types_1.ReducerType.Unsubscribe,
initialState,
reducers: {
resetUnsubscribe: () => initialState
},
extraReducers: builder => {
builder
.addCase(exports.unsubscribe.fulfilled, state => {
state.success = true;
state.loading = 'idle';
state.error = null;
})
.addCase(exports.unsubscribe.pending, state => {
state.loading = 'pending';
})
.addCase(exports.unsubscribe.rejected, (state, action) => {
state.loading = 'idle';
state.error = action.payload;
})
.addCase(exports.unsubscribeByKey.fulfilled, state => {
state.success = true;
state.loading = 'idle';
state.error = null;
})
.addCase(exports.unsubscribeByKey.pending, state => {
state.loading = 'pending';
})
.addCase(exports.unsubscribeByKey.rejected, (state, action) => {
state.loading = 'idle';
state.error = action.payload;
});
}
});
exports.resetUnsubscribe = unsubscribeSlice.actions.resetUnsubscribe;
const selectUnsubscribe = (state) => state.Unsubscribe;
exports.selectUnsubscribe = selectUnsubscribe;
exports.unsubscribeReducer = unsubscribeSlice.reducer;