ordering-ui-react-native 0.17.94 → 0.17.95-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 (224) hide show
  1. package/package.json +9 -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 +0 -20
  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 +7 -2
  13. package/themes/business/index.tsx +2 -0
  14. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +36 -26
  15. package/themes/business/src/components/BusinessController/index.tsx +0 -1
  16. package/themes/business/src/components/Chat/index.tsx +163 -123
  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/FloatingButton/index.tsx +34 -31
  20. package/themes/business/src/components/GoogleMap/index.tsx +58 -57
  21. package/themes/business/src/components/LoginForm/index.tsx +5 -2
  22. package/themes/business/src/components/MapView/index.tsx +14 -10
  23. package/themes/business/src/components/MessagesOption/index.tsx +22 -94
  24. package/themes/business/src/components/NewOrderNotification/index.tsx +123 -96
  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 +202 -12
  28. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +84 -37
  29. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +87 -66
  30. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +200 -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/OrdersListManager/index.tsx +7 -2
  35. package/themes/business/src/components/OrdersListManager/utils.tsx +1 -1
  36. package/themes/business/src/components/OrdersOption/index.tsx +44 -47
  37. package/themes/business/src/components/PreviousMessages/FooterMessageComponent.tsx +103 -0
  38. package/themes/business/src/components/PreviousMessages/index.tsx +97 -55
  39. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +21 -29
  40. package/themes/business/src/components/PreviousOrders/OrderList.tsx +93 -0
  41. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +1 -1
  42. package/themes/business/src/components/PreviousOrders/index.tsx +198 -221
  43. package/themes/business/src/components/PreviousOrders/styles.tsx +10 -0
  44. package/themes/business/src/components/ProductItemAccordion/index.tsx +7 -1
  45. package/themes/business/src/components/ReviewCustomer/index.tsx +18 -13
  46. package/themes/business/src/components/StoresList/index.tsx +3 -4
  47. package/themes/business/src/components/UserProfileForm/index.tsx +14 -15
  48. package/themes/business/src/components/WebsocketStatus/index.tsx +171 -0
  49. package/themes/business/src/components/WebsocketStatus/styles.tsx +28 -0
  50. package/themes/business/src/components/shared/OModal.tsx +16 -9
  51. package/themes/business/src/types/index.tsx +24 -10
  52. package/themes/business/src/utils/index.tsx +29 -2
  53. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  54. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  55. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  56. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  57. package/themes/kiosk/src/components/Intro/index.tsx +16 -1
  58. package/themes/kiosk/src/components/LoginForm/index.tsx +7 -5
  59. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  60. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  61. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  62. package/themes/kiosk/src/components/PhoneInputNumber/index.tsx +2 -2
  63. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  64. package/themes/original/index.tsx +7 -3
  65. package/themes/original/src/components/AddressDetails/index.tsx +19 -3
  66. package/themes/original/src/components/AddressForm/index.tsx +35 -17
  67. package/themes/original/src/components/AddressList/index.tsx +5 -8
  68. package/themes/original/src/components/AnalyticsSegment/index.tsx +193 -10
  69. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  70. package/themes/original/src/components/AppleLogin/styles.tsx +3 -1
  71. package/themes/original/src/components/BusinessBasicInformation/index.tsx +72 -36
  72. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +10 -12
  73. package/themes/original/src/components/BusinessController/index.tsx +35 -44
  74. package/themes/original/src/components/BusinessController/styles.tsx +12 -5
  75. package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
  76. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
  77. package/themes/original/src/components/BusinessInformation/index.tsx +140 -85
  78. package/themes/original/src/components/BusinessItemAccordion/index.tsx +21 -23
  79. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +1 -1
  80. package/themes/original/src/components/BusinessListingSearch/index.tsx +346 -340
  81. package/themes/original/src/components/BusinessListingSearch/styles.tsx +0 -18
  82. package/themes/original/src/components/BusinessPreorder/index.tsx +103 -19
  83. package/themes/original/src/components/BusinessProductsCategories/index.tsx +1 -2
  84. package/themes/original/src/components/BusinessProductsList/index.tsx +15 -7
  85. package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
  86. package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +1 -1
  87. package/themes/original/src/components/BusinessProductsListing/index.tsx +137 -32
  88. package/themes/original/src/components/BusinessProductsListing/styles.tsx +2 -3
  89. package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
  90. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListFooter.tsx +69 -0
  91. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListHeader.tsx +406 -0
  92. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListing.tsx +76 -0
  93. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +36 -403
  94. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  95. package/themes/original/src/components/Cart/index.tsx +51 -87
  96. package/themes/original/src/components/CartContent/index.tsx +70 -30
  97. package/themes/original/src/components/CartContent/styles.tsx +6 -6
  98. package/themes/original/src/components/Checkout/index.tsx +265 -32
  99. package/themes/original/src/components/CitiesControl/index.tsx +1 -1
  100. package/themes/original/src/components/CouponControl/index.tsx +10 -3
  101. package/themes/original/src/components/DatePicker/index.tsx +17 -0
  102. package/themes/original/src/components/DatePicker/styles.tsx +20 -0
  103. package/themes/original/src/components/DriverTips/index.tsx +12 -4
  104. package/themes/original/src/components/FacebookLogin/styles.tsx +3 -1
  105. package/themes/original/src/components/Favorite/index.tsx +1 -5
  106. package/themes/original/src/components/GPSButton/index.tsx +6 -4
  107. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +8 -3
  108. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +42 -5
  109. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +2 -0
  110. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +84 -8
  111. package/themes/original/src/components/GoogleLogin/styles.tsx +1 -1
  112. package/themes/original/src/components/GoogleMap/index.tsx +63 -7
  113. package/themes/original/src/components/Home/index.tsx +13 -4
  114. package/themes/original/src/components/LastOrder/index.tsx +2 -1
  115. package/themes/original/src/components/LastOrders/index.tsx +2 -1
  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 +9 -2
  120. package/themes/original/src/components/Messages/index.tsx +15 -4
  121. package/themes/original/src/components/MomentOption/index.tsx +41 -36
  122. package/themes/original/src/components/MomentOption/styles.tsx +0 -15
  123. package/themes/original/src/components/MomentSelector/index.tsx +1 -1
  124. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +161 -49
  125. package/themes/original/src/components/MultiCheckout/index.tsx +347 -69
  126. package/themes/original/src/components/MultiCheckout/styles.tsx +3 -1
  127. package/themes/original/src/components/MultiOrdersDetails/index.tsx +1 -1
  128. package/themes/original/src/components/MyOrders/index.tsx +12 -1
  129. package/themes/original/src/components/NavBar/index.tsx +20 -13
  130. package/themes/original/src/components/NotFoundSource/index.tsx +14 -10
  131. package/themes/original/src/components/OrderDetails/OrderEta.tsx +76 -0
  132. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +21 -5
  133. package/themes/original/src/components/OrderDetails/index.tsx +50 -38
  134. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  135. package/themes/original/src/components/OrderItAgain/index.tsx +3 -1
  136. package/themes/original/src/components/OrderProgress/index.tsx +34 -25
  137. package/themes/original/src/components/OrderSummary/index.tsx +59 -56
  138. package/themes/original/src/components/OrderTypeSelector/index.tsx +5 -6
  139. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +13 -13
  140. package/themes/original/src/components/OrdersOption/index.tsx +43 -20
  141. package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
  142. package/themes/original/src/components/PageBanner/index.tsx +65 -29
  143. package/themes/original/src/components/PageBanner/styles.tsx +0 -3
  144. package/themes/original/src/components/PaymentOptionCard/index.tsx +180 -0
  145. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +3 -0
  146. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  147. package/themes/original/src/components/PaymentOptions/index.tsx +100 -34
  148. package/themes/original/src/components/PhoneInputNumber/index.tsx +18 -4
  149. package/themes/original/src/components/ProductForm/index.tsx +86 -30
  150. package/themes/original/src/components/ProductForm/styles.tsx +3 -3
  151. package/themes/original/src/components/ProductItemAccordion/index.tsx +8 -6
  152. package/themes/original/src/components/ProductOptionSubOption/index.tsx +49 -20
  153. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +10 -9
  154. package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
  155. package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -50
  156. package/themes/original/src/components/ProfessionalProfile/index.tsx +36 -7
  157. package/themes/original/src/components/Promotions/index.tsx +2 -2
  158. package/themes/original/src/components/Promotions/styles.tsx +3 -1
  159. package/themes/original/src/components/ReviewProducts/index.tsx +16 -7
  160. package/themes/original/src/components/ScheduleAccordion/index.tsx +3 -3
  161. package/themes/original/src/components/ServiceForm/index.tsx +63 -20
  162. package/themes/original/src/components/SignupForm/index.tsx +43 -27
  163. package/themes/original/src/components/SingleOrderCard/index.tsx +44 -20
  164. package/themes/original/src/components/SingleOrderCard/styles.tsx +1 -1
  165. package/themes/original/src/components/SingleProductCard/index.tsx +13 -10
  166. package/themes/original/src/components/SingleProductCard/styles.tsx +8 -3
  167. package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
  168. package/themes/original/src/components/StripeCardsList/index.tsx +61 -5
  169. package/themes/original/src/components/StripeElementsForm/index.tsx +48 -34
  170. package/themes/original/src/components/StripeElementsForm/naked.tsx +12 -1
  171. package/themes/original/src/components/UpsellingProducts/index.tsx +5 -10
  172. package/themes/original/src/components/UserDetails/index.tsx +3 -1
  173. package/themes/original/src/components/UserFormDetails/index.tsx +113 -10
  174. package/themes/original/src/components/UserFormDetails/styles.tsx +1 -1
  175. package/themes/original/src/components/UserProfile/index.tsx +7 -25
  176. package/themes/original/src/components/UserProfileForm/index.tsx +30 -31
  177. package/themes/original/src/components/UserVerification/index.tsx +55 -50
  178. package/themes/original/src/components/WalletTransactionItem/index.tsx +2 -2
  179. package/themes/original/src/components/WalletTransactions/index.tsx +3 -3
  180. package/themes/original/src/components/Wallets/index.tsx +51 -61
  181. package/themes/original/src/components/Wallets/styles.tsx +2 -4
  182. package/themes/original/src/components/shared/OButton.tsx +3 -3
  183. package/themes/original/src/components/shared/OInput.tsx +4 -5
  184. package/themes/original/src/components/shared/OModal.tsx +3 -3
  185. package/themes/original/src/config/constants.tsx +0 -10
  186. package/themes/original/src/types/index.tsx +36 -17
  187. package/themes/original/src/utils/index.tsx +185 -13
  188. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
  189. package/src/navigators/BottomNavigator.tsx +0 -117
  190. package/src/navigators/CheckoutNavigator.tsx +0 -66
  191. package/src/navigators/HomeNavigator.tsx +0 -202
  192. package/src/navigators/NavigationRef.tsx +0 -7
  193. package/src/navigators/RootNavigator.tsx +0 -269
  194. package/src/pages/Account.tsx +0 -34
  195. package/src/pages/AddressForm.tsx +0 -62
  196. package/src/pages/AddressList.tsx +0 -24
  197. package/src/pages/BusinessProductsList.tsx +0 -81
  198. package/src/pages/BusinessesListing.tsx +0 -43
  199. package/src/pages/CartList.tsx +0 -49
  200. package/src/pages/Checkout.tsx +0 -101
  201. package/src/pages/ForgotPassword.tsx +0 -24
  202. package/src/pages/Help.tsx +0 -23
  203. package/src/pages/HelpAccountAndPayment.tsx +0 -23
  204. package/src/pages/HelpGuide.tsx +0 -23
  205. package/src/pages/HelpOrder.tsx +0 -23
  206. package/src/pages/Home.tsx +0 -36
  207. package/src/pages/IntroductoryTutorial.tsx +0 -170
  208. package/src/pages/Login.tsx +0 -47
  209. package/src/pages/MomentOption.tsx +0 -30
  210. package/src/pages/MultiCheckout.tsx +0 -31
  211. package/src/pages/MultiOrdersDetails.tsx +0 -27
  212. package/src/pages/MyOrders.tsx +0 -40
  213. package/src/pages/NetworkError.tsx +0 -24
  214. package/src/pages/NotFound.tsx +0 -22
  215. package/src/pages/OrderDetails.tsx +0 -25
  216. package/src/pages/ProductDetails.tsx +0 -55
  217. package/src/pages/Profile.tsx +0 -36
  218. package/src/pages/ReviewDriver.tsx +0 -30
  219. package/src/pages/ReviewOrder.tsx +0 -32
  220. package/src/pages/ReviewProducts.tsx +0 -30
  221. package/src/pages/Sessions.tsx +0 -22
  222. package/src/pages/Signup.tsx +0 -53
  223. package/src/pages/SpinnerLoader.tsx +0 -10
  224. package/src/pages/Splash.tsx +0 -21
@@ -1,8 +1,10 @@
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
+ import NativeStripeSdk from '@stripe/stripe-react-native/src/NativeStripeSdk'
4
5
  import Picker from 'react-native-country-picker-modal';
5
6
  import MaterialIcons from 'react-native-vector-icons/MaterialIcons'
7
+ import ReactNativeHapticFeedback from "react-native-haptic-feedback";
6
8
  import {
7
9
  Checkout as CheckoutController,
8
10
  useOrder,
@@ -14,9 +16,10 @@ import {
14
16
  useConfig,
15
17
  useToast,
16
18
  ToastType,
19
+ useEvent
17
20
  } from 'ordering-components/native';
18
21
  import { useTheme } from 'styled-components/native';
19
- import { OText, OIcon, OModal } from '../shared';
22
+ import { OText, OIcon, OModal, OButton } from '../shared';
20
23
 
21
24
  import { AddressDetails } from '../AddressDetails';
22
25
  import { PaymentOptions } from '../PaymentOptions';
@@ -25,6 +28,8 @@ import { NotFoundSource } from '../NotFoundSource';
25
28
  import { UserDetails } from '../UserDetails';
26
29
  import { PaymentOptionWallet } from '../PaymentOptionWallet';
27
30
  import { PlaceSpot } from '../PlaceSpot'
31
+ import { SignupForm } from '../SignupForm'
32
+ import { LoginForm } from '../LoginForm'
28
33
 
29
34
  import {
30
35
  ChContainer,
@@ -44,7 +49,6 @@ import {
44
49
  CartHeader
45
50
  } from './styles';
46
51
  import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder';
47
-
48
52
  import { FloatingButton } from '../FloatingButton';
49
53
  import { Container } from '../../layouts/Container';
50
54
  import NavBar from '../NavBar';
@@ -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,
@@ -129,12 +136,17 @@ const CheckoutUI = (props: any) => {
129
136
 
130
137
  const [, { showToast }] = useToast();
131
138
  const [, t] = useLanguage();
132
- const [{ user, token }] = useSession();
139
+ const [{ user, token }, { login }] = useSession();
133
140
  const [ordering] = useApi()
134
141
  const [{ configs }] = useConfig();
135
142
  const [{ parsePrice, parseDate }] = useUtils();
136
143
  const [{ options, carts, loading }, { confirmCart }] = useOrder();
137
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
138
150
 
139
151
  const [errorCash, setErrorCash] = useState(false);
140
152
  const [userErrors, setUserErrors] = useState<any>([]);
@@ -146,7 +158,14 @@ const CheckoutUI = (props: any) => {
146
158
  const [webviewPaymethod, setWebviewPaymethod] = useState<any>(null)
147
159
  const [isOpen, setIsOpen] = useState(false)
148
160
  const [requiredFields, setRequiredFields] = useState<any>([])
149
-
161
+ const [openModal, setOpenModal] = useState({ login: false, signup: false, isGuest: 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 [paymethodClicked, setPaymethodClicked] = useState<any>(null)
166
+ const [cardList, setCardList] = useState<any>({ cards: [], loading: false, error: null })
167
+ const cardsMethods = ['credomatic']
168
+ const stripePaymethods: any = ['stripe', 'stripe_direct', 'stripe_connect', 'stripe_redirect']
150
169
  const placeSpotTypes = [3, 4, 5]
151
170
  const placeSpotsEnabled = placeSpotTypes.includes(options?.type)
152
171
  const isGiftCardCart = !cart?.business_id
@@ -161,18 +180,34 @@ const CheckoutUI = (props: any) => {
161
180
  const hideBusinessMap = theme?.checkout?.components?.business?.components?.map?.hidden
162
181
  const hideCustomerDetails = theme?.checkout?.components?.customer?.hidden
163
182
 
183
+ const creditPointPlan = loyaltyPlansState?.result?.find((loyal: any) => loyal.type === 'credit_point')
184
+ const creditPointPlanOnBusiness = creditPointPlan?.businesses?.find((b: any) => b.business_id === cart?.business_id && b.accumulates)
185
+ const methodsPay = ['google_pay', 'apple_pay']
186
+
164
187
  const isPreOrder = configs?.preorder_status_enabled?.value === '1'
165
188
  const subtotalWithTaxes = cart?.taxes?.reduce((acc: any, item: any) => {
166
189
  if (item?.type === 1)
167
190
  return acc = acc + item?.summary?.tax
168
191
  return acc = acc
169
192
  }, cart?.subtotal)
193
+
194
+ const validateCommentsCartField = validationFields?.fields?.checkout?.comments?.enabled && validationFields?.fields?.checkout?.comments?.required && (cart?.comment === null || cart?.comment?.trim().length === 0)
195
+ const validateZipcodeCard = validationFields?.fields?.card?.zipcode?.enabled &&
196
+ validationFields?.fields?.card?.zipcode?.required &&
197
+ paymethodSelected?.data?.card &&
198
+ !paymethodSelected?.data?.card?.zipcode &&
199
+ paymethodSelected?.gateway === 'stripe'
200
+
170
201
  const isDisabledButtonPlace = loading || !cart?.valid || (!paymethodSelected && cart?.balance > 0) ||
171
202
  placing || errorCash || subtotalWithTaxes < cart?.minimum ||
203
+ (cardsMethods.includes(paymethodSelected?.gateway) && cardList?.cards?.length === 0) ||
172
204
  (options.type === 1 &&
173
205
  validationFields?.fields?.checkout?.driver_tip?.enabled &&
174
206
  validationFields?.fields?.checkout?.driver_tip?.required &&
175
- (Number(cart?.driver_tip) <= 0))
207
+ (Number(cart?.driver_tip) <= 0)) ||
208
+ (validateCommentsCartField) ||
209
+ (validateZipcodeCard)
210
+ || (methodsPay.includes(paymethodSelected?.gateway) && (!methodPaySupported.enabled || methodPaySupported.loading))
176
211
 
177
212
  const driverTipsOptions = typeof configs?.driver_tip_options?.value === 'string'
178
213
  ? JSON.parse(configs?.driver_tip_options?.value) || []
@@ -182,6 +217,9 @@ const CheckoutUI = (props: any) => {
182
217
 
183
218
  const cartsWithProducts = carts && Object.values(carts).filter((cart: any) => cart.products.length) || null
184
219
 
220
+ const isSandboxCredomatic = configs?.credomatic_integration_sandbox?.value === '1'
221
+ const credomaticKeyId = isSandboxCredomatic ? configs?.credomatic_integration_public_sandbox_key?.value : configs?.credomatic_integration_public_production_key?.value
222
+ const credomaticUrl = `https://integrations.ordering.co/credomatic/front/auth_mobile.html?title=${t('CREDOMATIC_PAYMENT', 'Credomatic payment')}&body=${t('CREDOMATIC_PROCESSING', 'Processing transaction')}`
185
223
  const deliveryOptions = instructionsOptions?.result && instructionsOptions?.result?.filter((option: any) => option?.enabled)?.map((option: any) => {
186
224
  return {
187
225
  value: option?.id, key: option?.id, label: t(option?.name.toUpperCase().replace(/\s/g, '_'), option?.name)
@@ -194,10 +232,36 @@ const CheckoutUI = (props: any) => {
194
232
  }
195
233
  }
196
234
 
235
+ const vibrateApp = (impact?: string) => {
236
+ const options = {
237
+ enableVibrateFallback: true,
238
+ ignoreAndroidSystemSettings: false
239
+ };
240
+ ReactNativeHapticFeedback.trigger(impact || "impactLight", options);
241
+ }
242
+
243
+ const handleSuccessSignup = (user: any) => {
244
+ login({
245
+ user,
246
+ token: user?.session?.access_token
247
+ })
248
+ openModal?.isGuest && handlePlaceOrderAsGuest()
249
+ setOpenModal({ ...openModal, signup: false, isGuest: false })
250
+ }
251
+
252
+ const handleSuccessLogin = (user: any) => {
253
+ if (user) setOpenModal({ ...openModal, login: false })
254
+ }
255
+
197
256
  const handlePlaceOrder = (confirmPayment: any, forcePlace: boolean = false) => {
198
- if (!userErrors.length && !requiredFields?.length || forcePlace) {
199
- Vibration.vibrate()
200
- handlerClickPlaceOrder && handlerClickPlaceOrder(null, null, confirmPayment)
257
+ if (stripePaymethods.includes(paymethodSelected?.gateway) && user?.guest_id) {
258
+ setOpenModal({ ...openModal, signup: true, isGuest: true })
259
+ return
260
+ }
261
+
262
+ if (!userErrors.length && (!requiredFields?.length || allowedGuest) || forcePlace) {
263
+ vibrateApp()
264
+ handlerClickPlaceOrder && handlerClickPlaceOrder(null, { isNative: true }, confirmPayment, NativeStripeSdk?.dismissPlatformPay)
201
265
  return
202
266
  }
203
267
  if (requiredFields?.length) {
@@ -212,6 +276,11 @@ const CheckoutUI = (props: any) => {
212
276
  setIsUserDetailsEdit(true)
213
277
  }
214
278
 
279
+ const handlePlaceOrderAsGuest = () => {
280
+ setIsOpen(false)
281
+ handlerClickPlaceOrder && handlerClickPlaceOrder()
282
+ }
283
+
215
284
  const handlePaymentMethodClick = (paymethod: any) => {
216
285
  setShowGateway({ closedByUser: false, open: true })
217
286
  setWebviewPaymethod(paymethod)
@@ -230,7 +299,7 @@ const CheckoutUI = (props: any) => {
230
299
  const checkValidationFields = () => {
231
300
  setUserErrors([])
232
301
  const errors = []
233
- const notFields = ['coupon', 'driver_tip', 'mobile_phone', 'address', 'zipcode', 'address_notes']
302
+ const notFields = ['coupon', 'driver_tip', 'mobile_phone', 'address', 'zipcode', 'address_notes', 'comments']
234
303
  const _requiredFields: any = []
235
304
 
236
305
  Object.values(validationFields?.fields?.checkout).map((field: any) => {
@@ -278,7 +347,7 @@ const CheckoutUI = (props: any) => {
278
347
  useEffect(() => {
279
348
  if (cart?.products?.length === 0) {
280
349
  if (cart?.business?.slug) {
281
- onNavigationRedirect('Business', { store: cart?.business?.slug, header: null, logo: null })
350
+ onNavigationRedirect('Business', { store: cart?.business?.slug, header: null, logo: null, fromMulti: props.fromMulti })
282
351
  } else {
283
352
  onNavigationRedirect('Wallets')
284
353
  }
@@ -304,6 +373,24 @@ const CheckoutUI = (props: any) => {
304
373
  )
305
374
  }
306
375
 
376
+ useEffect(() => {
377
+ cart && events.emit('checkout_started', cart)
378
+ }, [])
379
+
380
+ useEffect(() => {
381
+ if (cart?.paymethod_data?.gateway === 'credomatic') {
382
+ if (cart?.paymethod_data?.status === 2) {
383
+ setShowGateway({ ...showGateway, open: true })
384
+ } else if (cart?.paymethod_data?.gateway === 'credomatic' && cart?.paymethod_data?.status === 4) {
385
+ setShowGateway({ ...showGateway, open: false })
386
+ }
387
+ }
388
+ }, [cart?.paymethod_data])
389
+
390
+ const onTextLayout = useCallback((e: any) => {
391
+ setLengthMore((e.nativeEvent.lines.length == 3 && e.nativeEvent.lines[2].width > WIDTH_SCREEN * .76) || e.nativeEvent.lines.length > 3)
392
+ }, [])
393
+
307
394
  return (
308
395
  <>
309
396
  <Container noPadding>
@@ -311,11 +398,12 @@ const CheckoutUI = (props: any) => {
311
398
  <NavBar
312
399
  title={t('CHECKOUT', 'Checkout')}
313
400
  titleAlign={'center'}
314
- onActionLeft={() => navigation?.canGoBack() && navigation.goBack()}
401
+ onActionLeft={() => onNavigationRedirect('BottomTab', { screen: 'Cart' }, !props.fromMulti)}
315
402
  showCall={false}
316
403
  btnStyle={{ paddingLeft: 0, paddingTop: Platform.OS == 'ios' ? 0 : 2 }}
317
404
  titleWrapStyle={{ paddingHorizontal: 0 }}
318
405
  titleStyle={{ marginRight: 0, marginLeft: 0 }}
406
+ style={{ marginTop: 20 }}
319
407
  />
320
408
  </View>
321
409
  <ChContainer style={styles.pagePadding}>
@@ -394,6 +482,25 @@ const CheckoutUI = (props: any) => {
394
482
  {businessDetails?.business?.address}
395
483
  </OText>
396
484
  )}
485
+ {businessDetails?.business?.address_notes && (
486
+ <>
487
+ <OText
488
+ size={12}
489
+ lineHeight={18}
490
+ numberOfLines={isReadMore ? 20 : 3}
491
+ onTextLayout={onTextLayout}
492
+ >
493
+ {businessDetails?.business?.address_notes}
494
+ </OText>
495
+ {lengthMore && (
496
+ <TouchableOpacity
497
+ onPress={() => setIsReadMore(!isReadMore)}
498
+ >
499
+ <OText size={12} color={theme.colors.primary}>{isReadMore ? t('SHOW_LESS', 'Show less') : t('READ_MORE', 'Read more')}</OText>
500
+ </TouchableOpacity>
501
+ )}
502
+ </>
503
+ )}
397
504
  </View>
398
505
  </>
399
506
  )}
@@ -421,18 +528,46 @@ const CheckoutUI = (props: any) => {
421
528
  <PlaceholderLine height={12} style={{ marginBottom: 20 }} />
422
529
  </Placeholder>
423
530
  ) : (
424
- <UserDetails
425
- isUserDetailsEdit={isUserDetailsEdit}
426
- HeaderTitle={<HeaderTitle text={t('CUSTOMER_DETAILS', 'Customer Details')} mb={0} />}
427
- cartStatus={cart?.status}
428
- businessId={cart?.business_id}
429
- useValidationFields
430
- useDefualtSessionManager
431
- useSessionUser
432
- isCheckout
433
- phoneUpdate={phoneUpdate}
434
- togglePhoneUpdate={togglePhoneUpdate}
435
- />
531
+ (user?.guest_id && !allowedGuest) ? (
532
+ <View>
533
+ <HeaderTitle text={t('CUSTOMER_DETAILS', 'Customer details')} />
534
+ <OButton
535
+ text={t('SIGN_UP', 'Sign up')}
536
+ textStyle={{ color: theme.colors.white }}
537
+ style={{ borderRadius: 7.6, marginTop: 20 }}
538
+ onClick={() => setOpenModal({ ...openModal, signup: true })}
539
+ />
540
+ <OButton
541
+ text={t('LOGIN', 'Login')}
542
+ textStyle={{ color: theme.colors.primary }}
543
+ bgColor={theme.colors.white}
544
+ borderColor={theme.colors.primary}
545
+ style={{ borderRadius: 7.6, marginTop: 20 }}
546
+ onClick={() => setOpenModal({ ...openModal, login: true })}
547
+ />
548
+ <OButton
549
+ text={t('CONTINUE_AS_GUEST', 'Continue as guest')}
550
+ textStyle={{ color: theme.colors.black }}
551
+ bgColor={theme.colors.white}
552
+ borderColor={theme.colors.black}
553
+ style={{ borderRadius: 7.6, marginTop: 20 }}
554
+ onClick={() => setAllowedGuest(true)}
555
+ />
556
+ </View>
557
+ ) : (
558
+ <UserDetails
559
+ isUserDetailsEdit={isUserDetailsEdit}
560
+ HeaderTitle={<HeaderTitle text={t('CUSTOMER_DETAILS', 'Customer Details')} mb={0} />}
561
+ cartStatus={cart?.status}
562
+ businessId={cart?.business_id}
563
+ useValidationFields
564
+ useDefualtSessionManager
565
+ useSessionUser
566
+ isCheckout
567
+ phoneUpdate={phoneUpdate}
568
+ togglePhoneUpdate={togglePhoneUpdate}
569
+ />
570
+ )
436
571
  )}
437
572
  </ChUserDetails>
438
573
  <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginHorizontal: -40 }} />
@@ -480,7 +615,7 @@ const CheckoutUI = (props: any) => {
480
615
  data: deliveryOptions || [],
481
616
  renderItem: ({ item }: any) => (
482
617
  <TouchableOpacity
483
- onPress={() => changeDeliveryOption(item.value)}
618
+ onPress={() => !!cart?.uuid && changeDeliveryOption(item.value)}
484
619
  disabled={
485
620
  deliveryOptionSelected === item.value
486
621
  }
@@ -529,7 +664,7 @@ const CheckoutUI = (props: any) => {
529
664
  ) : (
530
665
  <AddressDetails
531
666
  navigation={navigation}
532
- location={businessDetails?.business?.location}
667
+ location={options?.address?.location}
533
668
  businessLogo={businessDetails?.business?.logo}
534
669
  isCartPending={cart?.status === 2}
535
670
  uuid={cartUuid}
@@ -598,6 +733,16 @@ const CheckoutUI = (props: any) => {
598
733
  handlePaymentMethodClickCustom={handlePaymentMethodClick}
599
734
  handlePlaceOrder={handlePlaceOrder}
600
735
  merchantId={merchantId}
736
+ setMethodPaySupported={setMethodPaySupported}
737
+ methodPaySupported={methodPaySupported}
738
+ placeByMethodPay={placeByMethodPay}
739
+ setPlaceByMethodPay={setPlaceByMethodPay}
740
+ cardList={cardList}
741
+ setCardList={setCardList}
742
+ requiredFields={requiredFields}
743
+ openUserModal={setIsOpen}
744
+ paymethodClicked={paymethodClicked}
745
+ setPaymethodClicked={setPaymethodClicked}
601
746
  />
602
747
  </ChPaymethods>
603
748
  </ChSection>
@@ -607,6 +752,7 @@ const CheckoutUI = (props: any) => {
607
752
  <WalletPaymentOptionContainer>
608
753
  <PaymentOptionWallet
609
754
  cart={cart}
755
+ loyaltyPlansState={loyaltyPlansState}
610
756
  businessId={cart?.business_id}
611
757
  businessConfigs={businessDetails?.business?.configs}
612
758
  />
@@ -678,6 +824,10 @@ const CheckoutUI = (props: any) => {
678
824
  placeSpotTypes={placeSpotTypes}
679
825
  businessConfigs={businessConfigs}
680
826
  maxDate={maxDate}
827
+ loyaltyRewardRate={
828
+ creditPointPlanOnBusiness?.accumulation_rate ??
829
+ (!!creditPointPlanOnBusiness && creditPointPlan?.accumulation_rate) ?? 0
830
+ }
681
831
  />
682
832
  </>
683
833
  )}
@@ -687,7 +837,7 @@ const CheckoutUI = (props: any) => {
687
837
 
688
838
  {!cartState.loading && cart && (
689
839
  <View>
690
- <ChErrors style={{ marginBottom: 10 }}>
840
+ <ChErrors style={{ marginBottom: Platform.OS === 'ios' ? 35 : 10 }}>
691
841
  {!cart?.valid_address && cart?.status !== 2 && (
692
842
  <OText
693
843
  color={theme.colors.error}
@@ -714,7 +864,7 @@ const CheckoutUI = (props: any) => {
714
864
  {t('WARNING_INVALID_PRODUCTS_CHECKOUT', 'To continue with your checkout, please remove from your cart the products that are not available.')}
715
865
  </OText>
716
866
  )}
717
- {!cart?.valid_preorder && (
867
+ {cart?.valid_preorder !== undefined && !cart?.valid_preorder && (
718
868
  <OText
719
869
  color={theme.colors.error}
720
870
  size={12}
@@ -733,6 +883,24 @@ const CheckoutUI = (props: any) => {
733
883
  {t('WARNING_INVALID_DRIVER_TIP', 'Driver Tip is required.')}
734
884
  </OText>
735
885
  )}
886
+
887
+ {validateCommentsCartField && (
888
+ <OText
889
+ color={theme.colors.error}
890
+ size={12}
891
+ >
892
+ {t('WARNING_INVALID_CART_COMMENTS', 'Cart comments is required.')}
893
+ </OText>
894
+ )}
895
+
896
+ {validateZipcodeCard && (
897
+ <OText
898
+ color={theme.colors.error}
899
+ size={12}
900
+ >
901
+ {t('WARNING_CARD_ZIPCODE_REQUIRED', 'Your card selected has not zipcode')}
902
+ </OText>
903
+ )}
736
904
  </ChErrors>
737
905
  </View>
738
906
  )}
@@ -765,18 +933,59 @@ const CheckoutUI = (props: any) => {
765
933
  togglePhoneUpdate={togglePhoneUpdate}
766
934
  requiredFields={requiredFields}
767
935
  hideUpdateButton
936
+ handlePlaceOrderAsGuest={handlePlaceOrderAsGuest}
768
937
  onClose={() => {
769
938
  setIsOpen(false)
770
- handlePlaceOrder(null, true)
939
+ if (paymethodClicked) {
940
+ setPaymethodClicked({
941
+ ...paymethodClicked,
942
+ confirmed: true
943
+ })
944
+ } else {
945
+ handlePlaceOrder(null, true)
946
+ }
771
947
  }}
948
+ setIsOpen={setIsOpen}
772
949
  />
773
950
  </View>
774
951
  </OModal>
952
+ <OModal
953
+ open={openModal.signup}
954
+ onClose={() => setOpenModal({ ...openModal, signup: false, isGuest: false })}
955
+ >
956
+ <ScrollView style={{ paddingHorizontal: 20, width: '100%' }}>
957
+ <SignupForm
958
+ handleSuccessSignup={handleSuccessSignup}
959
+ isGuest
960
+ signupButtonText={t('SIGNUP', 'Signup')}
961
+ useSignupByEmail
962
+ useChekoutFileds
963
+ />
964
+ </ScrollView>
965
+ </OModal>
966
+ <OModal
967
+ open={openModal.login}
968
+ onClose={() => setOpenModal({ ...openModal, login: false })}
969
+ >
970
+ <ScrollView style={{ paddingHorizontal: 20, width: '100%' }}>
971
+ <LoginForm
972
+ handleSuccessLogin={handleSuccessLogin}
973
+ isGuest
974
+ loginButtonText={t('LOGIN', 'Login')}
975
+ loginButtonBackground={theme.colors.primary}
976
+ />
977
+ </ScrollView>
978
+ </OModal>
775
979
  </ChContainer>
776
980
  </Container>
777
981
  {!cartState.loading && cart && cart?.status !== 2 && (
778
982
  <FloatingButton
779
- handleClick={isDisabledButtonPlace ? () => Vibration.vibrate() : () => handlePlaceOrder(null)}
983
+ handleClick={
984
+ isDisabledButtonPlace
985
+ ? () => vibrateApp()
986
+ : methodsPay.includes(paymethodSelected?.gateway)
987
+ ? () => setPlaceByMethodPay(true)
988
+ : () => handlePlaceOrder(null)}
780
989
  isSecondaryBtn={isDisabledButtonPlace}
781
990
  disabled={isDisabledButtonPlace}
782
991
  btnText={subtotalWithTaxes >= cart?.minimum
@@ -819,6 +1028,29 @@ const CheckoutUI = (props: any) => {
819
1028
  locationId={'L1NGAY5M6KJRX'}
820
1029
  />
821
1030
  )}
1031
+ {cart?.paymethod_data?.gateway === 'credomatic' && cart?.paymethod_data?.status === 2 && showGateway.open && (
1032
+ <PaymentOptionsWebView
1033
+ title={t('CREDOMATIC_PAYMENT', 'Credomatic payment')}
1034
+ onNavigationRedirect={onNavigationRedirect}
1035
+ uri={credomaticUrl}
1036
+ user={user}
1037
+ cart={cart}
1038
+ additionalParams={{
1039
+ type: 'auth',
1040
+ key_id: credomaticKeyId,
1041
+ hash: cart?.paymethod_data?.result?.hash,
1042
+ time: cart?.paymethod_data?.result?.time,
1043
+ amount: cart?.total,
1044
+ orderid: cart?.uuid,
1045
+ ccnumber: cardList?.cards?.[0]?.number,
1046
+ ccexp: cardList?.cards?.[0]?.expiryString,
1047
+ cvv: cardList?.cards?.[0]?.cvc,
1048
+ redirect: credomaticUrl
1049
+ }}
1050
+ webviewPaymethod={webviewPaymethod}
1051
+ setShowGateway={setShowGateway}
1052
+ />
1053
+ )}
822
1054
  </>
823
1055
  )
824
1056
  }
@@ -845,7 +1077,8 @@ export const Checkout = (props: any) => {
845
1077
  const getOrder = async (cartId: any) => {
846
1078
  try {
847
1079
  let result: any = {}
848
- const cart = orderState?.carts.find((cart: any) => cart.uuid === cartId)
1080
+ const cartsWithProducts = orderState?.carts && (Object.values(orderState?.carts)?.filter(cart => cart?.products && cart?.products?.length) || null)
1081
+ const cart = cartsWithProducts?.find((cart: any) => cart.uuid === cartId)
849
1082
  if (cart) {
850
1083
  result = { ...cart }
851
1084
  } 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 }}
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import DatePicker from 'react-native-date-picker'
3
+ import { DateContainer } from './styles';
4
+
5
+ export const DatePickerUI = (props: any) => {
6
+ const {
7
+ birthdate,
8
+ handleChangeDate
9
+ } = props;
10
+
11
+ return (
12
+ <DateContainer>
13
+ <DatePicker mode="date" date={birthdate ? new Date(birthdate) : new Date()} onDateChange={handleChangeDate} />
14
+ </DateContainer>
15
+ );
16
+ };
17
+
@@ -0,0 +1,20 @@
1
+ import styled from 'styled-components/native';
2
+
3
+ export const DateContainer = styled.View`
4
+ display: flex;
5
+ align-items: center;
6
+ margin-bottom: 20px;
7
+
8
+ input {
9
+ border-radius: 20px;
10
+ width: 140px;
11
+ outline: none;
12
+ padding: 10px 15px;
13
+ border: 1px solid #E9ECEF;
14
+ }
15
+
16
+ .react-datepicker__triangle {
17
+ transform: translate(40px, 0px) !important;
18
+ }
19
+
20
+ `
@@ -23,7 +23,9 @@ const DriverTipsUI = (props: any) => {
23
23
  driverTip,
24
24
  driverTipsOptions,
25
25
  isMulti,
26
+ isLoading,
26
27
  cart,
28
+ carts,
27
29
  isDriverTipUseCustom,
28
30
  handlerChangeOption,
29
31
  isFixedPrice
@@ -64,6 +66,10 @@ const DriverTipsUI = (props: any) => {
64
66
  setvalue(val)
65
67
  }
66
68
 
69
+ const multiCartTipsAmmout = carts?.reduce((total: any, cart: any) => {
70
+ return total + parseFloat(cart?.driver_tip || 0)
71
+ }, 0)
72
+
67
73
  return (
68
74
  <DTContainer>
69
75
  <DTLabel>
@@ -74,8 +80,10 @@ const DriverTipsUI = (props: any) => {
74
80
  <TouchableOpacity
75
81
  key={i}
76
82
  onPress={() => {
77
- handlerChangeOption(option)
78
- setCustomTip(false)
83
+ if (!isLoading) {
84
+ handlerChangeOption(option)
85
+ setCustomTip(false)
86
+ }
79
87
  }}
80
88
  >
81
89
  <DTCard
@@ -90,7 +98,7 @@ const DriverTipsUI = (props: any) => {
90
98
  ))}
91
99
  {isDriverTipUseCustom && (
92
100
  <TouchableOpacity
93
- onPress={() => setCustomTip(true)}
101
+ onPress={() => { !isLoading && setCustomTip(true) }}
94
102
  >
95
103
  <DTCard
96
104
  style={style.semicircle}
@@ -138,7 +146,7 @@ const DriverTipsUI = (props: any) => {
138
146
  style={{ marginTop: 10, textAlign: 'center' }}
139
147
  >
140
148
  {t('CURRENT_DRIVER_TIP_AMOUNT', 'Current driver tip amount')}{!isFixedPrice &&
141
- ` (${driverTip}%)`}: {isFixedPrice ? parsePrice(driverTip) : parsePrice(cart?.driver_tip)}
149
+ ` (${driverTip}%)`}: {isFixedPrice ? parsePrice(multiCartTipsAmmout ?? driverTip) : parsePrice(multiCartTipsAmmout ?? cart?.driver_tip)}
142
150
  </OText>
143
151
  )}
144
152
  </DTContainer>
@@ -1,6 +1,8 @@
1
1
  import styled from 'styled-components/native'
2
2
 
3
- export const Container = styled.View``
3
+ export const Container = styled.View`
4
+ margin-bottom: 20px;
5
+ `
4
6
 
5
7
  export const FacebookButton = styled.TouchableOpacity`
6
8
  background-color: #FFFFFF;