@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.
Files changed (215) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +3 -0
  3. package/dist/cjs/app/hooks.d.ts +50 -0
  4. package/dist/cjs/app/hooks.js +8 -0
  5. package/dist/cjs/app/index.d.ts +1 -0
  6. package/dist/cjs/app/index.js +4 -0
  7. package/dist/cjs/app/store.d.ts +146 -0
  8. package/dist/cjs/app/store.js +51 -0
  9. package/dist/cjs/index.d.ts +3 -0
  10. package/dist/cjs/index.js +7 -0
  11. package/dist/cjs/services/api.d.ts +162 -0
  12. package/dist/cjs/services/api.js +691 -0
  13. package/dist/cjs/services/errors.d.ts +50 -0
  14. package/dist/cjs/services/errors.js +53 -0
  15. package/dist/cjs/services/index.d.ts +2 -0
  16. package/dist/cjs/services/index.js +6 -0
  17. package/dist/cjs/slices/alerts.d.ts +5 -0
  18. package/dist/cjs/slices/alerts.js +28 -0
  19. package/dist/cjs/slices/allergens.d.ts +19 -0
  20. package/dist/cjs/slices/allergens.js +66 -0
  21. package/dist/cjs/slices/announcements.d.ts +28 -0
  22. package/dist/cjs/slices/announcements.js +77 -0
  23. package/dist/cjs/slices/checkout.d.ts +38 -0
  24. package/dist/cjs/slices/checkout.js +276 -0
  25. package/dist/cjs/slices/completedOrders.d.ts +25 -0
  26. package/dist/cjs/slices/completedOrders.js +61 -0
  27. package/dist/cjs/slices/config.d.ts +87 -0
  28. package/dist/cjs/slices/config.js +121 -0
  29. package/dist/cjs/slices/confirmation.d.ts +8 -0
  30. package/dist/cjs/slices/confirmation.js +22 -0
  31. package/dist/cjs/slices/customer/account.d.ts +59 -0
  32. package/dist/cjs/slices/customer/account.js +288 -0
  33. package/dist/cjs/slices/customer/addresses.d.ts +37 -0
  34. package/dist/cjs/slices/customer/addresses.js +134 -0
  35. package/dist/cjs/slices/customer/allergens.d.ts +25 -0
  36. package/dist/cjs/slices/customer/allergens.js +94 -0
  37. package/dist/cjs/slices/customer/communicationPreferences.d.ts +44 -0
  38. package/dist/cjs/slices/customer/communicationPreferences.js +165 -0
  39. package/dist/cjs/slices/customer/creditCards.d.ts +46 -0
  40. package/dist/cjs/slices/customer/creditCards.js +172 -0
  41. package/dist/cjs/slices/customer/favorites.d.ts +45 -0
  42. package/dist/cjs/slices/customer/favorites.js +176 -0
  43. package/dist/cjs/slices/customer/fcmToken.d.ts +31 -0
  44. package/dist/cjs/slices/customer/fcmToken.js +110 -0
  45. package/dist/cjs/slices/customer/giftCards.d.ts +62 -0
  46. package/dist/cjs/slices/customer/giftCards.js +196 -0
  47. package/dist/cjs/slices/customer/groupOrders.d.ts +33 -0
  48. package/dist/cjs/slices/customer/groupOrders.js +148 -0
  49. package/dist/cjs/slices/customer/houseAccounts.d.ts +20 -0
  50. package/dist/cjs/slices/customer/houseAccounts.js +67 -0
  51. package/dist/cjs/slices/customer/index.d.ts +29 -0
  52. package/dist/cjs/slices/customer/index.js +52 -0
  53. package/dist/cjs/slices/customer/levelup.d.ts +36 -0
  54. package/dist/cjs/slices/customer/levelup.js +128 -0
  55. package/dist/cjs/slices/customer/loyalty.d.ts +27 -0
  56. package/dist/cjs/slices/customer/loyalty.js +87 -0
  57. package/dist/cjs/slices/customer/order.d.ts +25 -0
  58. package/dist/cjs/slices/customer/order.js +84 -0
  59. package/dist/cjs/slices/customer/orders.d.ts +20 -0
  60. package/dist/cjs/slices/customer/orders.js +67 -0
  61. package/dist/cjs/slices/customer/qrCode.d.ts +17 -0
  62. package/dist/cjs/slices/customer/qrCode.js +57 -0
  63. package/dist/cjs/slices/customer/rewards.d.ts +20 -0
  64. package/dist/cjs/slices/customer/rewards.js +67 -0
  65. package/dist/cjs/slices/customer/thanx.d.ts +17 -0
  66. package/dist/cjs/slices/customer/thanx.js +57 -0
  67. package/dist/cjs/slices/deals.d.ts +19 -0
  68. package/dist/cjs/slices/deals.js +97 -0
  69. package/dist/cjs/slices/donations.d.ts +26 -0
  70. package/dist/cjs/slices/donations.js +62 -0
  71. package/dist/cjs/slices/giftCards.d.ts +26 -0
  72. package/dist/cjs/slices/giftCards.js +63 -0
  73. package/dist/cjs/slices/groupOrder.d.ts +80 -0
  74. package/dist/cjs/slices/groupOrder.js +226 -0
  75. package/dist/cjs/slices/guest.d.ts +38 -0
  76. package/dist/cjs/slices/guest.js +101 -0
  77. package/dist/cjs/slices/index.d.ts +27 -0
  78. package/dist/cjs/slices/index.js +30 -0
  79. package/dist/cjs/slices/levelup.d.ts +18 -0
  80. package/dist/cjs/slices/levelup.js +51 -0
  81. package/dist/cjs/slices/menu.d.ts +22 -0
  82. package/dist/cjs/slices/menu.js +86 -0
  83. package/dist/cjs/slices/menuDisplay.d.ts +26 -0
  84. package/dist/cjs/slices/menuDisplay.js +59 -0
  85. package/dist/cjs/slices/menuItems.d.ts +20 -0
  86. package/dist/cjs/slices/menuItems.js +57 -0
  87. package/dist/cjs/slices/notifications.d.ts +5 -0
  88. package/dist/cjs/slices/notifications.js +27 -0
  89. package/dist/cjs/slices/order.d.ts +77 -0
  90. package/dist/cjs/slices/order.js +426 -0
  91. package/dist/cjs/slices/orderFulfillment.d.ts +29 -0
  92. package/dist/cjs/slices/orderFulfillment.js +83 -0
  93. package/dist/cjs/slices/orderRating.d.ts +34 -0
  94. package/dist/cjs/slices/orderRating.js +108 -0
  95. package/dist/cjs/slices/orders.d.ts +86 -0
  96. package/dist/cjs/slices/orders.js +311 -0
  97. package/dist/cjs/slices/resetPassword.d.ts +29 -0
  98. package/dist/cjs/slices/resetPassword.js +83 -0
  99. package/dist/cjs/slices/revenueCenters.d.ts +35 -0
  100. package/dist/cjs/slices/revenueCenters.js +95 -0
  101. package/dist/cjs/slices/signUp.d.ts +19 -0
  102. package/dist/cjs/slices/signUp.js +52 -0
  103. package/dist/cjs/slices/types.d.ts +43 -0
  104. package/dist/cjs/slices/types.js +47 -0
  105. package/dist/cjs/slices/validTimes.d.ts +17 -0
  106. package/dist/cjs/slices/validTimes.js +57 -0
  107. package/dist/cjs/slices/verifyAccount.d.ts +17 -0
  108. package/dist/cjs/slices/verifyAccount.js +54 -0
  109. package/dist/esm/app/hooks.d.ts +50 -0
  110. package/dist/esm/app/hooks.js +4 -0
  111. package/dist/esm/app/index.d.ts +1 -0
  112. package/dist/esm/app/index.js +1 -0
  113. package/dist/esm/app/store.d.ts +146 -0
  114. package/dist/esm/app/store.js +48 -0
  115. package/dist/esm/index.d.ts +3 -0
  116. package/dist/esm/index.js +3 -0
  117. package/dist/esm/services/api.d.ts +162 -0
  118. package/dist/esm/services/api.js +689 -0
  119. package/dist/esm/services/errors.d.ts +50 -0
  120. package/dist/esm/services/errors.js +50 -0
  121. package/dist/esm/services/index.d.ts +2 -0
  122. package/dist/esm/services/index.js +2 -0
  123. package/dist/esm/slices/alerts.d.ts +5 -0
  124. package/dist/esm/slices/alerts.js +23 -0
  125. package/dist/esm/slices/allergens.d.ts +19 -0
  126. package/dist/esm/slices/allergens.js +60 -0
  127. package/dist/esm/slices/announcements.d.ts +28 -0
  128. package/dist/esm/slices/announcements.js +71 -0
  129. package/dist/esm/slices/checkout.d.ts +38 -0
  130. package/dist/esm/slices/checkout.js +268 -0
  131. package/dist/esm/slices/completedOrders.d.ts +25 -0
  132. package/dist/esm/slices/completedOrders.js +57 -0
  133. package/dist/esm/slices/config.d.ts +87 -0
  134. package/dist/esm/slices/config.js +102 -0
  135. package/dist/esm/slices/confirmation.d.ts +8 -0
  136. package/dist/esm/slices/confirmation.js +18 -0
  137. package/dist/esm/slices/customer/account.d.ts +59 -0
  138. package/dist/esm/slices/customer/account.js +282 -0
  139. package/dist/esm/slices/customer/addresses.d.ts +37 -0
  140. package/dist/esm/slices/customer/addresses.js +129 -0
  141. package/dist/esm/slices/customer/allergens.d.ts +25 -0
  142. package/dist/esm/slices/customer/allergens.js +89 -0
  143. package/dist/esm/slices/customer/communicationPreferences.d.ts +44 -0
  144. package/dist/esm/slices/customer/communicationPreferences.js +161 -0
  145. package/dist/esm/slices/customer/creditCards.d.ts +46 -0
  146. package/dist/esm/slices/customer/creditCards.js +166 -0
  147. package/dist/esm/slices/customer/favorites.d.ts +45 -0
  148. package/dist/esm/slices/customer/favorites.js +171 -0
  149. package/dist/esm/slices/customer/fcmToken.d.ts +31 -0
  150. package/dist/esm/slices/customer/fcmToken.js +106 -0
  151. package/dist/esm/slices/customer/giftCards.d.ts +62 -0
  152. package/dist/esm/slices/customer/giftCards.js +191 -0
  153. package/dist/esm/slices/customer/groupOrders.d.ts +33 -0
  154. package/dist/esm/slices/customer/groupOrders.js +143 -0
  155. package/dist/esm/slices/customer/houseAccounts.d.ts +20 -0
  156. package/dist/esm/slices/customer/houseAccounts.js +62 -0
  157. package/dist/esm/slices/customer/index.d.ts +29 -0
  158. package/dist/esm/slices/customer/index.js +48 -0
  159. package/dist/esm/slices/customer/levelup.d.ts +36 -0
  160. package/dist/esm/slices/customer/levelup.js +123 -0
  161. package/dist/esm/slices/customer/loyalty.d.ts +27 -0
  162. package/dist/esm/slices/customer/loyalty.js +79 -0
  163. package/dist/esm/slices/customer/order.d.ts +25 -0
  164. package/dist/esm/slices/customer/order.js +79 -0
  165. package/dist/esm/slices/customer/orders.d.ts +20 -0
  166. package/dist/esm/slices/customer/orders.js +62 -0
  167. package/dist/esm/slices/customer/qrCode.d.ts +17 -0
  168. package/dist/esm/slices/customer/qrCode.js +53 -0
  169. package/dist/esm/slices/customer/rewards.d.ts +20 -0
  170. package/dist/esm/slices/customer/rewards.js +62 -0
  171. package/dist/esm/slices/customer/thanx.d.ts +17 -0
  172. package/dist/esm/slices/customer/thanx.js +53 -0
  173. package/dist/esm/slices/deals.d.ts +19 -0
  174. package/dist/esm/slices/deals.js +91 -0
  175. package/dist/esm/slices/donations.d.ts +26 -0
  176. package/dist/esm/slices/donations.js +58 -0
  177. package/dist/esm/slices/giftCards.d.ts +26 -0
  178. package/dist/esm/slices/giftCards.js +59 -0
  179. package/dist/esm/slices/groupOrder.d.ts +80 -0
  180. package/dist/esm/slices/groupOrder.js +216 -0
  181. package/dist/esm/slices/guest.d.ts +38 -0
  182. package/dist/esm/slices/guest.js +97 -0
  183. package/dist/esm/slices/index.d.ts +27 -0
  184. package/dist/esm/slices/index.js +27 -0
  185. package/dist/esm/slices/levelup.d.ts +18 -0
  186. package/dist/esm/slices/levelup.js +48 -0
  187. package/dist/esm/slices/menu.d.ts +22 -0
  188. package/dist/esm/slices/menu.js +81 -0
  189. package/dist/esm/slices/menuDisplay.d.ts +26 -0
  190. package/dist/esm/slices/menuDisplay.js +55 -0
  191. package/dist/esm/slices/menuItems.d.ts +20 -0
  192. package/dist/esm/slices/menuItems.js +52 -0
  193. package/dist/esm/slices/notifications.d.ts +5 -0
  194. package/dist/esm/slices/notifications.js +22 -0
  195. package/dist/esm/slices/order.d.ts +77 -0
  196. package/dist/esm/slices/order.js +423 -0
  197. package/dist/esm/slices/orderFulfillment.d.ts +29 -0
  198. package/dist/esm/slices/orderFulfillment.js +79 -0
  199. package/dist/esm/slices/orderRating.d.ts +34 -0
  200. package/dist/esm/slices/orderRating.js +104 -0
  201. package/dist/esm/slices/orders.d.ts +86 -0
  202. package/dist/esm/slices/orders.js +302 -0
  203. package/dist/esm/slices/resetPassword.d.ts +29 -0
  204. package/dist/esm/slices/resetPassword.js +79 -0
  205. package/dist/esm/slices/revenueCenters.d.ts +35 -0
  206. package/dist/esm/slices/revenueCenters.js +89 -0
  207. package/dist/esm/slices/signUp.d.ts +19 -0
  208. package/dist/esm/slices/signUp.js +48 -0
  209. package/dist/esm/slices/types.d.ts +43 -0
  210. package/dist/esm/slices/types.js +44 -0
  211. package/dist/esm/slices/validTimes.d.ts +17 -0
  212. package/dist/esm/slices/validTimes.js +52 -0
  213. package/dist/esm/slices/verifyAccount.d.ts +17 -0
  214. package/dist/esm/slices/verifyAccount.js +50 -0
  215. package/package.json +61 -0
@@ -0,0 +1,38 @@
1
+ import { AppState } from '../app';
2
+ import { Brands, RequestStatus } from '@open-tender/types';
3
+ export interface GuestState {
4
+ brands: Brands | null;
5
+ errors: any;
6
+ loading: RequestStatus;
7
+ email?: string | null;
8
+ showMagicLink: boolean;
9
+ }
10
+ export declare enum GuestActionType {
11
+ FetchGuest = "guest/fetchGuest",
12
+ FetchGuestThanx = "guest/fetchGuestThanx"
13
+ }
14
+ export declare const fetchGuest: import("@reduxjs/toolkit").AsyncThunk<Partial<GuestState>, {
15
+ email: string;
16
+ callback?: (() => void) | undefined;
17
+ }, {
18
+ state: AppState;
19
+ rejectValue: {
20
+ errors: any;
21
+ email: string;
22
+ };
23
+ }>;
24
+ export declare const fetchGuestThanx: import("@reduxjs/toolkit").AsyncThunk<void | {
25
+ email: string;
26
+ }, {
27
+ email: string;
28
+ callback?: (() => void) | undefined;
29
+ }, {
30
+ state: AppState;
31
+ rejectValue: {
32
+ errors: any;
33
+ email: string;
34
+ };
35
+ }>;
36
+ export declare const resetGuest: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>;
37
+ export declare const selectGuest: (state: AppState) => GuestState;
38
+ export declare const guestReducer: import("redux").Reducer<GuestState, import("redux").AnyAction>;
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.guestReducer = exports.selectGuest = exports.resetGuest = exports.fetchGuestThanx = exports.fetchGuest = exports.GuestActionType = void 0;
4
+ const tslib_1 = require("tslib");
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
+ brands: null,
10
+ showMagicLink: false,
11
+ errors: null,
12
+ loading: 'idle',
13
+ email: null
14
+ };
15
+ var GuestActionType;
16
+ (function (GuestActionType) {
17
+ GuestActionType["FetchGuest"] = "guest/fetchGuest";
18
+ GuestActionType["FetchGuestThanx"] = "guest/fetchGuestThanx";
19
+ })(GuestActionType = exports.GuestActionType || (exports.GuestActionType = {}));
20
+ exports.fetchGuest = (0, toolkit_1.createAsyncThunk)(GuestActionType.FetchGuest, (requestData, { getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
21
+ const { api } = getState().config;
22
+ if (!api)
23
+ return;
24
+ try {
25
+ const response = yield api.getGuest(requestData.email);
26
+ if (requestData.callback)
27
+ requestData.callback();
28
+ return response;
29
+ }
30
+ catch (err) {
31
+ let errors = (0, utils_1.makeFormErrors)(err);
32
+ if (errors.form && errors.form.includes('Unknown 500 error')) {
33
+ errors = { form: 'Invalid email address. Please try again.' };
34
+ }
35
+ return rejectWithValue({ errors, email: requestData.email });
36
+ }
37
+ }));
38
+ exports.fetchGuestThanx = (0, toolkit_1.createAsyncThunk)(GuestActionType.FetchGuestThanx, (requestData, { getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
39
+ const { api } = getState().config;
40
+ if (!api)
41
+ return;
42
+ try {
43
+ yield api.postThanxLogin(requestData.email);
44
+ if (requestData.callback)
45
+ requestData.callback();
46
+ return { email: requestData.email };
47
+ }
48
+ catch (err) {
49
+ const errors = (0, utils_1.makeFormErrors)(err);
50
+ return rejectWithValue({ errors, email: requestData.email });
51
+ }
52
+ }));
53
+ const guestSlice = (0, toolkit_1.createSlice)({
54
+ name: types_1.ReducerType.Guest,
55
+ initialState,
56
+ reducers: {
57
+ resetGuest: () => initialState,
58
+ resetGuestErrors: state => {
59
+ state.errors = null;
60
+ state.loading = 'idle';
61
+ state.showMagicLink = false;
62
+ },
63
+ setGuestEmail: (state, action) => {
64
+ state.email = action.payload;
65
+ }
66
+ },
67
+ extraReducers: builder => {
68
+ builder
69
+ .addCase(exports.fetchGuest.fulfilled, (state, action) => {
70
+ state = Object.assign(Object.assign(Object.assign({}, state), { loading: 'idle', errors: null }), action.payload);
71
+ })
72
+ .addCase(exports.fetchGuest.pending, state => {
73
+ state.loading = 'pending';
74
+ })
75
+ .addCase(exports.fetchGuest.rejected, (state, action) => {
76
+ var _a, _b;
77
+ state.errors = (_a = action.payload) === null || _a === void 0 ? void 0 : _a.errors;
78
+ state.email = (_b = action.payload) === null || _b === void 0 ? void 0 : _b.email;
79
+ state.loading = 'idle';
80
+ state.brands = null;
81
+ })
82
+ .addCase(exports.fetchGuestThanx.fulfilled, (state, action) => {
83
+ state = Object.assign(Object.assign(Object.assign({}, state), { loading: 'idle', errors: null, showMagicLink: true }), action.payload);
84
+ })
85
+ .addCase(exports.fetchGuestThanx.pending, state => {
86
+ state.loading = 'pending';
87
+ })
88
+ .addCase(exports.fetchGuestThanx.rejected, (state, action) => {
89
+ var _a, _b;
90
+ state.errors = (_a = action.payload) === null || _a === void 0 ? void 0 : _a.errors;
91
+ state.email = (_b = action.payload) === null || _b === void 0 ? void 0 : _b.email;
92
+ state.loading = 'idle';
93
+ state.showMagicLink = false;
94
+ state.brands = null;
95
+ });
96
+ }
97
+ });
98
+ exports.resetGuest = guestSlice.actions.resetGuest;
99
+ const selectGuest = (state) => state.guest;
100
+ exports.selectGuest = selectGuest;
101
+ exports.guestReducer = guestSlice.reducer;
@@ -0,0 +1,27 @@
1
+ export * from './alerts';
2
+ export * from './notifications';
3
+ export * from './allergens';
4
+ export * from './announcements';
5
+ export * from './customer';
6
+ export * from './signUp';
7
+ export * from './revenueCenters';
8
+ export * from './checkout';
9
+ export * from './completedOrders';
10
+ export * from './order';
11
+ export * from './orderFulfillment';
12
+ export * from './orderRating';
13
+ export * from './orders';
14
+ export * from './deals';
15
+ export * from './confirmation';
16
+ export * from './donations';
17
+ export * from './guest';
18
+ export * from './verifyAccount';
19
+ export * from './menu';
20
+ export * from './resetPassword';
21
+ export * from './validTimes';
22
+ export * from './menuItems';
23
+ export * from './menuDisplay';
24
+ export * from './giftCards';
25
+ export * from './groupOrder';
26
+ export * from './levelup';
27
+ export * from './config';
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./alerts"), exports);
5
+ tslib_1.__exportStar(require("./notifications"), exports);
6
+ tslib_1.__exportStar(require("./allergens"), exports);
7
+ tslib_1.__exportStar(require("./announcements"), exports);
8
+ tslib_1.__exportStar(require("./customer"), exports);
9
+ tslib_1.__exportStar(require("./signUp"), exports);
10
+ tslib_1.__exportStar(require("./revenueCenters"), exports);
11
+ tslib_1.__exportStar(require("./checkout"), exports);
12
+ tslib_1.__exportStar(require("./completedOrders"), exports);
13
+ tslib_1.__exportStar(require("./order"), exports);
14
+ tslib_1.__exportStar(require("./orderFulfillment"), exports);
15
+ tslib_1.__exportStar(require("./orderRating"), exports);
16
+ tslib_1.__exportStar(require("./orders"), exports);
17
+ tslib_1.__exportStar(require("./deals"), exports);
18
+ tslib_1.__exportStar(require("./confirmation"), exports);
19
+ tslib_1.__exportStar(require("./donations"), exports);
20
+ tslib_1.__exportStar(require("./guest"), exports);
21
+ tslib_1.__exportStar(require("./verifyAccount"), exports);
22
+ tslib_1.__exportStar(require("./menu"), exports);
23
+ tslib_1.__exportStar(require("./resetPassword"), exports);
24
+ tslib_1.__exportStar(require("./validTimes"), exports);
25
+ tslib_1.__exportStar(require("./menuItems"), exports);
26
+ tslib_1.__exportStar(require("./menuDisplay"), exports);
27
+ tslib_1.__exportStar(require("./giftCards"), exports);
28
+ tslib_1.__exportStar(require("./groupOrder"), exports);
29
+ tslib_1.__exportStar(require("./levelup"), exports);
30
+ tslib_1.__exportStar(require("./config"), exports);
@@ -0,0 +1,18 @@
1
+ import { AppState } from '../app';
2
+ import { RequestError, RequestStatus } from '@open-tender/types';
3
+ export interface LevelupState {
4
+ loading: RequestStatus;
5
+ error: RequestError;
6
+ }
7
+ export declare enum LevelupActionType {
8
+ FetchLevelUpCustomer = "levelup/fetchLevelUpCustomer"
9
+ }
10
+ export declare const fetchLevelUpCustomer: import("@reduxjs/toolkit").AsyncThunk<void, {
11
+ token: string;
12
+ callback?: (() => void) | undefined;
13
+ }, {
14
+ state: AppState;
15
+ rejectValue: RequestError;
16
+ }>;
17
+ export declare const resetLevelup: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>;
18
+ export declare const levelupReducer: import("redux").Reducer<LevelupState, import("redux").AnyAction>;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.levelupReducer = exports.resetLevelup = exports.fetchLevelUpCustomer = exports.LevelupActionType = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const toolkit_1 = require("@reduxjs/toolkit");
6
+ const types_1 = require("./types");
7
+ const customer_1 = require("./customer");
8
+ const initialState = {
9
+ loading: 'idle',
10
+ error: null
11
+ };
12
+ var LevelupActionType;
13
+ (function (LevelupActionType) {
14
+ LevelupActionType["FetchLevelUpCustomer"] = "levelup/fetchLevelUpCustomer";
15
+ })(LevelupActionType = exports.LevelupActionType || (exports.LevelupActionType = {}));
16
+ exports.fetchLevelUpCustomer = (0, toolkit_1.createAsyncThunk)(LevelupActionType.FetchLevelUpCustomer, (data, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
17
+ const { api } = getState().config;
18
+ if (!api)
19
+ return;
20
+ try {
21
+ const auth = yield api.postLevelUp({ token: data.token });
22
+ dispatch((0, customer_1.fulfillLoginCustomer)(auth));
23
+ dispatch((0, customer_1.fetchCustomer)());
24
+ if (data.callback)
25
+ data.callback();
26
+ return;
27
+ }
28
+ catch (err) {
29
+ return rejectWithValue(err);
30
+ }
31
+ }));
32
+ const levelupSlice = (0, toolkit_1.createSlice)({
33
+ name: types_1.ReducerType.Levelup,
34
+ initialState,
35
+ reducers: {
36
+ resetLevelup: () => initialState
37
+ },
38
+ extraReducers: builder => {
39
+ builder
40
+ .addCase(exports.fetchLevelUpCustomer.fulfilled, () => initialState)
41
+ .addCase(exports.fetchLevelUpCustomer.pending, state => {
42
+ state.loading = 'pending';
43
+ })
44
+ .addCase(exports.fetchLevelUpCustomer.rejected, (state, action) => {
45
+ state.loading = 'idle';
46
+ state.error = action.payload;
47
+ });
48
+ }
49
+ });
50
+ exports.resetLevelup = levelupSlice.actions.resetLevelup;
51
+ exports.levelupReducer = levelupSlice.reducer;
@@ -0,0 +1,22 @@
1
+ import { AppState } from '../app';
2
+ import { MenuCategories, MenuVars, OrderRevenueCenter, RequestError, RequestStatus, SoldOut } from '@open-tender/types';
3
+ export interface MenuState {
4
+ loading: RequestStatus;
5
+ error: RequestError;
6
+ cartErrors: any;
7
+ categories: MenuCategories;
8
+ menuVars: Partial<MenuVars> | null;
9
+ previousMenuVars: Partial<MenuVars> | null;
10
+ revenueCenters: OrderRevenueCenter[] | null;
11
+ soldOut: SoldOut;
12
+ }
13
+ export declare enum MenuActionType {
14
+ FetchMenu = "menu/fetchMenu"
15
+ }
16
+ export declare const fetchMenu: import("@reduxjs/toolkit").AsyncThunk<void | Partial<MenuState>, Partial<MenuVars>, {
17
+ state: AppState;
18
+ rejectValue: any;
19
+ }>;
20
+ export declare const resetMenu: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetCartErrors: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetMenuVars: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setCartErrors: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
21
+ export declare const selectMenu: (state: AppState) => MenuState;
22
+ export declare const menuReducer: import("redux").Reducer<MenuState, import("redux").AnyAction>;
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.menuReducer = exports.selectMenu = exports.setCartErrors = exports.resetMenuVars = exports.resetCartErrors = exports.resetMenu = exports.fetchMenu = exports.MenuActionType = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const toolkit_1 = require("@reduxjs/toolkit");
7
+ const types_1 = require("./types");
8
+ const order_1 = require("./order");
9
+ const utils_1 = require("@open-tender/utils");
10
+ const initialState = {
11
+ menuVars: null,
12
+ previousMenuVars: null,
13
+ revenueCenters: null,
14
+ categories: [],
15
+ soldOut: [],
16
+ cartErrors: null,
17
+ error: null,
18
+ loading: 'idle'
19
+ };
20
+ var MenuActionType;
21
+ (function (MenuActionType) {
22
+ MenuActionType["FetchMenu"] = "menu/fetchMenu";
23
+ })(MenuActionType = exports.MenuActionType || (exports.MenuActionType = {}));
24
+ exports.fetchMenu = (0, toolkit_1.createAsyncThunk)(MenuActionType.FetchMenu, (menuVars, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
25
+ const { api } = getState().config;
26
+ if (!api)
27
+ return;
28
+ const { revenueCenterId, serviceType, requestedAt } = menuVars;
29
+ try {
30
+ if (requestedAt === null) {
31
+ const err = getState().menu.error;
32
+ throw err;
33
+ }
34
+ const menu = yield api.getMenu(revenueCenterId, serviceType, requestedAt);
35
+ const { cart } = getState().order;
36
+ const { menu: categories, sold_out_items: soldOut, revenue_centers: revenueCenters } = menu;
37
+ const { newCart, errors } = (0, utils_1.validateCart)(cart !== null && cart !== void 0 ? cart : [], categories, soldOut);
38
+ if (errors) {
39
+ dispatch((0, exports.setCartErrors)({ newCart, errors }));
40
+ dispatch((0, order_1.setAlert)({ type: 'cartErrors' }));
41
+ }
42
+ else {
43
+ dispatch((0, order_1.setCart)(newCart));
44
+ dispatch((0, exports.resetCartErrors)());
45
+ }
46
+ return { categories, soldOut, revenueCenters, menuVars };
47
+ }
48
+ catch (err) {
49
+ dispatch((0, order_1.refreshRevenueCenter)(Object.assign(Object.assign({}, menuVars), { reset: true })));
50
+ return rejectWithValue(err);
51
+ }
52
+ }));
53
+ const menuSlice = (0, toolkit_1.createSlice)({
54
+ name: types_1.ReducerType.Menu,
55
+ initialState,
56
+ reducers: {
57
+ resetMenu: () => initialState,
58
+ resetMenuVars: state => {
59
+ state.menuVars = null;
60
+ state.previousMenuVars = null;
61
+ },
62
+ resetCartErrors: state => {
63
+ state.cartErrors = null;
64
+ },
65
+ setCartErrors: (state, action) => {
66
+ state.cartErrors = action.payload;
67
+ }
68
+ },
69
+ extraReducers: builder => {
70
+ builder
71
+ .addCase(exports.fetchMenu.fulfilled, (state, action) => {
72
+ state = Object.assign(Object.assign(Object.assign({}, state), { previousMenuVars: state.menuVars || null, loading: 'idle', error: null }), action.payload);
73
+ })
74
+ .addCase(exports.fetchMenu.pending, state => {
75
+ state.loading = 'pending';
76
+ })
77
+ .addCase(exports.fetchMenu.rejected, (state, action) => {
78
+ state.loading = 'idle';
79
+ state.error = action.payload;
80
+ });
81
+ }
82
+ });
83
+ _a = menuSlice.actions, exports.resetMenu = _a.resetMenu, exports.resetCartErrors = _a.resetCartErrors, exports.resetMenuVars = _a.resetMenuVars, exports.setCartErrors = _a.setCartErrors;
84
+ const selectMenu = (state) => state.menu;
85
+ exports.selectMenu = selectMenu;
86
+ exports.menuReducer = menuSlice.reducer;
@@ -0,0 +1,26 @@
1
+ import { AppState } from '../app';
2
+ import { MenuCategory, RequestError, RequestStatus, ServiceType, Weekday } from '@open-tender/types';
3
+ export interface MenuDisplayState {
4
+ loading: RequestStatus;
5
+ error: RequestError;
6
+ categories: Array<MenuCategory>;
7
+ }
8
+ export declare enum MenuDisplayActionType {
9
+ FetchMenuDisplay = "menuDisplay/fetchMenuDisplay"
10
+ }
11
+ export declare const fetchMenuDisplay: import("@reduxjs/toolkit").AsyncThunk<MenuCategory[], {
12
+ revenueCenterId: number;
13
+ serviceType: ServiceType;
14
+ weekday: Weekday;
15
+ minutes: any;
16
+ }, {
17
+ state: AppState;
18
+ rejectValue: RequestError;
19
+ }>;
20
+ export declare const resetMenuDisplay: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>;
21
+ export declare const selectMenuDisplay: (state: AppState) => {
22
+ categories: MenuCategory[];
23
+ loading: RequestStatus;
24
+ error: RequestError;
25
+ };
26
+ export declare const menuDisplayReducer: import("redux").Reducer<MenuDisplayState, import("redux").AnyAction>;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.menuDisplayReducer = exports.selectMenuDisplay = exports.resetMenuDisplay = exports.fetchMenuDisplay = exports.MenuDisplayActionType = 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
+ loading: 'idle',
9
+ error: null,
10
+ categories: []
11
+ };
12
+ var MenuDisplayActionType;
13
+ (function (MenuDisplayActionType) {
14
+ MenuDisplayActionType["FetchMenuDisplay"] = "menuDisplay/fetchMenuDisplay";
15
+ })(MenuDisplayActionType = exports.MenuDisplayActionType || (exports.MenuDisplayActionType = {}));
16
+ exports.fetchMenuDisplay = (0, toolkit_1.createAsyncThunk)(MenuDisplayActionType.FetchMenuDisplay, (requestData, { getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
17
+ const { api } = getState().config;
18
+ if (!api)
19
+ return;
20
+ try {
21
+ const { menu: categories } = yield api.getMenuDisplay(requestData.revenueCenterId, requestData.serviceType, requestData.weekday, requestData.minutes);
22
+ return categories;
23
+ }
24
+ catch (err) {
25
+ return rejectWithValue(err);
26
+ }
27
+ }));
28
+ const menuDisplaySlice = (0, toolkit_1.createSlice)({
29
+ name: types_1.ReducerType.MenuDisplay,
30
+ initialState,
31
+ reducers: {
32
+ resetMenuDisplay: () => initialState,
33
+ setMenuDisplay: (state, action) => {
34
+ state.categories = action.payload;
35
+ }
36
+ },
37
+ extraReducers: builder => {
38
+ builder
39
+ .addCase(exports.fetchMenuDisplay.fulfilled, (state, action) => {
40
+ state.categories = action.payload;
41
+ state.loading = 'idle';
42
+ state.error = null;
43
+ })
44
+ .addCase(exports.fetchMenuDisplay.pending, state => {
45
+ state.loading = 'pending';
46
+ })
47
+ .addCase(exports.fetchMenuDisplay.rejected, (state, action) => {
48
+ state.loading = 'idle';
49
+ state.error = action.payload;
50
+ });
51
+ }
52
+ });
53
+ exports.resetMenuDisplay = menuDisplaySlice.actions.resetMenuDisplay;
54
+ const selectMenuDisplay = (state) => {
55
+ const { categories, loading, error } = state.menuDisplay;
56
+ return { categories, loading, error };
57
+ };
58
+ exports.selectMenuDisplay = selectMenuDisplay;
59
+ exports.menuDisplayReducer = menuDisplaySlice.reducer;
@@ -0,0 +1,20 @@
1
+ import { AppState } from '../app';
2
+ import { MenuItem, RequestError, RequestStatus, ServiceType } from '@open-tender/types';
3
+ export interface MenuItemsState {
4
+ loading: RequestStatus;
5
+ error: RequestError;
6
+ entities: Array<MenuItem>;
7
+ }
8
+ export declare enum MenuItemsActionType {
9
+ FetchMenuItems = "menuItems/fetchMenuItems"
10
+ }
11
+ export declare const fetchMenuItems: import("@reduxjs/toolkit").AsyncThunk<MenuItem[], {
12
+ revenueCenterId: number;
13
+ serviceType: ServiceType;
14
+ }, {
15
+ state: AppState;
16
+ rejectValue: RequestError;
17
+ }>;
18
+ export declare const resetMenuItems: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setMenuItems: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
19
+ export declare const selectMenuItems: (state: AppState) => MenuItemsState;
20
+ export declare const menuItemsReducer: import("redux").Reducer<MenuItemsState, import("redux").AnyAction>;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.menuItemsReducer = exports.selectMenuItems = exports.setMenuItems = exports.resetMenuItems = exports.fetchMenuItems = exports.MenuItemsActionType = 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
+ loading: 'idle',
10
+ error: null,
11
+ entities: []
12
+ };
13
+ var MenuItemsActionType;
14
+ (function (MenuItemsActionType) {
15
+ MenuItemsActionType["FetchMenuItems"] = "menuItems/fetchMenuItems";
16
+ })(MenuItemsActionType = exports.MenuItemsActionType || (exports.MenuItemsActionType = {}));
17
+ exports.fetchMenuItems = (0, toolkit_1.createAsyncThunk)(MenuItemsActionType.FetchMenuItems, (requestData, { getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
18
+ const { api } = getState().config;
19
+ if (!api)
20
+ return;
21
+ try {
22
+ const menuItems = yield api.getMenuItems(requestData.revenueCenterId, requestData.serviceType);
23
+ return menuItems;
24
+ }
25
+ catch (err) {
26
+ return rejectWithValue(err);
27
+ }
28
+ }));
29
+ const menuItemsSlice = (0, toolkit_1.createSlice)({
30
+ name: types_1.ReducerType.MenuItems,
31
+ initialState,
32
+ reducers: {
33
+ resetMenuItems: () => initialState,
34
+ setMenuItems: (state, action) => {
35
+ state.entities = action.payload;
36
+ }
37
+ },
38
+ extraReducers: builder => {
39
+ builder
40
+ .addCase(exports.fetchMenuItems.fulfilled, (state, action) => {
41
+ state.entities = action.payload;
42
+ state.loading = 'idle';
43
+ state.error = null;
44
+ })
45
+ .addCase(exports.fetchMenuItems.pending, state => {
46
+ state.loading = 'pending';
47
+ })
48
+ .addCase(exports.fetchMenuItems.rejected, (state, action) => {
49
+ state.loading = 'idle';
50
+ state.error = action.payload;
51
+ });
52
+ }
53
+ });
54
+ _a = menuItemsSlice.actions, exports.resetMenuItems = _a.resetMenuItems, exports.setMenuItems = _a.setMenuItems;
55
+ const selectMenuItems = (state) => state.menuItems;
56
+ exports.selectMenuItems = selectMenuItems;
57
+ exports.menuItemsReducer = menuItemsSlice.reducer;
@@ -0,0 +1,5 @@
1
+ import { Notifications } from '@open-tender/types';
2
+ import { AppState } from '../app';
3
+ export declare const showNotification: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, hideNotification: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
4
+ export declare const selectNotifications: (state: AppState) => Notifications;
5
+ export declare const notificationsReducer: import("redux").Reducer<Notifications, import("redux").AnyAction>;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.notificationsReducer = exports.selectNotifications = exports.hideNotification = exports.showNotification = 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 notificationsSlice = (0, toolkit_1.createSlice)({
10
+ name: types_1.ReducerType.Notifications,
11
+ initialState,
12
+ reducers: {
13
+ showNotification: (state, action) => {
14
+ return [
15
+ ...state,
16
+ { message: action.payload, id: (0, utils_1.makeRandomNumberString)() }
17
+ ];
18
+ },
19
+ hideNotification: (state, action) => {
20
+ return state.filter(i => i.id !== action.payload);
21
+ }
22
+ }
23
+ });
24
+ _a = notificationsSlice.actions, exports.showNotification = _a.showNotification, exports.hideNotification = _a.hideNotification;
25
+ const selectNotifications = (state) => state.notifications;
26
+ exports.selectNotifications = selectNotifications;
27
+ exports.notificationsReducer = notificationsSlice.reducer;
@@ -0,0 +1,77 @@
1
+ import { AppState } from '../app';
2
+ import { Address, MenuCategory, MenuItem, ISOString, Order, OrderRevenueCenter, OrderType, PrepStatus, RequestError, RequestStatus, ServiceType, Cart, CartItem } from '@open-tender/types';
3
+ export interface OrderState {
4
+ error: RequestError;
5
+ loading: RequestStatus;
6
+ address: Address | null;
7
+ alert: any;
8
+ cart: Cart | null;
9
+ cartCounts: {
10
+ [key: number]: number;
11
+ } | null;
12
+ currentCategory: MenuCategory | null;
13
+ currentItem: MenuItem | null;
14
+ currentVendor: any;
15
+ deviceType: any;
16
+ isCurbside: boolean;
17
+ isOutpost: boolean;
18
+ messages: any[];
19
+ orderId: number | null;
20
+ orderType: OrderType | null;
21
+ prepType: PrepStatus | null;
22
+ requestedAt: ISOString | string | null;
23
+ revenueCenter: OrderRevenueCenter | null;
24
+ serviceType: ServiceType | null;
25
+ table: any;
26
+ }
27
+ export declare enum OrderActionType {
28
+ FetchRevenueCenter = "order/fetchRevenueCenter",
29
+ FetchLocation = "order/fetchLocation",
30
+ RevertMenu = "order/revertMenu",
31
+ RefreshRevenueCenter = "order/refreshRevenueCenter",
32
+ EditOrder = "order/editOrder",
33
+ ReorderPastOrder = "order/reorderPastOrder"
34
+ }
35
+ export declare const fetchRevenueCenter: import("@reduxjs/toolkit").AsyncThunk<void, {
36
+ revenueCenterId: number;
37
+ requestedAt: string | null;
38
+ }, {
39
+ state: AppState;
40
+ rejectValue: RequestError;
41
+ }>;
42
+ export declare const fetchLocation: import("@reduxjs/toolkit").AsyncThunk<void, number, {
43
+ state: AppState;
44
+ rejectValue: RequestError;
45
+ }>;
46
+ export declare const revertMenu: import("@reduxjs/toolkit").AsyncThunk<void | OrderRevenueCenter, {
47
+ revenueCenterId: number;
48
+ serviceType: ServiceType;
49
+ requestedAt: string;
50
+ }, {
51
+ state: AppState;
52
+ rejectValue: RequestError;
53
+ }>;
54
+ export declare const refreshRevenueCenter: import("@reduxjs/toolkit").AsyncThunk<any, {
55
+ revenueCenterId?: number | undefined;
56
+ serviceType?: ServiceType | undefined;
57
+ requestedAt?: string | null | undefined;
58
+ reset?: boolean | undefined;
59
+ }, {
60
+ state: AppState;
61
+ rejectValue: RequestError;
62
+ }>;
63
+ export declare const editOrder: import("@reduxjs/toolkit").AsyncThunk<void | Partial<OrderState>, Partial<Order>, {
64
+ state: AppState;
65
+ rejectValue: RequestError;
66
+ }>;
67
+ export declare const reorderPastOrder: import("@reduxjs/toolkit").AsyncThunk<void | Partial<OrderState>, {
68
+ revenueCenterId: number;
69
+ serviceType: ServiceType;
70
+ items: Array<Partial<CartItem>>;
71
+ }, {
72
+ state: AppState;
73
+ rejectValue: RequestError;
74
+ }>;
75
+ export declare const resetOrder: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, addItemToCart: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, addMessage: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, decrementItemInCart: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, incrementItemInCart: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, removeItemFromCart: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, removeMessage: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, resetAlert: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetCart: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetLocation: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetMessages: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetOrderType: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetRevenueCenter: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setAddress: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setAlert: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setCart: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setCurbside: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setCurrentCategory: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setDeviceType: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setMenuVars: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setOrderId: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setOrderServiceType: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setOrderType: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setPrepType: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setRequestedAt: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setRevenueCenter: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setServiceType: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setTable: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
76
+ export declare const selectTimezone: (state: AppState) => string;
77
+ export declare const orderReducer: import("redux").Reducer<OrderState, import("redux").AnyAction>;