@open-tender/cloud 0.4.27 → 0.4.28

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 (279) hide show
  1. package/LICENSE.md +21 -21
  2. package/README.md +3 -3
  3. package/dist/cjs/app/hooks.d.ts +66 -66
  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 +194 -194
  8. package/dist/cjs/app/store.js +64 -64
  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 +171 -171
  12. package/dist/cjs/services/api.js +721 -721
  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 +100 -100
  20. package/dist/cjs/slices/allergens.js +83 -83
  21. package/dist/cjs/slices/announcements.d.ts +178 -178
  22. package/dist/cjs/slices/announcements.js +81 -81
  23. package/dist/cjs/slices/checkout.d.ts +58 -58
  24. package/dist/cjs/slices/checkout.js +311 -311
  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 +313 -313
  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 +136 -136
  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 +248 -248
  56. package/dist/cjs/slices/customer/loyalty.js +110 -108
  57. package/dist/cjs/slices/customer/order.d.ts +115 -115
  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 +235 -235
  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 +414 -414
  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 +89 -89
  85. package/dist/cjs/slices/index.d.ts +40 -40
  86. package/dist/cjs/slices/index.js +43 -43
  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 +363 -363
  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 +101 -101
  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 +100 -100
  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 +61 -61
  136. package/dist/cjs/slices/types.js +65 -65
  137. package/dist/cjs/slices/validTimes.d.ts +23 -23
  138. package/dist/cjs/slices/validTimes.js +57 -57
  139. package/dist/cjs/slices/verifyAccount.d.ts +23 -23
  140. package/dist/cjs/slices/verifyAccount.js +54 -54
  141. package/dist/esm/app/hooks.d.ts +66 -66
  142. package/dist/esm/app/hooks.js +4 -4
  143. package/dist/esm/app/index.d.ts +2 -2
  144. package/dist/esm/app/index.js +2 -2
  145. package/dist/esm/app/store.d.ts +194 -194
  146. package/dist/esm/app/store.js +61 -61
  147. package/dist/esm/index.d.ts +5 -5
  148. package/dist/esm/index.js +5 -5
  149. package/dist/esm/services/api.d.ts +171 -171
  150. package/dist/esm/services/api.js +719 -719
  151. package/dist/esm/services/errors.d.ts +50 -50
  152. package/dist/esm/services/errors.js +50 -50
  153. package/dist/esm/services/index.d.ts +3 -3
  154. package/dist/esm/services/index.js +3 -3
  155. package/dist/esm/slices/alerts.d.ts +5 -5
  156. package/dist/esm/slices/alerts.js +24 -24
  157. package/dist/esm/slices/allergens.d.ts +100 -100
  158. package/dist/esm/slices/allergens.js +77 -77
  159. package/dist/esm/slices/announcements.d.ts +178 -178
  160. package/dist/esm/slices/announcements.js +75 -75
  161. package/dist/esm/slices/checkout.d.ts +58 -58
  162. package/dist/esm/slices/checkout.js +303 -303
  163. package/dist/esm/slices/completedOrders.d.ts +31 -31
  164. package/dist/esm/slices/completedOrders.js +57 -57
  165. package/dist/esm/slices/config.d.ts +313 -313
  166. package/dist/esm/slices/config.js +168 -168
  167. package/dist/esm/slices/confirmation.d.ts +8 -8
  168. package/dist/esm/slices/confirmation.js +18 -18
  169. package/dist/esm/slices/customer/account.d.ts +128 -128
  170. package/dist/esm/slices/customer/account.js +344 -344
  171. package/dist/esm/slices/customer/addresses.d.ts +55 -55
  172. package/dist/esm/slices/customer/addresses.js +127 -127
  173. package/dist/esm/slices/customer/allergens.d.ts +37 -37
  174. package/dist/esm/slices/customer/allergens.js +89 -89
  175. package/dist/esm/slices/customer/communicationPreferences.d.ts +69 -69
  176. package/dist/esm/slices/customer/communicationPreferences.js +159 -159
  177. package/dist/esm/slices/customer/creditCards.d.ts +136 -136
  178. package/dist/esm/slices/customer/creditCards.js +165 -165
  179. package/dist/esm/slices/customer/favorites.d.ts +68 -68
  180. package/dist/esm/slices/customer/favorites.js +168 -168
  181. package/dist/esm/slices/customer/fcmToken.d.ts +49 -49
  182. package/dist/esm/slices/customer/fcmToken.js +106 -106
  183. package/dist/esm/slices/customer/giftCards.d.ts +98 -98
  184. package/dist/esm/slices/customer/giftCards.js +217 -217
  185. package/dist/esm/slices/customer/groupOrders.d.ts +118 -118
  186. package/dist/esm/slices/customer/groupOrders.js +256 -256
  187. package/dist/esm/slices/customer/history.d.ts +23 -23
  188. package/dist/esm/slices/customer/history.js +53 -53
  189. package/dist/esm/slices/customer/houseAccounts.d.ts +26 -26
  190. package/dist/esm/slices/customer/houseAccounts.js +62 -62
  191. package/dist/esm/slices/customer/index.d.ts +42 -42
  192. package/dist/esm/slices/customer/index.js +64 -64
  193. package/dist/esm/slices/customer/loyalty.d.ts +248 -248
  194. package/dist/esm/slices/customer/loyalty.js +102 -100
  195. package/dist/esm/slices/customer/order.d.ts +115 -115
  196. package/dist/esm/slices/customer/order.js +94 -94
  197. package/dist/esm/slices/customer/orders.d.ts +27 -27
  198. package/dist/esm/slices/customer/orders.js +63 -63
  199. package/dist/esm/slices/customer/pointsShop.d.ts +35 -35
  200. package/dist/esm/slices/customer/pointsShop.js +82 -82
  201. package/dist/esm/slices/customer/qrCode.d.ts +23 -23
  202. package/dist/esm/slices/customer/qrCode.js +53 -53
  203. package/dist/esm/slices/customer/rewards.d.ts +26 -26
  204. package/dist/esm/slices/customer/rewards.js +62 -62
  205. package/dist/esm/slices/customer/thanx.d.ts +23 -23
  206. package/dist/esm/slices/customer/thanx.js +52 -52
  207. package/dist/esm/slices/customer/tpls.d.ts +235 -235
  208. package/dist/esm/slices/customer/tpls.js +98 -98
  209. package/dist/esm/slices/customer/tplsPointsShop.d.ts +38 -38
  210. package/dist/esm/slices/customer/tplsPointsShop.js +84 -84
  211. package/dist/esm/slices/deals.d.ts +25 -25
  212. package/dist/esm/slices/deals.js +90 -90
  213. package/dist/esm/slices/donations.d.ts +27 -27
  214. package/dist/esm/slices/donations.js +53 -53
  215. package/dist/esm/slices/geolocation.d.ts +11 -11
  216. package/dist/esm/slices/geolocation.js +30 -30
  217. package/dist/esm/slices/giftCards.d.ts +27 -27
  218. package/dist/esm/slices/giftCards.js +54 -54
  219. package/dist/esm/slices/groupOrder.d.ts +414 -414
  220. package/dist/esm/slices/groupOrder.js +259 -259
  221. package/dist/esm/slices/guest.d.ts +51 -51
  222. package/dist/esm/slices/guest.js +84 -84
  223. package/dist/esm/slices/index.d.ts +40 -40
  224. package/dist/esm/slices/index.js +40 -40
  225. package/dist/esm/slices/loader.d.ts +9 -9
  226. package/dist/esm/slices/loader.js +21 -21
  227. package/dist/esm/slices/menu.d.ts +31 -31
  228. package/dist/esm/slices/menu.js +90 -90
  229. package/dist/esm/slices/menuDisplay.d.ts +32 -32
  230. package/dist/esm/slices/menuDisplay.js +55 -55
  231. package/dist/esm/slices/menuItems.d.ts +26 -26
  232. package/dist/esm/slices/menuItems.js +52 -52
  233. package/dist/esm/slices/misc.d.ts +17 -17
  234. package/dist/esm/slices/misc.js +41 -41
  235. package/dist/esm/slices/modal.d.ts +5 -5
  236. package/dist/esm/slices/modal.js +25 -25
  237. package/dist/esm/slices/nav.d.ts +7 -7
  238. package/dist/esm/slices/nav.js +19 -19
  239. package/dist/esm/slices/navSite.d.ts +7 -7
  240. package/dist/esm/slices/navSite.js +19 -19
  241. package/dist/esm/slices/notifications.d.ts +5 -5
  242. package/dist/esm/slices/notifications.js +22 -22
  243. package/dist/esm/slices/oneTimePasscode.d.ts +40 -40
  244. package/dist/esm/slices/oneTimePasscode.js +86 -86
  245. package/dist/esm/slices/order.d.ts +363 -363
  246. package/dist/esm/slices/order.js +508 -508
  247. package/dist/esm/slices/orderFulfillment.d.ts +37 -37
  248. package/dist/esm/slices/orderFulfillment.js +73 -73
  249. package/dist/esm/slices/orderRating.d.ts +52 -52
  250. package/dist/esm/slices/orderRating.js +101 -101
  251. package/dist/esm/slices/posts.d.ts +24 -24
  252. package/dist/esm/slices/posts.js +51 -51
  253. package/dist/esm/slices/pushNotifications.d.ts +9 -9
  254. package/dist/esm/slices/pushNotifications.js +23 -23
  255. package/dist/esm/slices/qr.d.ts +11 -11
  256. package/dist/esm/slices/qr.js +29 -29
  257. package/dist/esm/slices/quote.d.ts +101 -101
  258. package/dist/esm/slices/quote.js +61 -61
  259. package/dist/esm/slices/resetPassword.d.ts +41 -41
  260. package/dist/esm/slices/resetPassword.js +76 -76
  261. package/dist/esm/slices/revenueCenters.d.ts +35 -35
  262. package/dist/esm/slices/revenueCenters.js +89 -89
  263. package/dist/esm/slices/sidebar.d.ts +7 -7
  264. package/dist/esm/slices/sidebar.js +19 -19
  265. package/dist/esm/slices/sidebarModal.d.ts +7 -7
  266. package/dist/esm/slices/sidebarModal.js +19 -19
  267. package/dist/esm/slices/signUp.d.ts +25 -25
  268. package/dist/esm/slices/signUp.js +56 -56
  269. package/dist/esm/slices/tags.d.ts +100 -100
  270. package/dist/esm/slices/tags.js +84 -84
  271. package/dist/esm/slices/terms.d.ts +20 -20
  272. package/dist/esm/slices/terms.js +47 -47
  273. package/dist/esm/slices/types.d.ts +61 -61
  274. package/dist/esm/slices/types.js +62 -62
  275. package/dist/esm/slices/validTimes.d.ts +23 -23
  276. package/dist/esm/slices/validTimes.js +52 -52
  277. package/dist/esm/slices/verifyAccount.d.ts +23 -23
  278. package/dist/esm/slices/verifyAccount.js +50 -50
  279. package/package.json +62 -62
@@ -1,311 +1,311 @@
1
- "use strict";
2
- var _a;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.checkoutReducer = exports.selectDiscounts = exports.selectCompletedOrder = exports.selectCheck = exports.selectCheckout = exports.updateForm = exports.updateCheckoutCustomer = exports.setSubmitting = exports.setGuest = exports.setCompletedOrder = exports.resetTip = exports.resetErrors = exports.resetCompletedOrder = exports.resetCheck = exports.resetCheckout = exports.submitOrderPay = exports.submitOrder = exports.validateOrder = exports.CheckoutActionType = void 0;
5
- const tslib_1 = require("tslib");
6
- const toolkit_1 = require("@reduxjs/toolkit");
7
- const utils_1 = require("@open-tender/utils");
8
- const types_1 = require("./types");
9
- const customer_1 = require("./customer");
10
- const menu_1 = require("./menu");
11
- const order_1 = require("./order");
12
- const initialState = {
13
- check: null,
14
- form: {
15
- address: {},
16
- customer: {},
17
- details: {},
18
- discounts: [],
19
- points: [],
20
- promoCodes: [],
21
- surcharges: [],
22
- tenders: [],
23
- tip: null
24
- },
25
- submitting: false,
26
- isGuest: false,
27
- completedOrder: null,
28
- errors: {},
29
- loading: 'idle'
30
- };
31
- var CheckoutActionType;
32
- (function (CheckoutActionType) {
33
- CheckoutActionType["ValidateOrder"] = "checkout/validateOrder";
34
- CheckoutActionType["SubmitOrder"] = "checkout/SubmitOrder";
35
- CheckoutActionType["SubmitOrderPay"] = "checkout/SubmitOrderPay";
36
- })(CheckoutActionType = exports.CheckoutActionType || (exports.CheckoutActionType = {}));
37
- const assembleOrder = (orderData, save = false) => {
38
- const { order, checkout, groupOrder } = orderData;
39
- const { orderId, revenueCenter, serviceType, requestedAt, cart, deviceType, prepType, table } = order;
40
- const { revenue_center_id: revenueCenterId } = revenueCenter || {};
41
- if (!revenueCenterId || !serviceType || !requestedAt || !cart)
42
- return null;
43
- const { form, check } = checkout;
44
- const { customer, address, details, surcharges, discounts, promoCodes, points, tenders, tip } = form;
45
- const { deposit = null } = check || {};
46
- // const defaultTip = check ? getDefaultTip(check.config) : null
47
- const fullAddress = Object.assign(Object.assign({}, order.address), address);
48
- const data = {
49
- address: (0, utils_1.isEmpty)(fullAddress) ? null : fullAddress,
50
- cart: cart,
51
- cartId: groupOrder.cartId || null,
52
- customer,
53
- deposit,
54
- details,
55
- deviceType,
56
- discounts,
57
- orderId,
58
- points,
59
- prepType,
60
- promoCodes,
61
- requestedAt,
62
- revenueCenterId,
63
- serviceType,
64
- surcharges,
65
- table,
66
- tenders,
67
- tip,
68
- save
69
- };
70
- const preparedOrder = (0, utils_1.prepareOrder)(data);
71
- return preparedOrder;
72
- };
73
- const refreshKeys = ['revenue_center_id', 'service_type', 'requested_at'];
74
- const makeRefreshArgs = (order) => ({
75
- revenueCenterId: order.revenue_center_id,
76
- serviceType: order.service_type,
77
- requestedAt: order.requested_at
78
- });
79
- const handleOrderErrors = (err, preparedOrder, dispatch) => {
80
- const errors = (0, utils_1.handleCheckoutError)(err);
81
- const keys = Object.keys(errors);
82
- const args = makeRefreshArgs(preparedOrder);
83
- if ((0, utils_1.contains)(keys, refreshKeys)) {
84
- dispatch((0, order_1.refreshRevenueCenter)(args));
85
- return {};
86
- }
87
- else if ((0, utils_1.contains)(keys, ['cart'])) {
88
- const cartError = errors.cart;
89
- if ((0, utils_1.isString)(cartError)) {
90
- dispatch((0, menu_1.fetchMenu)(args));
91
- }
92
- else {
93
- const alert = { type: 'cartCounts', args: { errors: cartError } };
94
- setTimeout(() => {
95
- dispatch((0, order_1.setAlert)(alert));
96
- }, 500);
97
- }
98
- return {};
99
- }
100
- else {
101
- return errors;
102
- }
103
- };
104
- exports.validateOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.ValidateOrder, (order, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
105
- try {
106
- const { api } = getState().config;
107
- const token = (0, customer_1.selectToken)(getState());
108
- if (!order)
109
- order = assembleOrder(getState());
110
- const errors = {};
111
- if (!order) {
112
- errors.form = 'Empty cart. Please return to menu.';
113
- return { check: null, errors };
114
- }
115
- const check = yield api.postOrderValidate(order, token);
116
- const checkError = (0, utils_1.makeCheckError)(check.errors);
117
- const errMessages = (0, utils_1.handleCheckoutError)(checkError);
118
- const keys = Object.keys(errMessages);
119
- const args = makeRefreshArgs(order);
120
- if ((0, utils_1.contains)(keys, refreshKeys)) {
121
- dispatch((0, order_1.refreshRevenueCenter)(args));
122
- }
123
- else if ((0, utils_1.contains)(keys, ['cart'])) {
124
- const cartError = errMessages.cart;
125
- if ((0, utils_1.isString)(cartError)) {
126
- dispatch((0, menu_1.fetchMenu)(args));
127
- }
128
- else {
129
- const alert = { type: 'cartCounts', args: { errors: cartError } };
130
- dispatch((0, order_1.setAlert)(alert));
131
- }
132
- }
133
- else if ((0, utils_1.contains)(keys, ['promo_codes'])) {
134
- errors['promo_codes'] = errMessages.promo_codes;
135
- }
136
- else if ((0, utils_1.contains)(keys, ['customer'])) {
137
- errors['customer'] = errMessages.customer;
138
- }
139
- return { check, errors };
140
- }
141
- catch (err) {
142
- const errors = (0, utils_1.makeFormErrorsNested)(err);
143
- return rejectWithValue(errors);
144
- }
145
- }));
146
- exports.submitOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.SubmitOrder, (args, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
147
- const { api } = getState().config;
148
- if (!api)
149
- return;
150
- const token = (0, customer_1.selectToken)(getState());
151
- const alert = {
152
- type: 'working',
153
- args: { text: 'Submitting your order...' }
154
- };
155
- dispatch((0, order_1.setAlert)(alert));
156
- const { save = false } = args || {};
157
- const preparedOrder = assembleOrder(getState(), save);
158
- if (!preparedOrder) {
159
- return dispatch((0, order_1.setAlert)({ type: 'close' }));
160
- }
161
- try {
162
- const completedOrder = yield api.postOrder(preparedOrder, token);
163
- const auth = getState().customer.account.auth;
164
- const { email, password } = preparedOrder.customer || {};
165
- if (password && !auth) {
166
- yield dispatch((0, customer_1.loginCustomer)({ email: email, password }));
167
- }
168
- dispatch((0, order_1.setAlert)({ type: 'close' }));
169
- return completedOrder;
170
- }
171
- catch (err) {
172
- dispatch((0, order_1.setAlert)({ type: 'close' }));
173
- const errors = handleOrderErrors(err, preparedOrder, dispatch);
174
- return rejectWithValue(errors);
175
- }
176
- }));
177
- exports.submitOrderPay = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.SubmitOrderPay, (showAlert = false, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
178
- const { api } = getState().config;
179
- if (!api)
180
- return;
181
- const token = (0, customer_1.selectToken)(getState());
182
- dispatch((0, exports.setSubmitting)(true));
183
- if (showAlert || false) {
184
- const alert = {
185
- type: 'working',
186
- args: { text: 'Submitting your order...' }
187
- };
188
- dispatch((0, order_1.setAlert)(alert));
189
- }
190
- const preparedOrder = assembleOrder(getState());
191
- if (!preparedOrder) {
192
- return dispatch((0, order_1.setAlert)({ type: 'close' }));
193
- }
194
- try {
195
- const completedOrder = yield api.postOrder(preparedOrder, token);
196
- const auth = getState().customer.account.auth;
197
- const { email, password } = preparedOrder.customer || {};
198
- if (password && !auth) {
199
- yield dispatch((0, customer_1.loginCustomer)({ email: email, password }));
200
- }
201
- dispatch((0, order_1.setAlert)({ type: 'close' }));
202
- return completedOrder;
203
- }
204
- catch (err) {
205
- dispatch((0, order_1.setAlert)({ type: 'close' }));
206
- const errors = handleOrderErrors(err, preparedOrder, dispatch);
207
- return rejectWithValue(errors);
208
- }
209
- }));
210
- const checkoutSlice = (0, toolkit_1.createSlice)({
211
- name: types_1.ReducerType.Checkout,
212
- initialState,
213
- reducers: {
214
- resetCheckout: () => initialState,
215
- resetCheck: state => {
216
- state.check = null;
217
- },
218
- resetTip: state => {
219
- state.form = Object.assign(Object.assign({}, state.form), { tip: null });
220
- },
221
- resetErrors: state => {
222
- state.errors = {};
223
- },
224
- resetCompletedOrder: state => {
225
- state.completedOrder = null;
226
- },
227
- setCompletedOrder: (state, action) => {
228
- state.completedOrder = action.payload;
229
- },
230
- setSubmitting: (state, action) => {
231
- state.submitting = action.payload;
232
- },
233
- setGuest: (state, action) => {
234
- state.isGuest = action.payload;
235
- },
236
- updateForm: (state, action) => {
237
- const errors = Object.assign({}, state.errors);
238
- const { tenders } = action.payload;
239
- if (tenders)
240
- delete errors.tenders;
241
- state.form = Object.assign(Object.assign({}, state.form), action.payload);
242
- state.errors = errors;
243
- },
244
- updateCheckoutCustomer: (state, action) => {
245
- const account = action.payload;
246
- const customer = Object.assign({}, state.form.customer);
247
- const customerId = customer ? customer.customer_id : null;
248
- let form = Object.assign({}, state.form);
249
- if (!account) {
250
- if (customerId) {
251
- form = Object.assign(Object.assign({}, form), { customer: {}, promoCodes: [], discounts: [], tenders: [] });
252
- }
253
- else {
254
- form = Object.assign(Object.assign({}, form), { customer: {}, promoCodes: [] });
255
- }
256
- }
257
- else if (customerId && account.customer_id !== customerId) {
258
- form = Object.assign(Object.assign({}, form), { customer, discounts: [], tenders: [] });
259
- }
260
- else if (account && !customerId) {
261
- form = Object.assign(Object.assign({}, form), { customer: account, discounts: [], tenders: [] });
262
- }
263
- state.form = Object.assign({}, form);
264
- }
265
- },
266
- extraReducers: builder => {
267
- builder
268
- .addCase(exports.validateOrder.fulfilled, (state, action) => {
269
- return Object.assign(Object.assign(Object.assign({}, state), action.payload), { loading: 'idle', error: null });
270
- })
271
- .addCase(exports.validateOrder.pending, state => {
272
- state.loading = 'pending';
273
- })
274
- .addCase(exports.validateOrder.rejected, (state, action) => {
275
- state.errors = action.payload || {};
276
- state.loading = 'idle';
277
- })
278
- .addCase(exports.submitOrder.fulfilled, (_, action) => {
279
- return Object.assign(Object.assign({}, initialState), { completedOrder: action.payload });
280
- })
281
- .addCase(exports.submitOrder.pending, state => {
282
- state.loading = 'pending';
283
- })
284
- .addCase(exports.submitOrder.rejected, (state, action) => {
285
- state.loading = 'idle';
286
- state.submitting = false;
287
- state.errors = action.payload || {};
288
- })
289
- .addCase(exports.submitOrderPay.fulfilled, (_, action) => {
290
- return Object.assign(Object.assign({}, initialState), { completedOrder: action.payload });
291
- })
292
- .addCase(exports.submitOrderPay.pending, state => {
293
- state.loading = 'pending';
294
- })
295
- .addCase(exports.submitOrderPay.rejected, (state, action) => {
296
- state.loading = 'idle';
297
- state.submitting = false;
298
- state.errors = action.payload || {};
299
- });
300
- }
301
- });
302
- _a = checkoutSlice.actions, exports.resetCheckout = _a.resetCheckout, exports.resetCheck = _a.resetCheck, exports.resetCompletedOrder = _a.resetCompletedOrder, exports.resetErrors = _a.resetErrors, exports.resetTip = _a.resetTip, exports.setCompletedOrder = _a.setCompletedOrder, exports.setGuest = _a.setGuest, exports.setSubmitting = _a.setSubmitting, exports.updateCheckoutCustomer = _a.updateCheckoutCustomer, exports.updateForm = _a.updateForm;
303
- const selectCheckout = (state) => state.checkout;
304
- exports.selectCheckout = selectCheckout;
305
- const selectCheck = (state) => state.checkout.check;
306
- exports.selectCheck = selectCheck;
307
- const selectCompletedOrder = (state) => state.checkout.completedOrder;
308
- exports.selectCompletedOrder = selectCompletedOrder;
309
- const selectDiscounts = (state) => state.checkout.form.discounts;
310
- exports.selectDiscounts = selectDiscounts;
311
- exports.checkoutReducer = checkoutSlice.reducer;
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.checkoutReducer = exports.selectDiscounts = exports.selectCompletedOrder = exports.selectCheck = exports.selectCheckout = exports.updateForm = exports.updateCheckoutCustomer = exports.setSubmitting = exports.setGuest = exports.setCompletedOrder = exports.resetTip = exports.resetErrors = exports.resetCompletedOrder = exports.resetCheck = exports.resetCheckout = exports.submitOrderPay = exports.submitOrder = exports.validateOrder = exports.CheckoutActionType = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const toolkit_1 = require("@reduxjs/toolkit");
7
+ const utils_1 = require("@open-tender/utils");
8
+ const types_1 = require("./types");
9
+ const customer_1 = require("./customer");
10
+ const menu_1 = require("./menu");
11
+ const order_1 = require("./order");
12
+ const initialState = {
13
+ check: null,
14
+ form: {
15
+ address: {},
16
+ customer: {},
17
+ details: {},
18
+ discounts: [],
19
+ points: [],
20
+ promoCodes: [],
21
+ surcharges: [],
22
+ tenders: [],
23
+ tip: null
24
+ },
25
+ submitting: false,
26
+ isGuest: false,
27
+ completedOrder: null,
28
+ errors: {},
29
+ loading: 'idle'
30
+ };
31
+ var CheckoutActionType;
32
+ (function (CheckoutActionType) {
33
+ CheckoutActionType["ValidateOrder"] = "checkout/validateOrder";
34
+ CheckoutActionType["SubmitOrder"] = "checkout/SubmitOrder";
35
+ CheckoutActionType["SubmitOrderPay"] = "checkout/SubmitOrderPay";
36
+ })(CheckoutActionType = exports.CheckoutActionType || (exports.CheckoutActionType = {}));
37
+ const assembleOrder = (orderData, save = false) => {
38
+ const { order, checkout, groupOrder } = orderData;
39
+ const { orderId, revenueCenter, serviceType, requestedAt, cart, deviceType, prepType, table } = order;
40
+ const { revenue_center_id: revenueCenterId } = revenueCenter || {};
41
+ if (!revenueCenterId || !serviceType || !requestedAt || !cart)
42
+ return null;
43
+ const { form, check } = checkout;
44
+ const { customer, address, details, surcharges, discounts, promoCodes, points, tenders, tip } = form;
45
+ const { deposit = null } = check || {};
46
+ // const defaultTip = check ? getDefaultTip(check.config) : null
47
+ const fullAddress = Object.assign(Object.assign({}, order.address), address);
48
+ const data = {
49
+ address: (0, utils_1.isEmpty)(fullAddress) ? null : fullAddress,
50
+ cart: cart,
51
+ cartId: groupOrder.cartId || null,
52
+ customer,
53
+ deposit,
54
+ details,
55
+ deviceType,
56
+ discounts,
57
+ orderId,
58
+ points,
59
+ prepType,
60
+ promoCodes,
61
+ requestedAt,
62
+ revenueCenterId,
63
+ serviceType,
64
+ surcharges,
65
+ table,
66
+ tenders,
67
+ tip,
68
+ save
69
+ };
70
+ const preparedOrder = (0, utils_1.prepareOrder)(data);
71
+ return preparedOrder;
72
+ };
73
+ const refreshKeys = ['revenue_center_id', 'service_type', 'requested_at'];
74
+ const makeRefreshArgs = (order) => ({
75
+ revenueCenterId: order.revenue_center_id,
76
+ serviceType: order.service_type,
77
+ requestedAt: order.requested_at
78
+ });
79
+ const handleOrderErrors = (err, preparedOrder, dispatch) => {
80
+ const errors = (0, utils_1.handleCheckoutError)(err);
81
+ const keys = Object.keys(errors);
82
+ const args = makeRefreshArgs(preparedOrder);
83
+ if ((0, utils_1.contains)(keys, refreshKeys)) {
84
+ dispatch((0, order_1.refreshRevenueCenter)(args));
85
+ return {};
86
+ }
87
+ else if ((0, utils_1.contains)(keys, ['cart'])) {
88
+ const cartError = errors.cart;
89
+ if ((0, utils_1.isString)(cartError)) {
90
+ dispatch((0, menu_1.fetchMenu)(args));
91
+ }
92
+ else {
93
+ const alert = { type: 'cartCounts', args: { errors: cartError } };
94
+ setTimeout(() => {
95
+ dispatch((0, order_1.setAlert)(alert));
96
+ }, 500);
97
+ }
98
+ return {};
99
+ }
100
+ else {
101
+ return errors;
102
+ }
103
+ };
104
+ exports.validateOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.ValidateOrder, (order, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
105
+ try {
106
+ const { api } = getState().config;
107
+ const token = (0, customer_1.selectToken)(getState());
108
+ if (!order)
109
+ order = assembleOrder(getState());
110
+ const errors = {};
111
+ if (!order) {
112
+ errors.form = 'Empty cart. Please return to menu.';
113
+ return { check: null, errors };
114
+ }
115
+ const check = yield api.postOrderValidate(order, token);
116
+ const checkError = (0, utils_1.makeCheckError)(check.errors);
117
+ const errMessages = (0, utils_1.handleCheckoutError)(checkError);
118
+ const keys = Object.keys(errMessages);
119
+ const args = makeRefreshArgs(order);
120
+ if ((0, utils_1.contains)(keys, refreshKeys)) {
121
+ dispatch((0, order_1.refreshRevenueCenter)(args));
122
+ }
123
+ else if ((0, utils_1.contains)(keys, ['cart'])) {
124
+ const cartError = errMessages.cart;
125
+ if ((0, utils_1.isString)(cartError)) {
126
+ dispatch((0, menu_1.fetchMenu)(args));
127
+ }
128
+ else {
129
+ const alert = { type: 'cartCounts', args: { errors: cartError } };
130
+ dispatch((0, order_1.setAlert)(alert));
131
+ }
132
+ }
133
+ else if ((0, utils_1.contains)(keys, ['promo_codes'])) {
134
+ errors['promo_codes'] = errMessages.promo_codes;
135
+ }
136
+ else if ((0, utils_1.contains)(keys, ['customer'])) {
137
+ errors['customer'] = errMessages.customer;
138
+ }
139
+ return { check, errors };
140
+ }
141
+ catch (err) {
142
+ const errors = (0, utils_1.makeFormErrorsNested)(err);
143
+ return rejectWithValue(errors);
144
+ }
145
+ }));
146
+ exports.submitOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.SubmitOrder, (args, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
147
+ const { api } = getState().config;
148
+ if (!api)
149
+ return;
150
+ const token = (0, customer_1.selectToken)(getState());
151
+ const alert = {
152
+ type: 'working',
153
+ args: { text: 'Submitting your order...' }
154
+ };
155
+ dispatch((0, order_1.setAlert)(alert));
156
+ const { save = false } = args || {};
157
+ const preparedOrder = assembleOrder(getState(), save);
158
+ if (!preparedOrder) {
159
+ return dispatch((0, order_1.setAlert)({ type: 'close' }));
160
+ }
161
+ try {
162
+ const completedOrder = yield api.postOrder(preparedOrder, token);
163
+ const auth = getState().customer.account.auth;
164
+ const { email, password } = preparedOrder.customer || {};
165
+ if (password && !auth) {
166
+ yield dispatch((0, customer_1.loginCustomer)({ email: email, password }));
167
+ }
168
+ dispatch((0, order_1.setAlert)({ type: 'close' }));
169
+ return completedOrder;
170
+ }
171
+ catch (err) {
172
+ dispatch((0, order_1.setAlert)({ type: 'close' }));
173
+ const errors = handleOrderErrors(err, preparedOrder, dispatch);
174
+ return rejectWithValue(errors);
175
+ }
176
+ }));
177
+ exports.submitOrderPay = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.SubmitOrderPay, (showAlert = false, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
178
+ const { api } = getState().config;
179
+ if (!api)
180
+ return;
181
+ const token = (0, customer_1.selectToken)(getState());
182
+ dispatch((0, exports.setSubmitting)(true));
183
+ if (showAlert || false) {
184
+ const alert = {
185
+ type: 'working',
186
+ args: { text: 'Submitting your order...' }
187
+ };
188
+ dispatch((0, order_1.setAlert)(alert));
189
+ }
190
+ const preparedOrder = assembleOrder(getState());
191
+ if (!preparedOrder) {
192
+ return dispatch((0, order_1.setAlert)({ type: 'close' }));
193
+ }
194
+ try {
195
+ const completedOrder = yield api.postOrder(preparedOrder, token);
196
+ const auth = getState().customer.account.auth;
197
+ const { email, password } = preparedOrder.customer || {};
198
+ if (password && !auth) {
199
+ yield dispatch((0, customer_1.loginCustomer)({ email: email, password }));
200
+ }
201
+ dispatch((0, order_1.setAlert)({ type: 'close' }));
202
+ return completedOrder;
203
+ }
204
+ catch (err) {
205
+ dispatch((0, order_1.setAlert)({ type: 'close' }));
206
+ const errors = handleOrderErrors(err, preparedOrder, dispatch);
207
+ return rejectWithValue(errors);
208
+ }
209
+ }));
210
+ const checkoutSlice = (0, toolkit_1.createSlice)({
211
+ name: types_1.ReducerType.Checkout,
212
+ initialState,
213
+ reducers: {
214
+ resetCheckout: () => initialState,
215
+ resetCheck: state => {
216
+ state.check = null;
217
+ },
218
+ resetTip: state => {
219
+ state.form = Object.assign(Object.assign({}, state.form), { tip: null });
220
+ },
221
+ resetErrors: state => {
222
+ state.errors = {};
223
+ },
224
+ resetCompletedOrder: state => {
225
+ state.completedOrder = null;
226
+ },
227
+ setCompletedOrder: (state, action) => {
228
+ state.completedOrder = action.payload;
229
+ },
230
+ setSubmitting: (state, action) => {
231
+ state.submitting = action.payload;
232
+ },
233
+ setGuest: (state, action) => {
234
+ state.isGuest = action.payload;
235
+ },
236
+ updateForm: (state, action) => {
237
+ const errors = Object.assign({}, state.errors);
238
+ const { tenders } = action.payload;
239
+ if (tenders)
240
+ delete errors.tenders;
241
+ state.form = Object.assign(Object.assign({}, state.form), action.payload);
242
+ state.errors = errors;
243
+ },
244
+ updateCheckoutCustomer: (state, action) => {
245
+ const account = action.payload;
246
+ const customer = Object.assign({}, state.form.customer);
247
+ const customerId = customer ? customer.customer_id : null;
248
+ let form = Object.assign({}, state.form);
249
+ if (!account) {
250
+ if (customerId) {
251
+ form = Object.assign(Object.assign({}, form), { customer: {}, promoCodes: [], discounts: [], tenders: [] });
252
+ }
253
+ else {
254
+ form = Object.assign(Object.assign({}, form), { customer: {}, promoCodes: [] });
255
+ }
256
+ }
257
+ else if (customerId && account.customer_id !== customerId) {
258
+ form = Object.assign(Object.assign({}, form), { customer, discounts: [], tenders: [] });
259
+ }
260
+ else if (account && !customerId) {
261
+ form = Object.assign(Object.assign({}, form), { customer: account, discounts: [], tenders: [] });
262
+ }
263
+ state.form = Object.assign({}, form);
264
+ }
265
+ },
266
+ extraReducers: builder => {
267
+ builder
268
+ .addCase(exports.validateOrder.fulfilled, (state, action) => {
269
+ return Object.assign(Object.assign(Object.assign({}, state), action.payload), { loading: 'idle', error: null });
270
+ })
271
+ .addCase(exports.validateOrder.pending, state => {
272
+ state.loading = 'pending';
273
+ })
274
+ .addCase(exports.validateOrder.rejected, (state, action) => {
275
+ state.errors = action.payload || {};
276
+ state.loading = 'idle';
277
+ })
278
+ .addCase(exports.submitOrder.fulfilled, (_, action) => {
279
+ return Object.assign(Object.assign({}, initialState), { completedOrder: action.payload });
280
+ })
281
+ .addCase(exports.submitOrder.pending, state => {
282
+ state.loading = 'pending';
283
+ })
284
+ .addCase(exports.submitOrder.rejected, (state, action) => {
285
+ state.loading = 'idle';
286
+ state.submitting = false;
287
+ state.errors = action.payload || {};
288
+ })
289
+ .addCase(exports.submitOrderPay.fulfilled, (_, action) => {
290
+ return Object.assign(Object.assign({}, initialState), { completedOrder: action.payload });
291
+ })
292
+ .addCase(exports.submitOrderPay.pending, state => {
293
+ state.loading = 'pending';
294
+ })
295
+ .addCase(exports.submitOrderPay.rejected, (state, action) => {
296
+ state.loading = 'idle';
297
+ state.submitting = false;
298
+ state.errors = action.payload || {};
299
+ });
300
+ }
301
+ });
302
+ _a = checkoutSlice.actions, exports.resetCheckout = _a.resetCheckout, exports.resetCheck = _a.resetCheck, exports.resetCompletedOrder = _a.resetCompletedOrder, exports.resetErrors = _a.resetErrors, exports.resetTip = _a.resetTip, exports.setCompletedOrder = _a.setCompletedOrder, exports.setGuest = _a.setGuest, exports.setSubmitting = _a.setSubmitting, exports.updateCheckoutCustomer = _a.updateCheckoutCustomer, exports.updateForm = _a.updateForm;
303
+ const selectCheckout = (state) => state.checkout;
304
+ exports.selectCheckout = selectCheckout;
305
+ const selectCheck = (state) => state.checkout.check;
306
+ exports.selectCheck = selectCheck;
307
+ const selectCompletedOrder = (state) => state.checkout.completedOrder;
308
+ exports.selectCompletedOrder = selectCompletedOrder;
309
+ const selectDiscounts = (state) => state.checkout.form.discounts;
310
+ exports.selectDiscounts = selectDiscounts;
311
+ exports.checkoutReducer = checkoutSlice.reducer;