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.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.donationsReducer = exports.selectDonation = exports.resetDonation = exports.purchaseDonation = exports.DonationActionType = void 0; const tslib_1 = require("tslib"); const toolkit_1 = require("@reduxjs/toolkit"); const types_1 = require("./types"); const initialState = { donation: null, success: false, error: null, loading: 'idle' }; var DonationActionType; (function (DonationActionType) { DonationActionType["PurchaseDonation"] = "donations/purchaseDonation"; })(DonationActionType = exports.DonationActionType || (exports.DonationActionType = {})); exports.purchaseDonation = (0, toolkit_1.createAsyncThunk)(DonationActionType.PurchaseDonation, (requestData, { getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const { api } = getState().config; if (!api) return; try { const donation = yield api.postPurchaseDonation(requestData.data); if (requestData.callback) requestData.callback(); return donation; } catch (err) { return rejectWithValue(err); } })); const donationsSlice = (0, toolkit_1.createSlice)({ name: types_1.ReducerType.Donations, initialState, reducers: { resetDonation: () => initialState }, extraReducers: builder => { builder .addCase(exports.purchaseDonation.fulfilled, (state, action) => { state.donation = action.payload; state.success = true; state.loading = 'idle'; state.error = null; }) .addCase(exports.purchaseDonation.pending, state => { state.loading = 'pending'; }) .addCase(exports.purchaseDonation.rejected, (state, action) => { state.error = action.payload; state.loading = 'idle'; }); } }); exports.resetDonation = donationsSlice.actions.resetDonation; const selectDonation = (state) => state.donations; exports.selectDonation = selectDonation; exports.donationsReducer = donationsSlice.reducer;