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.

66 lines (65 loc) 2.46 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.quoteReducer = exports.selectQuote = exports.setQuote = exports.resetQuoteError = exports.resetQuote = exports.fetchQuote = exports.QuoteActionType = void 0; const tslib_1 = require("tslib"); const toolkit_1 = require("@reduxjs/toolkit"); const customer_1 = require("./customer"); const types_1 = require("./types"); const initialState = { entity: null, error: null, loading: 'idle' }; var QuoteActionType; (function (QuoteActionType) { QuoteActionType["FetchQuote"] = "customer/fetchQuote"; })(QuoteActionType = exports.QuoteActionType || (exports.QuoteActionType = {})); exports.fetchQuote = (0, toolkit_1.createAsyncThunk)(QuoteActionType.FetchQuote, (orderUuid, { getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { try { const api = getState().config.api; const token = (0, customer_1.selectToken)(getState()); return yield api.getQuote(token, orderUuid); } catch (err) { return rejectWithValue(err); } })); const quoteSlice = (0, toolkit_1.createSlice)({ name: types_1.ReducerType.Quote, initialState, reducers: { resetQuote: () => initialState, resetQuoteError: state => { state.error = null; state.loading = 'idle'; }, setQuote: (state, action) => { state.entity = action.payload; state.error = null; } }, extraReducers: builder => { builder .addCase(exports.fetchQuote.fulfilled, (state, action) => { state.entity = action.payload; state.loading = 'idle'; state.error = null; }) .addCase(exports.fetchQuote.pending, state => { state.loading = 'pending'; }) .addCase(exports.fetchQuote.rejected, (state, action) => { state.error = action.payload; state.loading = 'idle'; }); } }); _a = quoteSlice.actions, exports.resetQuote = _a.resetQuote, exports.resetQuoteError = _a.resetQuoteError, exports.setQuote = _a.setQuote; exports.selectQuote = (0, toolkit_1.createSelector)((state) => { const { entity: order, loading, error } = state.quote; return { order, loading, error }; }, ({ order, loading, error }) => { return { order, loading, error }; }); exports.quoteReducer = quoteSlice.reducer;