@open-tender/cloud 0.5.7 → 0.5.9

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 (283) hide show
  1. package/LICENSE.md +21 -21
  2. package/README.md +3 -3
  3. package/dist/cjs/app/hooks.d.ts +67 -67
  4. package/dist/cjs/app/hooks.js +8 -8
  5. package/dist/cjs/app/index.d.ts +2 -2
  6. package/dist/cjs/app/index.js +5 -5
  7. package/dist/cjs/app/store.d.ts +197 -197
  8. package/dist/cjs/app/store.js +65 -65
  9. package/dist/cjs/index.d.ts +5 -5
  10. package/dist/cjs/index.js +11 -11
  11. package/dist/cjs/services/api.d.ts +173 -173
  12. package/dist/cjs/services/api.js +741 -741
  13. package/dist/cjs/services/errors.d.ts +50 -50
  14. package/dist/cjs/services/errors.js +53 -53
  15. package/dist/cjs/services/index.d.ts +3 -3
  16. package/dist/cjs/services/index.js +7 -7
  17. package/dist/cjs/slices/alerts.d.ts +5 -5
  18. package/dist/cjs/slices/alerts.js +29 -29
  19. package/dist/cjs/slices/allergens.d.ts +101 -101
  20. package/dist/cjs/slices/allergens.js +83 -83
  21. package/dist/cjs/slices/announcements.d.ts +180 -180
  22. package/dist/cjs/slices/announcements.js +81 -81
  23. package/dist/cjs/slices/checkout.d.ts +69 -69
  24. package/dist/cjs/slices/checkout.js +326 -326
  25. package/dist/cjs/slices/completedOrders.d.ts +31 -31
  26. package/dist/cjs/slices/completedOrders.js +61 -61
  27. package/dist/cjs/slices/config.d.ts +317 -317
  28. package/dist/cjs/slices/config.js +195 -195
  29. package/dist/cjs/slices/confirmation.d.ts +8 -8
  30. package/dist/cjs/slices/confirmation.js +23 -23
  31. package/dist/cjs/slices/customer/account.d.ts +128 -128
  32. package/dist/cjs/slices/customer/account.js +351 -351
  33. package/dist/cjs/slices/customer/addresses.d.ts +55 -55
  34. package/dist/cjs/slices/customer/addresses.js +132 -132
  35. package/dist/cjs/slices/customer/allergens.d.ts +37 -37
  36. package/dist/cjs/slices/customer/allergens.js +94 -94
  37. package/dist/cjs/slices/customer/communicationPreferences.d.ts +69 -69
  38. package/dist/cjs/slices/customer/communicationPreferences.js +164 -164
  39. package/dist/cjs/slices/customer/creditCards.d.ts +137 -137
  40. package/dist/cjs/slices/customer/creditCards.js +170 -170
  41. package/dist/cjs/slices/customer/favorites.d.ts +68 -68
  42. package/dist/cjs/slices/customer/favorites.js +173 -173
  43. package/dist/cjs/slices/customer/fcmToken.d.ts +49 -49
  44. package/dist/cjs/slices/customer/fcmToken.js +110 -110
  45. package/dist/cjs/slices/customer/giftCards.d.ts +98 -98
  46. package/dist/cjs/slices/customer/giftCards.js +222 -222
  47. package/dist/cjs/slices/customer/groupOrders.d.ts +118 -118
  48. package/dist/cjs/slices/customer/groupOrders.js +262 -262
  49. package/dist/cjs/slices/customer/history.d.ts +23 -23
  50. package/dist/cjs/slices/customer/history.js +57 -57
  51. package/dist/cjs/slices/customer/houseAccounts.d.ts +26 -26
  52. package/dist/cjs/slices/customer/houseAccounts.js +67 -67
  53. package/dist/cjs/slices/customer/index.d.ts +42 -42
  54. package/dist/cjs/slices/customer/index.js +68 -68
  55. package/dist/cjs/slices/customer/loyalty.d.ts +251 -251
  56. package/dist/cjs/slices/customer/loyalty.js +110 -110
  57. package/dist/cjs/slices/customer/order.d.ts +116 -116
  58. package/dist/cjs/slices/customer/order.js +98 -98
  59. package/dist/cjs/slices/customer/orders.d.ts +27 -27
  60. package/dist/cjs/slices/customer/orders.js +69 -69
  61. package/dist/cjs/slices/customer/pointsShop.d.ts +35 -35
  62. package/dist/cjs/slices/customer/pointsShop.js +86 -86
  63. package/dist/cjs/slices/customer/qrCode.d.ts +23 -23
  64. package/dist/cjs/slices/customer/qrCode.js +57 -57
  65. package/dist/cjs/slices/customer/rewards.d.ts +26 -26
  66. package/dist/cjs/slices/customer/rewards.js +67 -67
  67. package/dist/cjs/slices/customer/thanx.d.ts +23 -23
  68. package/dist/cjs/slices/customer/thanx.js +56 -56
  69. package/dist/cjs/slices/customer/tpls.d.ts +238 -238
  70. package/dist/cjs/slices/customer/tpls.js +102 -102
  71. package/dist/cjs/slices/customer/tplsPointsShop.d.ts +38 -38
  72. package/dist/cjs/slices/customer/tplsPointsShop.js +88 -88
  73. package/dist/cjs/slices/deals.d.ts +25 -25
  74. package/dist/cjs/slices/deals.js +96 -96
  75. package/dist/cjs/slices/donations.d.ts +27 -27
  76. package/dist/cjs/slices/donations.js +57 -57
  77. package/dist/cjs/slices/geolocation.d.ts +11 -11
  78. package/dist/cjs/slices/geolocation.js +36 -36
  79. package/dist/cjs/slices/giftCards.d.ts +27 -27
  80. package/dist/cjs/slices/giftCards.js +58 -58
  81. package/dist/cjs/slices/groupOrder.d.ts +418 -418
  82. package/dist/cjs/slices/groupOrder.js +266 -266
  83. package/dist/cjs/slices/guest.d.ts +51 -51
  84. package/dist/cjs/slices/guest.js +91 -91
  85. package/dist/cjs/slices/index.d.ts +41 -41
  86. package/dist/cjs/slices/index.js +44 -44
  87. package/dist/cjs/slices/loader.d.ts +9 -9
  88. package/dist/cjs/slices/loader.js +25 -25
  89. package/dist/cjs/slices/menu.d.ts +31 -31
  90. package/dist/cjs/slices/menu.js +97 -97
  91. package/dist/cjs/slices/menuDisplay.d.ts +32 -32
  92. package/dist/cjs/slices/menuDisplay.js +59 -59
  93. package/dist/cjs/slices/menuItems.d.ts +26 -26
  94. package/dist/cjs/slices/menuItems.js +57 -57
  95. package/dist/cjs/slices/misc.d.ts +17 -17
  96. package/dist/cjs/slices/misc.js +51 -51
  97. package/dist/cjs/slices/modal.d.ts +5 -5
  98. package/dist/cjs/slices/modal.js +30 -30
  99. package/dist/cjs/slices/nav.d.ts +7 -7
  100. package/dist/cjs/slices/nav.js +23 -23
  101. package/dist/cjs/slices/navSite.d.ts +7 -7
  102. package/dist/cjs/slices/navSite.js +23 -23
  103. package/dist/cjs/slices/notifications.d.ts +5 -5
  104. package/dist/cjs/slices/notifications.js +27 -27
  105. package/dist/cjs/slices/oneTimePasscode.d.ts +40 -40
  106. package/dist/cjs/slices/oneTimePasscode.js +91 -91
  107. package/dist/cjs/slices/order.d.ts +372 -372
  108. package/dist/cjs/slices/order.js +528 -528
  109. package/dist/cjs/slices/orderFulfillment.d.ts +37 -37
  110. package/dist/cjs/slices/orderFulfillment.js +77 -77
  111. package/dist/cjs/slices/orderRating.d.ts +52 -52
  112. package/dist/cjs/slices/orderRating.js +105 -105
  113. package/dist/cjs/slices/posts.d.ts +24 -24
  114. package/dist/cjs/slices/posts.js +55 -55
  115. package/dist/cjs/slices/pushNotifications.d.ts +9 -9
  116. package/dist/cjs/slices/pushNotifications.js +29 -29
  117. package/dist/cjs/slices/qr.d.ts +11 -11
  118. package/dist/cjs/slices/qr.js +34 -34
  119. package/dist/cjs/slices/quote.d.ts +102 -102
  120. package/dist/cjs/slices/quote.js +65 -65
  121. package/dist/cjs/slices/resetPassword.d.ts +41 -41
  122. package/dist/cjs/slices/resetPassword.js +80 -80
  123. package/dist/cjs/slices/revenueCenters.d.ts +35 -35
  124. package/dist/cjs/slices/revenueCenters.js +95 -95
  125. package/dist/cjs/slices/sidebar.d.ts +7 -7
  126. package/dist/cjs/slices/sidebar.js +23 -23
  127. package/dist/cjs/slices/sidebarModal.d.ts +7 -7
  128. package/dist/cjs/slices/sidebarModal.js +23 -23
  129. package/dist/cjs/slices/signUp.d.ts +25 -25
  130. package/dist/cjs/slices/signUp.js +60 -60
  131. package/dist/cjs/slices/tags.d.ts +101 -101
  132. package/dist/cjs/slices/tags.js +90 -90
  133. package/dist/cjs/slices/terms.d.ts +20 -20
  134. package/dist/cjs/slices/terms.js +51 -51
  135. package/dist/cjs/slices/types.d.ts +62 -62
  136. package/dist/cjs/slices/types.js +66 -66
  137. package/dist/cjs/slices/unsubscribe.d.ts +39 -39
  138. package/dist/cjs/slices/unsubscribe.js +78 -78
  139. package/dist/cjs/slices/validTimes.d.ts +23 -23
  140. package/dist/cjs/slices/validTimes.js +57 -57
  141. package/dist/cjs/slices/verifyAccount.d.ts +23 -23
  142. package/dist/cjs/slices/verifyAccount.js +54 -54
  143. package/dist/esm/app/hooks.d.ts +67 -67
  144. package/dist/esm/app/hooks.js +4 -4
  145. package/dist/esm/app/index.d.ts +2 -2
  146. package/dist/esm/app/index.js +2 -2
  147. package/dist/esm/app/store.d.ts +197 -197
  148. package/dist/esm/app/store.js +62 -62
  149. package/dist/esm/index.d.ts +5 -5
  150. package/dist/esm/index.js +5 -5
  151. package/dist/esm/services/api.d.ts +173 -173
  152. package/dist/esm/services/api.js +739 -739
  153. package/dist/esm/services/errors.d.ts +50 -50
  154. package/dist/esm/services/errors.js +50 -50
  155. package/dist/esm/services/index.d.ts +3 -3
  156. package/dist/esm/services/index.js +3 -3
  157. package/dist/esm/slices/alerts.d.ts +5 -5
  158. package/dist/esm/slices/alerts.js +24 -24
  159. package/dist/esm/slices/allergens.d.ts +101 -101
  160. package/dist/esm/slices/allergens.js +77 -77
  161. package/dist/esm/slices/announcements.d.ts +180 -180
  162. package/dist/esm/slices/announcements.js +75 -75
  163. package/dist/esm/slices/checkout.d.ts +69 -69
  164. package/dist/esm/slices/checkout.js +318 -318
  165. package/dist/esm/slices/completedOrders.d.ts +31 -31
  166. package/dist/esm/slices/completedOrders.js +57 -57
  167. package/dist/esm/slices/config.d.ts +317 -317
  168. package/dist/esm/slices/config.js +168 -168
  169. package/dist/esm/slices/confirmation.d.ts +8 -8
  170. package/dist/esm/slices/confirmation.js +18 -18
  171. package/dist/esm/slices/customer/account.d.ts +128 -128
  172. package/dist/esm/slices/customer/account.js +344 -344
  173. package/dist/esm/slices/customer/addresses.d.ts +55 -55
  174. package/dist/esm/slices/customer/addresses.js +127 -127
  175. package/dist/esm/slices/customer/allergens.d.ts +37 -37
  176. package/dist/esm/slices/customer/allergens.js +89 -89
  177. package/dist/esm/slices/customer/communicationPreferences.d.ts +69 -69
  178. package/dist/esm/slices/customer/communicationPreferences.js +159 -159
  179. package/dist/esm/slices/customer/creditCards.d.ts +137 -137
  180. package/dist/esm/slices/customer/creditCards.js +165 -165
  181. package/dist/esm/slices/customer/favorites.d.ts +68 -68
  182. package/dist/esm/slices/customer/favorites.js +168 -168
  183. package/dist/esm/slices/customer/fcmToken.d.ts +49 -49
  184. package/dist/esm/slices/customer/fcmToken.js +106 -106
  185. package/dist/esm/slices/customer/giftCards.d.ts +98 -98
  186. package/dist/esm/slices/customer/giftCards.js +217 -217
  187. package/dist/esm/slices/customer/groupOrders.d.ts +118 -118
  188. package/dist/esm/slices/customer/groupOrders.js +256 -256
  189. package/dist/esm/slices/customer/history.d.ts +23 -23
  190. package/dist/esm/slices/customer/history.js +53 -53
  191. package/dist/esm/slices/customer/houseAccounts.d.ts +26 -26
  192. package/dist/esm/slices/customer/houseAccounts.js +62 -62
  193. package/dist/esm/slices/customer/index.d.ts +42 -42
  194. package/dist/esm/slices/customer/index.js +64 -64
  195. package/dist/esm/slices/customer/loyalty.d.ts +251 -251
  196. package/dist/esm/slices/customer/loyalty.js +102 -102
  197. package/dist/esm/slices/customer/order.d.ts +116 -116
  198. package/dist/esm/slices/customer/order.js +94 -94
  199. package/dist/esm/slices/customer/orders.d.ts +27 -27
  200. package/dist/esm/slices/customer/orders.js +63 -63
  201. package/dist/esm/slices/customer/pointsShop.d.ts +35 -35
  202. package/dist/esm/slices/customer/pointsShop.js +82 -82
  203. package/dist/esm/slices/customer/qrCode.d.ts +23 -23
  204. package/dist/esm/slices/customer/qrCode.js +53 -53
  205. package/dist/esm/slices/customer/rewards.d.ts +26 -26
  206. package/dist/esm/slices/customer/rewards.js +62 -62
  207. package/dist/esm/slices/customer/thanx.d.ts +23 -23
  208. package/dist/esm/slices/customer/thanx.js +52 -52
  209. package/dist/esm/slices/customer/tpls.d.ts +238 -238
  210. package/dist/esm/slices/customer/tpls.js +98 -98
  211. package/dist/esm/slices/customer/tplsPointsShop.d.ts +38 -38
  212. package/dist/esm/slices/customer/tplsPointsShop.js +84 -84
  213. package/dist/esm/slices/deals.d.ts +25 -25
  214. package/dist/esm/slices/deals.js +90 -90
  215. package/dist/esm/slices/donations.d.ts +27 -27
  216. package/dist/esm/slices/donations.js +53 -53
  217. package/dist/esm/slices/geolocation.d.ts +11 -11
  218. package/dist/esm/slices/geolocation.js +30 -30
  219. package/dist/esm/slices/giftCards.d.ts +27 -27
  220. package/dist/esm/slices/giftCards.js +54 -54
  221. package/dist/esm/slices/groupOrder.d.ts +418 -418
  222. package/dist/esm/slices/groupOrder.js +259 -259
  223. package/dist/esm/slices/guest.d.ts +51 -51
  224. package/dist/esm/slices/guest.js +86 -86
  225. package/dist/esm/slices/index.d.ts +41 -41
  226. package/dist/esm/slices/index.js +41 -41
  227. package/dist/esm/slices/loader.d.ts +9 -9
  228. package/dist/esm/slices/loader.js +21 -21
  229. package/dist/esm/slices/menu.d.ts +31 -31
  230. package/dist/esm/slices/menu.js +90 -90
  231. package/dist/esm/slices/menuDisplay.d.ts +32 -32
  232. package/dist/esm/slices/menuDisplay.js +55 -55
  233. package/dist/esm/slices/menuItems.d.ts +26 -26
  234. package/dist/esm/slices/menuItems.js +52 -52
  235. package/dist/esm/slices/misc.d.ts +17 -17
  236. package/dist/esm/slices/misc.js +41 -41
  237. package/dist/esm/slices/modal.d.ts +5 -5
  238. package/dist/esm/slices/modal.js +25 -25
  239. package/dist/esm/slices/nav.d.ts +7 -7
  240. package/dist/esm/slices/nav.js +19 -19
  241. package/dist/esm/slices/navSite.d.ts +7 -7
  242. package/dist/esm/slices/navSite.js +19 -19
  243. package/dist/esm/slices/notifications.d.ts +5 -5
  244. package/dist/esm/slices/notifications.js +22 -22
  245. package/dist/esm/slices/oneTimePasscode.d.ts +40 -40
  246. package/dist/esm/slices/oneTimePasscode.js +86 -86
  247. package/dist/esm/slices/order.d.ts +372 -372
  248. package/dist/esm/slices/order.js +508 -508
  249. package/dist/esm/slices/orderFulfillment.d.ts +37 -37
  250. package/dist/esm/slices/orderFulfillment.js +73 -73
  251. package/dist/esm/slices/orderRating.d.ts +52 -52
  252. package/dist/esm/slices/orderRating.js +101 -101
  253. package/dist/esm/slices/posts.d.ts +24 -24
  254. package/dist/esm/slices/posts.js +51 -51
  255. package/dist/esm/slices/pushNotifications.d.ts +9 -9
  256. package/dist/esm/slices/pushNotifications.js +23 -23
  257. package/dist/esm/slices/qr.d.ts +11 -11
  258. package/dist/esm/slices/qr.js +29 -29
  259. package/dist/esm/slices/quote.d.ts +102 -102
  260. package/dist/esm/slices/quote.js +61 -61
  261. package/dist/esm/slices/resetPassword.d.ts +41 -41
  262. package/dist/esm/slices/resetPassword.js +76 -76
  263. package/dist/esm/slices/revenueCenters.d.ts +35 -35
  264. package/dist/esm/slices/revenueCenters.js +89 -89
  265. package/dist/esm/slices/sidebar.d.ts +7 -7
  266. package/dist/esm/slices/sidebar.js +19 -19
  267. package/dist/esm/slices/sidebarModal.d.ts +7 -7
  268. package/dist/esm/slices/sidebarModal.js +19 -19
  269. package/dist/esm/slices/signUp.d.ts +25 -25
  270. package/dist/esm/slices/signUp.js +56 -56
  271. package/dist/esm/slices/tags.d.ts +101 -101
  272. package/dist/esm/slices/tags.js +84 -84
  273. package/dist/esm/slices/terms.d.ts +20 -20
  274. package/dist/esm/slices/terms.js +47 -47
  275. package/dist/esm/slices/types.d.ts +62 -62
  276. package/dist/esm/slices/types.js +63 -63
  277. package/dist/esm/slices/unsubscribe.d.ts +39 -39
  278. package/dist/esm/slices/unsubscribe.js +74 -74
  279. package/dist/esm/slices/validTimes.d.ts +23 -23
  280. package/dist/esm/slices/validTimes.js +52 -52
  281. package/dist/esm/slices/verifyAccount.d.ts +23 -23
  282. package/dist/esm/slices/verifyAccount.js +50 -50
  283. package/package.json +61 -61
@@ -1,528 +1,528 @@
1
- "use strict";
2
- var _a;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.selectMenuSlug = exports.selectCartIds = exports.selectOrderLimits = exports.selectCanOrder = exports.selectCartCounts = exports.selectCartTotal = exports.selectCartQuantity = exports.selectOrder = exports.selectTimezone = exports.selectAlert = exports.updateOrder = exports.setCurrentVendor = exports.checkout = exports.setTable = exports.setServiceType = exports.setRevenueCenter = exports.setRequestedAt = exports.setPrepType = exports.setOrderType = exports.setOrderServiceType = exports.setOrderId = exports.setMenuVars = exports.setDeviceType = exports.setCurrentItem = exports.setCurrentCategory = exports.setCurbside = exports.setCart = exports.setAlert = exports.setAddress = exports.resetRevenueCenter = exports.resetOrderType = exports.resetMessages = exports.resetLocation = exports.resetCart = exports.resetAlert = exports.removeMessage = exports.removeItemFromCart = exports.incrementItemInCart = exports.decrementItemInCart = exports.addMessage = exports.addItemToCart = exports.resetOrder = exports.reorderPastOrder = exports.editOrder = exports.refreshRevenueCenter = exports.revertMenu = exports.fetchLocationBySlug = exports.fetchLocation = exports.fetchRevenueCenter = exports.OrderActionType = void 0;
5
- exports.orderReducer = exports.selectCurrentCategory = exports.selectAutoSelect = exports.selectMenuVars = exports.selectCurrentItem = exports.selectMessages = exports.selectCurrentVendor = exports.selectCart = exports.selectRevenueCenter = void 0;
6
- const tslib_1 = require("tslib");
7
- const toolkit_1 = require("@reduxjs/toolkit");
8
- const types_1 = require("./types");
9
- const utils_1 = require("@open-tender/utils");
10
- const checkout_1 = require("./checkout");
11
- const menu_1 = require("./menu");
12
- const menuItems_1 = require("./menuItems");
13
- const initialState = {
14
- address: null,
15
- alert: null,
16
- cart: [],
17
- cartCounts: {},
18
- currentCategory: null,
19
- currentItem: null,
20
- currentVendor: null,
21
- deviceType: null,
22
- error: null,
23
- isCurbside: false,
24
- isOutpost: false,
25
- loading: 'idle',
26
- messages: [],
27
- orderId: null,
28
- prepType: null,
29
- orderType: null,
30
- requestedAt: 'asap',
31
- revenueCenter: null,
32
- serviceType: null,
33
- table: null
34
- };
35
- var OrderActionType;
36
- (function (OrderActionType) {
37
- OrderActionType["FetchRevenueCenter"] = "order/fetchRevenueCenter";
38
- OrderActionType["FetchLocation"] = "order/fetchLocation";
39
- OrderActionType["RevertMenu"] = "order/revertMenu";
40
- OrderActionType["RefreshRevenueCenter"] = "order/refreshRevenueCenter";
41
- OrderActionType["EditOrder"] = "order/editOrder";
42
- OrderActionType["ReorderPastOrder"] = "order/reorderPastOrder";
43
- })(OrderActionType = exports.OrderActionType || (exports.OrderActionType = {}));
44
- exports.fetchRevenueCenter = (0, toolkit_1.createAsyncThunk)(OrderActionType.FetchRevenueCenter, (requestData, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
45
- const { api } = getState().config;
46
- if (!api)
47
- return;
48
- try {
49
- const revenueCenter = yield api.getRevenueCenter(requestData.revenueCenterId, requestData.requestedAt);
50
- dispatch((0, exports.setRevenueCenter)(revenueCenter));
51
- return revenueCenter;
52
- }
53
- catch (err) {
54
- return rejectWithValue(err);
55
- }
56
- }));
57
- exports.fetchLocation = (0, toolkit_1.createAsyncThunk)(OrderActionType.FetchLocation, ({ revenueCenterId, cartTotal }, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
58
- const { api } = getState().config;
59
- if (!api)
60
- return;
61
- try {
62
- const revenueCenter = yield api.getLocation(revenueCenterId, cartTotal);
63
- dispatch((0, exports.setRevenueCenter)(revenueCenter));
64
- return revenueCenter;
65
- }
66
- catch (err) {
67
- return rejectWithValue(err);
68
- }
69
- }));
70
- exports.fetchLocationBySlug = (0, toolkit_1.createAsyncThunk)(OrderActionType.FetchLocation, ({ slug, cartTotal }, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
71
- const { api } = getState().config;
72
- if (!api)
73
- return;
74
- try {
75
- const revenueCenter = yield api.getLocationBySlug(slug, cartTotal);
76
- dispatch((0, exports.setRevenueCenter)(revenueCenter));
77
- return revenueCenter;
78
- }
79
- catch (err) {
80
- return rejectWithValue(err);
81
- }
82
- }));
83
- exports.revertMenu = (0, toolkit_1.createAsyncThunk)(OrderActionType.RevertMenu, (requestData, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
84
- const { api } = getState().config;
85
- if (!api)
86
- return;
87
- try {
88
- const revenueCenter = yield api.getLocation(requestData.revenueCenterId);
89
- dispatch((0, exports.setMenuVars)({
90
- revenueCenter,
91
- serviceType: requestData.serviceType,
92
- requestedAt: requestData.requestedAt
93
- }));
94
- return revenueCenter;
95
- }
96
- catch (err) {
97
- return rejectWithValue(err);
98
- }
99
- }));
100
- exports.refreshRevenueCenter = (0, toolkit_1.createAsyncThunk)(OrderActionType.RefreshRevenueCenter, ({ revenueCenterId, serviceType, requestedAt, reset }, { getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
101
- const { api } = getState().config;
102
- if (!api)
103
- return;
104
- try {
105
- const revenueCenter = yield api.getLocation(revenueCenterId);
106
- if (reset)
107
- requestedAt = null;
108
- const firstTimes = (0, utils_1.makeFirstTimes)(revenueCenter, serviceType, requestedAt);
109
- const { status } = revenueCenter;
110
- if (!firstTimes || status !== 'OPEN') {
111
- return { type: 'closed', args: { status, preventClose: true } };
112
- }
113
- else {
114
- return {
115
- type: 'adjustRequestedAt',
116
- args: { firstTimes, revenueCenter, preventClose: true }
117
- };
118
- }
119
- }
120
- catch (err) {
121
- return rejectWithValue(err);
122
- }
123
- }));
124
- exports.editOrder = (0, toolkit_1.createAsyncThunk)(OrderActionType.EditOrder, (order, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
125
- const { api } = getState().config;
126
- if (!api)
127
- return;
128
- const alert = { type: 'working', args: { text: 'Building your order...' } };
129
- dispatch((0, exports.setAlert)(alert));
130
- try {
131
- const { order_id: orderId, order_type: orderType, service_type: serviceType, requested_at: requestedAt, revenue_center, address } = order;
132
- const revenueCenterId = revenue_center === null || revenue_center === void 0 ? void 0 : revenue_center.revenue_center_id;
133
- const revenueCenter = yield api.getLocation(revenueCenterId);
134
- const menuItems = yield api.getMenuItems(revenueCenterId, serviceType);
135
- const { cart, cartCounts } = (0, utils_1.rehydrateCart)(menuItems, order.cart);
136
- dispatch((0, menuItems_1.setMenuItems)(menuItems));
137
- const form = (0, utils_1.rehydrateCheckoutForm)(order);
138
- dispatch((0, checkout_1.updateForm)(form));
139
- // dispatch(toggleSidebar())
140
- const isOutpost = revenueCenter.is_outpost;
141
- const payload = {
142
- orderId,
143
- orderType,
144
- serviceType,
145
- isOutpost,
146
- revenueCenter,
147
- requestedAt,
148
- address,
149
- cart: cart,
150
- cartCounts
151
- };
152
- dispatch((0, exports.setAlert)({ type: 'closeAndSidebar' }));
153
- return payload;
154
- }
155
- catch (err) {
156
- dispatch((0, exports.resetAlert)());
157
- dispatch((0, exports.addMessage)('Something went wrong. Please contact support.'));
158
- return rejectWithValue(null);
159
- }
160
- }));
161
- exports.reorderPastOrder = (0, toolkit_1.createAsyncThunk)(OrderActionType.ReorderPastOrder, ({ revenueCenterId, serviceType, items }, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
162
- const { api } = getState().config;
163
- if (!api)
164
- return;
165
- const alert = { type: 'working', args: { text: 'Building your order...' } };
166
- dispatch((0, exports.setAlert)(alert));
167
- try {
168
- const revenueCenter = yield api.getLocation(revenueCenterId);
169
- const requestedAt = (0, utils_1.makeFirstRequestedAt)(revenueCenter, serviceType, null);
170
- if (!requestedAt) {
171
- const { status } = revenueCenter;
172
- const alert = { type: 'closed', args: { status, isCancel: true } };
173
- dispatch((0, exports.setAlert)(alert));
174
- return {};
175
- }
176
- else {
177
- dispatch((0, menu_1.resetMenuVars)());
178
- dispatch((0, exports.resetRevenueCenter)());
179
- const menuItems = yield api.getMenuItems(revenueCenterId, serviceType);
180
- const { cart, cartCounts } = (0, utils_1.rehydrateCart)(menuItems, items);
181
- dispatch((0, menuItems_1.setMenuItems)(menuItems));
182
- const orderType = revenueCenter.revenue_center_type;
183
- const payload = {
184
- revenueCenter,
185
- requestedAt,
186
- serviceType,
187
- cart,
188
- cartCounts
189
- };
190
- const alert = {
191
- type: 'requestedAt',
192
- args: {
193
- openSidebar: true,
194
- focusFirst: true,
195
- skipClose: true,
196
- isReorder: true,
197
- revenueCenter,
198
- serviceType,
199
- orderType,
200
- requestedAt
201
- }
202
- };
203
- dispatch((0, exports.setAlert)(alert));
204
- return payload;
205
- }
206
- }
207
- catch (err) {
208
- dispatch((0, exports.resetAlert)());
209
- dispatch((0, exports.addMessage)('Something went wrong. Please contact support.'));
210
- return rejectWithValue(null);
211
- }
212
- }));
213
- const orderSlice = (0, toolkit_1.createSlice)({
214
- name: types_1.ReducerType.Order,
215
- initialState,
216
- reducers: {
217
- resetOrder: () => initialState,
218
- resetOrderType: state => {
219
- state.orderId = null;
220
- state.orderType = null;
221
- state.serviceType = null;
222
- state.prepType = null;
223
- state.isOutpost = false;
224
- state.isCurbside = false;
225
- state.revenueCenter = null;
226
- state.table = null;
227
- state.requestedAt = null;
228
- },
229
- resetRevenueCenter: state => {
230
- state.revenueCenter = null;
231
- },
232
- resetLocation: state => {
233
- state.revenueCenter = null;
234
- },
235
- resetCart: state => {
236
- state.cart = null;
237
- state.cartCounts = null;
238
- },
239
- resetMessages: state => {
240
- state.messages = [];
241
- },
242
- resetAlert: state => {
243
- state.alert = null;
244
- },
245
- updateOrder: (state, action) => {
246
- return Object.assign(Object.assign({}, state), action.payload);
247
- },
248
- checkout: state => state,
249
- setAlert: (state, action) => {
250
- state.alert = action.payload;
251
- },
252
- setOrderId: (state, action) => {
253
- state.orderId = action.payload;
254
- },
255
- setOrderType: (state, action) => {
256
- state.orderType = action.payload;
257
- },
258
- setServiceType: (state, action) => {
259
- state.serviceType = action.payload;
260
- },
261
- setOrderServiceType: (state, action) => {
262
- return Object.assign(Object.assign({}, state), action.payload);
263
- },
264
- setCurbside: (state, action) => {
265
- state.isCurbside = action.payload;
266
- },
267
- setDeviceType: (state, action) => {
268
- state.deviceType = action.payload;
269
- },
270
- setCurrentVendor: (state, action) => {
271
- state.currentVendor = action.payload;
272
- },
273
- setMenuVars: (state, action) => {
274
- const { revenueCenter } = action.payload;
275
- return Object.assign(Object.assign(Object.assign({}, state), action.payload), { orderType: revenueCenter.revenue_center_type, isOutpost: revenueCenter.is_outpost });
276
- },
277
- setAddress: (state, action) => {
278
- state.address = action.payload;
279
- },
280
- setRequestedAt: (state, action) => {
281
- const messages = state.messages.filter(i => !i.message.includes('Requested time'));
282
- state.requestedAt = action.payload;
283
- state.messages = messages;
284
- },
285
- setRevenueCenter: (state, action) => {
286
- const revenueCenter = action.payload;
287
- const previousRequestedAt = state.requestedAt;
288
- const requestedAt = (0, utils_1.makeFirstRequestedAt)(revenueCenter, state.serviceType, previousRequestedAt);
289
- let messages;
290
- if (previousRequestedAt && requestedAt !== previousRequestedAt) {
291
- const otherMessages = state.messages.filter(i => !i.message.includes('Requested time'));
292
- const tz = utils_1.timezoneMap[revenueCenter.timezone];
293
- const requestedAtText = (0, utils_1.makeRequestedAtStr)(requestedAt, tz);
294
- const msg = {
295
- message: `Requested time updated to ${requestedAtText}`,
296
- id: (0, utils_1.makeRandomNumberString)()
297
- };
298
- messages = [msg, ...otherMessages];
299
- }
300
- else {
301
- messages = state.messages;
302
- }
303
- state.revenueCenter = revenueCenter;
304
- state.requestedAt = requestedAt !== null && requestedAt !== void 0 ? requestedAt : null;
305
- state.messages = messages;
306
- },
307
- setTable: (state, action) => {
308
- state.table = action.payload;
309
- },
310
- setPrepType: (state, action) => {
311
- state.prepType = action.payload;
312
- },
313
- setCart: (state, action) => {
314
- const cartCounts = (0, utils_1.calcCartCounts)(action.payload);
315
- state.cart = action.payload;
316
- state.cartCounts = cartCounts;
317
- },
318
- setCurrentCategory: (state, action) => {
319
- state.currentCategory = action.payload;
320
- },
321
- setCurrentItem: (state, action) => {
322
- state.currentItem = action.payload;
323
- },
324
- addItemToCart: (state, action) => {
325
- const currentCart = state.cart !== null ? state.cart : [];
326
- const { cart, cartCounts } = (0, utils_1.addItem)([...currentCart], action.payload);
327
- state.cart = cart;
328
- state.cartCounts = cartCounts;
329
- },
330
- removeItemFromCart: (state, action) => {
331
- const { index } = action.payload;
332
- const currentCart = state.cart !== null ? state.cart : [];
333
- const { cart, cartCounts } = (0, utils_1.removeItem)([...currentCart], index);
334
- state.cart = cart;
335
- state.cartCounts = cartCounts;
336
- },
337
- incrementItemInCart: (state, action) => {
338
- const { index } = action.payload;
339
- const currentCart = state.cart !== null ? state.cart : [];
340
- const { cart, cartCounts } = (0, utils_1.incrementItem)([...currentCart], index);
341
- state.cart = cart;
342
- state.cartCounts = cartCounts;
343
- },
344
- decrementItemInCart: (state, action) => {
345
- const { index } = action.payload;
346
- const currentCart = state.cart !== null ? state.cart : [];
347
- const { cart, cartCounts } = (0, utils_1.decrementItem)([...currentCart], index);
348
- state.cart = cart;
349
- state.cartCounts = cartCounts;
350
- },
351
- addMessage: (state, action) => {
352
- const existing = state.messages.map(i => i.message);
353
- if (existing.includes(action.payload)) {
354
- // do nothing
355
- return;
356
- }
357
- state.messages = [
358
- ...state.messages,
359
- {
360
- message: action.payload,
361
- id: (0, utils_1.makeRandomNumberString)()
362
- }
363
- ];
364
- },
365
- removeMessage: (state, action) => {
366
- state.messages = state.messages.filter(i => i.id !== action.payload);
367
- }
368
- },
369
- extraReducers: builder => {
370
- builder
371
- .addCase(exports.fetchRevenueCenter.fulfilled, state => {
372
- state.loading = 'idle';
373
- state.error = null;
374
- })
375
- .addCase(exports.fetchRevenueCenter.pending, state => {
376
- state.loading = 'pending';
377
- })
378
- .addCase(exports.fetchRevenueCenter.rejected, (state, action) => {
379
- state.error = action.payload;
380
- state.loading = 'idle';
381
- })
382
- .addCase(exports.fetchLocation.fulfilled, state => {
383
- state.loading = 'idle';
384
- state.error = null;
385
- })
386
- .addCase(exports.fetchLocation.pending, state => {
387
- state.loading = 'pending';
388
- })
389
- .addCase(exports.fetchLocation.rejected, (state, action) => {
390
- state.error = action.payload;
391
- state.loading = 'idle';
392
- })
393
- .addCase(exports.revertMenu.fulfilled, state => {
394
- state.loading = 'idle';
395
- state.error = null;
396
- })
397
- .addCase(exports.revertMenu.pending, state => {
398
- state.loading = 'pending';
399
- })
400
- .addCase(exports.revertMenu.rejected, (state, action) => {
401
- state.error = action.payload;
402
- state.loading = 'idle';
403
- })
404
- .addCase(exports.refreshRevenueCenter.fulfilled, (state, action) => {
405
- state.alert = action.payload;
406
- state.loading = 'idle';
407
- state.error = null;
408
- })
409
- .addCase(exports.refreshRevenueCenter.pending, state => {
410
- state.loading = 'pending';
411
- })
412
- .addCase(exports.refreshRevenueCenter.rejected, (state, action) => {
413
- state.error = action.payload;
414
- state.loading = 'idle';
415
- })
416
- .addCase(exports.editOrder.fulfilled, (state, action) => {
417
- return Object.assign(Object.assign(Object.assign({}, state), action.payload), { loading: 'idle', error: null });
418
- })
419
- .addCase(exports.editOrder.pending, state => {
420
- state.loading = 'pending';
421
- })
422
- .addCase(exports.editOrder.rejected, state => {
423
- state.loading = 'idle';
424
- })
425
- .addCase(exports.reorderPastOrder.fulfilled, (state, action) => {
426
- return Object.assign(Object.assign(Object.assign({}, state), action.payload), { loading: 'idle', error: null });
427
- })
428
- .addCase(exports.reorderPastOrder.pending, state => {
429
- state.loading = 'pending';
430
- })
431
- .addCase(exports.reorderPastOrder.rejected, state => {
432
- state.loading = 'idle';
433
- });
434
- }
435
- });
436
- _a = orderSlice.actions, exports.resetOrder = _a.resetOrder, exports.addItemToCart = _a.addItemToCart, exports.addMessage = _a.addMessage, exports.decrementItemInCart = _a.decrementItemInCart, exports.incrementItemInCart = _a.incrementItemInCart, exports.removeItemFromCart = _a.removeItemFromCart, exports.removeMessage = _a.removeMessage, exports.resetAlert = _a.resetAlert, exports.resetCart = _a.resetCart, exports.resetLocation = _a.resetLocation, exports.resetMessages = _a.resetMessages, exports.resetOrderType = _a.resetOrderType, exports.resetRevenueCenter = _a.resetRevenueCenter, exports.setAddress = _a.setAddress, exports.setAlert = _a.setAlert, exports.setCart = _a.setCart, exports.setCurbside = _a.setCurbside, exports.setCurrentCategory = _a.setCurrentCategory, exports.setCurrentItem = _a.setCurrentItem, exports.setDeviceType = _a.setDeviceType, exports.setMenuVars = _a.setMenuVars, exports.setOrderId = _a.setOrderId, exports.setOrderServiceType = _a.setOrderServiceType, exports.setOrderType = _a.setOrderType, exports.setPrepType = _a.setPrepType, exports.setRequestedAt = _a.setRequestedAt, exports.setRevenueCenter = _a.setRevenueCenter, exports.setServiceType = _a.setServiceType, exports.setTable = _a.setTable, exports.checkout = _a.checkout, exports.setCurrentVendor = _a.setCurrentVendor, exports.updateOrder = _a.updateOrder;
437
- const selectAlert = (state) => state.order.alert;
438
- exports.selectAlert = selectAlert;
439
- const selectTimezone = (state) => {
440
- var _a;
441
- return state.order.revenueCenter
442
- ? utils_1.timezoneMap[(_a = state.order.revenueCenter.timezone) !== null && _a !== void 0 ? _a : 'US/Central']
443
- : (0, utils_1.getUserTimezone)();
444
- };
445
- exports.selectTimezone = selectTimezone;
446
- const selectOrder = (state) => state.order;
447
- exports.selectOrder = selectOrder;
448
- const selectCartQuantity = (state) => {
449
- return state.order.cart
450
- ? state.order.cart.reduce((t, i) => (t += i.quantity), 0)
451
- : 0;
452
- };
453
- exports.selectCartQuantity = selectCartQuantity;
454
- const selectCartTotal = (state) => {
455
- return state.order.cart
456
- ? state.order.cart.reduce((t, i) => (t += i.totalPrice || 0), 0.0)
457
- : 0.0;
458
- };
459
- exports.selectCartTotal = selectCartTotal;
460
- const selectCartCounts = (state) => state.order.cartCounts || {};
461
- exports.selectCartCounts = selectCartCounts;
462
- const selectCanOrder = (state) => state.order.revenueCenter &&
463
- state.order.serviceType &&
464
- state.order.requestedAt;
465
- exports.selectCanOrder = selectCanOrder;
466
- exports.selectOrderLimits = (0, toolkit_1.createSelector)((state) => {
467
- const { revenueCenter, serviceType } = state.order;
468
- const { cartGuest, spendingLimit } = state.groupOrder;
469
- return { revenueCenter, serviceType, cartGuest, spendingLimit };
470
- }, ({ revenueCenter, serviceType, cartGuest, spendingLimit }) => {
471
- if (!revenueCenter || !serviceType) {
472
- return { orderMinimum: null, orderMaximum: null };
473
- }
474
- const { order_maximum, order_minimum } = revenueCenter;
475
- const orderMax = cartGuest && spendingLimit
476
- ? parseFloat(spendingLimit)
477
- : order_maximum
478
- ? parseFloat(order_maximum[serviceType])
479
- : 0;
480
- const orderMaximum = orderMax;
481
- const orderMinimum = order_minimum
482
- ? parseFloat(order_minimum[serviceType])
483
- : 0;
484
- return {
485
- orderMinimum: orderMinimum > 0 ? orderMinimum : null,
486
- orderMaximum: orderMaximum > 0 ? orderMaximum : null
487
- };
488
- });
489
- exports.selectCartIds = (0, toolkit_1.createSelector)((state) => {
490
- return state.order.cart;
491
- }, cart => (cart ? cart.map(i => i.id) : []));
492
- const selectMenuSlug = (state) => {
493
- const { revenueCenter } = state.order;
494
- return revenueCenter ? `/menu/${revenueCenter.slug}` : '/';
495
- };
496
- exports.selectMenuSlug = selectMenuSlug;
497
- const selectRevenueCenter = (state) => state.order.revenueCenter;
498
- exports.selectRevenueCenter = selectRevenueCenter;
499
- const selectCart = (state) => state.order.cart;
500
- exports.selectCart = selectCart;
501
- const selectCurrentVendor = (state) => state.order.currentVendor;
502
- exports.selectCurrentVendor = selectCurrentVendor;
503
- const selectMessages = (state) => state.order.messages;
504
- exports.selectMessages = selectMessages;
505
- const selectCurrentItem = (state) => state.order.currentItem;
506
- exports.selectCurrentItem = selectCurrentItem;
507
- exports.selectMenuVars = (0, toolkit_1.createSelector)((state) => {
508
- const { revenueCenter, serviceType, requestedAt } = state.order;
509
- return { revenueCenter, serviceType, requestedAt };
510
- }, ({ revenueCenter, serviceType, requestedAt }) => {
511
- return {
512
- revenueCenterId: (revenueCenter === null || revenueCenter === void 0 ? void 0 : revenueCenter.revenue_center_id) || null,
513
- serviceType: serviceType,
514
- requestedAt: requestedAt
515
- };
516
- });
517
- const selectAutoSelect = (state) => {
518
- var _a, _b;
519
- const autoSelect = (_b = (_a = state.config) === null || _a === void 0 ? void 0 : _a.settings) === null || _b === void 0 ? void 0 : _b.autoSelect;
520
- const { orderType, serviceType } = state.order;
521
- return autoSelect && orderType && serviceType
522
- ? autoSelect[orderType][serviceType]
523
- : false;
524
- };
525
- exports.selectAutoSelect = selectAutoSelect;
526
- const selectCurrentCategory = (state) => state.order.currentCategory;
527
- exports.selectCurrentCategory = selectCurrentCategory;
528
- exports.orderReducer = orderSlice.reducer;
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.selectMenuSlug = exports.selectCartIds = exports.selectOrderLimits = exports.selectCanOrder = exports.selectCartCounts = exports.selectCartTotal = exports.selectCartQuantity = exports.selectOrder = exports.selectTimezone = exports.selectAlert = exports.updateOrder = exports.setCurrentVendor = exports.checkout = exports.setTable = exports.setServiceType = exports.setRevenueCenter = exports.setRequestedAt = exports.setPrepType = exports.setOrderType = exports.setOrderServiceType = exports.setOrderId = exports.setMenuVars = exports.setDeviceType = exports.setCurrentItem = exports.setCurrentCategory = exports.setCurbside = exports.setCart = exports.setAlert = exports.setAddress = exports.resetRevenueCenter = exports.resetOrderType = exports.resetMessages = exports.resetLocation = exports.resetCart = exports.resetAlert = exports.removeMessage = exports.removeItemFromCart = exports.incrementItemInCart = exports.decrementItemInCart = exports.addMessage = exports.addItemToCart = exports.resetOrder = exports.reorderPastOrder = exports.editOrder = exports.refreshRevenueCenter = exports.revertMenu = exports.fetchLocationBySlug = exports.fetchLocation = exports.fetchRevenueCenter = exports.OrderActionType = void 0;
5
+ exports.orderReducer = exports.selectCurrentCategory = exports.selectAutoSelect = exports.selectMenuVars = exports.selectCurrentItem = exports.selectMessages = exports.selectCurrentVendor = exports.selectCart = exports.selectRevenueCenter = void 0;
6
+ const tslib_1 = require("tslib");
7
+ const toolkit_1 = require("@reduxjs/toolkit");
8
+ const types_1 = require("./types");
9
+ const utils_1 = require("@open-tender/utils");
10
+ const checkout_1 = require("./checkout");
11
+ const menu_1 = require("./menu");
12
+ const menuItems_1 = require("./menuItems");
13
+ const initialState = {
14
+ address: null,
15
+ alert: null,
16
+ cart: [],
17
+ cartCounts: {},
18
+ currentCategory: null,
19
+ currentItem: null,
20
+ currentVendor: null,
21
+ deviceType: null,
22
+ error: null,
23
+ isCurbside: false,
24
+ isOutpost: false,
25
+ loading: 'idle',
26
+ messages: [],
27
+ orderId: null,
28
+ prepType: null,
29
+ orderType: null,
30
+ requestedAt: 'asap',
31
+ revenueCenter: null,
32
+ serviceType: null,
33
+ table: null
34
+ };
35
+ var OrderActionType;
36
+ (function (OrderActionType) {
37
+ OrderActionType["FetchRevenueCenter"] = "order/fetchRevenueCenter";
38
+ OrderActionType["FetchLocation"] = "order/fetchLocation";
39
+ OrderActionType["RevertMenu"] = "order/revertMenu";
40
+ OrderActionType["RefreshRevenueCenter"] = "order/refreshRevenueCenter";
41
+ OrderActionType["EditOrder"] = "order/editOrder";
42
+ OrderActionType["ReorderPastOrder"] = "order/reorderPastOrder";
43
+ })(OrderActionType = exports.OrderActionType || (exports.OrderActionType = {}));
44
+ exports.fetchRevenueCenter = (0, toolkit_1.createAsyncThunk)(OrderActionType.FetchRevenueCenter, (requestData, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
45
+ const { api } = getState().config;
46
+ if (!api)
47
+ return;
48
+ try {
49
+ const revenueCenter = yield api.getRevenueCenter(requestData.revenueCenterId, requestData.requestedAt);
50
+ dispatch((0, exports.setRevenueCenter)(revenueCenter));
51
+ return revenueCenter;
52
+ }
53
+ catch (err) {
54
+ return rejectWithValue(err);
55
+ }
56
+ }));
57
+ exports.fetchLocation = (0, toolkit_1.createAsyncThunk)(OrderActionType.FetchLocation, ({ revenueCenterId, cartTotal }, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
58
+ const { api } = getState().config;
59
+ if (!api)
60
+ return;
61
+ try {
62
+ const revenueCenter = yield api.getLocation(revenueCenterId, cartTotal);
63
+ dispatch((0, exports.setRevenueCenter)(revenueCenter));
64
+ return revenueCenter;
65
+ }
66
+ catch (err) {
67
+ return rejectWithValue(err);
68
+ }
69
+ }));
70
+ exports.fetchLocationBySlug = (0, toolkit_1.createAsyncThunk)(OrderActionType.FetchLocation, ({ slug, cartTotal }, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
71
+ const { api } = getState().config;
72
+ if (!api)
73
+ return;
74
+ try {
75
+ const revenueCenter = yield api.getLocationBySlug(slug, cartTotal);
76
+ dispatch((0, exports.setRevenueCenter)(revenueCenter));
77
+ return revenueCenter;
78
+ }
79
+ catch (err) {
80
+ return rejectWithValue(err);
81
+ }
82
+ }));
83
+ exports.revertMenu = (0, toolkit_1.createAsyncThunk)(OrderActionType.RevertMenu, (requestData, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
84
+ const { api } = getState().config;
85
+ if (!api)
86
+ return;
87
+ try {
88
+ const revenueCenter = yield api.getLocation(requestData.revenueCenterId);
89
+ dispatch((0, exports.setMenuVars)({
90
+ revenueCenter,
91
+ serviceType: requestData.serviceType,
92
+ requestedAt: requestData.requestedAt
93
+ }));
94
+ return revenueCenter;
95
+ }
96
+ catch (err) {
97
+ return rejectWithValue(err);
98
+ }
99
+ }));
100
+ exports.refreshRevenueCenter = (0, toolkit_1.createAsyncThunk)(OrderActionType.RefreshRevenueCenter, ({ revenueCenterId, serviceType, requestedAt, reset }, { getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
101
+ const { api } = getState().config;
102
+ if (!api)
103
+ return;
104
+ try {
105
+ const revenueCenter = yield api.getLocation(revenueCenterId);
106
+ if (reset)
107
+ requestedAt = null;
108
+ const firstTimes = (0, utils_1.makeFirstTimes)(revenueCenter, serviceType, requestedAt);
109
+ const { status } = revenueCenter;
110
+ if (!firstTimes || status !== 'OPEN') {
111
+ return { type: 'closed', args: { status, preventClose: true } };
112
+ }
113
+ else {
114
+ return {
115
+ type: 'adjustRequestedAt',
116
+ args: { firstTimes, revenueCenter, preventClose: true }
117
+ };
118
+ }
119
+ }
120
+ catch (err) {
121
+ return rejectWithValue(err);
122
+ }
123
+ }));
124
+ exports.editOrder = (0, toolkit_1.createAsyncThunk)(OrderActionType.EditOrder, (order, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
125
+ const { api } = getState().config;
126
+ if (!api)
127
+ return;
128
+ const alert = { type: 'working', args: { text: 'Building your order...' } };
129
+ dispatch((0, exports.setAlert)(alert));
130
+ try {
131
+ const { order_id: orderId, order_type: orderType, service_type: serviceType, requested_at: requestedAt, revenue_center, address } = order;
132
+ const revenueCenterId = revenue_center === null || revenue_center === void 0 ? void 0 : revenue_center.revenue_center_id;
133
+ const revenueCenter = yield api.getLocation(revenueCenterId);
134
+ const menuItems = yield api.getMenuItems(revenueCenterId, serviceType);
135
+ const { cart, cartCounts } = (0, utils_1.rehydrateCart)(menuItems, order.cart);
136
+ dispatch((0, menuItems_1.setMenuItems)(menuItems));
137
+ const form = (0, utils_1.rehydrateCheckoutForm)(order);
138
+ dispatch((0, checkout_1.updateForm)(form));
139
+ // dispatch(toggleSidebar())
140
+ const isOutpost = revenueCenter.is_outpost;
141
+ const payload = {
142
+ orderId,
143
+ orderType,
144
+ serviceType,
145
+ isOutpost,
146
+ revenueCenter,
147
+ requestedAt,
148
+ address,
149
+ cart: cart,
150
+ cartCounts
151
+ };
152
+ dispatch((0, exports.setAlert)({ type: 'closeAndSidebar' }));
153
+ return payload;
154
+ }
155
+ catch (err) {
156
+ dispatch((0, exports.resetAlert)());
157
+ dispatch((0, exports.addMessage)('Something went wrong. Please contact support.'));
158
+ return rejectWithValue(null);
159
+ }
160
+ }));
161
+ exports.reorderPastOrder = (0, toolkit_1.createAsyncThunk)(OrderActionType.ReorderPastOrder, ({ revenueCenterId, serviceType, items }, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
162
+ const { api } = getState().config;
163
+ if (!api)
164
+ return;
165
+ const alert = { type: 'working', args: { text: 'Building your order...' } };
166
+ dispatch((0, exports.setAlert)(alert));
167
+ try {
168
+ const revenueCenter = yield api.getLocation(revenueCenterId);
169
+ const requestedAt = (0, utils_1.makeFirstRequestedAt)(revenueCenter, serviceType, null);
170
+ if (!requestedAt) {
171
+ const { status } = revenueCenter;
172
+ const alert = { type: 'closed', args: { status, isCancel: true } };
173
+ dispatch((0, exports.setAlert)(alert));
174
+ return {};
175
+ }
176
+ else {
177
+ dispatch((0, menu_1.resetMenuVars)());
178
+ dispatch((0, exports.resetRevenueCenter)());
179
+ const menuItems = yield api.getMenuItems(revenueCenterId, serviceType);
180
+ const { cart, cartCounts } = (0, utils_1.rehydrateCart)(menuItems, items);
181
+ dispatch((0, menuItems_1.setMenuItems)(menuItems));
182
+ const orderType = revenueCenter.revenue_center_type;
183
+ const payload = {
184
+ revenueCenter,
185
+ requestedAt,
186
+ serviceType,
187
+ cart,
188
+ cartCounts
189
+ };
190
+ const alert = {
191
+ type: 'requestedAt',
192
+ args: {
193
+ openSidebar: true,
194
+ focusFirst: true,
195
+ skipClose: true,
196
+ isReorder: true,
197
+ revenueCenter,
198
+ serviceType,
199
+ orderType,
200
+ requestedAt
201
+ }
202
+ };
203
+ dispatch((0, exports.setAlert)(alert));
204
+ return payload;
205
+ }
206
+ }
207
+ catch (err) {
208
+ dispatch((0, exports.resetAlert)());
209
+ dispatch((0, exports.addMessage)('Something went wrong. Please contact support.'));
210
+ return rejectWithValue(null);
211
+ }
212
+ }));
213
+ const orderSlice = (0, toolkit_1.createSlice)({
214
+ name: types_1.ReducerType.Order,
215
+ initialState,
216
+ reducers: {
217
+ resetOrder: () => initialState,
218
+ resetOrderType: state => {
219
+ state.orderId = null;
220
+ state.orderType = null;
221
+ state.serviceType = null;
222
+ state.prepType = null;
223
+ state.isOutpost = false;
224
+ state.isCurbside = false;
225
+ state.revenueCenter = null;
226
+ state.table = null;
227
+ state.requestedAt = null;
228
+ },
229
+ resetRevenueCenter: state => {
230
+ state.revenueCenter = null;
231
+ },
232
+ resetLocation: state => {
233
+ state.revenueCenter = null;
234
+ },
235
+ resetCart: state => {
236
+ state.cart = null;
237
+ state.cartCounts = null;
238
+ },
239
+ resetMessages: state => {
240
+ state.messages = [];
241
+ },
242
+ resetAlert: state => {
243
+ state.alert = null;
244
+ },
245
+ updateOrder: (state, action) => {
246
+ return Object.assign(Object.assign({}, state), action.payload);
247
+ },
248
+ checkout: state => state,
249
+ setAlert: (state, action) => {
250
+ state.alert = action.payload;
251
+ },
252
+ setOrderId: (state, action) => {
253
+ state.orderId = action.payload;
254
+ },
255
+ setOrderType: (state, action) => {
256
+ state.orderType = action.payload;
257
+ },
258
+ setServiceType: (state, action) => {
259
+ state.serviceType = action.payload;
260
+ },
261
+ setOrderServiceType: (state, action) => {
262
+ return Object.assign(Object.assign({}, state), action.payload);
263
+ },
264
+ setCurbside: (state, action) => {
265
+ state.isCurbside = action.payload;
266
+ },
267
+ setDeviceType: (state, action) => {
268
+ state.deviceType = action.payload;
269
+ },
270
+ setCurrentVendor: (state, action) => {
271
+ state.currentVendor = action.payload;
272
+ },
273
+ setMenuVars: (state, action) => {
274
+ const { revenueCenter } = action.payload;
275
+ return Object.assign(Object.assign(Object.assign({}, state), action.payload), { orderType: revenueCenter.revenue_center_type, isOutpost: revenueCenter.is_outpost });
276
+ },
277
+ setAddress: (state, action) => {
278
+ state.address = action.payload;
279
+ },
280
+ setRequestedAt: (state, action) => {
281
+ const messages = state.messages.filter(i => !i.message.includes('Requested time'));
282
+ state.requestedAt = action.payload;
283
+ state.messages = messages;
284
+ },
285
+ setRevenueCenter: (state, action) => {
286
+ const revenueCenter = action.payload;
287
+ const previousRequestedAt = state.requestedAt;
288
+ const requestedAt = (0, utils_1.makeFirstRequestedAt)(revenueCenter, state.serviceType, previousRequestedAt);
289
+ let messages;
290
+ if (previousRequestedAt && requestedAt !== previousRequestedAt) {
291
+ const otherMessages = state.messages.filter(i => !i.message.includes('Requested time'));
292
+ const tz = utils_1.timezoneMap[revenueCenter.timezone];
293
+ const requestedAtText = (0, utils_1.makeRequestedAtStr)(requestedAt, tz);
294
+ const msg = {
295
+ message: `Requested time updated to ${requestedAtText}`,
296
+ id: (0, utils_1.makeRandomNumberString)()
297
+ };
298
+ messages = [msg, ...otherMessages];
299
+ }
300
+ else {
301
+ messages = state.messages;
302
+ }
303
+ state.revenueCenter = revenueCenter;
304
+ state.requestedAt = requestedAt !== null && requestedAt !== void 0 ? requestedAt : null;
305
+ state.messages = messages;
306
+ },
307
+ setTable: (state, action) => {
308
+ state.table = action.payload;
309
+ },
310
+ setPrepType: (state, action) => {
311
+ state.prepType = action.payload;
312
+ },
313
+ setCart: (state, action) => {
314
+ const cartCounts = (0, utils_1.calcCartCounts)(action.payload);
315
+ state.cart = action.payload;
316
+ state.cartCounts = cartCounts;
317
+ },
318
+ setCurrentCategory: (state, action) => {
319
+ state.currentCategory = action.payload;
320
+ },
321
+ setCurrentItem: (state, action) => {
322
+ state.currentItem = action.payload;
323
+ },
324
+ addItemToCart: (state, action) => {
325
+ const currentCart = state.cart !== null ? state.cart : [];
326
+ const { cart, cartCounts } = (0, utils_1.addItem)([...currentCart], action.payload);
327
+ state.cart = cart;
328
+ state.cartCounts = cartCounts;
329
+ },
330
+ removeItemFromCart: (state, action) => {
331
+ const { index } = action.payload;
332
+ const currentCart = state.cart !== null ? state.cart : [];
333
+ const { cart, cartCounts } = (0, utils_1.removeItem)([...currentCart], index);
334
+ state.cart = cart;
335
+ state.cartCounts = cartCounts;
336
+ },
337
+ incrementItemInCart: (state, action) => {
338
+ const { index } = action.payload;
339
+ const currentCart = state.cart !== null ? state.cart : [];
340
+ const { cart, cartCounts } = (0, utils_1.incrementItem)([...currentCart], index);
341
+ state.cart = cart;
342
+ state.cartCounts = cartCounts;
343
+ },
344
+ decrementItemInCart: (state, action) => {
345
+ const { index } = action.payload;
346
+ const currentCart = state.cart !== null ? state.cart : [];
347
+ const { cart, cartCounts } = (0, utils_1.decrementItem)([...currentCart], index);
348
+ state.cart = cart;
349
+ state.cartCounts = cartCounts;
350
+ },
351
+ addMessage: (state, action) => {
352
+ const existing = state.messages.map(i => i.message);
353
+ if (existing.includes(action.payload)) {
354
+ // do nothing
355
+ return;
356
+ }
357
+ state.messages = [
358
+ ...state.messages,
359
+ {
360
+ message: action.payload,
361
+ id: (0, utils_1.makeRandomNumberString)()
362
+ }
363
+ ];
364
+ },
365
+ removeMessage: (state, action) => {
366
+ state.messages = state.messages.filter(i => i.id !== action.payload);
367
+ }
368
+ },
369
+ extraReducers: builder => {
370
+ builder
371
+ .addCase(exports.fetchRevenueCenter.fulfilled, state => {
372
+ state.loading = 'idle';
373
+ state.error = null;
374
+ })
375
+ .addCase(exports.fetchRevenueCenter.pending, state => {
376
+ state.loading = 'pending';
377
+ })
378
+ .addCase(exports.fetchRevenueCenter.rejected, (state, action) => {
379
+ state.error = action.payload;
380
+ state.loading = 'idle';
381
+ })
382
+ .addCase(exports.fetchLocation.fulfilled, state => {
383
+ state.loading = 'idle';
384
+ state.error = null;
385
+ })
386
+ .addCase(exports.fetchLocation.pending, state => {
387
+ state.loading = 'pending';
388
+ })
389
+ .addCase(exports.fetchLocation.rejected, (state, action) => {
390
+ state.error = action.payload;
391
+ state.loading = 'idle';
392
+ })
393
+ .addCase(exports.revertMenu.fulfilled, state => {
394
+ state.loading = 'idle';
395
+ state.error = null;
396
+ })
397
+ .addCase(exports.revertMenu.pending, state => {
398
+ state.loading = 'pending';
399
+ })
400
+ .addCase(exports.revertMenu.rejected, (state, action) => {
401
+ state.error = action.payload;
402
+ state.loading = 'idle';
403
+ })
404
+ .addCase(exports.refreshRevenueCenter.fulfilled, (state, action) => {
405
+ state.alert = action.payload;
406
+ state.loading = 'idle';
407
+ state.error = null;
408
+ })
409
+ .addCase(exports.refreshRevenueCenter.pending, state => {
410
+ state.loading = 'pending';
411
+ })
412
+ .addCase(exports.refreshRevenueCenter.rejected, (state, action) => {
413
+ state.error = action.payload;
414
+ state.loading = 'idle';
415
+ })
416
+ .addCase(exports.editOrder.fulfilled, (state, action) => {
417
+ return Object.assign(Object.assign(Object.assign({}, state), action.payload), { loading: 'idle', error: null });
418
+ })
419
+ .addCase(exports.editOrder.pending, state => {
420
+ state.loading = 'pending';
421
+ })
422
+ .addCase(exports.editOrder.rejected, state => {
423
+ state.loading = 'idle';
424
+ })
425
+ .addCase(exports.reorderPastOrder.fulfilled, (state, action) => {
426
+ return Object.assign(Object.assign(Object.assign({}, state), action.payload), { loading: 'idle', error: null });
427
+ })
428
+ .addCase(exports.reorderPastOrder.pending, state => {
429
+ state.loading = 'pending';
430
+ })
431
+ .addCase(exports.reorderPastOrder.rejected, state => {
432
+ state.loading = 'idle';
433
+ });
434
+ }
435
+ });
436
+ _a = orderSlice.actions, exports.resetOrder = _a.resetOrder, exports.addItemToCart = _a.addItemToCart, exports.addMessage = _a.addMessage, exports.decrementItemInCart = _a.decrementItemInCart, exports.incrementItemInCart = _a.incrementItemInCart, exports.removeItemFromCart = _a.removeItemFromCart, exports.removeMessage = _a.removeMessage, exports.resetAlert = _a.resetAlert, exports.resetCart = _a.resetCart, exports.resetLocation = _a.resetLocation, exports.resetMessages = _a.resetMessages, exports.resetOrderType = _a.resetOrderType, exports.resetRevenueCenter = _a.resetRevenueCenter, exports.setAddress = _a.setAddress, exports.setAlert = _a.setAlert, exports.setCart = _a.setCart, exports.setCurbside = _a.setCurbside, exports.setCurrentCategory = _a.setCurrentCategory, exports.setCurrentItem = _a.setCurrentItem, exports.setDeviceType = _a.setDeviceType, exports.setMenuVars = _a.setMenuVars, exports.setOrderId = _a.setOrderId, exports.setOrderServiceType = _a.setOrderServiceType, exports.setOrderType = _a.setOrderType, exports.setPrepType = _a.setPrepType, exports.setRequestedAt = _a.setRequestedAt, exports.setRevenueCenter = _a.setRevenueCenter, exports.setServiceType = _a.setServiceType, exports.setTable = _a.setTable, exports.checkout = _a.checkout, exports.setCurrentVendor = _a.setCurrentVendor, exports.updateOrder = _a.updateOrder;
437
+ const selectAlert = (state) => state.order.alert;
438
+ exports.selectAlert = selectAlert;
439
+ const selectTimezone = (state) => {
440
+ var _a;
441
+ return state.order.revenueCenter
442
+ ? utils_1.timezoneMap[(_a = state.order.revenueCenter.timezone) !== null && _a !== void 0 ? _a : 'US/Central']
443
+ : (0, utils_1.getUserTimezone)();
444
+ };
445
+ exports.selectTimezone = selectTimezone;
446
+ const selectOrder = (state) => state.order;
447
+ exports.selectOrder = selectOrder;
448
+ const selectCartQuantity = (state) => {
449
+ return state.order.cart
450
+ ? state.order.cart.reduce((t, i) => (t += i.quantity), 0)
451
+ : 0;
452
+ };
453
+ exports.selectCartQuantity = selectCartQuantity;
454
+ const selectCartTotal = (state) => {
455
+ return state.order.cart
456
+ ? state.order.cart.reduce((t, i) => (t += i.totalPrice || 0), 0.0)
457
+ : 0.0;
458
+ };
459
+ exports.selectCartTotal = selectCartTotal;
460
+ const selectCartCounts = (state) => state.order.cartCounts || {};
461
+ exports.selectCartCounts = selectCartCounts;
462
+ const selectCanOrder = (state) => state.order.revenueCenter &&
463
+ state.order.serviceType &&
464
+ state.order.requestedAt;
465
+ exports.selectCanOrder = selectCanOrder;
466
+ exports.selectOrderLimits = (0, toolkit_1.createSelector)((state) => {
467
+ const { revenueCenter, serviceType } = state.order;
468
+ const { cartGuest, spendingLimit } = state.groupOrder;
469
+ return { revenueCenter, serviceType, cartGuest, spendingLimit };
470
+ }, ({ revenueCenter, serviceType, cartGuest, spendingLimit }) => {
471
+ if (!revenueCenter || !serviceType) {
472
+ return { orderMinimum: null, orderMaximum: null };
473
+ }
474
+ const { order_maximum, order_minimum } = revenueCenter;
475
+ const orderMax = cartGuest && spendingLimit
476
+ ? parseFloat(spendingLimit)
477
+ : order_maximum
478
+ ? parseFloat(order_maximum[serviceType])
479
+ : 0;
480
+ const orderMaximum = orderMax;
481
+ const orderMinimum = order_minimum
482
+ ? parseFloat(order_minimum[serviceType])
483
+ : 0;
484
+ return {
485
+ orderMinimum: orderMinimum > 0 ? orderMinimum : null,
486
+ orderMaximum: orderMaximum > 0 ? orderMaximum : null
487
+ };
488
+ });
489
+ exports.selectCartIds = (0, toolkit_1.createSelector)((state) => {
490
+ return state.order.cart;
491
+ }, cart => (cart ? cart.map(i => i.id) : []));
492
+ const selectMenuSlug = (state) => {
493
+ const { revenueCenter } = state.order;
494
+ return revenueCenter ? `/menu/${revenueCenter.slug}` : '/';
495
+ };
496
+ exports.selectMenuSlug = selectMenuSlug;
497
+ const selectRevenueCenter = (state) => state.order.revenueCenter;
498
+ exports.selectRevenueCenter = selectRevenueCenter;
499
+ const selectCart = (state) => state.order.cart;
500
+ exports.selectCart = selectCart;
501
+ const selectCurrentVendor = (state) => state.order.currentVendor;
502
+ exports.selectCurrentVendor = selectCurrentVendor;
503
+ const selectMessages = (state) => state.order.messages;
504
+ exports.selectMessages = selectMessages;
505
+ const selectCurrentItem = (state) => state.order.currentItem;
506
+ exports.selectCurrentItem = selectCurrentItem;
507
+ exports.selectMenuVars = (0, toolkit_1.createSelector)((state) => {
508
+ const { revenueCenter, serviceType, requestedAt } = state.order;
509
+ return { revenueCenter, serviceType, requestedAt };
510
+ }, ({ revenueCenter, serviceType, requestedAt }) => {
511
+ return {
512
+ revenueCenterId: (revenueCenter === null || revenueCenter === void 0 ? void 0 : revenueCenter.revenue_center_id) || null,
513
+ serviceType: serviceType,
514
+ requestedAt: requestedAt
515
+ };
516
+ });
517
+ const selectAutoSelect = (state) => {
518
+ var _a, _b;
519
+ const autoSelect = (_b = (_a = state.config) === null || _a === void 0 ? void 0 : _a.settings) === null || _b === void 0 ? void 0 : _b.autoSelect;
520
+ const { orderType, serviceType } = state.order;
521
+ return autoSelect && orderType && serviceType
522
+ ? autoSelect[orderType][serviceType]
523
+ : false;
524
+ };
525
+ exports.selectAutoSelect = selectAutoSelect;
526
+ const selectCurrentCategory = (state) => state.order.currentCategory;
527
+ exports.selectCurrentCategory = selectCurrentCategory;
528
+ exports.orderReducer = orderSlice.reducer;