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.

106 lines (105 loc) 4.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.orderRatingReducer = exports.selectOrderRating = exports.resetOrderRating = exports.unsubscribeOrderRating = exports.updateOrderRating = exports.fetchOrderRating = exports.OrderRatingActionType = void 0; const tslib_1 = require("tslib"); const toolkit_1 = require("@reduxjs/toolkit"); const types_1 = require("./types"); const initialState = { orderRating: null, loading: 'idle', error: null }; var OrderRatingActionType; (function (OrderRatingActionType) { OrderRatingActionType["FetchOrderRating"] = "orderRating/fetchOrderRating"; OrderRatingActionType["UpdateOrderRating"] = "orderRating/updateOrderRating"; OrderRatingActionType["UnsubscribeOrderRating"] = "orderRating/unsubscribeOrderRating"; })(OrderRatingActionType = exports.OrderRatingActionType || (exports.OrderRatingActionType = {})); exports.fetchOrderRating = (0, toolkit_1.createAsyncThunk)(OrderRatingActionType.FetchOrderRating, (orderUuid, { getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const { api } = getState().config; if (!api) return; try { return yield api.getOrderRating(orderUuid); } catch (err) { return rejectWithValue(err); } })); exports.updateOrderRating = (0, toolkit_1.createAsyncThunk)(OrderRatingActionType.UpdateOrderRating, ({ orderUuid, data }, { getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const { api } = getState().config; if (!api) return; try { const response = yield api.putOrderRating(orderUuid, data); return response; } catch (err) { return rejectWithValue(err); } })); exports.unsubscribeOrderRating = (0, toolkit_1.createAsyncThunk)(OrderRatingActionType.UnsubscribeOrderRating, (orderUuid, { getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const { api } = getState().config; if (!api) return; try { yield api.postOrderRatingUnsubscribe(orderUuid); return; } catch (err) { return rejectWithValue(err); } })); const orderRatingSlice = (0, toolkit_1.createSlice)({ name: types_1.ReducerType.OrderRating, initialState, reducers: { resetOrderRating: () => initialState }, extraReducers: builder => { builder .addCase(exports.fetchOrderRating.fulfilled, (state, action) => { state.orderRating = action.payload; state.loading = 'idle'; state.error = null; }) .addCase(exports.fetchOrderRating.pending, state => { state.loading = 'pending'; }) .addCase(exports.fetchOrderRating.rejected, (state, action) => { state.error = action.payload; state.loading = 'idle'; }) .addCase(exports.updateOrderRating.fulfilled, (state, action) => { state.orderRating = action.payload; state.loading = 'idle'; state.error = null; }) .addCase(exports.updateOrderRating.pending, state => { state.loading = 'pending'; }) .addCase(exports.updateOrderRating.rejected, (state, action) => { state.error = action.payload; state.loading = 'idle'; }) .addCase(exports.unsubscribeOrderRating.fulfilled, state => { state.orderRating = null; state.loading = 'idle'; state.error = null; }) .addCase(exports.unsubscribeOrderRating.pending, state => { state.loading = 'pending'; }) .addCase(exports.unsubscribeOrderRating.rejected, (state, action) => { state.error = action.payload; state.loading = 'idle'; }); } }); exports.resetOrderRating = orderRatingSlice.actions.resetOrderRating; const selectOrderRating = (state) => { const { orderRating, loading, error } = state.orderRating; return { orderRating, loading, error }; }; exports.selectOrderRating = selectOrderRating; exports.orderRatingReducer = orderRatingSlice.reducer;