ordering-ui-react-native 0.17.73 → 0.17.74-release

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 (231) hide show
  1. package/package.json +8 -7
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessInformation/index.tsx +10 -9
  4. package/src/components/BusinessesListing/index.tsx +1 -1
  5. package/src/components/OrderCreating/index.tsx +1 -21
  6. package/src/components/PaymentOptionsWebView/index.tsx +29 -8
  7. package/src/components/PhoneInputNumber/index.tsx +6 -2
  8. package/src/components/StripeMethodForm/index.tsx +136 -102
  9. package/src/components/VerifyPhone/styles.tsx +1 -2
  10. package/src/components/shared/OToast.tsx +3 -2
  11. package/src/types/index.tsx +5 -0
  12. package/src/utils/index.tsx +5 -0
  13. package/themes/business/index.tsx +2 -0
  14. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +28 -25
  15. package/themes/business/src/components/BusinessController/index.tsx +0 -1
  16. package/themes/business/src/components/Chat/index.tsx +149 -118
  17. package/themes/business/src/components/DriverMap/index.tsx +17 -6
  18. package/themes/business/src/components/DriverSchedule/index.tsx +45 -8
  19. package/themes/business/src/components/GoogleMap/index.tsx +58 -57
  20. package/themes/business/src/components/LoginForm/Otp/index.tsx +31 -3
  21. package/themes/business/src/components/LoginForm/index.tsx +15 -22
  22. package/themes/business/src/components/MapView/index.tsx +10 -10
  23. package/themes/business/src/components/MessagesOption/index.tsx +20 -93
  24. package/themes/business/src/components/NewOrderNotification/index.tsx +37 -21
  25. package/themes/business/src/components/NotFoundSource/index.tsx +2 -2
  26. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  27. package/themes/business/src/components/OrderDetails/Delivery.tsx +191 -6
  28. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +103 -39
  29. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +61 -60
  30. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +195 -0
  31. package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
  32. package/themes/business/src/components/OrderMessage/index.tsx +19 -18
  33. package/themes/business/src/components/OrderSummary/index.tsx +114 -123
  34. package/themes/business/src/components/OrdersOption/index.tsx +17 -15
  35. package/themes/business/src/components/PreviousMessages/FooterMessageComponent.tsx +103 -0
  36. package/themes/business/src/components/PreviousMessages/index.tsx +97 -55
  37. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +17 -12
  38. package/themes/business/src/components/PreviousOrders/OrderList.tsx +88 -0
  39. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +1 -1
  40. package/themes/business/src/components/PreviousOrders/index.tsx +139 -174
  41. package/themes/business/src/components/ProductItemAccordion/index.tsx +27 -3
  42. package/themes/business/src/components/ReviewCustomer/index.tsx +18 -13
  43. package/themes/business/src/components/StoresList/index.tsx +3 -4
  44. package/themes/business/src/components/UserProfileForm/index.tsx +14 -15
  45. package/themes/business/src/components/shared/OLink.tsx +11 -3
  46. package/themes/business/src/components/shared/OModal.tsx +16 -9
  47. package/themes/business/src/components/shared/OText.tsx +6 -1
  48. package/themes/business/src/types/index.tsx +25 -10
  49. package/themes/business/src/utils/index.tsx +29 -2
  50. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  51. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  52. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  53. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  54. package/themes/kiosk/src/components/Intro/index.tsx +16 -1
  55. package/themes/kiosk/src/components/LoginForm/index.tsx +7 -9
  56. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  57. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  58. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  59. package/themes/kiosk/src/components/PhoneInputNumber/index.tsx +2 -2
  60. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  61. package/themes/original/index.tsx +1 -1
  62. package/themes/original/src/components/AddressDetails/index.tsx +19 -3
  63. package/themes/original/src/components/AddressForm/index.tsx +61 -39
  64. package/themes/original/src/components/AddressList/index.tsx +25 -24
  65. package/themes/original/src/components/AddressList/styles.tsx +4 -2
  66. package/themes/original/src/components/AnalyticsSegment/index.tsx +193 -10
  67. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  68. package/themes/original/src/components/AppleLogin/styles.tsx +3 -1
  69. package/themes/original/src/components/BusinessBasicInformation/index.tsx +153 -96
  70. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +10 -12
  71. package/themes/original/src/components/BusinessController/index.tsx +80 -66
  72. package/themes/original/src/components/BusinessController/styles.tsx +12 -5
  73. package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
  74. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
  75. package/themes/original/src/components/BusinessInformation/index.tsx +139 -85
  76. package/themes/original/src/components/BusinessItemAccordion/index.tsx +15 -20
  77. package/themes/original/src/components/BusinessListingSearch/index.tsx +349 -339
  78. package/themes/original/src/components/BusinessListingSearch/styles.tsx +0 -18
  79. package/themes/original/src/components/BusinessPreorder/index.tsx +103 -19
  80. package/themes/original/src/components/BusinessProductsCategories/index.tsx +1 -2
  81. package/themes/original/src/components/BusinessProductsList/index.tsx +15 -7
  82. package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
  83. package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +1 -1
  84. package/themes/original/src/components/BusinessProductsListing/index.tsx +684 -557
  85. package/themes/original/src/components/BusinessProductsListing/styles.tsx +2 -2
  86. package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
  87. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +69 -38
  88. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +0 -1
  89. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  90. package/themes/original/src/components/Cart/index.tsx +76 -79
  91. package/themes/original/src/components/CartContent/index.tsx +117 -20
  92. package/themes/original/src/components/CartContent/styles.tsx +17 -7
  93. package/themes/original/src/components/Checkout/index.tsx +274 -54
  94. package/themes/original/src/components/CitiesControl/index.tsx +1 -1
  95. package/themes/original/src/components/CouponControl/index.tsx +10 -3
  96. package/themes/original/src/components/DriverTips/index.tsx +52 -34
  97. package/themes/original/src/components/FacebookLogin/styles.tsx +3 -1
  98. package/themes/original/src/components/Favorite/index.tsx +2 -6
  99. package/themes/original/src/components/FavoriteList/index.tsx +1 -35
  100. package/themes/original/src/components/FloatingButton/index.tsx +10 -13
  101. package/themes/original/src/components/GPSButton/index.tsx +6 -4
  102. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +7 -3
  103. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +2 -0
  104. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +19 -6
  105. package/themes/original/src/components/GoogleLogin/styles.tsx +1 -1
  106. package/themes/original/src/components/GoogleMap/index.tsx +60 -5
  107. package/themes/original/src/components/Help/index.tsx +2 -2
  108. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +10 -31
  109. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +5 -3
  110. package/themes/original/src/components/HelpGuide/index.tsx +6 -6
  111. package/themes/original/src/components/HelpGuide/styles.tsx +6 -0
  112. package/themes/original/src/components/HelpOrder/index.tsx +6 -15
  113. package/themes/original/src/components/HelpOrder/styles.tsx +8 -1
  114. package/themes/original/src/components/Home/index.tsx +13 -4
  115. package/themes/original/src/components/LastOrder/index.tsx +1 -34
  116. package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -25
  117. package/themes/original/src/components/LoginForm/index.tsx +64 -34
  118. package/themes/original/src/components/LottieAnimation/index.tsx +88 -63
  119. package/themes/original/src/components/MessageListing/index.tsx +16 -42
  120. package/themes/original/src/components/Messages/index.tsx +14 -7
  121. package/themes/original/src/components/MomentOption/index.tsx +193 -90
  122. package/themes/original/src/components/MomentSelector/index.tsx +1 -1
  123. package/themes/original/src/components/MultiCart/index.tsx +41 -54
  124. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +162 -50
  125. package/themes/original/src/components/MultiCheckout/index.tsx +329 -100
  126. package/themes/original/src/components/MultiCheckout/styles.tsx +3 -1
  127. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +37 -224
  128. package/themes/original/src/components/MultiOrdersDetails/index.tsx +54 -21
  129. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +1 -1
  130. package/themes/original/src/components/MyOrders/index.tsx +40 -29
  131. package/themes/original/src/components/NavBar/index.tsx +20 -17
  132. package/themes/original/src/components/NotFoundSource/index.tsx +14 -10
  133. package/themes/original/src/components/Notifications/index.tsx +42 -52
  134. package/themes/original/src/components/Notifications/styles.tsx +6 -3
  135. package/themes/original/src/components/OrderDetails/OrderEta.tsx +76 -0
  136. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +21 -5
  137. package/themes/original/src/components/OrderDetails/index.tsx +28 -233
  138. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  139. package/themes/original/src/components/OrderItAgain/index.tsx +3 -1
  140. package/themes/original/src/components/OrderProgress/index.tsx +30 -56
  141. package/themes/original/src/components/OrderSummary/index.tsx +83 -57
  142. package/themes/original/src/components/OrderTypeSelector/index.tsx +2 -1
  143. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +14 -14
  144. package/themes/original/src/components/OrdersOption/index.tsx +67 -85
  145. package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
  146. package/themes/original/src/components/PageBanner/index.tsx +98 -38
  147. package/themes/original/src/components/PageBanner/styles.tsx +0 -10
  148. package/themes/original/src/components/PaymentOptionCard/index.tsx +180 -0
  149. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
  150. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  151. package/themes/original/src/components/PaymentOptions/index.tsx +77 -34
  152. package/themes/original/src/components/PhoneInputNumber/index.tsx +18 -4
  153. package/themes/original/src/components/ProductForm/index.tsx +104 -29
  154. package/themes/original/src/components/ProductForm/styles.tsx +5 -5
  155. package/themes/original/src/components/ProductItemAccordion/index.tsx +8 -6
  156. package/themes/original/src/components/ProductOptionSubOption/index.tsx +20 -18
  157. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +5 -9
  158. package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
  159. package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -50
  160. package/themes/original/src/components/ProfessionalProfile/index.tsx +36 -7
  161. package/themes/original/src/components/Promotions/index.tsx +2 -2
  162. package/themes/original/src/components/Promotions/styles.tsx +3 -1
  163. package/themes/original/src/components/ReviewProducts/index.tsx +16 -7
  164. package/themes/original/src/components/ScheduleAccordion/index.tsx +3 -3
  165. package/themes/original/src/components/ServiceForm/index.tsx +63 -20
  166. package/themes/original/src/components/Sessions/index.tsx +11 -8
  167. package/themes/original/src/components/Sessions/styles.tsx +5 -0
  168. package/themes/original/src/components/SignupForm/index.tsx +43 -27
  169. package/themes/original/src/components/SingleOrderCard/index.tsx +102 -63
  170. package/themes/original/src/components/SingleOrderCard/styles.tsx +1 -1
  171. package/themes/original/src/components/SingleProductCard/index.tsx +72 -31
  172. package/themes/original/src/components/SingleProductCard/styles.tsx +20 -4
  173. package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
  174. package/themes/original/src/components/StripeCardsList/index.tsx +49 -5
  175. package/themes/original/src/components/StripeElementsForm/index.tsx +48 -34
  176. package/themes/original/src/components/StripeElementsForm/naked.tsx +12 -1
  177. package/themes/original/src/components/UpsellingProducts/index.tsx +238 -224
  178. package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
  179. package/themes/original/src/components/UserDetails/index.tsx +3 -1
  180. package/themes/original/src/components/UserFormDetails/index.tsx +76 -7
  181. package/themes/original/src/components/UserFormDetails/styles.tsx +1 -1
  182. package/themes/original/src/components/UserProfile/index.tsx +88 -79
  183. package/themes/original/src/components/UserProfileForm/index.tsx +17 -21
  184. package/themes/original/src/components/UserProfileForm/styles.tsx +7 -0
  185. package/themes/original/src/components/UserVerification/index.tsx +55 -50
  186. package/themes/original/src/components/WalletTransactionItem/index.tsx +2 -2
  187. package/themes/original/src/components/WalletTransactions/index.tsx +3 -3
  188. package/themes/original/src/components/Wallets/index.tsx +56 -33
  189. package/themes/original/src/components/Wallets/styles.tsx +3 -4
  190. package/themes/original/src/components/shared/OButton.tsx +6 -2
  191. package/themes/original/src/components/shared/OInput.tsx +6 -1
  192. package/themes/original/src/components/shared/OModal.tsx +3 -3
  193. package/themes/original/src/types/index.tsx +38 -10
  194. package/themes/original/src/utils/index.tsx +273 -1
  195. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
  196. package/src/navigators/BottomNavigator.tsx +0 -117
  197. package/src/navigators/CheckoutNavigator.tsx +0 -66
  198. package/src/navigators/HomeNavigator.tsx +0 -202
  199. package/src/navigators/NavigationRef.tsx +0 -7
  200. package/src/navigators/RootNavigator.tsx +0 -269
  201. package/src/pages/Account.tsx +0 -34
  202. package/src/pages/AddressForm.tsx +0 -62
  203. package/src/pages/AddressList.tsx +0 -24
  204. package/src/pages/BusinessProductsList.tsx +0 -81
  205. package/src/pages/BusinessesListing.tsx +0 -43
  206. package/src/pages/CartList.tsx +0 -49
  207. package/src/pages/Checkout.tsx +0 -101
  208. package/src/pages/ForgotPassword.tsx +0 -24
  209. package/src/pages/Help.tsx +0 -23
  210. package/src/pages/HelpAccountAndPayment.tsx +0 -23
  211. package/src/pages/HelpGuide.tsx +0 -23
  212. package/src/pages/HelpOrder.tsx +0 -23
  213. package/src/pages/Home.tsx +0 -36
  214. package/src/pages/IntroductoryTutorial.tsx +0 -170
  215. package/src/pages/Login.tsx +0 -47
  216. package/src/pages/MomentOption.tsx +0 -30
  217. package/src/pages/MultiCheckout.tsx +0 -31
  218. package/src/pages/MultiOrdersDetails.tsx +0 -27
  219. package/src/pages/MyOrders.tsx +0 -40
  220. package/src/pages/NetworkError.tsx +0 -24
  221. package/src/pages/NotFound.tsx +0 -22
  222. package/src/pages/OrderDetails.tsx +0 -25
  223. package/src/pages/ProductDetails.tsx +0 -55
  224. package/src/pages/Profile.tsx +0 -36
  225. package/src/pages/ReviewDriver.tsx +0 -30
  226. package/src/pages/ReviewOrder.tsx +0 -32
  227. package/src/pages/ReviewProducts.tsx +0 -30
  228. package/src/pages/Sessions.tsx +0 -22
  229. package/src/pages/Signup.tsx +0 -53
  230. package/src/pages/SpinnerLoader.tsx +0 -10
  231. package/src/pages/Splash.tsx +0 -21
@@ -1,8 +1,9 @@
1
- import React, { useState, useEffect } from 'react';
2
- import { View, StyleSheet, TouchableOpacity, Platform, I18nManager, Vibration } from 'react-native';
1
+ import React, { useState, useEffect, useCallback } from 'react';
2
+ import { View, StyleSheet, TouchableOpacity, Platform, I18nManager, ScrollView } from 'react-native';
3
3
  import { initStripe, useConfirmPayment } from '@stripe/stripe-react-native';
4
4
  import Picker from 'react-native-country-picker-modal';
5
5
  import MaterialIcons from 'react-native-vector-icons/MaterialIcons'
6
+ import ReactNativeHapticFeedback from "react-native-haptic-feedback";
6
7
  import {
7
8
  Checkout as CheckoutController,
8
9
  useOrder,
@@ -14,9 +15,10 @@ import {
14
15
  useConfig,
15
16
  useToast,
16
17
  ToastType,
18
+ useEvent
17
19
  } from 'ordering-components/native';
18
20
  import { useTheme } from 'styled-components/native';
19
- import { OText, OIcon, OModal } from '../shared';
21
+ import { OText, OIcon, OModal, OButton } from '../shared';
20
22
 
21
23
  import { AddressDetails } from '../AddressDetails';
22
24
  import { PaymentOptions } from '../PaymentOptions';
@@ -25,6 +27,8 @@ import { NotFoundSource } from '../NotFoundSource';
25
27
  import { UserDetails } from '../UserDetails';
26
28
  import { PaymentOptionWallet } from '../PaymentOptionWallet';
27
29
  import { PlaceSpot } from '../PlaceSpot'
30
+ import { SignupForm } from '../SignupForm'
31
+ import { LoginForm } from '../LoginForm'
28
32
 
29
33
  import {
30
34
  ChContainer,
@@ -52,6 +56,8 @@ import { OrderSummary } from '../OrderSummary';
52
56
  import { getTypesText } from '../../utils';
53
57
  import { CartStoresListing } from '../CartStoresListing';
54
58
  import { PaymentOptionsWebView } from '../../../../../src/components/PaymentOptionsWebView';
59
+ import { DeviceOrientationMethods } from '../../../../../src/hooks/DeviceOrientation'
60
+ const { useDeviceOrientation } = DeviceOrientationMethods
55
61
 
56
62
  const mapConfigs = {
57
63
  mapZoom: 16,
@@ -78,6 +84,7 @@ const CheckoutUI = (props: any) => {
78
84
  placing,
79
85
  cartState,
80
86
  cartUuid,
87
+ loyaltyPlansState,
81
88
  businessDetails,
82
89
  paymethodSelected,
83
90
  handlePaymethodChange,
@@ -88,7 +95,8 @@ const CheckoutUI = (props: any) => {
88
95
  handleChangeDeliveryOption,
89
96
  currency,
90
97
  merchantId,
91
- setPlaceSpotNumber
98
+ setPlaceSpotNumber,
99
+ maxDate
92
100
  } = props
93
101
 
94
102
  const theme = useTheme();
@@ -128,12 +136,17 @@ const CheckoutUI = (props: any) => {
128
136
 
129
137
  const [, { showToast }] = useToast();
130
138
  const [, t] = useLanguage();
131
- const [{ user, token }] = useSession();
139
+ const [{ user, token }, { login }] = useSession();
132
140
  const [ordering] = useApi()
133
141
  const [{ configs }] = useConfig();
134
142
  const [{ parsePrice, parseDate }] = useUtils();
135
143
  const [{ options, carts, loading }, { confirmCart }] = useOrder();
136
144
  const [validationFields] = useValidationFields();
145
+ const [events] = useEvent()
146
+ const [orientationState] = useDeviceOrientation();
147
+ const [isReadMore, setIsReadMore] = useState(false)
148
+ const [lengthMore, setLengthMore] = useState(false)
149
+ const WIDTH_SCREEN = orientationState?.dimensions?.width
137
150
 
138
151
  const [errorCash, setErrorCash] = useState(false);
139
152
  const [userErrors, setUserErrors] = useState<any>([]);
@@ -145,7 +158,12 @@ const CheckoutUI = (props: any) => {
145
158
  const [webviewPaymethod, setWebviewPaymethod] = useState<any>(null)
146
159
  const [isOpen, setIsOpen] = useState(false)
147
160
  const [requiredFields, setRequiredFields] = useState<any>([])
148
-
161
+ const [openModal, setOpenModal] = useState({ login: false, signup: false })
162
+ const [allowedGuest, setAllowedGuest] = useState(false)
163
+ const [placeByMethodPay, setPlaceByMethodPay] = useState(false)
164
+ const [methodPaySupported, setMethodPaySupported] = useState({ enabled: false, message: null, loading: true })
165
+ const [cardList, setCardList] = useState<any>({ cards: [], loading: false, error: null })
166
+ const cardsMethods = ['credomatic']
149
167
  const placeSpotTypes = [3, 4, 5]
150
168
  const placeSpotsEnabled = placeSpotTypes.includes(options?.type)
151
169
  const isGiftCardCart = !cart?.business_id
@@ -154,7 +172,15 @@ const CheckoutUI = (props: any) => {
154
172
  const isWalletCreditPointsEnabled = businessConfigs.find((config: any) => config.key === 'wallet_credit_point_enabled')?.value === '1'
155
173
  const isWalletEnabled = configs?.cash_wallet?.value && configs?.wallet_enabled?.value === '1' && (isWalletCashEnabled || isWalletCreditPointsEnabled)
156
174
  const isBusinessChangeEnabled = configs?.cart_change_business_validation?.value === '1'
157
- const isChewLayout = theme?.business_view?.components?.header?.components?.layout?.type === 'chew'
175
+ const isChewLayout = theme?.header?.components?.layout?.type?.toLowerCase() === 'chew'
176
+ const hideBusinessAddress = theme?.checkout?.components?.business?.components?.address?.hidden
177
+ const hideBusinessDetails = theme?.checkout?.components?.business?.hidden
178
+ const hideBusinessMap = theme?.checkout?.components?.business?.components?.map?.hidden
179
+ const hideCustomerDetails = theme?.checkout?.components?.customer?.hidden
180
+
181
+ const creditPointPlan = loyaltyPlansState?.result?.find((loyal: any) => loyal.type === 'credit_point')
182
+ const creditPointPlanOnBusiness = creditPointPlan?.businesses?.find((b: any) => b.business_id === cart?.business_id && b.accumulates)
183
+ const methodsPay = ['google_pay', 'apple_pay']
158
184
 
159
185
  const isPreOrder = configs?.preorder_status_enabled?.value === '1'
160
186
  const subtotalWithTaxes = cart?.taxes?.reduce((acc: any, item: any) => {
@@ -162,12 +188,18 @@ const CheckoutUI = (props: any) => {
162
188
  return acc = acc + item?.summary?.tax
163
189
  return acc = acc
164
190
  }, cart?.subtotal)
191
+
192
+ const validateCommentsCartField = validationFields?.fields?.checkout?.comments?.enabled && validationFields?.fields?.checkout?.comments?.required && (cart?.comment === null || cart?.comment?.trim().length === 0)
193
+
165
194
  const isDisabledButtonPlace = loading || !cart?.valid || (!paymethodSelected && cart?.balance > 0) ||
166
195
  placing || errorCash || subtotalWithTaxes < cart?.minimum ||
196
+ (cardsMethods.includes(paymethodSelected?.gateway) && cardList?.cards?.length === 0) ||
167
197
  (options.type === 1 &&
168
198
  validationFields?.fields?.checkout?.driver_tip?.enabled &&
169
199
  validationFields?.fields?.checkout?.driver_tip?.required &&
170
- (Number(cart?.driver_tip) <= 0))
200
+ (Number(cart?.driver_tip) <= 0)) ||
201
+ (validateCommentsCartField)
202
+ || (methodsPay.includes(paymethodSelected?.gateway) && (!methodPaySupported.enabled || methodPaySupported.loading))
171
203
 
172
204
  const driverTipsOptions = typeof configs?.driver_tip_options?.value === 'string'
173
205
  ? JSON.parse(configs?.driver_tip_options?.value) || []
@@ -177,6 +209,9 @@ const CheckoutUI = (props: any) => {
177
209
 
178
210
  const cartsWithProducts = carts && Object.values(carts).filter((cart: any) => cart.products.length) || null
179
211
 
212
+ const isSandboxCredomatic = configs?.credomatic_integration_sandbox?.value === '1'
213
+ const credomaticKeyId = isSandboxCredomatic ? configs?.credomatic_integration_public_sandbox_key?.value : configs?.credomatic_integration_public_production_key?.value
214
+ const credomaticUrl = `https://integrations.ordering.co/credomatic/front/auth_mobile.html?title=${t('CREDOMATIC_PAYMENT', 'Credomatic payment')}&body=${t('CREDOMATIC_PROCESSING', 'Processing transaction')}`
180
215
  const deliveryOptions = instructionsOptions?.result && instructionsOptions?.result?.filter((option: any) => option?.enabled)?.map((option: any) => {
181
216
  return {
182
217
  value: option?.id, key: option?.id, label: t(option?.name.toUpperCase().replace(/\s/g, '_'), option?.name)
@@ -189,9 +224,30 @@ const CheckoutUI = (props: any) => {
189
224
  }
190
225
  }
191
226
 
227
+ const vibrateApp = (impact?: string) => {
228
+ const options = {
229
+ enableVibrateFallback: true,
230
+ ignoreAndroidSystemSettings: false
231
+ };
232
+ ReactNativeHapticFeedback.trigger(impact || "impactLight", options);
233
+ }
234
+
235
+ const handleSuccessSignup = (user: any) => {
236
+ login({
237
+ user,
238
+ token: user?.session?.access_token
239
+ })
240
+ setOpenModal({ ...openModal, signup: false })
241
+ }
242
+
243
+ const handleSuccessLogin = (user: any) => {
244
+ if (user) setOpenModal({ ...openModal, login: false })
245
+ }
246
+
192
247
  const handlePlaceOrder = (confirmPayment: any, forcePlace: boolean = false) => {
193
- if (!userErrors.length && !requiredFields?.length || forcePlace) {
194
- handlerClickPlaceOrder && handlerClickPlaceOrder(null, null, confirmPayment)
248
+ if (!userErrors.length && (!requiredFields?.length || allowedGuest) || forcePlace) {
249
+ vibrateApp()
250
+ handlerClickPlaceOrder && handlerClickPlaceOrder(null, { isNative: true }, confirmPayment)
195
251
  return
196
252
  }
197
253
  if (requiredFields?.length) {
@@ -206,6 +262,11 @@ const CheckoutUI = (props: any) => {
206
262
  setIsUserDetailsEdit(true)
207
263
  }
208
264
 
265
+ const handlePlaceOrderAsGuest = () => {
266
+ setIsOpen(false)
267
+ handlerClickPlaceOrder && handlerClickPlaceOrder()
268
+ }
269
+
209
270
  const handlePaymentMethodClick = (paymethod: any) => {
210
271
  setShowGateway({ closedByUser: false, open: true })
211
272
  setWebviewPaymethod(paymethod)
@@ -224,7 +285,7 @@ const CheckoutUI = (props: any) => {
224
285
  const checkValidationFields = () => {
225
286
  setUserErrors([])
226
287
  const errors = []
227
- const notFields = ['coupon', 'driver_tip', 'mobile_phone', 'address', 'zipcode', 'address_notes']
288
+ const notFields = ['coupon', 'driver_tip', 'mobile_phone', 'address', 'zipcode', 'address_notes', 'comments']
228
289
  const _requiredFields: any = []
229
290
 
230
291
  Object.values(validationFields?.fields?.checkout).map((field: any) => {
@@ -272,7 +333,7 @@ const CheckoutUI = (props: any) => {
272
333
  useEffect(() => {
273
334
  if (cart?.products?.length === 0) {
274
335
  if (cart?.business?.slug) {
275
- onNavigationRedirect('Business', { store: cart?.business?.slug, header: null, logo: null })
336
+ onNavigationRedirect('Business', { store: cart?.business?.slug, header: null, logo: null, fromMulti: props.fromMulti })
276
337
  } else {
277
338
  onNavigationRedirect('Wallets')
278
339
  }
@@ -298,6 +359,24 @@ const CheckoutUI = (props: any) => {
298
359
  )
299
360
  }
300
361
 
362
+ useEffect(() => {
363
+ cart && events.emit('checkout_started', cart)
364
+ }, [])
365
+
366
+ useEffect(() => {
367
+ if (cart?.paymethod_data?.gateway === 'credomatic') {
368
+ if (cart?.paymethod_data?.status === 2) {
369
+ setShowGateway({ ...showGateway, open: true })
370
+ } else if (cart?.paymethod_data?.gateway === 'credomatic' && cart?.paymethod_data?.status === 4) {
371
+ setShowGateway({ ...showGateway, open: false })
372
+ }
373
+ }
374
+ }, [cart?.paymethod_data])
375
+
376
+ const onTextLayout = useCallback((e: any) => {
377
+ setLengthMore((e.nativeEvent.lines.length == 3 && e.nativeEvent.lines[2].width > WIDTH_SCREEN * .76) || e.nativeEvent.lines.length > 3)
378
+ }, [])
379
+
301
380
  return (
302
381
  <>
303
382
  <Container noPadding>
@@ -305,11 +384,12 @@ const CheckoutUI = (props: any) => {
305
384
  <NavBar
306
385
  title={t('CHECKOUT', 'Checkout')}
307
386
  titleAlign={'center'}
308
- onActionLeft={() => navigation?.canGoBack() && navigation.goBack()}
387
+ onActionLeft={() => onNavigationRedirect('BottomTab', { screen: 'Cart' }, !props.fromMulti)}
309
388
  showCall={false}
310
- btnStyle={{ paddingLeft: 0 }}
389
+ btnStyle={{ paddingLeft: 0, paddingTop: Platform.OS == 'ios' ? 0 : 2 }}
311
390
  titleWrapStyle={{ paddingHorizontal: 0 }}
312
391
  titleStyle={{ marginRight: 0, marginLeft: 0 }}
392
+ style={{ marginTop: 20 }}
313
393
  />
314
394
  </View>
315
395
  <ChContainer style={styles.pagePadding}>
@@ -352,7 +432,7 @@ const CheckoutUI = (props: any) => {
352
432
  <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginTop: 18, marginHorizontal: -40 }} />
353
433
  </ChSection>
354
434
 
355
- {!isGiftCardCart && (
435
+ {!isGiftCardCart && !hideBusinessDetails && (
356
436
  <ChSection>
357
437
  <ChBusinessDetails>
358
438
  {
@@ -383,9 +463,30 @@ const CheckoutUI = (props: any) => {
383
463
  <OText size={12} lineHeight={18} weight={'400'}>
384
464
  {businessDetails?.business?.cellphone}
385
465
  </OText>
386
- <OText size={12} lineHeight={18} weight={'400'}>
387
- {businessDetails?.business?.address}
388
- </OText>
466
+ {!hideBusinessAddress && (
467
+ <OText size={12} lineHeight={18} weight={'400'}>
468
+ {businessDetails?.business?.address}
469
+ </OText>
470
+ )}
471
+ {businessDetails?.business?.address_notes && (
472
+ <>
473
+ <OText
474
+ size={12}
475
+ lineHeight={18}
476
+ numberOfLines={isReadMore ? 20 : 3}
477
+ onTextLayout={onTextLayout}
478
+ >
479
+ {businessDetails?.business?.address_notes}
480
+ </OText>
481
+ {lengthMore && (
482
+ <TouchableOpacity
483
+ onPress={() => setIsReadMore(!isReadMore)}
484
+ >
485
+ <OText size={12} color={theme.colors.primary}>{isReadMore ? t('SHOW_LESS', 'Show less') : t('READ_MORE', 'Read more')}</OText>
486
+ </TouchableOpacity>
487
+ )}
488
+ </>
489
+ )}
389
490
  </View>
390
491
  </>
391
492
  )}
@@ -401,33 +502,63 @@ const CheckoutUI = (props: any) => {
401
502
  <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginHorizontal: -40 }} />
402
503
  </ChSection>
403
504
  )}
505
+ {!hideCustomerDetails && (
404
506
 
405
- <ChSection>
406
- <ChUserDetails>
407
- {cartState.loading ? (
408
- <Placeholder Animation={Fade}>
409
- <PlaceholderLine height={20} />
410
- <PlaceholderLine height={12} />
411
- <PlaceholderLine height={12} />
412
- <PlaceholderLine height={12} style={{ marginBottom: 20 }} />
413
- </Placeholder>
414
- ) : (
415
- <UserDetails
416
- isUserDetailsEdit={isUserDetailsEdit}
417
- HeaderTitle={<HeaderTitle text={t('CUSTOMER_DETAILS', 'Customer Details')} mb={0} />}
418
- cartStatus={cart?.status}
419
- businessId={cart?.business_id}
420
- useValidationFields
421
- useDefualtSessionManager
422
- useSessionUser
423
- isCheckout
424
- phoneUpdate={phoneUpdate}
425
- togglePhoneUpdate={togglePhoneUpdate}
426
- />
427
- )}
428
- </ChUserDetails>
429
- <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginHorizontal: -40 }} />
430
- </ChSection>
507
+ <ChSection>
508
+ <ChUserDetails>
509
+ {cartState.loading ? (
510
+ <Placeholder Animation={Fade}>
511
+ <PlaceholderLine height={20} />
512
+ <PlaceholderLine height={12} />
513
+ <PlaceholderLine height={12} />
514
+ <PlaceholderLine height={12} style={{ marginBottom: 20 }} />
515
+ </Placeholder>
516
+ ) : (
517
+ (user?.guest_id && !allowedGuest) ? (
518
+ <View>
519
+ <HeaderTitle text={t('CUSTOMER_DETAILS', 'Customer details')} />
520
+ <OButton
521
+ text={t('SIGN_UP', 'Sign up')}
522
+ textStyle={{ color: theme.colors.white }}
523
+ style={{ borderRadius: 7.6, marginTop: 20 }}
524
+ onClick={() => setOpenModal({ ...openModal, signup: true })}
525
+ />
526
+ <OButton
527
+ text={t('LOGIN', 'Login')}
528
+ textStyle={{ color: theme.colors.primary }}
529
+ bgColor={theme.colors.white}
530
+ borderColor={theme.colors.primary}
531
+ style={{ borderRadius: 7.6, marginTop: 20 }}
532
+ onClick={() => setOpenModal({ ...openModal, login: true })}
533
+ />
534
+ <OButton
535
+ text={t('CONTINUE_AS_GUEST', 'Continue as guest')}
536
+ textStyle={{ color: theme.colors.black }}
537
+ bgColor={theme.colors.white}
538
+ borderColor={theme.colors.black}
539
+ style={{ borderRadius: 7.6, marginTop: 20 }}
540
+ onClick={() => setAllowedGuest(true)}
541
+ />
542
+ </View>
543
+ ) : (
544
+ <UserDetails
545
+ isUserDetailsEdit={isUserDetailsEdit}
546
+ HeaderTitle={<HeaderTitle text={t('CUSTOMER_DETAILS', 'Customer Details')} mb={0} />}
547
+ cartStatus={cart?.status}
548
+ businessId={cart?.business_id}
549
+ useValidationFields
550
+ useDefualtSessionManager
551
+ useSessionUser
552
+ isCheckout
553
+ phoneUpdate={phoneUpdate}
554
+ togglePhoneUpdate={togglePhoneUpdate}
555
+ />
556
+ )
557
+ )}
558
+ </ChUserDetails>
559
+ <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginHorizontal: -40 }} />
560
+ </ChSection>
561
+ )}
431
562
 
432
563
  {options?.type === 1 && !isGiftCardCart && (
433
564
  <DeliveryOptionsContainer>
@@ -470,7 +601,7 @@ const CheckoutUI = (props: any) => {
470
601
  data: deliveryOptions || [],
471
602
  renderItem: ({ item }: any) => (
472
603
  <TouchableOpacity
473
- onPress={() => changeDeliveryOption(item.value)}
604
+ onPress={() => !!cart?.uuid && changeDeliveryOption(item.value)}
474
605
  disabled={
475
606
  deliveryOptionSelected === item.value
476
607
  }
@@ -508,7 +639,7 @@ const CheckoutUI = (props: any) => {
508
639
  </ChSection>
509
640
  )}
510
641
 
511
- {!isGiftCardCart && (
642
+ {!isGiftCardCart && !hideBusinessMap && (
512
643
  <ChSection>
513
644
  <ChAddress>
514
645
  {(businessDetails?.loading || cartState.loading) ? (
@@ -519,7 +650,7 @@ const CheckoutUI = (props: any) => {
519
650
  ) : (
520
651
  <AddressDetails
521
652
  navigation={navigation}
522
- location={businessDetails?.business?.location}
653
+ location={options?.address?.location}
523
654
  businessLogo={businessDetails?.business?.logo}
524
655
  isCartPending={cart?.status === 2}
525
656
  uuid={cartUuid}
@@ -548,13 +679,14 @@ const CheckoutUI = (props: any) => {
548
679
  <DriverTips
549
680
  uuid={cartUuid}
550
681
  businessId={cart?.business_id}
551
- driverTipsOptions={driverTipsOptions}
552
- isFixedPrice={parseInt(configs?.driver_tip_type?.value, 10) === 1 || !!parseInt(configs?.driver_tip_use_custom?.value, 10)}
682
+ driverTipsOptions={!driverTipsOptions.includes(0) ? [0, ...driverTipsOptions] : driverTipsOptions}
683
+ isFixedPrice={parseInt(configs?.driver_tip_type?.value, 10) === 1}
553
684
  isDriverTipUseCustom={!!parseInt(configs?.driver_tip_use_custom?.value, 10)}
554
- driverTip={parseInt(configs?.driver_tip_type?.value, 10) === 1 || !!parseInt(configs?.driver_tip_use_custom?.value, 10)
685
+ driverTip={parseInt(configs?.driver_tip_type?.value, 10) === 1
555
686
  ? cart?.driver_tip
556
687
  : cart?.driver_tip_rate}
557
688
  useOrderContext
689
+ cart={cart}
558
690
  />
559
691
  </ChDriverTips>
560
692
  </ChSection>
@@ -577,7 +709,7 @@ const CheckoutUI = (props: any) => {
577
709
  cart={cart}
578
710
  isDisabled={cart?.status === 2}
579
711
  businessId={!isGiftCardCart ? businessDetails?.business?.id : -1}
580
- isLoading={!isGiftCardCart ? businessDetails.loading : false}
712
+ isLoading={!isGiftCardCart ? businessDetails.loading : false}
581
713
  paymethods={businessDetails?.business?.paymethods}
582
714
  onPaymentChange={handlePaymethodChange}
583
715
  errorCash={errorCash}
@@ -587,6 +719,12 @@ const CheckoutUI = (props: any) => {
587
719
  handlePaymentMethodClickCustom={handlePaymentMethodClick}
588
720
  handlePlaceOrder={handlePlaceOrder}
589
721
  merchantId={merchantId}
722
+ setMethodPaySupported={setMethodPaySupported}
723
+ methodPaySupported={methodPaySupported}
724
+ placeByMethodPay={placeByMethodPay}
725
+ setPlaceByMethodPay={setPlaceByMethodPay}
726
+ cardList={cardList}
727
+ setCardList={setCardList}
590
728
  />
591
729
  </ChPaymethods>
592
730
  </ChSection>
@@ -596,6 +734,7 @@ const CheckoutUI = (props: any) => {
596
734
  <WalletPaymentOptionContainer>
597
735
  <PaymentOptionWallet
598
736
  cart={cart}
737
+ loyaltyPlansState={loyaltyPlansState}
599
738
  businessId={cart?.business_id}
600
739
  businessConfigs={businessDetails?.business?.configs}
601
740
  />
@@ -665,6 +804,12 @@ const CheckoutUI = (props: any) => {
665
804
  isCartPending={cart?.status === 2}
666
805
  onNavigationRedirect={onNavigationRedirect}
667
806
  placeSpotTypes={placeSpotTypes}
807
+ businessConfigs={businessConfigs}
808
+ maxDate={maxDate}
809
+ loyaltyRewardRate={
810
+ creditPointPlanOnBusiness?.accumulation_rate ??
811
+ (!!creditPointPlanOnBusiness && creditPointPlan?.accumulation_rate) ?? 0
812
+ }
668
813
  />
669
814
  </>
670
815
  )}
@@ -674,7 +819,7 @@ const CheckoutUI = (props: any) => {
674
819
 
675
820
  {!cartState.loading && cart && (
676
821
  <View>
677
- <ChErrors style={{ marginBottom: 10 }}>
822
+ <ChErrors style={{ marginBottom: Platform.OS === 'ios' ? 35 : 10 }}>
678
823
  {!cart?.valid_address && cart?.status !== 2 && (
679
824
  <OText
680
825
  color={theme.colors.error}
@@ -701,6 +846,14 @@ const CheckoutUI = (props: any) => {
701
846
  {t('WARNING_INVALID_PRODUCTS_CHECKOUT', 'To continue with your checkout, please remove from your cart the products that are not available.')}
702
847
  </OText>
703
848
  )}
849
+ {cart?.valid_preorder !== undefined && !cart?.valid_preorder && (
850
+ <OText
851
+ color={theme.colors.error}
852
+ size={12}
853
+ >
854
+ {t('INVALID_CART_MOMENT', 'Selected schedule time is invalid, please select a schedule into the business schedule interval.')}
855
+ </OText>
856
+ )}
704
857
  {options.type === 1 &&
705
858
  validationFields?.fields?.checkout?.driver_tip?.enabled &&
706
859
  validationFields?.fields?.checkout?.driver_tip?.required &&
@@ -712,6 +865,15 @@ const CheckoutUI = (props: any) => {
712
865
  {t('WARNING_INVALID_DRIVER_TIP', 'Driver Tip is required.')}
713
866
  </OText>
714
867
  )}
868
+
869
+ {validateCommentsCartField && (
870
+ <OText
871
+ color={theme.colors.error}
872
+ size={12}
873
+ >
874
+ {t('WARNING_INVALID_CART_COMMENTS', 'Cart comments is required.')}
875
+ </OText>
876
+ )}
715
877
  </ChErrors>
716
878
  </View>
717
879
  )}
@@ -744,18 +906,52 @@ const CheckoutUI = (props: any) => {
744
906
  togglePhoneUpdate={togglePhoneUpdate}
745
907
  requiredFields={requiredFields}
746
908
  hideUpdateButton
909
+ handlePlaceOrderAsGuest={handlePlaceOrderAsGuest}
747
910
  onClose={() => {
748
911
  setIsOpen(false)
749
912
  handlePlaceOrder(null, true)
750
913
  }}
914
+ setIsOpen={setIsOpen}
751
915
  />
752
916
  </View>
753
917
  </OModal>
918
+ <OModal
919
+ open={openModal.signup}
920
+ onClose={() => setOpenModal({ ...openModal, signup: false })}
921
+ >
922
+ <ScrollView style={{ paddingHorizontal: 20, width: '100%' }}>
923
+ <SignupForm
924
+ handleSuccessSignup={handleSuccessSignup}
925
+ isGuest
926
+ signupButtonText={t('SIGNUP', 'Signup')}
927
+ useSignupByEmail
928
+ useChekoutFileds
929
+ />
930
+ </ScrollView>
931
+ </OModal>
932
+ <OModal
933
+ open={openModal.login}
934
+ onClose={() => setOpenModal({ ...openModal, login: false })}
935
+ >
936
+ <ScrollView style={{ paddingHorizontal: 20, width: '100%' }}>
937
+ <LoginForm
938
+ handleSuccessLogin={handleSuccessLogin}
939
+ isGuest
940
+ loginButtonText={t('LOGIN', 'Login')}
941
+ loginButtonBackground={theme.colors.primary}
942
+ />
943
+ </ScrollView>
944
+ </OModal>
754
945
  </ChContainer>
755
946
  </Container>
756
947
  {!cartState.loading && cart && cart?.status !== 2 && (
757
948
  <FloatingButton
758
- handleClick={isDisabledButtonPlace ? () => Vibration.vibrate() : () => handlePlaceOrder(null)}
949
+ handleClick={
950
+ isDisabledButtonPlace
951
+ ? () => vibrateApp()
952
+ : methodsPay.includes(paymethodSelected?.gateway)
953
+ ? () => setPlaceByMethodPay(true)
954
+ : () => handlePlaceOrder(null)}
759
955
  isSecondaryBtn={isDisabledButtonPlace}
760
956
  disabled={isDisabledButtonPlace}
761
957
  btnText={subtotalWithTaxes >= cart?.minimum
@@ -798,6 +994,29 @@ const CheckoutUI = (props: any) => {
798
994
  locationId={'L1NGAY5M6KJRX'}
799
995
  />
800
996
  )}
997
+ {cart?.paymethod_data?.gateway === 'credomatic' && cart?.paymethod_data?.status === 2 && showGateway.open && (
998
+ <PaymentOptionsWebView
999
+ title={t('CREDOMATIC_PAYMENT', 'Credomatic payment')}
1000
+ onNavigationRedirect={onNavigationRedirect}
1001
+ uri={credomaticUrl}
1002
+ user={user}
1003
+ cart={cart}
1004
+ additionalParams={{
1005
+ type: 'auth',
1006
+ key_id: credomaticKeyId,
1007
+ hash: cart?.paymethod_data?.result?.hash,
1008
+ time: cart?.paymethod_data?.result?.time,
1009
+ amount: cart?.total,
1010
+ orderid: cart?.uuid,
1011
+ ccnumber: cardList?.cards?.[0]?.number,
1012
+ ccexp: cardList?.cards?.[0]?.expiryString,
1013
+ cvv: cardList?.cards?.[0]?.cvc,
1014
+ redirect: credomaticUrl
1015
+ }}
1016
+ webviewPaymethod={webviewPaymethod}
1017
+ setShowGateway={setShowGateway}
1018
+ />
1019
+ )}
801
1020
  </>
802
1021
  )
803
1022
  }
@@ -824,7 +1043,8 @@ export const Checkout = (props: any) => {
824
1043
  const getOrder = async (cartId: any) => {
825
1044
  try {
826
1045
  let result: any = {}
827
- const cart = orderState?.carts.find((cart: any) => cart.uuid === cartId)
1046
+ const cartsWithProducts = orderState?.carts && (Object.values(orderState?.carts)?.filter(cart => cart?.products && cart?.products?.length) || null)
1047
+ const cart = cartsWithProducts?.find((cart: any) => cart.uuid === cartId)
828
1048
  if (cart) {
829
1049
  result = { ...cart }
830
1050
  } else {
@@ -47,7 +47,7 @@ export const CitiesControl = (props: any) => {
47
47
  return (
48
48
  <Container height={height - top - bottom - 60 - (isKeyboardShow ? 250 : 0)}>
49
49
  <View>
50
- {cities?.map((city: any) => (
50
+ {cities?.map((city: any) => city?.enabled && (
51
51
  <CityElement
52
52
  key={city?.id}
53
53
  activeOpacity={1}
@@ -1,6 +1,6 @@
1
1
  import React, { useEffect } from 'react';
2
2
  import { StyleSheet, Alert, Text } from 'react-native';
3
- import { CouponControl as CouponController, useLanguage } from 'ordering-components/native';
3
+ import { CouponControl as CouponController, useLanguage, useEvent } from 'ordering-components/native';
4
4
  import { useTheme } from 'styled-components/native';
5
5
  import {
6
6
  CContainer,
@@ -18,11 +18,13 @@ const CouponControlUI = (props: any) => {
18
18
  handleRemoveCouponClick,
19
19
  onChangeInputCoupon,
20
20
  confirm,
21
- setConfirm
21
+ setConfirm,
22
+ cart
22
23
  } = props
23
24
 
24
25
  const [, t] = useLanguage()
25
26
  const theme = useTheme();
27
+ const [events] = useEvent()
26
28
 
27
29
  const styles = StyleSheet.create({
28
30
  inputsStyle: {
@@ -45,6 +47,11 @@ const CouponControlUI = (props: any) => {
45
47
  setConfirm({ ...confirm, open: false, error: false })
46
48
  }
47
49
 
50
+ const onButtonApplyClick = () => {
51
+ events.emit('coupon_entered', { ...cart, coupon: couponInput })
52
+ handleButtonApplyClick()
53
+ }
54
+
48
55
  useEffect(() => {
49
56
  if (confirm.content) {
50
57
  Alert.alert(
@@ -94,7 +101,7 @@ const CouponControlUI = (props: any) => {
94
101
  inputStyle={{ fontSize: 12 }}
95
102
  />
96
103
  <OButton
97
- onClick={() => handleButtonApplyClick()}
104
+ onClick={() => onButtonApplyClick()}
98
105
  bgColor={theme.colors.primary}
99
106
  borderColor={theme.colors.primary}
100
107
  textStyle={{ color: 'white', fontSize: 12 }}