@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,326 +1,326 @@
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.setRecaptchaToken = exports.updateCheckoutCustomer = exports.setSubmitting = exports.setGuest = exports.setCompletedOrder = exports.resetTip = exports.resetErrors = exports.resetCompletedOrder = exports.resetCheck = exports.resetCheckout = exports.submitOrderPay = exports.updateForm = 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
- token: null
25
- },
26
- submitting: false,
27
- isGuest: false,
28
- completedOrder: null,
29
- errors: {},
30
- loading: 'idle'
31
- };
32
- var CheckoutActionType;
33
- (function (CheckoutActionType) {
34
- CheckoutActionType["ValidateOrder"] = "checkout/validateOrder";
35
- CheckoutActionType["SubmitOrder"] = "checkout/SubmitOrder";
36
- CheckoutActionType["SubmitOrderPay"] = "checkout/SubmitOrderPay";
37
- CheckoutActionType["UpdateForm"] = "checkout/updateForm";
38
- })(CheckoutActionType = exports.CheckoutActionType || (exports.CheckoutActionType = {}));
39
- const assembleOrder = (orderData, save = false) => {
40
- const { order, checkout, groupOrder } = orderData;
41
- const { orderId, revenueCenter, serviceType, requestedAt, cart, deviceType, prepType, table } = order;
42
- const { revenue_center_id: revenueCenterId } = revenueCenter || {};
43
- if (!revenueCenterId || !serviceType || !requestedAt || !cart)
44
- return null;
45
- const { form, check } = checkout;
46
- const { customer, address, details, surcharges, discounts, promoCodes, points, tenders, tip, token } = form;
47
- const { deposit = null } = check || {};
48
- // const defaultTip = check ? getDefaultTip(check.config) : null
49
- const fullAddress = Object.assign(Object.assign({}, order.address), address);
50
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
51
- const { customer_id } = customer, customerWithoutId = tslib_1.__rest(customer, ["customer_id"]);
52
- const data = {
53
- address: (0, utils_1.isEmpty)(fullAddress) ? null : fullAddress,
54
- cart: cart,
55
- cartId: groupOrder.cartId || null,
56
- customer: customerWithoutId,
57
- deposit,
58
- details,
59
- deviceType,
60
- discounts,
61
- orderId,
62
- points,
63
- prepType,
64
- promoCodes,
65
- requestedAt,
66
- revenueCenterId,
67
- serviceType,
68
- surcharges,
69
- table,
70
- tenders,
71
- tip,
72
- save,
73
- token
74
- };
75
- const preparedOrder = (0, utils_1.prepareOrder)(data);
76
- return preparedOrder;
77
- };
78
- const refreshKeys = ['revenue_center_id', 'service_type', 'requested_at'];
79
- const makeRefreshArgs = (order) => ({
80
- revenueCenterId: order.revenue_center_id,
81
- serviceType: order.service_type,
82
- requestedAt: order.requested_at
83
- });
84
- const handleOrderErrors = (err, preparedOrder, dispatch) => {
85
- const errors = (0, utils_1.handleCheckoutError)(err);
86
- const keys = Object.keys(errors);
87
- const args = makeRefreshArgs(preparedOrder);
88
- if ((0, utils_1.contains)(keys, refreshKeys)) {
89
- dispatch((0, order_1.refreshRevenueCenter)(args));
90
- return {};
91
- }
92
- else if ((0, utils_1.contains)(keys, ['cart'])) {
93
- const cartError = errors.cart;
94
- if ((0, utils_1.isString)(cartError)) {
95
- dispatch((0, menu_1.fetchMenu)(args));
96
- }
97
- else {
98
- const alert = { type: 'cartCounts', args: { errors: cartError } };
99
- setTimeout(() => {
100
- dispatch((0, order_1.setAlert)(alert));
101
- }, 500);
102
- }
103
- return {};
104
- }
105
- else {
106
- return errors;
107
- }
108
- };
109
- exports.validateOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.ValidateOrder, (order, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
110
- try {
111
- const { api } = getState().config;
112
- const token = (0, customer_1.selectToken)(getState());
113
- if (!order)
114
- order = assembleOrder(getState());
115
- const errors = {};
116
- if (!order) {
117
- errors.form = 'Empty cart. Please return to menu.';
118
- return { check: null, errors };
119
- }
120
- const check = yield api.postOrderValidate(order, token);
121
- const checkError = (0, utils_1.makeCheckError)(check.errors);
122
- const errMessages = (0, utils_1.handleCheckoutError)(checkError);
123
- const keys = Object.keys(errMessages);
124
- const args = makeRefreshArgs(order);
125
- if ((0, utils_1.contains)(keys, refreshKeys)) {
126
- dispatch((0, order_1.refreshRevenueCenter)(args));
127
- }
128
- else if ((0, utils_1.contains)(keys, ['cart'])) {
129
- const cartError = errMessages.cart;
130
- if ((0, utils_1.isString)(cartError)) {
131
- dispatch((0, menu_1.fetchMenu)(args));
132
- }
133
- else {
134
- const alert = { type: 'cartCounts', args: { errors: cartError } };
135
- dispatch((0, order_1.setAlert)(alert));
136
- }
137
- }
138
- else if ((0, utils_1.contains)(keys, ['promo_codes'])) {
139
- errors['promo_codes'] = errMessages.promo_codes;
140
- }
141
- else if ((0, utils_1.contains)(keys, ['customer'])) {
142
- errors['customer'] = errMessages.customer;
143
- }
144
- return { check, errors };
145
- }
146
- catch (err) {
147
- const errors = (0, utils_1.makeFormErrorsNested)(err);
148
- return rejectWithValue(errors);
149
- }
150
- }));
151
- exports.submitOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.SubmitOrder, (args, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
152
- const { api } = getState().config;
153
- if (!api)
154
- return;
155
- const token = (0, customer_1.selectToken)(getState());
156
- const alert = {
157
- type: 'working',
158
- args: { text: 'Submitting your order...' }
159
- };
160
- dispatch((0, order_1.setAlert)(alert));
161
- const { save = false } = args || {};
162
- const preparedOrder = assembleOrder(getState(), save);
163
- if (!preparedOrder) {
164
- return dispatch((0, order_1.setAlert)({ type: 'close' }));
165
- }
166
- try {
167
- const completedOrder = yield api.postOrder(preparedOrder, token);
168
- const auth = getState().customer.account.auth;
169
- const { email, password } = preparedOrder.customer || {};
170
- if (password && !auth) {
171
- yield dispatch((0, customer_1.loginCustomer)({ email: email, password }));
172
- }
173
- dispatch((0, order_1.setAlert)({ type: 'close' }));
174
- return completedOrder;
175
- }
176
- catch (err) {
177
- dispatch((0, order_1.setAlert)({ type: 'close' }));
178
- const errors = handleOrderErrors(err, preparedOrder, dispatch);
179
- return rejectWithValue(errors);
180
- }
181
- }));
182
- exports.updateForm = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.UpdateForm, (payload, { getState }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
183
- const { checkout } = getState();
184
- const errors = Object.assign({}, checkout.errors);
185
- const { tenders } = payload;
186
- if (tenders)
187
- delete errors.tenders;
188
- const form = Object.assign(Object.assign({}, checkout.form), payload);
189
- return {
190
- form,
191
- errors
192
- };
193
- }));
194
- exports.submitOrderPay = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.SubmitOrderPay, (showAlert = false, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
195
- const { api } = getState().config;
196
- if (!api)
197
- return;
198
- const token = (0, customer_1.selectToken)(getState());
199
- dispatch((0, exports.setSubmitting)(true));
200
- if (showAlert || false) {
201
- const alert = {
202
- type: 'working',
203
- args: { text: 'Submitting your order...' }
204
- };
205
- dispatch((0, order_1.setAlert)(alert));
206
- }
207
- const preparedOrder = assembleOrder(getState());
208
- if (!preparedOrder) {
209
- return dispatch((0, order_1.setAlert)({ type: 'close' }));
210
- }
211
- try {
212
- const completedOrder = yield api.postOrder(preparedOrder, token);
213
- const auth = getState().customer.account.auth;
214
- const { email, password } = preparedOrder.customer || {};
215
- if (password && !auth) {
216
- yield dispatch((0, customer_1.loginCustomer)({ email: email, password }));
217
- }
218
- dispatch((0, order_1.setAlert)({ type: 'close' }));
219
- return completedOrder;
220
- }
221
- catch (err) {
222
- dispatch((0, order_1.setAlert)({ type: 'close' }));
223
- const errors = handleOrderErrors(err, preparedOrder, dispatch);
224
- return rejectWithValue(errors);
225
- }
226
- }));
227
- const checkoutSlice = (0, toolkit_1.createSlice)({
228
- name: types_1.ReducerType.Checkout,
229
- initialState,
230
- reducers: {
231
- resetCheckout: () => initialState,
232
- resetCheck: state => {
233
- state.check = null;
234
- },
235
- resetTip: state => {
236
- state.form = Object.assign(Object.assign({}, state.form), { tip: null });
237
- },
238
- resetErrors: state => {
239
- state.errors = {};
240
- },
241
- resetCompletedOrder: state => {
242
- state.completedOrder = null;
243
- },
244
- setCompletedOrder: (state, action) => {
245
- state.completedOrder = action.payload;
246
- },
247
- setSubmitting: (state, action) => {
248
- state.submitting = action.payload;
249
- },
250
- setGuest: (state, action) => {
251
- state.isGuest = action.payload;
252
- },
253
- setRecaptchaToken: (state, action) => {
254
- state.form.token = action.payload;
255
- },
256
- updateCheckoutCustomer: (state, action) => {
257
- const account = action.payload;
258
- const customer = Object.assign({}, state.form.customer);
259
- const customerId = customer ? customer.customer_id : null;
260
- let form = Object.assign({}, state.form);
261
- if (!account) {
262
- if (customerId) {
263
- form = Object.assign(Object.assign({}, form), { customer: {}, promoCodes: [], discounts: [], tenders: [] });
264
- }
265
- else {
266
- form = Object.assign(Object.assign({}, form), { customer: {}, promoCodes: [] });
267
- }
268
- }
269
- else if (customerId && account.customer_id !== customerId) {
270
- form = Object.assign(Object.assign({}, form), { customer, discounts: [], tenders: [] });
271
- }
272
- else if (account && !customerId) {
273
- form = Object.assign(Object.assign({}, form), { customer: account, discounts: [], tenders: [] });
274
- }
275
- state.form = Object.assign({}, form);
276
- }
277
- },
278
- extraReducers: builder => {
279
- builder
280
- .addCase(exports.validateOrder.fulfilled, (state, action) => {
281
- return Object.assign(Object.assign(Object.assign({}, state), action.payload), { loading: 'idle', error: null });
282
- })
283
- .addCase(exports.validateOrder.pending, state => {
284
- state.loading = 'pending';
285
- })
286
- .addCase(exports.validateOrder.rejected, (state, action) => {
287
- state.errors = action.payload || {};
288
- state.loading = 'idle';
289
- })
290
- .addCase(exports.updateForm.fulfilled, (state, action) => {
291
- return Object.assign(Object.assign({}, state), action.payload);
292
- })
293
- .addCase(exports.submitOrder.fulfilled, (_, action) => {
294
- return Object.assign(Object.assign({}, initialState), { completedOrder: action.payload });
295
- })
296
- .addCase(exports.submitOrder.pending, state => {
297
- state.loading = 'pending';
298
- })
299
- .addCase(exports.submitOrder.rejected, (state, action) => {
300
- state.loading = 'idle';
301
- state.submitting = false;
302
- state.errors = action.payload || {};
303
- })
304
- .addCase(exports.submitOrderPay.fulfilled, (_, action) => {
305
- return Object.assign(Object.assign({}, initialState), { completedOrder: action.payload });
306
- })
307
- .addCase(exports.submitOrderPay.pending, state => {
308
- state.loading = 'pending';
309
- })
310
- .addCase(exports.submitOrderPay.rejected, (state, action) => {
311
- state.loading = 'idle';
312
- state.submitting = false;
313
- state.errors = action.payload || {};
314
- });
315
- }
316
- });
317
- _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.setRecaptchaToken = _a.setRecaptchaToken;
318
- const selectCheckout = (state) => state.checkout;
319
- exports.selectCheckout = selectCheckout;
320
- const selectCheck = (state) => state.checkout.check;
321
- exports.selectCheck = selectCheck;
322
- const selectCompletedOrder = (state) => state.checkout.completedOrder;
323
- exports.selectCompletedOrder = selectCompletedOrder;
324
- const selectDiscounts = (state) => state.checkout.form.discounts;
325
- exports.selectDiscounts = selectDiscounts;
326
- 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.setRecaptchaToken = exports.updateCheckoutCustomer = exports.setSubmitting = exports.setGuest = exports.setCompletedOrder = exports.resetTip = exports.resetErrors = exports.resetCompletedOrder = exports.resetCheck = exports.resetCheckout = exports.submitOrderPay = exports.updateForm = 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
+ token: null
25
+ },
26
+ submitting: false,
27
+ isGuest: false,
28
+ completedOrder: null,
29
+ errors: {},
30
+ loading: 'idle'
31
+ };
32
+ var CheckoutActionType;
33
+ (function (CheckoutActionType) {
34
+ CheckoutActionType["ValidateOrder"] = "checkout/validateOrder";
35
+ CheckoutActionType["SubmitOrder"] = "checkout/SubmitOrder";
36
+ CheckoutActionType["SubmitOrderPay"] = "checkout/SubmitOrderPay";
37
+ CheckoutActionType["UpdateForm"] = "checkout/updateForm";
38
+ })(CheckoutActionType = exports.CheckoutActionType || (exports.CheckoutActionType = {}));
39
+ const assembleOrder = (orderData, save = false) => {
40
+ const { order, checkout, groupOrder } = orderData;
41
+ const { orderId, revenueCenter, serviceType, requestedAt, cart, deviceType, prepType, table } = order;
42
+ const { revenue_center_id: revenueCenterId } = revenueCenter || {};
43
+ if (!revenueCenterId || !serviceType || !requestedAt || !cart)
44
+ return null;
45
+ const { form, check } = checkout;
46
+ const { customer, address, details, surcharges, discounts, promoCodes, points, tenders, tip, token } = form;
47
+ const { deposit = null } = check || {};
48
+ // const defaultTip = check ? getDefaultTip(check.config) : null
49
+ const fullAddress = Object.assign(Object.assign({}, order.address), address);
50
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
51
+ const { customer_id } = customer, customerWithoutId = tslib_1.__rest(customer, ["customer_id"]);
52
+ const data = {
53
+ address: (0, utils_1.isEmpty)(fullAddress) ? null : fullAddress,
54
+ cart: cart,
55
+ cartId: groupOrder.cartId || null,
56
+ customer: customerWithoutId,
57
+ deposit,
58
+ details,
59
+ deviceType,
60
+ discounts,
61
+ orderId,
62
+ points,
63
+ prepType,
64
+ promoCodes,
65
+ requestedAt,
66
+ revenueCenterId,
67
+ serviceType,
68
+ surcharges,
69
+ table,
70
+ tenders,
71
+ tip,
72
+ save,
73
+ token
74
+ };
75
+ const preparedOrder = (0, utils_1.prepareOrder)(data);
76
+ return preparedOrder;
77
+ };
78
+ const refreshKeys = ['revenue_center_id', 'service_type', 'requested_at'];
79
+ const makeRefreshArgs = (order) => ({
80
+ revenueCenterId: order.revenue_center_id,
81
+ serviceType: order.service_type,
82
+ requestedAt: order.requested_at
83
+ });
84
+ const handleOrderErrors = (err, preparedOrder, dispatch) => {
85
+ const errors = (0, utils_1.handleCheckoutError)(err);
86
+ const keys = Object.keys(errors);
87
+ const args = makeRefreshArgs(preparedOrder);
88
+ if ((0, utils_1.contains)(keys, refreshKeys)) {
89
+ dispatch((0, order_1.refreshRevenueCenter)(args));
90
+ return {};
91
+ }
92
+ else if ((0, utils_1.contains)(keys, ['cart'])) {
93
+ const cartError = errors.cart;
94
+ if ((0, utils_1.isString)(cartError)) {
95
+ dispatch((0, menu_1.fetchMenu)(args));
96
+ }
97
+ else {
98
+ const alert = { type: 'cartCounts', args: { errors: cartError } };
99
+ setTimeout(() => {
100
+ dispatch((0, order_1.setAlert)(alert));
101
+ }, 500);
102
+ }
103
+ return {};
104
+ }
105
+ else {
106
+ return errors;
107
+ }
108
+ };
109
+ exports.validateOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.ValidateOrder, (order, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
110
+ try {
111
+ const { api } = getState().config;
112
+ const token = (0, customer_1.selectToken)(getState());
113
+ if (!order)
114
+ order = assembleOrder(getState());
115
+ const errors = {};
116
+ if (!order) {
117
+ errors.form = 'Empty cart. Please return to menu.';
118
+ return { check: null, errors };
119
+ }
120
+ const check = yield api.postOrderValidate(order, token);
121
+ const checkError = (0, utils_1.makeCheckError)(check.errors);
122
+ const errMessages = (0, utils_1.handleCheckoutError)(checkError);
123
+ const keys = Object.keys(errMessages);
124
+ const args = makeRefreshArgs(order);
125
+ if ((0, utils_1.contains)(keys, refreshKeys)) {
126
+ dispatch((0, order_1.refreshRevenueCenter)(args));
127
+ }
128
+ else if ((0, utils_1.contains)(keys, ['cart'])) {
129
+ const cartError = errMessages.cart;
130
+ if ((0, utils_1.isString)(cartError)) {
131
+ dispatch((0, menu_1.fetchMenu)(args));
132
+ }
133
+ else {
134
+ const alert = { type: 'cartCounts', args: { errors: cartError } };
135
+ dispatch((0, order_1.setAlert)(alert));
136
+ }
137
+ }
138
+ else if ((0, utils_1.contains)(keys, ['promo_codes'])) {
139
+ errors['promo_codes'] = errMessages.promo_codes;
140
+ }
141
+ else if ((0, utils_1.contains)(keys, ['customer'])) {
142
+ errors['customer'] = errMessages.customer;
143
+ }
144
+ return { check, errors };
145
+ }
146
+ catch (err) {
147
+ const errors = (0, utils_1.makeFormErrorsNested)(err);
148
+ return rejectWithValue(errors);
149
+ }
150
+ }));
151
+ exports.submitOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.SubmitOrder, (args, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
152
+ const { api } = getState().config;
153
+ if (!api)
154
+ return;
155
+ const token = (0, customer_1.selectToken)(getState());
156
+ const alert = {
157
+ type: 'working',
158
+ args: { text: 'Submitting your order...' }
159
+ };
160
+ dispatch((0, order_1.setAlert)(alert));
161
+ const { save = false } = args || {};
162
+ const preparedOrder = assembleOrder(getState(), save);
163
+ if (!preparedOrder) {
164
+ return dispatch((0, order_1.setAlert)({ type: 'close' }));
165
+ }
166
+ try {
167
+ const completedOrder = yield api.postOrder(preparedOrder, token);
168
+ const auth = getState().customer.account.auth;
169
+ const { email, password } = preparedOrder.customer || {};
170
+ if (password && !auth) {
171
+ yield dispatch((0, customer_1.loginCustomer)({ email: email, password }));
172
+ }
173
+ dispatch((0, order_1.setAlert)({ type: 'close' }));
174
+ return completedOrder;
175
+ }
176
+ catch (err) {
177
+ dispatch((0, order_1.setAlert)({ type: 'close' }));
178
+ const errors = handleOrderErrors(err, preparedOrder, dispatch);
179
+ return rejectWithValue(errors);
180
+ }
181
+ }));
182
+ exports.updateForm = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.UpdateForm, (payload, { getState }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
183
+ const { checkout } = getState();
184
+ const errors = Object.assign({}, checkout.errors);
185
+ const { tenders } = payload;
186
+ if (tenders)
187
+ delete errors.tenders;
188
+ const form = Object.assign(Object.assign({}, checkout.form), payload);
189
+ return {
190
+ form,
191
+ errors
192
+ };
193
+ }));
194
+ exports.submitOrderPay = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.SubmitOrderPay, (showAlert = false, { dispatch, getState, rejectWithValue }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
195
+ const { api } = getState().config;
196
+ if (!api)
197
+ return;
198
+ const token = (0, customer_1.selectToken)(getState());
199
+ dispatch((0, exports.setSubmitting)(true));
200
+ if (showAlert || false) {
201
+ const alert = {
202
+ type: 'working',
203
+ args: { text: 'Submitting your order...' }
204
+ };
205
+ dispatch((0, order_1.setAlert)(alert));
206
+ }
207
+ const preparedOrder = assembleOrder(getState());
208
+ if (!preparedOrder) {
209
+ return dispatch((0, order_1.setAlert)({ type: 'close' }));
210
+ }
211
+ try {
212
+ const completedOrder = yield api.postOrder(preparedOrder, token);
213
+ const auth = getState().customer.account.auth;
214
+ const { email, password } = preparedOrder.customer || {};
215
+ if (password && !auth) {
216
+ yield dispatch((0, customer_1.loginCustomer)({ email: email, password }));
217
+ }
218
+ dispatch((0, order_1.setAlert)({ type: 'close' }));
219
+ return completedOrder;
220
+ }
221
+ catch (err) {
222
+ dispatch((0, order_1.setAlert)({ type: 'close' }));
223
+ const errors = handleOrderErrors(err, preparedOrder, dispatch);
224
+ return rejectWithValue(errors);
225
+ }
226
+ }));
227
+ const checkoutSlice = (0, toolkit_1.createSlice)({
228
+ name: types_1.ReducerType.Checkout,
229
+ initialState,
230
+ reducers: {
231
+ resetCheckout: () => initialState,
232
+ resetCheck: state => {
233
+ state.check = null;
234
+ },
235
+ resetTip: state => {
236
+ state.form = Object.assign(Object.assign({}, state.form), { tip: null });
237
+ },
238
+ resetErrors: state => {
239
+ state.errors = {};
240
+ },
241
+ resetCompletedOrder: state => {
242
+ state.completedOrder = null;
243
+ },
244
+ setCompletedOrder: (state, action) => {
245
+ state.completedOrder = action.payload;
246
+ },
247
+ setSubmitting: (state, action) => {
248
+ state.submitting = action.payload;
249
+ },
250
+ setGuest: (state, action) => {
251
+ state.isGuest = action.payload;
252
+ },
253
+ setRecaptchaToken: (state, action) => {
254
+ state.form.token = action.payload;
255
+ },
256
+ updateCheckoutCustomer: (state, action) => {
257
+ const account = action.payload;
258
+ const customer = Object.assign({}, state.form.customer);
259
+ const customerId = customer ? customer.customer_id : null;
260
+ let form = Object.assign({}, state.form);
261
+ if (!account) {
262
+ if (customerId) {
263
+ form = Object.assign(Object.assign({}, form), { customer: {}, promoCodes: [], discounts: [], tenders: [] });
264
+ }
265
+ else {
266
+ form = Object.assign(Object.assign({}, form), { customer: {}, promoCodes: [] });
267
+ }
268
+ }
269
+ else if (customerId && account.customer_id !== customerId) {
270
+ form = Object.assign(Object.assign({}, form), { customer, discounts: [], tenders: [] });
271
+ }
272
+ else if (account && !customerId) {
273
+ form = Object.assign(Object.assign({}, form), { customer: account, discounts: [], tenders: [] });
274
+ }
275
+ state.form = Object.assign({}, form);
276
+ }
277
+ },
278
+ extraReducers: builder => {
279
+ builder
280
+ .addCase(exports.validateOrder.fulfilled, (state, action) => {
281
+ return Object.assign(Object.assign(Object.assign({}, state), action.payload), { loading: 'idle', error: null });
282
+ })
283
+ .addCase(exports.validateOrder.pending, state => {
284
+ state.loading = 'pending';
285
+ })
286
+ .addCase(exports.validateOrder.rejected, (state, action) => {
287
+ state.errors = action.payload || {};
288
+ state.loading = 'idle';
289
+ })
290
+ .addCase(exports.updateForm.fulfilled, (state, action) => {
291
+ return Object.assign(Object.assign({}, state), action.payload);
292
+ })
293
+ .addCase(exports.submitOrder.fulfilled, (_, action) => {
294
+ return Object.assign(Object.assign({}, initialState), { completedOrder: action.payload });
295
+ })
296
+ .addCase(exports.submitOrder.pending, state => {
297
+ state.loading = 'pending';
298
+ })
299
+ .addCase(exports.submitOrder.rejected, (state, action) => {
300
+ state.loading = 'idle';
301
+ state.submitting = false;
302
+ state.errors = action.payload || {};
303
+ })
304
+ .addCase(exports.submitOrderPay.fulfilled, (_, action) => {
305
+ return Object.assign(Object.assign({}, initialState), { completedOrder: action.payload });
306
+ })
307
+ .addCase(exports.submitOrderPay.pending, state => {
308
+ state.loading = 'pending';
309
+ })
310
+ .addCase(exports.submitOrderPay.rejected, (state, action) => {
311
+ state.loading = 'idle';
312
+ state.submitting = false;
313
+ state.errors = action.payload || {};
314
+ });
315
+ }
316
+ });
317
+ _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.setRecaptchaToken = _a.setRecaptchaToken;
318
+ const selectCheckout = (state) => state.checkout;
319
+ exports.selectCheckout = selectCheckout;
320
+ const selectCheck = (state) => state.checkout.check;
321
+ exports.selectCheck = selectCheck;
322
+ const selectCompletedOrder = (state) => state.checkout.completedOrder;
323
+ exports.selectCompletedOrder = selectCompletedOrder;
324
+ const selectDiscounts = (state) => state.checkout.form.discounts;
325
+ exports.selectDiscounts = selectDiscounts;
326
+ exports.checkoutReducer = checkoutSlice.reducer;