@open-tender/cloud 0.0.1
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.
- package/LICENSE.md +21 -0
- package/README.md +3 -0
- package/dist/cjs/app/hooks.d.ts +50 -0
- package/dist/cjs/app/hooks.js +8 -0
- package/dist/cjs/app/index.d.ts +1 -0
- package/dist/cjs/app/index.js +4 -0
- package/dist/cjs/app/store.d.ts +146 -0
- package/dist/cjs/app/store.js +51 -0
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.js +7 -0
- package/dist/cjs/services/api.d.ts +162 -0
- package/dist/cjs/services/api.js +691 -0
- package/dist/cjs/services/errors.d.ts +50 -0
- package/dist/cjs/services/errors.js +53 -0
- package/dist/cjs/services/index.d.ts +2 -0
- package/dist/cjs/services/index.js +6 -0
- package/dist/cjs/slices/alerts.d.ts +5 -0
- package/dist/cjs/slices/alerts.js +28 -0
- package/dist/cjs/slices/allergens.d.ts +19 -0
- package/dist/cjs/slices/allergens.js +66 -0
- package/dist/cjs/slices/announcements.d.ts +28 -0
- package/dist/cjs/slices/announcements.js +77 -0
- package/dist/cjs/slices/checkout.d.ts +38 -0
- package/dist/cjs/slices/checkout.js +276 -0
- package/dist/cjs/slices/completedOrders.d.ts +25 -0
- package/dist/cjs/slices/completedOrders.js +61 -0
- package/dist/cjs/slices/config.d.ts +87 -0
- package/dist/cjs/slices/config.js +121 -0
- package/dist/cjs/slices/confirmation.d.ts +8 -0
- package/dist/cjs/slices/confirmation.js +22 -0
- package/dist/cjs/slices/customer/account.d.ts +59 -0
- package/dist/cjs/slices/customer/account.js +288 -0
- package/dist/cjs/slices/customer/addresses.d.ts +37 -0
- package/dist/cjs/slices/customer/addresses.js +134 -0
- package/dist/cjs/slices/customer/allergens.d.ts +25 -0
- package/dist/cjs/slices/customer/allergens.js +94 -0
- package/dist/cjs/slices/customer/communicationPreferences.d.ts +44 -0
- package/dist/cjs/slices/customer/communicationPreferences.js +165 -0
- package/dist/cjs/slices/customer/creditCards.d.ts +46 -0
- package/dist/cjs/slices/customer/creditCards.js +172 -0
- package/dist/cjs/slices/customer/favorites.d.ts +45 -0
- package/dist/cjs/slices/customer/favorites.js +176 -0
- package/dist/cjs/slices/customer/fcmToken.d.ts +31 -0
- package/dist/cjs/slices/customer/fcmToken.js +110 -0
- package/dist/cjs/slices/customer/giftCards.d.ts +62 -0
- package/dist/cjs/slices/customer/giftCards.js +196 -0
- package/dist/cjs/slices/customer/groupOrders.d.ts +33 -0
- package/dist/cjs/slices/customer/groupOrders.js +148 -0
- package/dist/cjs/slices/customer/houseAccounts.d.ts +20 -0
- package/dist/cjs/slices/customer/houseAccounts.js +67 -0
- package/dist/cjs/slices/customer/index.d.ts +29 -0
- package/dist/cjs/slices/customer/index.js +52 -0
- package/dist/cjs/slices/customer/levelup.d.ts +36 -0
- package/dist/cjs/slices/customer/levelup.js +128 -0
- package/dist/cjs/slices/customer/loyalty.d.ts +27 -0
- package/dist/cjs/slices/customer/loyalty.js +87 -0
- package/dist/cjs/slices/customer/order.d.ts +25 -0
- package/dist/cjs/slices/customer/order.js +84 -0
- package/dist/cjs/slices/customer/orders.d.ts +20 -0
- package/dist/cjs/slices/customer/orders.js +67 -0
- package/dist/cjs/slices/customer/qrCode.d.ts +17 -0
- package/dist/cjs/slices/customer/qrCode.js +57 -0
- package/dist/cjs/slices/customer/rewards.d.ts +20 -0
- package/dist/cjs/slices/customer/rewards.js +67 -0
- package/dist/cjs/slices/customer/thanx.d.ts +17 -0
- package/dist/cjs/slices/customer/thanx.js +57 -0
- package/dist/cjs/slices/deals.d.ts +19 -0
- package/dist/cjs/slices/deals.js +97 -0
- package/dist/cjs/slices/donations.d.ts +26 -0
- package/dist/cjs/slices/donations.js +62 -0
- package/dist/cjs/slices/giftCards.d.ts +26 -0
- package/dist/cjs/slices/giftCards.js +63 -0
- package/dist/cjs/slices/groupOrder.d.ts +80 -0
- package/dist/cjs/slices/groupOrder.js +226 -0
- package/dist/cjs/slices/guest.d.ts +38 -0
- package/dist/cjs/slices/guest.js +101 -0
- package/dist/cjs/slices/index.d.ts +27 -0
- package/dist/cjs/slices/index.js +30 -0
- package/dist/cjs/slices/levelup.d.ts +18 -0
- package/dist/cjs/slices/levelup.js +51 -0
- package/dist/cjs/slices/menu.d.ts +22 -0
- package/dist/cjs/slices/menu.js +86 -0
- package/dist/cjs/slices/menuDisplay.d.ts +26 -0
- package/dist/cjs/slices/menuDisplay.js +59 -0
- package/dist/cjs/slices/menuItems.d.ts +20 -0
- package/dist/cjs/slices/menuItems.js +57 -0
- package/dist/cjs/slices/notifications.d.ts +5 -0
- package/dist/cjs/slices/notifications.js +27 -0
- package/dist/cjs/slices/order.d.ts +77 -0
- package/dist/cjs/slices/order.js +426 -0
- package/dist/cjs/slices/orderFulfillment.d.ts +29 -0
- package/dist/cjs/slices/orderFulfillment.js +83 -0
- package/dist/cjs/slices/orderRating.d.ts +34 -0
- package/dist/cjs/slices/orderRating.js +108 -0
- package/dist/cjs/slices/orders.d.ts +86 -0
- package/dist/cjs/slices/orders.js +311 -0
- package/dist/cjs/slices/resetPassword.d.ts +29 -0
- package/dist/cjs/slices/resetPassword.js +83 -0
- package/dist/cjs/slices/revenueCenters.d.ts +35 -0
- package/dist/cjs/slices/revenueCenters.js +95 -0
- package/dist/cjs/slices/signUp.d.ts +19 -0
- package/dist/cjs/slices/signUp.js +52 -0
- package/dist/cjs/slices/types.d.ts +43 -0
- package/dist/cjs/slices/types.js +47 -0
- package/dist/cjs/slices/validTimes.d.ts +17 -0
- package/dist/cjs/slices/validTimes.js +57 -0
- package/dist/cjs/slices/verifyAccount.d.ts +17 -0
- package/dist/cjs/slices/verifyAccount.js +54 -0
- package/dist/esm/app/hooks.d.ts +50 -0
- package/dist/esm/app/hooks.js +4 -0
- package/dist/esm/app/index.d.ts +1 -0
- package/dist/esm/app/index.js +1 -0
- package/dist/esm/app/store.d.ts +146 -0
- package/dist/esm/app/store.js +48 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/services/api.d.ts +162 -0
- package/dist/esm/services/api.js +689 -0
- package/dist/esm/services/errors.d.ts +50 -0
- package/dist/esm/services/errors.js +50 -0
- package/dist/esm/services/index.d.ts +2 -0
- package/dist/esm/services/index.js +2 -0
- package/dist/esm/slices/alerts.d.ts +5 -0
- package/dist/esm/slices/alerts.js +23 -0
- package/dist/esm/slices/allergens.d.ts +19 -0
- package/dist/esm/slices/allergens.js +60 -0
- package/dist/esm/slices/announcements.d.ts +28 -0
- package/dist/esm/slices/announcements.js +71 -0
- package/dist/esm/slices/checkout.d.ts +38 -0
- package/dist/esm/slices/checkout.js +268 -0
- package/dist/esm/slices/completedOrders.d.ts +25 -0
- package/dist/esm/slices/completedOrders.js +57 -0
- package/dist/esm/slices/config.d.ts +87 -0
- package/dist/esm/slices/config.js +102 -0
- package/dist/esm/slices/confirmation.d.ts +8 -0
- package/dist/esm/slices/confirmation.js +18 -0
- package/dist/esm/slices/customer/account.d.ts +59 -0
- package/dist/esm/slices/customer/account.js +282 -0
- package/dist/esm/slices/customer/addresses.d.ts +37 -0
- package/dist/esm/slices/customer/addresses.js +129 -0
- package/dist/esm/slices/customer/allergens.d.ts +25 -0
- package/dist/esm/slices/customer/allergens.js +89 -0
- package/dist/esm/slices/customer/communicationPreferences.d.ts +44 -0
- package/dist/esm/slices/customer/communicationPreferences.js +161 -0
- package/dist/esm/slices/customer/creditCards.d.ts +46 -0
- package/dist/esm/slices/customer/creditCards.js +166 -0
- package/dist/esm/slices/customer/favorites.d.ts +45 -0
- package/dist/esm/slices/customer/favorites.js +171 -0
- package/dist/esm/slices/customer/fcmToken.d.ts +31 -0
- package/dist/esm/slices/customer/fcmToken.js +106 -0
- package/dist/esm/slices/customer/giftCards.d.ts +62 -0
- package/dist/esm/slices/customer/giftCards.js +191 -0
- package/dist/esm/slices/customer/groupOrders.d.ts +33 -0
- package/dist/esm/slices/customer/groupOrders.js +143 -0
- package/dist/esm/slices/customer/houseAccounts.d.ts +20 -0
- package/dist/esm/slices/customer/houseAccounts.js +62 -0
- package/dist/esm/slices/customer/index.d.ts +29 -0
- package/dist/esm/slices/customer/index.js +48 -0
- package/dist/esm/slices/customer/levelup.d.ts +36 -0
- package/dist/esm/slices/customer/levelup.js +123 -0
- package/dist/esm/slices/customer/loyalty.d.ts +27 -0
- package/dist/esm/slices/customer/loyalty.js +79 -0
- package/dist/esm/slices/customer/order.d.ts +25 -0
- package/dist/esm/slices/customer/order.js +79 -0
- package/dist/esm/slices/customer/orders.d.ts +20 -0
- package/dist/esm/slices/customer/orders.js +62 -0
- package/dist/esm/slices/customer/qrCode.d.ts +17 -0
- package/dist/esm/slices/customer/qrCode.js +53 -0
- package/dist/esm/slices/customer/rewards.d.ts +20 -0
- package/dist/esm/slices/customer/rewards.js +62 -0
- package/dist/esm/slices/customer/thanx.d.ts +17 -0
- package/dist/esm/slices/customer/thanx.js +53 -0
- package/dist/esm/slices/deals.d.ts +19 -0
- package/dist/esm/slices/deals.js +91 -0
- package/dist/esm/slices/donations.d.ts +26 -0
- package/dist/esm/slices/donations.js +58 -0
- package/dist/esm/slices/giftCards.d.ts +26 -0
- package/dist/esm/slices/giftCards.js +59 -0
- package/dist/esm/slices/groupOrder.d.ts +80 -0
- package/dist/esm/slices/groupOrder.js +216 -0
- package/dist/esm/slices/guest.d.ts +38 -0
- package/dist/esm/slices/guest.js +97 -0
- package/dist/esm/slices/index.d.ts +27 -0
- package/dist/esm/slices/index.js +27 -0
- package/dist/esm/slices/levelup.d.ts +18 -0
- package/dist/esm/slices/levelup.js +48 -0
- package/dist/esm/slices/menu.d.ts +22 -0
- package/dist/esm/slices/menu.js +81 -0
- package/dist/esm/slices/menuDisplay.d.ts +26 -0
- package/dist/esm/slices/menuDisplay.js +55 -0
- package/dist/esm/slices/menuItems.d.ts +20 -0
- package/dist/esm/slices/menuItems.js +52 -0
- package/dist/esm/slices/notifications.d.ts +5 -0
- package/dist/esm/slices/notifications.js +22 -0
- package/dist/esm/slices/order.d.ts +77 -0
- package/dist/esm/slices/order.js +423 -0
- package/dist/esm/slices/orderFulfillment.d.ts +29 -0
- package/dist/esm/slices/orderFulfillment.js +79 -0
- package/dist/esm/slices/orderRating.d.ts +34 -0
- package/dist/esm/slices/orderRating.js +104 -0
- package/dist/esm/slices/orders.d.ts +86 -0
- package/dist/esm/slices/orders.js +302 -0
- package/dist/esm/slices/resetPassword.d.ts +29 -0
- package/dist/esm/slices/resetPassword.js +79 -0
- package/dist/esm/slices/revenueCenters.d.ts +35 -0
- package/dist/esm/slices/revenueCenters.js +89 -0
- package/dist/esm/slices/signUp.d.ts +19 -0
- package/dist/esm/slices/signUp.js +48 -0
- package/dist/esm/slices/types.d.ts +43 -0
- package/dist/esm/slices/types.js +44 -0
- package/dist/esm/slices/validTimes.d.ts +17 -0
- package/dist/esm/slices/validTimes.js +52 -0
- package/dist/esm/slices/verifyAccount.d.ts +17 -0
- package/dist/esm/slices/verifyAccount.js +50 -0
- package/package.json +61 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export declare const errorsApi: {
|
|
2
|
+
notAuthorized: {
|
|
3
|
+
code: string;
|
|
4
|
+
status: number;
|
|
5
|
+
title: string;
|
|
6
|
+
detail: string;
|
|
7
|
+
};
|
|
8
|
+
methodNotAllowed: {
|
|
9
|
+
code: string;
|
|
10
|
+
status: number;
|
|
11
|
+
title: string;
|
|
12
|
+
detail: string;
|
|
13
|
+
};
|
|
14
|
+
parseError: {
|
|
15
|
+
code: string;
|
|
16
|
+
status: number;
|
|
17
|
+
title: string;
|
|
18
|
+
detail: string;
|
|
19
|
+
};
|
|
20
|
+
internalServerError: {
|
|
21
|
+
code: string;
|
|
22
|
+
status: number;
|
|
23
|
+
title: string;
|
|
24
|
+
detail: string;
|
|
25
|
+
};
|
|
26
|
+
notImplemented: {
|
|
27
|
+
code: string;
|
|
28
|
+
status: number;
|
|
29
|
+
title: string;
|
|
30
|
+
detail: string;
|
|
31
|
+
};
|
|
32
|
+
badGateway: {
|
|
33
|
+
code: string;
|
|
34
|
+
status: number;
|
|
35
|
+
title: string;
|
|
36
|
+
detail: string;
|
|
37
|
+
};
|
|
38
|
+
tempUnavailable: {
|
|
39
|
+
code: string;
|
|
40
|
+
status: number;
|
|
41
|
+
title: string;
|
|
42
|
+
detail: string;
|
|
43
|
+
};
|
|
44
|
+
gatewayTimeout: {
|
|
45
|
+
code: string;
|
|
46
|
+
status: number;
|
|
47
|
+
title: string;
|
|
48
|
+
detail: string;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.errorsApi = void 0;
|
|
4
|
+
exports.errorsApi = {
|
|
5
|
+
notAuthorized: {
|
|
6
|
+
code: 'not_authorized',
|
|
7
|
+
status: 401,
|
|
8
|
+
title: 'Not Authorized',
|
|
9
|
+
detail: 'Your session has expired. Please login again.'
|
|
10
|
+
},
|
|
11
|
+
methodNotAllowed: {
|
|
12
|
+
code: 'method_not_allowed',
|
|
13
|
+
status: 405,
|
|
14
|
+
title: 'Method Not Allowed',
|
|
15
|
+
detail: 'The method is not allowed for the requested URL.'
|
|
16
|
+
},
|
|
17
|
+
parseError: {
|
|
18
|
+
code: 'parse_error',
|
|
19
|
+
status: 422,
|
|
20
|
+
title: 'Cannot Read File',
|
|
21
|
+
detail: 'There was an error reading this file. Please contact Open Tender Support.'
|
|
22
|
+
},
|
|
23
|
+
internalServerError: {
|
|
24
|
+
code: 'internal_server_error',
|
|
25
|
+
status: 500,
|
|
26
|
+
title: 'Internal Server Error',
|
|
27
|
+
detail: 'Internal server error. Please contact Open Tender Support.'
|
|
28
|
+
},
|
|
29
|
+
notImplemented: {
|
|
30
|
+
code: 'not_implemented',
|
|
31
|
+
status: 501,
|
|
32
|
+
title: 'Servers Overloaded',
|
|
33
|
+
detail: 'Servers temporarily overloaded. Please retry your request. If this issue persists, please contact Open Tender Support.'
|
|
34
|
+
},
|
|
35
|
+
badGateway: {
|
|
36
|
+
code: 'bad_gateway',
|
|
37
|
+
status: 502,
|
|
38
|
+
title: 'Bad Gateway',
|
|
39
|
+
detail: 'Temporary gateway error. Please retry your request. If this issue persists, please contact Open Tender Support.'
|
|
40
|
+
},
|
|
41
|
+
tempUnavailable: {
|
|
42
|
+
code: 'temporarily_unavailable',
|
|
43
|
+
status: 503,
|
|
44
|
+
title: 'Service Temporarily Unavailable',
|
|
45
|
+
detail: 'Service Temporarily Unavailable. Please retry your request. If this issue persists, please contact Open Tender Support.'
|
|
46
|
+
},
|
|
47
|
+
gatewayTimeout: {
|
|
48
|
+
code: 'gateway_timeout',
|
|
49
|
+
status: 504,
|
|
50
|
+
title: 'Gateway Timeout',
|
|
51
|
+
detail: 'Gateway Timeout. Please contact Open Tender Support.'
|
|
52
|
+
}
|
|
53
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Alerts } from '@open-tender/types';
|
|
2
|
+
import { AppState } from '../app';
|
|
3
|
+
export declare const clearAlerts: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, addAlert: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, dismissAlert: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
|
|
4
|
+
export declare const selectAlerts: (state: AppState) => Alerts;
|
|
5
|
+
export declare const alertsReducer: import("redux").Reducer<Alerts, import("redux").AnyAction>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.alertsReducer = exports.selectAlerts = exports.dismissAlert = exports.addAlert = exports.clearAlerts = void 0;
|
|
5
|
+
const toolkit_1 = require("@reduxjs/toolkit");
|
|
6
|
+
const types_1 = require("./types");
|
|
7
|
+
const utils_1 = require("@open-tender/utils");
|
|
8
|
+
const initialState = [];
|
|
9
|
+
const alertsSlice = (0, toolkit_1.createSlice)({
|
|
10
|
+
name: types_1.ReducerType.Alerts,
|
|
11
|
+
initialState,
|
|
12
|
+
reducers: {
|
|
13
|
+
clearAlerts: () => initialState,
|
|
14
|
+
addAlert: (state, action) => {
|
|
15
|
+
return [
|
|
16
|
+
...state.reverse().slice(0, 4).reverse(),
|
|
17
|
+
{ message: action.payload, id: (0, utils_1.makeRandomNumberString)() }
|
|
18
|
+
];
|
|
19
|
+
},
|
|
20
|
+
dismissAlert: (state, action) => {
|
|
21
|
+
return state.filter(i => i.id !== action.payload);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
_a = alertsSlice.actions, exports.clearAlerts = _a.clearAlerts, exports.addAlert = _a.addAlert, exports.dismissAlert = _a.dismissAlert;
|
|
26
|
+
const selectAlerts = (state) => state.alerts;
|
|
27
|
+
exports.selectAlerts = selectAlerts;
|
|
28
|
+
exports.alertsReducer = alertsSlice.reducer;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AppState } from '../app';
|
|
2
|
+
import { Allergen, Allergens, RequestError, RequestStatus } from '@open-tender/types';
|
|
3
|
+
export interface AllergensState {
|
|
4
|
+
entities: Allergen[];
|
|
5
|
+
error: RequestError;
|
|
6
|
+
loading: RequestStatus;
|
|
7
|
+
selectedAllergens: Allergen[] | null;
|
|
8
|
+
}
|
|
9
|
+
export declare enum AllergensActionType {
|
|
10
|
+
FetchAllergens = "allergens/fetchAllergens"
|
|
11
|
+
}
|
|
12
|
+
export declare const fetchAllergens: import("@reduxjs/toolkit").AsyncThunk<Allergens, void, {
|
|
13
|
+
state: AppState;
|
|
14
|
+
rejectValue: RequestError;
|
|
15
|
+
}>;
|
|
16
|
+
export declare const resetAllergens: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setSelectedAllergens: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
|
|
17
|
+
export declare const selectAllergens: (state: AppState) => AllergensState;
|
|
18
|
+
export declare const selectSelectedAllergenNames: (state: AppState) => (string | undefined)[];
|
|
19
|
+
export declare const allergensReducer: import("redux").Reducer<AllergensState, import("redux").AnyAction>;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.allergensReducer = exports.selectSelectedAllergenNames = exports.selectAllergens = exports.setSelectedAllergens = exports.resetAllergens = exports.fetchAllergens = exports.AllergensActionType = void 0;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const toolkit_1 = require("@reduxjs/toolkit");
|
|
7
|
+
const types_1 = require("./types");
|
|
8
|
+
const initialState = {
|
|
9
|
+
entities: [],
|
|
10
|
+
selectedAllergens: null,
|
|
11
|
+
loading: 'idle',
|
|
12
|
+
error: null
|
|
13
|
+
};
|
|
14
|
+
var AllergensActionType;
|
|
15
|
+
(function (AllergensActionType) {
|
|
16
|
+
AllergensActionType["FetchAllergens"] = "allergens/fetchAllergens";
|
|
17
|
+
})(AllergensActionType = exports.AllergensActionType || (exports.AllergensActionType = {}));
|
|
18
|
+
exports.fetchAllergens = (0, toolkit_1.createAsyncThunk)(AllergensActionType.FetchAllergens, (_, { getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
19
|
+
try {
|
|
20
|
+
const api = getState().config.api;
|
|
21
|
+
return yield api.getAllergens();
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
return rejectWithValue(err);
|
|
25
|
+
}
|
|
26
|
+
}));
|
|
27
|
+
const allergensSlice = (0, toolkit_1.createSlice)({
|
|
28
|
+
name: types_1.ReducerType.Allergens,
|
|
29
|
+
initialState,
|
|
30
|
+
reducers: {
|
|
31
|
+
resetAllergens: () => initialState,
|
|
32
|
+
setSelectedAllergens: (state, action) => {
|
|
33
|
+
state.selectedAllergens = action.payload;
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
extraReducers: builder => {
|
|
37
|
+
builder
|
|
38
|
+
.addCase(exports.fetchAllergens.fulfilled, (state, action) => {
|
|
39
|
+
state.entities = action.payload;
|
|
40
|
+
state.loading = 'idle';
|
|
41
|
+
state.error = null;
|
|
42
|
+
})
|
|
43
|
+
.addCase(exports.fetchAllergens.pending, state => {
|
|
44
|
+
state.loading = 'pending';
|
|
45
|
+
})
|
|
46
|
+
.addCase(exports.fetchAllergens.rejected, (state, action) => {
|
|
47
|
+
state.error = action.payload;
|
|
48
|
+
state.loading = 'idle';
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
_a = allergensSlice.actions, exports.resetAllergens = _a.resetAllergens, exports.setSelectedAllergens = _a.setSelectedAllergens;
|
|
53
|
+
const selectAllergens = (state) => state.allergens;
|
|
54
|
+
exports.selectAllergens = selectAllergens;
|
|
55
|
+
const selectSelectedAllergenNames = (state) => {
|
|
56
|
+
const { entities: allergens, selectedAllergens } = state.allergens;
|
|
57
|
+
if (!allergens.length || !selectedAllergens || !selectedAllergens.length) {
|
|
58
|
+
return [];
|
|
59
|
+
}
|
|
60
|
+
return selectedAllergens.map(i => {
|
|
61
|
+
const allergen = allergens.find(a => a.allergen_id === i.allergen_id);
|
|
62
|
+
return allergen ? allergen.name : '';
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
exports.selectSelectedAllergenNames = selectSelectedAllergenNames;
|
|
66
|
+
exports.allergensReducer = allergensSlice.reducer;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AppState } from '../app';
|
|
2
|
+
import { AnnouncementPage, AnnouncementPages, Announcements, AuthType, RequestError, RequestStatus } from '@open-tender/types';
|
|
3
|
+
export interface AnnouncementsState {
|
|
4
|
+
entities: Announcements;
|
|
5
|
+
error: RequestError;
|
|
6
|
+
loading: RequestStatus;
|
|
7
|
+
pages: AnnouncementPages;
|
|
8
|
+
}
|
|
9
|
+
export declare enum AnnouncementsActionType {
|
|
10
|
+
FetchAnnouncementPage = "announcements/fetchAnnouncementPage"
|
|
11
|
+
}
|
|
12
|
+
export declare const fetchAnnouncementPage: import("@reduxjs/toolkit").AsyncThunk<AnnouncementPage, AuthType, {
|
|
13
|
+
state: AppState;
|
|
14
|
+
rejectValue: {
|
|
15
|
+
error: RequestError;
|
|
16
|
+
page: AuthType;
|
|
17
|
+
};
|
|
18
|
+
}>;
|
|
19
|
+
export declare const resetAnnouncements: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>;
|
|
20
|
+
export declare const selectAnnouncements: (state: AppState) => AnnouncementsState;
|
|
21
|
+
export declare const selectAnnouncementsPage: (page: AuthType) => (state: AppState) => {
|
|
22
|
+
settings: import("@open-tender/types").AnnouncementSettings | null;
|
|
23
|
+
entities: Announcements;
|
|
24
|
+
loading: RequestStatus;
|
|
25
|
+
error: RequestError;
|
|
26
|
+
};
|
|
27
|
+
export declare const selectHasAnnouncementsPage: (page: AuthType) => (state: AppState) => boolean;
|
|
28
|
+
export declare const announcementsReducer: import("redux").Reducer<AnnouncementsState, import("redux").AnyAction>;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.announcementsReducer = exports.selectHasAnnouncementsPage = exports.selectAnnouncementsPage = exports.selectAnnouncements = exports.resetAnnouncements = exports.fetchAnnouncementPage = exports.AnnouncementsActionType = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const toolkit_1 = require("@reduxjs/toolkit");
|
|
6
|
+
const types_1 = require("./types");
|
|
7
|
+
const initialState = {
|
|
8
|
+
entities: [],
|
|
9
|
+
pages: [],
|
|
10
|
+
loading: 'idle',
|
|
11
|
+
error: null
|
|
12
|
+
};
|
|
13
|
+
var AnnouncementsActionType;
|
|
14
|
+
(function (AnnouncementsActionType) {
|
|
15
|
+
AnnouncementsActionType["FetchAnnouncementPage"] = "announcements/fetchAnnouncementPage";
|
|
16
|
+
})(AnnouncementsActionType = exports.AnnouncementsActionType || (exports.AnnouncementsActionType = {}));
|
|
17
|
+
exports.fetchAnnouncementPage = (0, toolkit_1.createAsyncThunk)(AnnouncementsActionType.FetchAnnouncementPage, (page, { getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
+
try {
|
|
19
|
+
const api = getState().config.api;
|
|
20
|
+
const response = yield api.getAnnouncementPage(page);
|
|
21
|
+
const settings = Object.assign({}, response);
|
|
22
|
+
delete settings.announcements;
|
|
23
|
+
const entities = response.announcements;
|
|
24
|
+
const payload = { settings, entities, page };
|
|
25
|
+
return payload;
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
return rejectWithValue({ error: err, page });
|
|
29
|
+
}
|
|
30
|
+
}));
|
|
31
|
+
const announcementsSlice = (0, toolkit_1.createSlice)({
|
|
32
|
+
name: types_1.ReducerType.Announcements,
|
|
33
|
+
initialState,
|
|
34
|
+
reducers: {
|
|
35
|
+
resetAnnouncements: () => initialState
|
|
36
|
+
},
|
|
37
|
+
extraReducers: builder => {
|
|
38
|
+
builder
|
|
39
|
+
.addCase(exports.fetchAnnouncementPage.fulfilled, (state, action) => {
|
|
40
|
+
const { page } = action.payload;
|
|
41
|
+
const pages = state.pages
|
|
42
|
+
? state.pages.filter(i => i.page !== page)
|
|
43
|
+
: [];
|
|
44
|
+
state.pages = [...pages, action.payload];
|
|
45
|
+
state.loading = 'idle';
|
|
46
|
+
state.error = null;
|
|
47
|
+
})
|
|
48
|
+
.addCase(exports.fetchAnnouncementPage.pending, state => {
|
|
49
|
+
state.loading = 'pending';
|
|
50
|
+
})
|
|
51
|
+
.addCase(exports.fetchAnnouncementPage.rejected, (state, action) => {
|
|
52
|
+
const { error, page } = action.payload || {};
|
|
53
|
+
state.error = error;
|
|
54
|
+
(state.pages = state.pages.filter(i => i.page !== page)),
|
|
55
|
+
(state.loading = 'idle');
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
exports.resetAnnouncements = announcementsSlice.actions.resetAnnouncements;
|
|
60
|
+
const selectAnnouncements = (state) => state.announcements;
|
|
61
|
+
exports.selectAnnouncements = selectAnnouncements;
|
|
62
|
+
const selectAnnouncementsPage = (page) => (state) => {
|
|
63
|
+
const { pages, loading, error } = state.announcements;
|
|
64
|
+
const data = pages ? pages.find(i => i.page === page) : undefined;
|
|
65
|
+
const { settings = null, entities = [] } = data || {};
|
|
66
|
+
return { settings, entities, loading, error };
|
|
67
|
+
};
|
|
68
|
+
exports.selectAnnouncementsPage = selectAnnouncementsPage;
|
|
69
|
+
const selectHasAnnouncementsPage = (page) => (state) => {
|
|
70
|
+
const { pages, loading } = state.announcements;
|
|
71
|
+
const data = pages ? pages.find(i => i.page === page) : undefined;
|
|
72
|
+
const { entities = [] } = data || {};
|
|
73
|
+
const hasAnnouncements = entities && entities.length;
|
|
74
|
+
return loading === 'pending' || hasAnnouncements ? true : false;
|
|
75
|
+
};
|
|
76
|
+
exports.selectHasAnnouncementsPage = selectHasAnnouncementsPage;
|
|
77
|
+
exports.announcementsReducer = announcementsSlice.reducer;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { AppState } from '../app';
|
|
2
|
+
import { CheckoutCheck, CheckoutForm, CompletedOrder, Order, RequestStatus } from '@open-tender/types';
|
|
3
|
+
export interface CheckoutState {
|
|
4
|
+
check: CheckoutCheck | null;
|
|
5
|
+
form: CheckoutForm;
|
|
6
|
+
submitting: boolean;
|
|
7
|
+
isGuest: boolean;
|
|
8
|
+
completedOrder: CompletedOrder | null;
|
|
9
|
+
errors: any;
|
|
10
|
+
loading: RequestStatus;
|
|
11
|
+
}
|
|
12
|
+
export declare enum CheckoutActionType {
|
|
13
|
+
FetchCheckout = "checkout/fetchCheckout",
|
|
14
|
+
ValidateOrder = "checkout/validateOrder",
|
|
15
|
+
SubmitOrder = "checkout/SubmitOrder",
|
|
16
|
+
SubmitOrderPay = "checkout/SubmitOrderPay"
|
|
17
|
+
}
|
|
18
|
+
export declare const validateOrder: import("@reduxjs/toolkit").AsyncThunk<{
|
|
19
|
+
check: CheckoutCheck;
|
|
20
|
+
errors: any;
|
|
21
|
+
}, Partial<Order>, {
|
|
22
|
+
state: AppState;
|
|
23
|
+
rejectValue: any;
|
|
24
|
+
}>;
|
|
25
|
+
export declare const submitOrder: import("@reduxjs/toolkit").AsyncThunk<CompletedOrder, void, {
|
|
26
|
+
state: AppState;
|
|
27
|
+
rejectValue: any;
|
|
28
|
+
}>;
|
|
29
|
+
export declare const submitOrderPay: import("@reduxjs/toolkit").AsyncThunk<CompletedOrder, boolean, {
|
|
30
|
+
state: AppState;
|
|
31
|
+
rejectValue: any;
|
|
32
|
+
}>;
|
|
33
|
+
export declare const resetCheckout: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetCheck: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetCompletedOrder: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetErrors: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetTip: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setCompletedOrder: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setGuest: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setSubmitting: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, updateCheckoutCustomer: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, updateForm: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
|
|
34
|
+
export declare const selectCheckout: (state: AppState) => CheckoutState;
|
|
35
|
+
export declare const selectCheck: (state: AppState) => CheckoutCheck | null;
|
|
36
|
+
export declare const selectCompletedOrder: (state: AppState) => CompletedOrder | null;
|
|
37
|
+
export declare const selectDiscounts: (state: AppState) => import("@open-tender/types").OrderDiscounts;
|
|
38
|
+
export declare const checkoutReducer: import("redux").Reducer<CheckoutState, import("redux").AnyAction>;
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.checkoutReducer = exports.selectDiscounts = exports.selectCompletedOrder = exports.selectCheck = exports.selectCheckout = exports.updateForm = exports.updateCheckoutCustomer = exports.setSubmitting = exports.setGuest = exports.setCompletedOrder = exports.resetTip = exports.resetErrors = exports.resetCompletedOrder = exports.resetCheck = exports.resetCheckout = exports.submitOrderPay = exports.submitOrder = exports.validateOrder = exports.CheckoutActionType = void 0;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const toolkit_1 = require("@reduxjs/toolkit");
|
|
7
|
+
const types_1 = require("./types");
|
|
8
|
+
const customer_1 = require("./customer");
|
|
9
|
+
const utils_1 = require("@open-tender/utils");
|
|
10
|
+
const order_1 = require("./order");
|
|
11
|
+
const menu_1 = require("./menu");
|
|
12
|
+
const initialState = {
|
|
13
|
+
check: null,
|
|
14
|
+
form: {
|
|
15
|
+
details: {},
|
|
16
|
+
customer: {},
|
|
17
|
+
address: {},
|
|
18
|
+
surcharges: [],
|
|
19
|
+
discounts: [],
|
|
20
|
+
promoCodes: [],
|
|
21
|
+
points: [],
|
|
22
|
+
tenders: [],
|
|
23
|
+
tip: null
|
|
24
|
+
},
|
|
25
|
+
submitting: false,
|
|
26
|
+
isGuest: false,
|
|
27
|
+
completedOrder: null,
|
|
28
|
+
errors: {},
|
|
29
|
+
loading: 'idle'
|
|
30
|
+
};
|
|
31
|
+
var CheckoutActionType;
|
|
32
|
+
(function (CheckoutActionType) {
|
|
33
|
+
CheckoutActionType["FetchCheckout"] = "checkout/fetchCheckout";
|
|
34
|
+
CheckoutActionType["ValidateOrder"] = "checkout/validateOrder";
|
|
35
|
+
CheckoutActionType["SubmitOrder"] = "checkout/SubmitOrder";
|
|
36
|
+
CheckoutActionType["SubmitOrderPay"] = "checkout/SubmitOrderPay";
|
|
37
|
+
})(CheckoutActionType = exports.CheckoutActionType || (exports.CheckoutActionType = {}));
|
|
38
|
+
const assembleOrder = (orderData) => {
|
|
39
|
+
const { order, checkout, groupOrder } = orderData;
|
|
40
|
+
const { orderId, revenueCenter, serviceType, requestedAt, cart, deviceType, prepType, table } = order;
|
|
41
|
+
const { revenue_center_id: revenueCenterId } = revenueCenter || {};
|
|
42
|
+
const { form } = checkout;
|
|
43
|
+
const { customer, address, details, surcharges, discounts, promoCodes, points, tenders, tip } = form;
|
|
44
|
+
// const defaultTip = check ? getDefaultTip(check.config) : null
|
|
45
|
+
const fullAddress = Object.assign(Object.assign({}, order.address), address);
|
|
46
|
+
const data = {
|
|
47
|
+
orderId,
|
|
48
|
+
revenueCenterId,
|
|
49
|
+
serviceType,
|
|
50
|
+
requestedAt,
|
|
51
|
+
cart,
|
|
52
|
+
customer,
|
|
53
|
+
address: (0, utils_1.isEmpty)(fullAddress) ? null : fullAddress,
|
|
54
|
+
details,
|
|
55
|
+
surcharges,
|
|
56
|
+
discounts,
|
|
57
|
+
promoCodes,
|
|
58
|
+
points,
|
|
59
|
+
tip,
|
|
60
|
+
tenders,
|
|
61
|
+
cartId: groupOrder.cartId || null,
|
|
62
|
+
deviceType,
|
|
63
|
+
prepType,
|
|
64
|
+
table
|
|
65
|
+
};
|
|
66
|
+
const preparedOrder = (0, utils_1.prepareOrder)(data);
|
|
67
|
+
return preparedOrder;
|
|
68
|
+
};
|
|
69
|
+
const refreshKeys = ['revenue_center_id', 'service_type', 'requested_at'];
|
|
70
|
+
const makeRefreshArgs = (order) => ({
|
|
71
|
+
revenueCenterId: order.revenue_center_id,
|
|
72
|
+
serviceType: order.service_type,
|
|
73
|
+
requestedAt: order.requested_at
|
|
74
|
+
});
|
|
75
|
+
exports.validateOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.FetchCheckout, (order, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
76
|
+
try {
|
|
77
|
+
const { api } = getState().config;
|
|
78
|
+
if (!order)
|
|
79
|
+
order = assembleOrder(getState());
|
|
80
|
+
const check = yield api.postOrderValidate(order);
|
|
81
|
+
const errMessages = (0, utils_1.handleCheckoutErrors)({ params: check.errors });
|
|
82
|
+
const errors = {};
|
|
83
|
+
const keys = Object.keys(errMessages);
|
|
84
|
+
const args = makeRefreshArgs(order);
|
|
85
|
+
if ((0, utils_1.contains)(keys, refreshKeys)) {
|
|
86
|
+
dispatch((0, order_1.refreshRevenueCenter)(args));
|
|
87
|
+
}
|
|
88
|
+
else if ((0, utils_1.contains)(keys, ['cart'])) {
|
|
89
|
+
const cartError = errMessages.cart;
|
|
90
|
+
if ((0, utils_1.isString)(cartError)) {
|
|
91
|
+
dispatch((0, menu_1.fetchMenu)(args));
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
const alert = { type: 'cartCounts', args: { errors: cartError } };
|
|
95
|
+
dispatch((0, order_1.setAlert)(alert));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else if ((0, utils_1.contains)(keys, ['promo_codes'])) {
|
|
99
|
+
errors['promo_codes'] = errMessages.promo_codes;
|
|
100
|
+
}
|
|
101
|
+
return { check, errors };
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
return rejectWithValue(err);
|
|
105
|
+
}
|
|
106
|
+
}));
|
|
107
|
+
const handleOrderErrors = (err, preparedOrder, dispatch, rejectWithValue) => {
|
|
108
|
+
const errors = (0, utils_1.handleCheckoutErrors)(err);
|
|
109
|
+
const keys = Object.keys(errors);
|
|
110
|
+
const args = makeRefreshArgs(preparedOrder);
|
|
111
|
+
if ((0, utils_1.contains)(keys, refreshKeys)) {
|
|
112
|
+
dispatch((0, order_1.refreshRevenueCenter)(args));
|
|
113
|
+
return rejectWithValue({});
|
|
114
|
+
}
|
|
115
|
+
else if ((0, utils_1.contains)(keys, ['cart'])) {
|
|
116
|
+
const cartError = errors.cart;
|
|
117
|
+
if ((0, utils_1.isString)(cartError)) {
|
|
118
|
+
dispatch((0, menu_1.fetchMenu)(args));
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
const alert = { type: 'cartCounts', args: { errors: cartError } };
|
|
122
|
+
setTimeout(() => {
|
|
123
|
+
dispatch((0, order_1.setAlert)(alert));
|
|
124
|
+
}, 500);
|
|
125
|
+
}
|
|
126
|
+
return rejectWithValue({});
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
return rejectWithValue(errors);
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
exports.submitOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.SubmitOrder, (_, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
133
|
+
const { api } = getState().config;
|
|
134
|
+
if (!api)
|
|
135
|
+
return;
|
|
136
|
+
const alert = {
|
|
137
|
+
type: 'working',
|
|
138
|
+
args: { text: 'Submitting your order...' }
|
|
139
|
+
};
|
|
140
|
+
dispatch((0, order_1.setAlert)(alert));
|
|
141
|
+
const preparedOrder = assembleOrder(getState());
|
|
142
|
+
try {
|
|
143
|
+
const completedOrder = yield api.postOrder(preparedOrder);
|
|
144
|
+
const auth = getState().customer.account.auth;
|
|
145
|
+
const { email, password } = preparedOrder.customer || {};
|
|
146
|
+
if (password && !auth)
|
|
147
|
+
yield dispatch((0, customer_1.loginCustomer)({ email: email, password }));
|
|
148
|
+
dispatch((0, order_1.setAlert)({ type: 'close' }));
|
|
149
|
+
return completedOrder;
|
|
150
|
+
}
|
|
151
|
+
catch (err) {
|
|
152
|
+
dispatch((0, order_1.setAlert)({ type: 'close' }));
|
|
153
|
+
return rejectWithValue(err);
|
|
154
|
+
}
|
|
155
|
+
}));
|
|
156
|
+
exports.submitOrderPay = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.SubmitOrderPay, (showAlert, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
157
|
+
const { api } = getState().config;
|
|
158
|
+
if (!api)
|
|
159
|
+
return;
|
|
160
|
+
dispatch((0, exports.setSubmitting)(true));
|
|
161
|
+
if (showAlert || false) {
|
|
162
|
+
const alert = {
|
|
163
|
+
type: 'working',
|
|
164
|
+
args: { text: 'Submitting your order...' }
|
|
165
|
+
};
|
|
166
|
+
dispatch((0, order_1.setAlert)(alert));
|
|
167
|
+
}
|
|
168
|
+
const preparedOrder = assembleOrder(getState());
|
|
169
|
+
try {
|
|
170
|
+
const completedOrder = yield api.postOrder(preparedOrder);
|
|
171
|
+
const auth = getState().customer.account.auth;
|
|
172
|
+
const { email, password } = preparedOrder.customer || {};
|
|
173
|
+
if (password && !auth)
|
|
174
|
+
yield dispatch((0, customer_1.loginCustomer)({ email: email, password }));
|
|
175
|
+
dispatch((0, order_1.setAlert)({ type: 'close' }));
|
|
176
|
+
return completedOrder;
|
|
177
|
+
}
|
|
178
|
+
catch (err) {
|
|
179
|
+
dispatch((0, order_1.setAlert)({ type: 'close' }));
|
|
180
|
+
handleOrderErrors(err, preparedOrder, dispatch, rejectWithValue);
|
|
181
|
+
}
|
|
182
|
+
}));
|
|
183
|
+
const checkoutSlice = (0, toolkit_1.createSlice)({
|
|
184
|
+
name: types_1.ReducerType.Checkout,
|
|
185
|
+
initialState,
|
|
186
|
+
reducers: {
|
|
187
|
+
resetCheckout: () => initialState,
|
|
188
|
+
resetCheck: state => {
|
|
189
|
+
state.check = null;
|
|
190
|
+
},
|
|
191
|
+
resetTip: state => {
|
|
192
|
+
state.form = Object.assign(Object.assign({}, state.form), { tip: null });
|
|
193
|
+
},
|
|
194
|
+
resetErrors: state => {
|
|
195
|
+
state.errors = {};
|
|
196
|
+
},
|
|
197
|
+
resetCompletedOrder: state => {
|
|
198
|
+
state.completedOrder = null;
|
|
199
|
+
},
|
|
200
|
+
setCompletedOrder: (state, action) => {
|
|
201
|
+
state.completedOrder = action.payload;
|
|
202
|
+
},
|
|
203
|
+
setSubmitting: (state, action) => {
|
|
204
|
+
state.submitting = action.payload;
|
|
205
|
+
},
|
|
206
|
+
setGuest: (state, action) => {
|
|
207
|
+
state.isGuest = action.payload;
|
|
208
|
+
},
|
|
209
|
+
updateForm: (state, action) => {
|
|
210
|
+
const errors = Object.assign({}, state.errors);
|
|
211
|
+
const { tenders } = action.payload;
|
|
212
|
+
if (tenders)
|
|
213
|
+
delete errors.tenders;
|
|
214
|
+
state.form = Object.assign(Object.assign({}, state.form), action.payload);
|
|
215
|
+
state.errors = errors;
|
|
216
|
+
},
|
|
217
|
+
updateCheckoutCustomer: (state, action) => {
|
|
218
|
+
const account = action.payload;
|
|
219
|
+
const customer = Object.assign({}, state.form.customer);
|
|
220
|
+
const customerId = customer ? customer.customer_id : null;
|
|
221
|
+
let form = Object.assign({}, state.form);
|
|
222
|
+
if (!account) {
|
|
223
|
+
if (customerId) {
|
|
224
|
+
form = Object.assign(Object.assign({}, form), { customer: {}, promoCodes: [], discounts: [], tenders: [] });
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
form = Object.assign(Object.assign({}, form), { customer: {}, promoCodes: [] });
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
else if (customerId && account.customer_id !== customerId) {
|
|
231
|
+
form = Object.assign(Object.assign({}, form), { customer, discounts: [], tenders: [] });
|
|
232
|
+
}
|
|
233
|
+
else if (account && !customerId) {
|
|
234
|
+
form = Object.assign(Object.assign({}, form), { customer: account, discounts: [], tenders: [] });
|
|
235
|
+
}
|
|
236
|
+
state.form = Object.assign({}, form);
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
extraReducers: builder => {
|
|
240
|
+
builder
|
|
241
|
+
.addCase(exports.validateOrder.fulfilled, (state, action) => {
|
|
242
|
+
state.check = action.payload.check;
|
|
243
|
+
state.errors = action.payload.errors;
|
|
244
|
+
})
|
|
245
|
+
.addCase(exports.validateOrder.pending, state => {
|
|
246
|
+
state.loading = 'pending';
|
|
247
|
+
})
|
|
248
|
+
.addCase(exports.validateOrder.rejected, (state, action) => {
|
|
249
|
+
state.errors = {
|
|
250
|
+
form: action.payload
|
|
251
|
+
};
|
|
252
|
+
state.loading = 'idle';
|
|
253
|
+
})
|
|
254
|
+
.addCase(exports.submitOrder.fulfilled, (state, action) => {
|
|
255
|
+
state.completedOrder = action.payload;
|
|
256
|
+
})
|
|
257
|
+
.addCase(exports.submitOrder.pending, state => {
|
|
258
|
+
state.loading = 'pending';
|
|
259
|
+
})
|
|
260
|
+
.addCase(exports.submitOrder.rejected, (state, action) => {
|
|
261
|
+
state.loading = 'idle';
|
|
262
|
+
state.submitting = false;
|
|
263
|
+
state.errors = action.payload;
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
_a = checkoutSlice.actions, exports.resetCheckout = _a.resetCheckout, exports.resetCheck = _a.resetCheck, exports.resetCompletedOrder = _a.resetCompletedOrder, exports.resetErrors = _a.resetErrors, exports.resetTip = _a.resetTip, exports.setCompletedOrder = _a.setCompletedOrder, exports.setGuest = _a.setGuest, exports.setSubmitting = _a.setSubmitting, exports.updateCheckoutCustomer = _a.updateCheckoutCustomer, exports.updateForm = _a.updateForm;
|
|
268
|
+
const selectCheckout = (state) => state.checkout;
|
|
269
|
+
exports.selectCheckout = selectCheckout;
|
|
270
|
+
const selectCheck = (state) => state.checkout.check;
|
|
271
|
+
exports.selectCheck = selectCheck;
|
|
272
|
+
const selectCompletedOrder = (state) => state.checkout.completedOrder;
|
|
273
|
+
exports.selectCompletedOrder = selectCompletedOrder;
|
|
274
|
+
const selectDiscounts = (state) => state.checkout.form.discounts;
|
|
275
|
+
exports.selectDiscounts = selectDiscounts;
|
|
276
|
+
exports.checkoutReducer = checkoutSlice.reducer;
|