@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
JavaScript
;
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;