@open-tender/cloud 0.1.35 → 0.1.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Dispatch } from '@reduxjs/toolkit';
|
|
2
|
-
import { CheckoutCheck, CheckoutForm, Order, OrderCreate,
|
|
2
|
+
import { CheckoutCheck, CheckoutErrorMessages, CheckoutForm, Order, OrderCreate, RequestStatus } from '@open-tender/types';
|
|
3
3
|
import { AppState } from '../app';
|
|
4
4
|
export interface CheckoutState {
|
|
5
5
|
check: CheckoutCheck | null;
|
|
@@ -7,7 +7,7 @@ export interface CheckoutState {
|
|
|
7
7
|
submitting: boolean;
|
|
8
8
|
isGuest: boolean;
|
|
9
9
|
completedOrder: Order | null;
|
|
10
|
-
errors:
|
|
10
|
+
errors: CheckoutErrorMessages;
|
|
11
11
|
loading: RequestStatus;
|
|
12
12
|
}
|
|
13
13
|
export declare enum CheckoutActionType {
|
|
@@ -21,7 +21,7 @@ export declare const validateOrder: import("@reduxjs/toolkit").AsyncThunk<{
|
|
|
21
21
|
errors: any;
|
|
22
22
|
}, OrderCreate | null | undefined, {
|
|
23
23
|
state: AppState;
|
|
24
|
-
rejectValue:
|
|
24
|
+
rejectValue: CheckoutErrorMessages;
|
|
25
25
|
dispatch?: Dispatch<import("redux").AnyAction> | undefined;
|
|
26
26
|
extra?: unknown;
|
|
27
27
|
serializedErrorType?: unknown;
|
|
@@ -31,7 +31,7 @@ export declare const validateOrder: import("@reduxjs/toolkit").AsyncThunk<{
|
|
|
31
31
|
}>;
|
|
32
32
|
export declare const submitOrder: import("@reduxjs/toolkit").AsyncThunk<Order, void, {
|
|
33
33
|
state: AppState;
|
|
34
|
-
rejectValue:
|
|
34
|
+
rejectValue: CheckoutErrorMessages;
|
|
35
35
|
dispatch?: Dispatch<import("redux").AnyAction> | undefined;
|
|
36
36
|
extra?: unknown;
|
|
37
37
|
serializedErrorType?: unknown;
|
|
@@ -41,7 +41,7 @@ export declare const submitOrder: import("@reduxjs/toolkit").AsyncThunk<Order, v
|
|
|
41
41
|
}>;
|
|
42
42
|
export declare const submitOrderPay: import("@reduxjs/toolkit").AsyncThunk<Order | null, boolean | undefined, {
|
|
43
43
|
state: AppState;
|
|
44
|
-
rejectValue:
|
|
44
|
+
rejectValue: Record<string, unknown>;
|
|
45
45
|
dispatch?: Dispatch<import("redux").AnyAction> | undefined;
|
|
46
46
|
extra?: unknown;
|
|
47
47
|
serializedErrorType?: unknown;
|
|
@@ -74,13 +74,13 @@ const makeRefreshArgs = (order) => ({
|
|
|
74
74
|
serviceType: order.service_type,
|
|
75
75
|
requestedAt: order.requested_at
|
|
76
76
|
});
|
|
77
|
-
const handleOrderErrors = (err, preparedOrder, dispatch
|
|
78
|
-
const errors = (0, utils_1.
|
|
77
|
+
const handleOrderErrors = (err, preparedOrder, dispatch) => {
|
|
78
|
+
const errors = (0, utils_1.handleCheckoutError)(err);
|
|
79
79
|
const keys = Object.keys(errors);
|
|
80
80
|
const args = makeRefreshArgs(preparedOrder);
|
|
81
81
|
if ((0, utils_1.contains)(keys, refreshKeys)) {
|
|
82
82
|
dispatch((0, order_1.refreshRevenueCenter)(args));
|
|
83
|
-
return
|
|
83
|
+
return {};
|
|
84
84
|
}
|
|
85
85
|
else if ((0, utils_1.contains)(keys, ['cart'])) {
|
|
86
86
|
const cartError = errors.cart;
|
|
@@ -93,24 +93,12 @@ const handleOrderErrors = (err, preparedOrder, dispatch, rejectWithValue) => {
|
|
|
93
93
|
dispatch((0, order_1.setAlert)(alert));
|
|
94
94
|
}, 500);
|
|
95
95
|
}
|
|
96
|
-
return
|
|
96
|
+
return {};
|
|
97
97
|
}
|
|
98
98
|
else {
|
|
99
|
-
return
|
|
99
|
+
return errors;
|
|
100
100
|
}
|
|
101
101
|
};
|
|
102
|
-
const makeCheckError = (params) => {
|
|
103
|
-
if (!params || (0, utils_1.isEmpty)(params))
|
|
104
|
-
return null;
|
|
105
|
-
const error = {
|
|
106
|
-
code: 'CHECK_ERRORS',
|
|
107
|
-
detail: 'The parameters of your request were invalid.',
|
|
108
|
-
status: 400,
|
|
109
|
-
title: 'Checkout Errors',
|
|
110
|
-
params
|
|
111
|
-
};
|
|
112
|
-
return error;
|
|
113
|
-
};
|
|
114
102
|
exports.validateOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.FetchCheckout, (order, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
115
103
|
try {
|
|
116
104
|
const { api } = getState().config;
|
|
@@ -119,12 +107,12 @@ exports.validateOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Fetch
|
|
|
119
107
|
order = assembleOrder(getState());
|
|
120
108
|
const errors = {};
|
|
121
109
|
if (!order) {
|
|
122
|
-
errors
|
|
110
|
+
errors.form = 'Empty cart. Please return to menu.';
|
|
123
111
|
return { check: null, errors };
|
|
124
112
|
}
|
|
125
113
|
const check = yield api.postOrderValidate(order, token);
|
|
126
|
-
const checkError = makeCheckError(check.errors);
|
|
127
|
-
const errMessages = (0, utils_1.
|
|
114
|
+
const checkError = (0, utils_1.makeCheckError)(check.errors);
|
|
115
|
+
const errMessages = (0, utils_1.handleCheckoutError)(checkError);
|
|
128
116
|
const keys = Object.keys(errMessages);
|
|
129
117
|
const args = makeRefreshArgs(order);
|
|
130
118
|
if ((0, utils_1.contains)(keys, refreshKeys)) {
|
|
@@ -146,7 +134,8 @@ exports.validateOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Fetch
|
|
|
146
134
|
return { check, errors };
|
|
147
135
|
}
|
|
148
136
|
catch (err) {
|
|
149
|
-
|
|
137
|
+
const errors = (0, utils_1.makeFormErrors)(err);
|
|
138
|
+
return rejectWithValue(errors);
|
|
150
139
|
}
|
|
151
140
|
}));
|
|
152
141
|
exports.submitOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.SubmitOrder, (_, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -173,7 +162,8 @@ exports.submitOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.SubmitO
|
|
|
173
162
|
}
|
|
174
163
|
catch (err) {
|
|
175
164
|
dispatch((0, order_1.setAlert)({ type: 'close' }));
|
|
176
|
-
handleOrderErrors(err, preparedOrder, dispatch
|
|
165
|
+
const errors = handleOrderErrors(err, preparedOrder, dispatch);
|
|
166
|
+
rejectWithValue(errors);
|
|
177
167
|
}
|
|
178
168
|
}));
|
|
179
169
|
exports.submitOrderPay = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.SubmitOrderPay, (showAlert = false, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -203,7 +193,8 @@ exports.submitOrderPay = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Subm
|
|
|
203
193
|
}
|
|
204
194
|
catch (err) {
|
|
205
195
|
dispatch((0, order_1.setAlert)({ type: 'close' }));
|
|
206
|
-
handleOrderErrors(err, preparedOrder, dispatch
|
|
196
|
+
const errors = handleOrderErrors(err, preparedOrder, dispatch);
|
|
197
|
+
rejectWithValue(errors);
|
|
207
198
|
}
|
|
208
199
|
}));
|
|
209
200
|
const checkoutSlice = (0, toolkit_1.createSlice)({
|
|
@@ -271,9 +262,7 @@ const checkoutSlice = (0, toolkit_1.createSlice)({
|
|
|
271
262
|
state.loading = 'pending';
|
|
272
263
|
})
|
|
273
264
|
.addCase(exports.validateOrder.rejected, (state, action) => {
|
|
274
|
-
state.errors = {
|
|
275
|
-
form: action.payload
|
|
276
|
-
};
|
|
265
|
+
state.errors = action.payload || {};
|
|
277
266
|
state.loading = 'idle';
|
|
278
267
|
})
|
|
279
268
|
.addCase(exports.submitOrder.fulfilled, (_, action) => {
|
|
@@ -285,7 +274,7 @@ const checkoutSlice = (0, toolkit_1.createSlice)({
|
|
|
285
274
|
.addCase(exports.submitOrder.rejected, (state, action) => {
|
|
286
275
|
state.loading = 'idle';
|
|
287
276
|
state.submitting = false;
|
|
288
|
-
state.errors = action.payload;
|
|
277
|
+
state.errors = action.payload || {};
|
|
289
278
|
});
|
|
290
279
|
}
|
|
291
280
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Dispatch } from '@reduxjs/toolkit';
|
|
2
|
-
import { CheckoutCheck, CheckoutForm, Order, OrderCreate,
|
|
2
|
+
import { CheckoutCheck, CheckoutErrorMessages, CheckoutForm, Order, OrderCreate, RequestStatus } from '@open-tender/types';
|
|
3
3
|
import { AppState } from '../app';
|
|
4
4
|
export interface CheckoutState {
|
|
5
5
|
check: CheckoutCheck | null;
|
|
@@ -7,7 +7,7 @@ export interface CheckoutState {
|
|
|
7
7
|
submitting: boolean;
|
|
8
8
|
isGuest: boolean;
|
|
9
9
|
completedOrder: Order | null;
|
|
10
|
-
errors:
|
|
10
|
+
errors: CheckoutErrorMessages;
|
|
11
11
|
loading: RequestStatus;
|
|
12
12
|
}
|
|
13
13
|
export declare enum CheckoutActionType {
|
|
@@ -21,7 +21,7 @@ export declare const validateOrder: import("@reduxjs/toolkit").AsyncThunk<{
|
|
|
21
21
|
errors: any;
|
|
22
22
|
}, OrderCreate | null | undefined, {
|
|
23
23
|
state: AppState;
|
|
24
|
-
rejectValue:
|
|
24
|
+
rejectValue: CheckoutErrorMessages;
|
|
25
25
|
dispatch?: Dispatch<import("redux").AnyAction> | undefined;
|
|
26
26
|
extra?: unknown;
|
|
27
27
|
serializedErrorType?: unknown;
|
|
@@ -31,7 +31,7 @@ export declare const validateOrder: import("@reduxjs/toolkit").AsyncThunk<{
|
|
|
31
31
|
}>;
|
|
32
32
|
export declare const submitOrder: import("@reduxjs/toolkit").AsyncThunk<Order, void, {
|
|
33
33
|
state: AppState;
|
|
34
|
-
rejectValue:
|
|
34
|
+
rejectValue: CheckoutErrorMessages;
|
|
35
35
|
dispatch?: Dispatch<import("redux").AnyAction> | undefined;
|
|
36
36
|
extra?: unknown;
|
|
37
37
|
serializedErrorType?: unknown;
|
|
@@ -41,7 +41,7 @@ export declare const submitOrder: import("@reduxjs/toolkit").AsyncThunk<Order, v
|
|
|
41
41
|
}>;
|
|
42
42
|
export declare const submitOrderPay: import("@reduxjs/toolkit").AsyncThunk<Order | null, boolean | undefined, {
|
|
43
43
|
state: AppState;
|
|
44
|
-
rejectValue:
|
|
44
|
+
rejectValue: Record<string, unknown>;
|
|
45
45
|
dispatch?: Dispatch<import("redux").AnyAction> | undefined;
|
|
46
46
|
extra?: unknown;
|
|
47
47
|
serializedErrorType?: unknown;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
|
|
3
|
-
import { contains,
|
|
3
|
+
import { contains, handleCheckoutError, isEmpty, isString, makeCheckError, makeFormErrors, prepareOrder } from '@open-tender/utils';
|
|
4
4
|
import { ReducerType } from './types';
|
|
5
5
|
import { loginCustomer, selectToken } from './customer';
|
|
6
6
|
import { fetchMenu } from './menu';
|
|
@@ -70,13 +70,13 @@ const makeRefreshArgs = (order) => ({
|
|
|
70
70
|
serviceType: order.service_type,
|
|
71
71
|
requestedAt: order.requested_at
|
|
72
72
|
});
|
|
73
|
-
const handleOrderErrors = (err, preparedOrder, dispatch
|
|
74
|
-
const errors =
|
|
73
|
+
const handleOrderErrors = (err, preparedOrder, dispatch) => {
|
|
74
|
+
const errors = handleCheckoutError(err);
|
|
75
75
|
const keys = Object.keys(errors);
|
|
76
76
|
const args = makeRefreshArgs(preparedOrder);
|
|
77
77
|
if (contains(keys, refreshKeys)) {
|
|
78
78
|
dispatch(refreshRevenueCenter(args));
|
|
79
|
-
return
|
|
79
|
+
return {};
|
|
80
80
|
}
|
|
81
81
|
else if (contains(keys, ['cart'])) {
|
|
82
82
|
const cartError = errors.cart;
|
|
@@ -89,24 +89,12 @@ const handleOrderErrors = (err, preparedOrder, dispatch, rejectWithValue) => {
|
|
|
89
89
|
dispatch(setAlert(alert));
|
|
90
90
|
}, 500);
|
|
91
91
|
}
|
|
92
|
-
return
|
|
92
|
+
return {};
|
|
93
93
|
}
|
|
94
94
|
else {
|
|
95
|
-
return
|
|
95
|
+
return errors;
|
|
96
96
|
}
|
|
97
97
|
};
|
|
98
|
-
const makeCheckError = (params) => {
|
|
99
|
-
if (!params || isEmpty(params))
|
|
100
|
-
return null;
|
|
101
|
-
const error = {
|
|
102
|
-
code: 'CHECK_ERRORS',
|
|
103
|
-
detail: 'The parameters of your request were invalid.',
|
|
104
|
-
status: 400,
|
|
105
|
-
title: 'Checkout Errors',
|
|
106
|
-
params
|
|
107
|
-
};
|
|
108
|
-
return error;
|
|
109
|
-
};
|
|
110
98
|
export const validateOrder = createAsyncThunk(CheckoutActionType.FetchCheckout, (order, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
111
99
|
try {
|
|
112
100
|
const { api } = getState().config;
|
|
@@ -115,12 +103,12 @@ export const validateOrder = createAsyncThunk(CheckoutActionType.FetchCheckout,
|
|
|
115
103
|
order = assembleOrder(getState());
|
|
116
104
|
const errors = {};
|
|
117
105
|
if (!order) {
|
|
118
|
-
errors
|
|
106
|
+
errors.form = 'Empty cart. Please return to menu.';
|
|
119
107
|
return { check: null, errors };
|
|
120
108
|
}
|
|
121
109
|
const check = yield api.postOrderValidate(order, token);
|
|
122
110
|
const checkError = makeCheckError(check.errors);
|
|
123
|
-
const errMessages =
|
|
111
|
+
const errMessages = handleCheckoutError(checkError);
|
|
124
112
|
const keys = Object.keys(errMessages);
|
|
125
113
|
const args = makeRefreshArgs(order);
|
|
126
114
|
if (contains(keys, refreshKeys)) {
|
|
@@ -142,7 +130,8 @@ export const validateOrder = createAsyncThunk(CheckoutActionType.FetchCheckout,
|
|
|
142
130
|
return { check, errors };
|
|
143
131
|
}
|
|
144
132
|
catch (err) {
|
|
145
|
-
|
|
133
|
+
const errors = makeFormErrors(err);
|
|
134
|
+
return rejectWithValue(errors);
|
|
146
135
|
}
|
|
147
136
|
}));
|
|
148
137
|
export const submitOrder = createAsyncThunk(CheckoutActionType.SubmitOrder, (_, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -169,7 +158,8 @@ export const submitOrder = createAsyncThunk(CheckoutActionType.SubmitOrder, (_,
|
|
|
169
158
|
}
|
|
170
159
|
catch (err) {
|
|
171
160
|
dispatch(setAlert({ type: 'close' }));
|
|
172
|
-
handleOrderErrors(err, preparedOrder, dispatch
|
|
161
|
+
const errors = handleOrderErrors(err, preparedOrder, dispatch);
|
|
162
|
+
rejectWithValue(errors);
|
|
173
163
|
}
|
|
174
164
|
}));
|
|
175
165
|
export const submitOrderPay = createAsyncThunk(CheckoutActionType.SubmitOrderPay, (showAlert = false, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -199,7 +189,8 @@ export const submitOrderPay = createAsyncThunk(CheckoutActionType.SubmitOrderPay
|
|
|
199
189
|
}
|
|
200
190
|
catch (err) {
|
|
201
191
|
dispatch(setAlert({ type: 'close' }));
|
|
202
|
-
handleOrderErrors(err, preparedOrder, dispatch
|
|
192
|
+
const errors = handleOrderErrors(err, preparedOrder, dispatch);
|
|
193
|
+
rejectWithValue(errors);
|
|
203
194
|
}
|
|
204
195
|
}));
|
|
205
196
|
const checkoutSlice = createSlice({
|
|
@@ -267,9 +258,7 @@ const checkoutSlice = createSlice({
|
|
|
267
258
|
state.loading = 'pending';
|
|
268
259
|
})
|
|
269
260
|
.addCase(validateOrder.rejected, (state, action) => {
|
|
270
|
-
state.errors = {
|
|
271
|
-
form: action.payload
|
|
272
|
-
};
|
|
261
|
+
state.errors = action.payload || {};
|
|
273
262
|
state.loading = 'idle';
|
|
274
263
|
})
|
|
275
264
|
.addCase(submitOrder.fulfilled, (_, action) => {
|
|
@@ -281,7 +270,7 @@ const checkoutSlice = createSlice({
|
|
|
281
270
|
.addCase(submitOrder.rejected, (state, action) => {
|
|
282
271
|
state.loading = 'idle';
|
|
283
272
|
state.submitting = false;
|
|
284
|
-
state.errors = action.payload;
|
|
273
|
+
state.errors = action.payload || {};
|
|
285
274
|
});
|
|
286
275
|
}
|
|
287
276
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-tender/cloud",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.37",
|
|
4
4
|
"description": "A library of hooks, reducers, utility functions, and types for use with Open Tender applications that utilize our cloud-based Order API.",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"module": "./dist/esm/index.js",
|
|
@@ -49,8 +49,8 @@
|
|
|
49
49
|
"typescript": "^4.8.2"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
|
-
"@open-tender/types": "^0.2.
|
|
53
|
-
"@open-tender/utils": "^0.1.
|
|
52
|
+
"@open-tender/types": "^0.2.23",
|
|
53
|
+
"@open-tender/utils": "^0.1.90",
|
|
54
54
|
"@reduxjs/toolkit": "^1.8.5",
|
|
55
55
|
"react": "^18.2.0"
|
|
56
56
|
},
|