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.

52 lines (51 loc) 1.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.termsReducer = exports.selectTerms = exports.resetTerms = exports.fetchTerms = void 0; const tslib_1 = require("tslib"); const toolkit_1 = require("@reduxjs/toolkit"); const initialState = { terms: null, loading: 'idle', error: null }; exports.fetchTerms = (0, toolkit_1.createAsyncThunk)('terms/getTerms', (_, { getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const { api } = getState().config; if (!api) return; try { const api = getState().config.api; if (!api) return null; return yield api.getTerms(); } catch (err) { const error = err; return rejectWithValue(error); } })); const termsSlice = (0, toolkit_1.createSlice)({ name: 'terms', initialState: initialState, reducers: { resetTerms: () => initialState }, extraReducers: builder => { builder .addCase(exports.fetchTerms.fulfilled, (state, action) => { state.terms = action.payload; state.loading = 'idle'; state.error = null; }) .addCase(exports.fetchTerms.pending, state => { state.loading = 'pending'; }) .addCase(exports.fetchTerms.rejected, (state, action) => { state.loading = 'idle'; state.error = action.payload; }); } }); exports.resetTerms = termsSlice.actions.resetTerms; const selectTerms = (state) => state.terms; exports.selectTerms = selectTerms; exports.termsReducer = termsSlice.reducer;