ordering-ui-react-native 0.17.97 → 0.17.98-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 +209 -15
  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 +60 -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 +33 -15
  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 +44 -81
  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 +262 -35
  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 +65 -34
  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 +40 -20
  162. package/themes/original/src/components/SignupForm/index.tsx +27 -16
  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 +3 -8
  172. package/themes/original/src/components/UserDetails/index.tsx +3 -1
  173. package/themes/original/src/components/UserFormDetails/index.tsx +84 -19
  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 +31 -15
  187. package/themes/original/src/utils/index.tsx +180 -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,4 +1,4 @@
1
- import React, { useEffect, useState } from 'react';
1
+ import React, { useState } from 'react';
2
2
  import {
3
3
  Cart as CartController,
4
4
  useOrder,
@@ -23,10 +23,9 @@ import { ActivityIndicator, TouchableOpacity, View } from 'react-native';
23
23
  import AntIcon from 'react-native-vector-icons/AntDesign'
24
24
  import { TaxInformation } from '../TaxInformation';
25
25
  import { CartStoresListing } from '../CartStoresListing';
26
- import { OAlert } from '../../../../../src/components/shared'
26
+ import { OAlert } from '../shared'
27
27
  import { PlaceSpot } from '../PlaceSpot'
28
28
  import { DriverTips } from '../DriverTips'
29
- import { MomentOption } from '../MomentOption'
30
29
 
31
30
  const CartUI = (props: any) => {
32
31
  const {
@@ -45,12 +44,14 @@ const CartUI = (props: any) => {
45
44
  isMultiCheckout,
46
45
  hideDeliveryFee,
47
46
  hideDriverTip,
47
+ hideCouponInput,
48
48
  preorderSlotInterval,
49
49
  preorderLeadTime,
50
50
  preorderTimeRange,
51
51
  preorderMaximumDays,
52
52
  preorderMinimumDays,
53
- cateringTypes
53
+ cateringTypes,
54
+ isFromUpselling
54
55
  } = props
55
56
 
56
57
  const theme = useTheme();
@@ -65,9 +66,8 @@ const CartUI = (props: any) => {
65
66
  const [openChangeStore, setOpenChangeStore] = useState(false)
66
67
  const [canOpenUpselling, setCanOpenUpselling] = useState(false)
67
68
  const [openTaxModal, setOpenTaxModal] = useState<any>({ open: false, data: null, type: '' })
68
- const [confirm, setConfirm] = useState<any>({ open: false, content: null, handleOnAccept: null, id: null, title: null })
69
69
  const [openPlaceModal, setOpenPlaceModal] = useState(false)
70
- const [maxDate, setMaxDate] = useState<any>(null)
70
+
71
71
  const isCartPending = cart?.status === 2
72
72
  const isCouponEnabled = validationFields?.fields?.checkout?.coupon?.enabled
73
73
  const business: any = (orderState?.carts && Object.values(orderState.carts).find((_cart: any) => _cart?.uuid === props.cartuuid)) ?? {}
@@ -109,9 +109,13 @@ const CartUI = (props: any) => {
109
109
  }
110
110
 
111
111
  const handleUpsellingPage = (individualCart : any) => {
112
+ const isProductCartParam = !!individualCart?.products?.length
112
113
  setOpenUpselling(false)
113
114
  setCanOpenUpselling(false)
114
- const cartsAvailable: any = Object.values(orderState?.carts)?.filter((cart: any) => cart?.valid && cart?.status !== 2)
115
+
116
+ const cartsAvailable: any = Object.values(orderState?.carts)
117
+ ?.filter((_cart: any) => _cart?.valid && _cart?.status !== 2 && _cart?.products?.length)
118
+ ?.filter((_c: any) => !isProductCartParam ? _c.uuid !== individualCart?.uuid : _c)
115
119
  if (cartsAvailable.length === 1 || !isMultiCheckout) {
116
120
  const cart = isMultiCheckout ? cartsAvailable[0] : individualCart
117
121
  onNavigationRedirect('CheckoutNavigator', {
@@ -120,7 +124,7 @@ const CartUI = (props: any) => {
120
124
  businessLogo: cart?.business?.logo,
121
125
  businessName: cart?.business?.name,
122
126
  cartTotal: cart?.total
123
- })
127
+ }, true)
124
128
  } else {
125
129
  const groupKeys: any = {}
126
130
  cartsAvailable.forEach((_cart: any) => {
@@ -136,12 +140,12 @@ const CartUI = (props: any) => {
136
140
  onNavigationRedirect('CheckoutNavigator', {
137
141
  screen: 'MultiCheckout',
138
142
  checkCarts: true
139
- })
143
+ }, true)
140
144
  } else {
141
145
  onNavigationRedirect('CheckoutNavigator', {
142
146
  screen: 'MultiCheckout',
143
147
  cartUuid: cartsAvailable[0]?.group?.uuid
144
- })
148
+ }, true)
145
149
  }
146
150
  }
147
151
  }
@@ -160,16 +164,16 @@ const CartUI = (props: any) => {
160
164
  return cart?.taxes?.filter((tax: any) => tax?.type === 1)?.reduce((carry: number, tax: any) => carry + (tax?.summary?.tax_after_discount ?? tax?.summary?.tax), 0)
161
165
  }
162
166
 
163
- const onRemoveOffer = (id: number) => {
164
- setConfirm({
165
- open: true,
166
- content: [t('QUESTION_DELETE_OFFER', 'Are you sure that you want to delete the offer?')],
167
- title: t('OFFER', 'Offer'),
168
- handleOnAccept: () => {
169
- setConfirm({ ...confirm, open: false })
170
- handleRemoveOfferClick(id)
171
- }
172
- })
167
+ const OfferAlert = ({ offerId }: any) => {
168
+ return (
169
+ <OAlert
170
+ title={t('OFFER', 'Offer')}
171
+ message={t('QUESTION_DELETE_OFFER', 'Are you sure that you want to delete the offer?')}
172
+ onAccept={() => handleRemoveOfferClick(offerId)}
173
+ >
174
+ <AntIcon style={{ marginLeft: 3 }} name='closecircle' size={16} color={theme.colors.primary} />
175
+ </OAlert>
176
+ )
173
177
  }
174
178
 
175
179
  const walletName: any = {
@@ -187,19 +191,6 @@ const CartUI = (props: any) => {
187
191
  return acc = acc
188
192
  }, cart?.subtotal)
189
193
 
190
- useEffect(() => {
191
- const limitDays = parseInt(preorderMaximumDays ?? configs?.max_days_preorder?.value, 10)
192
- const currentDate = new Date()
193
- const time = limitDays > 1
194
- ? currentDate.getTime() + ((limitDays - 1) * 24 * 60 * 60 * 1000)
195
- : limitDays === 1 ? currentDate.getTime() : currentDate.getTime() + (6 * 24 * 60 * 60 * 1000)
196
-
197
- currentDate.setTime(time)
198
- currentDate.setHours(23)
199
- currentDate.setMinutes(59)
200
- setMaxDate(currentDate)
201
- }, [preorderMaximumDays, configs?.max_days_preorder?.value])
202
-
203
194
  return (
204
195
  <CContainer>
205
196
  {openUpselling && (
@@ -226,6 +217,8 @@ const CartUI = (props: any) => {
226
217
  handleClickCheckout={() => setOpenUpselling(true)}
227
218
  checkoutButtonDisabled={(openUpselling && !canOpenUpselling) || subtotalWithTaxes < cart?.minimum || !cart?.valid_address}
228
219
  isMultiCheckout={isMultiCheckout}
220
+ isFromUpselling={isFromUpselling}
221
+ isGiftCart={!cart?.business_id}
229
222
  >
230
223
  {cart?.products?.length > 0 && cart?.products.map((product: any, i: number) => (
231
224
  <ProductItemAccordion
@@ -239,7 +232,6 @@ const CartUI = (props: any) => {
239
232
  offsetDisabled={offsetDisabled}
240
233
  onDeleteProduct={handleDeleteClick}
241
234
  onEditProduct={handleEditProduct}
242
- viewString='business_view'
243
235
  />
244
236
  ))}
245
237
 
@@ -251,7 +243,7 @@ const CartUI = (props: any) => {
251
243
  {parsePrice(cart?.subtotal + getIncludedTaxes())}
252
244
  </OText>
253
245
  </OSTable>
254
- {!hideCartDiscount && cart?.discount > 0 && cart?.total >= 0 && cart?.offers?.length === 0 && (
246
+ {cart?.discount > 0 && cart?.total >= 0 && cart?.offers?.length === 0 && (
255
247
  <OSTable>
256
248
  {cart?.discount_type === 1 ? (
257
249
  <OText size={12} lineHeight={18}>
@@ -265,7 +257,7 @@ const CartUI = (props: any) => {
265
257
  </OSTable>
266
258
  )}
267
259
  {
268
- !hideCartDiscount && cart?.offers?.length > 0 && cart?.offers?.filter((offer: any) => offer?.target === 1)?.map((offer: any, i: number) => (
260
+ cart?.offers?.length > 0 && cart?.offers?.filter((offer: any) => offer?.target === 1)?.map((offer: any, i: number) => (
269
261
  <OSTable key={`${offer.id}_${i}`}>
270
262
  <OSRow>
271
263
  <OText size={12} lineHeight={18}>{offer.name}</OText>
@@ -275,9 +267,9 @@ const CartUI = (props: any) => {
275
267
  <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_1' })}>
276
268
  <AntIcon name='infocirlceo' size={16} color={theme.colors.primary} />
277
269
  </TouchableOpacity>
278
- <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => onRemoveOffer(offer?.id)}>
279
- <AntIcon name='closecircle' size={16} color={theme.colors.primary} />
280
- </TouchableOpacity>
270
+ {!!offer?.id && (
271
+ <OfferAlert offerId={offer?.id} />
272
+ )}
281
273
  </OSRow>
282
274
  <OText size={12} lineHeight={18}>
283
275
  - {parsePrice(offer?.summary?.discount)}
@@ -286,7 +278,7 @@ const CartUI = (props: any) => {
286
278
  ))
287
279
  }
288
280
  {/* <Divider /> */}
289
- {!hideCartDiscount && cart?.subtotal_with_discount > 0 && cart?.discount > 0 && cart?.total >= 0 && (
281
+ {cart?.subtotal_with_discount > 0 && cart?.discount > 0 && cart?.total >= 0 && (
290
282
  <OSTable>
291
283
  <OText size={12} lineHeight={18} numberOfLines={1}>{t('SUBTOTAL_WITH_DISCOUNT', 'Subtotal with discount')}</OText>
292
284
  {cart?.business?.tax_type === 1 ? (
@@ -339,10 +331,8 @@ const CartUI = (props: any) => {
339
331
  <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_3' })}>
340
332
  <AntIcon name='infocirlceo' size={16} color={theme.colors.primary} />
341
333
  </TouchableOpacity>
342
- {!offer?.type && (
343
- <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => onRemoveOffer(offer?.id)}>
344
- <AntIcon name='closecircle' size={16} color={theme.colors.primary} />
345
- </TouchableOpacity>
334
+ {!!offer?.id && (
335
+ <OfferAlert offerId={offer?.id} />
346
336
  )}
347
337
  </OSRow>
348
338
  <OText size={12} lineHeight={18}>
@@ -351,10 +341,10 @@ const CartUI = (props: any) => {
351
341
  </OSTable>
352
342
  ))
353
343
  }
354
- {orderState?.options?.type === 1 && cart?.delivery_price > 0 && !hideDeliveryFee && (
344
+ {orderState?.options?.type === 1 && cart?.delivery_price_with_discount > 0 && !hideDeliveryFee && (
355
345
  <OSTable>
356
346
  <OText size={12} lineHeight={18}>{t('DELIVERY_FEE', 'Delivery Fee')}</OText>
357
- <OText size={12} lineHeight={18}>{parsePrice(cart?.delivery_price)}</OText>
347
+ <OText size={12} lineHeight={18}>{parsePrice(cart?.delivery_price_with_discount)}</OText>
358
348
  </OSTable>
359
349
  )}
360
350
  {
@@ -368,9 +358,9 @@ const CartUI = (props: any) => {
368
358
  <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_2' })}>
369
359
  <AntIcon name='infocirlceo' size={16} color={theme.colors.primary} />
370
360
  </TouchableOpacity>
371
- <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => onRemoveOffer(offer?.id)}>
372
- <AntIcon name='closecircle' size={16} color={theme.colors.primary} />
373
- </TouchableOpacity>
361
+ {!!offer?.id && (
362
+ <OfferAlert offerId={offer?.id} />
363
+ )}
374
364
  </OSRow>
375
365
  <OText size={12} lineHeight={18}>
376
366
  - {parsePrice(offer?.summary?.discount)}
@@ -378,12 +368,6 @@ const CartUI = (props: any) => {
378
368
  </OSTable>
379
369
  ))
380
370
  }
381
- {orderState?.options?.type === 1 && cart?.delivery_price > 0 && cart?.delivery_price_with_discount >= 0 && !hideDeliveryFee && (
382
- <OSTable>
383
- <OText size={12} lineHeight={18}>{t('DELIVERY_FEE_AFTER_DISCOUNT', 'Delivery Fee After Discount')}</OText>
384
- <OText size={12} lineHeight={18}>{parsePrice(cart?.delivery_price_with_discount)}</OText>
385
- </OSTable>
386
- )}
387
371
  {cart?.driver_tip > 0 && !hideDriverTip && (
388
372
  <OSTable>
389
373
  <OText size={12} lineHeight={18}>
@@ -406,12 +390,13 @@ const CartUI = (props: any) => {
406
390
  <OText size={12}>-{parsePrice(event.amount, { isTruncable: true })}</OText>
407
391
  </OSTable>
408
392
  ))}
409
- {isCouponEnabled && !isCartPending && (
393
+ {isCouponEnabled && !isCartPending && !hideCouponInput && (
410
394
  <OSTable>
411
395
  <OSCoupon>
412
396
  <CouponControl
413
397
  businessId={businessId}
414
398
  price={cart.total}
399
+ cart={cart}
415
400
  />
416
401
  </OSCoupon>
417
402
  </OSTable>
@@ -424,6 +409,7 @@ const CartUI = (props: any) => {
424
409
  cart?.status !== 2 &&
425
410
  validationFields?.fields?.checkout?.driver_tip?.enabled &&
426
411
  driverTipsOptions && driverTipsOptions?.length > 0 &&
412
+ cart?.business_id &&
427
413
  (
428
414
  <DriverTipsContainer>
429
415
  <OText size={14} lineHeight={20} color={theme.colors.textNormal}>
@@ -472,7 +458,7 @@ const CartUI = (props: any) => {
472
458
  </TouchableOpacity>
473
459
  </OSTable>
474
460
  )}
475
- {cart?.status !== 2 && !hideCartComments && (
461
+ {cart?.status !== 2 && (
476
462
  <OSTable>
477
463
  <View style={{ width: '100%', marginTop: 20 }}>
478
464
  <OText size={16} lineHeight={18}>{t('COMMENTS', 'Comments')}</OText>
@@ -507,21 +493,6 @@ const CartUI = (props: any) => {
507
493
  )}
508
494
  </OSBill>
509
495
  )}
510
- {cateringTypes.includes(orderState?.options?.type) && maxDate && cart?.valid_products && (
511
- <View>
512
- <MomentOption
513
- maxDate={maxDate}
514
- cateringPreorder
515
- isCart
516
- preorderSlotInterval={preorderSlotInterval}
517
- preorderLeadTime={preorderLeadTime}
518
- preorderTimeRange={preorderTimeRange}
519
- preorderMaximumDays={preorderMaximumDays}
520
- preorderMinimumDays={preorderMinimumDays}
521
- business={cart?.business}
522
- />
523
- </View>
524
- )}
525
496
  {!isMultiCheckout && (
526
497
  <>
527
498
  {cart?.valid_products ? (
@@ -538,7 +509,7 @@ const CartUI = (props: any) => {
538
509
  isDisabled={(openUpselling && !canOpenUpselling) || subtotalWithTaxes < cart?.minimum || !cart?.valid_address}
539
510
  borderColor={theme.colors.primary}
540
511
  imgRightSrc={null}
541
- textStyle={{ color: '#fff', textAlign: 'center', flex: 1 }}
512
+ textStyle={{ color: 'white', textAlign: 'center', flex: 1 }}
542
513
  onClick={() => setOpenUpselling(true)}
543
514
  style={{ width: '100%', flexDirection: 'row', justifyContent: 'center', borderRadius: 7.6, shadowOpacity: 0 }}
544
515
  />
@@ -588,14 +559,6 @@ const CartUI = (props: any) => {
588
559
  setOpenPlaceModal={setOpenPlaceModal}
589
560
  />
590
561
  </OModal>
591
- <OAlert
592
- open={confirm.open}
593
- title={confirm.title}
594
- content={confirm.content}
595
- onAccept={confirm.handleOnAccept}
596
- onCancel={() => setConfirm({ ...confirm, open: false, title: null })}
597
- onClose={() => setConfirm({ ...confirm, open: false, title: null })}
598
- />
599
562
  </CContainer>
600
563
  )
601
564
  }
@@ -1,29 +1,37 @@
1
1
  import React, { useState } from 'react';
2
2
  import { View } from 'react-native';
3
- import { useLanguage, useConfig } from 'ordering-components/native';
3
+ import { useLanguage, useConfig, useUtils } from 'ordering-components/native';
4
4
  import { useTheme } from 'styled-components/native';
5
- import { CCContainer, CCNotCarts, CCList, CheckoutAction } from './styles';
5
+ import { CCContainer, CCNotCarts, CCList, CheckoutAction, ChCartsTotal } from './styles';
6
6
 
7
7
  import { Cart } from '../Cart';
8
8
  import { OButton, OText } from '../shared';
9
9
  import Spinner from 'react-native-loading-spinner-overlay';
10
+ import { NotFoundSource } from '../NotFoundSource';
10
11
 
11
12
  export const CartContent = (props: any) => {
12
13
  const {
13
14
  carts,
14
15
  isOrderStateCarts,
15
- onNavigationRedirect
16
+ onNavigationRedirect,
17
+ singleBusiness
16
18
  } = props
17
19
 
18
20
  const theme = useTheme();
19
21
  const [, t] = useLanguage()
20
22
  const [{ configs }] = useConfig()
23
+ const [{ parsePrice }] = useUtils();
21
24
  const [isCartsLoading, setIsCartsLoading] = useState(false)
22
25
 
23
26
  const isChewLayout = theme?.header?.components?.layout?.type === 'chew'
24
27
  const isMultiCheckout = configs?.checkout_multi_business_enabled?.value === '1'
25
28
  const cartsAvailable: any = Object.values(carts)?.filter((cart: any) => cart?.valid && cart?.status !== 2)
26
29
 
30
+ const totalCartsPrice = cartsAvailable?.length && cartsAvailable.reduce((total: any, cart: any) => { return total + cart?.total }, 0)
31
+ const totalCartsFee = cartsAvailable?.length && cartsAvailable
32
+ ?.filter((cart: any) => cart?.status !== 1 && cart?.valid && cart?.products?.length)
33
+ ?.reduce((total: any, cart: any) => { return total + (cart?.delivery_price_with_discount) }, 0)
34
+
27
35
  const handleCheckoutRedirect = () => {
28
36
  if (cartsAvailable.length === 1) {
29
37
  onNavigationRedirect('CheckoutNavigator', {
@@ -79,6 +87,9 @@ export const CartContent = (props: any) => {
79
87
  isMultiCheckout={isMultiCheckout}
80
88
  hideUpselling
81
89
  businessConfigs={cart?.business?.configs}
90
+ hideCouponInput={configs?.multi_business_checkout_coupon_input_style?.value === 'group'}
91
+ hideDeliveryFee={configs?.multi_business_checkout_show_combined_delivery_fee?.value === '1'}
92
+ hideDriverTip={configs?.multi_business_checkout_show_combined_driver_tip?.value === '1'}
82
93
  />
83
94
  <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginHorizontal: -40, marginTop: 20 }} />
84
95
  </>
@@ -86,38 +97,67 @@ export const CartContent = (props: any) => {
86
97
  </CCList>
87
98
  ))}
88
99
  {isMultiCheckout && (
89
- <CheckoutAction style={{ marginTop: 0 }}>
90
- <OButton
91
- text={t('CHECKOUT', 'Checkout')}
92
- bgColor={!cartsAvailable.length ? theme.colors.secundary : theme.colors.primary}
93
- isDisabled={!cartsAvailable.length}
94
- borderColor={theme.colors.primary}
95
- imgRightSrc={null}
96
- textStyle={{ color: 'white', textAlign: 'center', flex: 1 }}
97
- onClick={() => handleCheckoutRedirect()}
98
- style={{ width: '100%', flexDirection: 'row', justifyContent: 'center', borderRadius: 7.6, shadowOpacity: 0 }}
99
- />
100
- </CheckoutAction>
100
+ <>
101
+ {!!cartsAvailable.length && (
102
+ <ChCartsTotal>
103
+ {!!totalCartsFee && configs?.multi_business_checkout_show_combined_delivery_fee?.value === '1' && (
104
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between' }}>
105
+ <OText size={14} lineHeight={24} color={theme.colors.textNormal} weight={'400'}>
106
+ {t('TOTAL_DELIVERY_FEE', 'Total delivery fee')}
107
+ </OText>
108
+ <OText size={14} lineHeight={24} color={theme.colors.textNormal} weight={'400'}>
109
+ {parsePrice(totalCartsFee)}
110
+ </OText>
111
+ </View>
112
+ )}
113
+ {cartsAvailable.reduce((sum: any, cart: any) => sum + cart?.driver_tip, 0) > 0 &&
114
+ configs?.multi_business_checkout_show_combined_driver_tip?.value === '1' && (
115
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between' }}>
116
+ <OText size={14} lineHeight={24} color={theme.colors.textNormal} weight={'400'}>
117
+ {t('DRIVER_TIP', 'Driver tip')}
118
+ </OText>
119
+ <OText size={14} lineHeight={24} color={theme.colors.textNormal} weight={'400'}>
120
+ {parsePrice(cartsAvailable.reduce((sum: any, cart: any) => sum + cart?.driver_tip, 0))}
121
+ </OText>
122
+ </View>
123
+ )}
124
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between' }}>
125
+ <OText size={16} lineHeight={24} color={theme.colors.textNormal} weight={'500'}>
126
+ {t('TOTAL_FOR_ALL_CARTS', 'Total for all Carts')}
127
+ </OText>
128
+ <OText size={16} lineHeight={24} color={theme.colors.textNormal} weight={'500'}>{parsePrice(totalCartsPrice)}</OText>
129
+ </View>
130
+ <View style={{ flexDirection: 'row', justifyContent: 'center', marginVertical: 20 }}>
131
+ <OText size={14} color={theme.colors.textNormal} weight={'300'} style={{ textAlign: 'center' }}>
132
+ {t('CART_GROUP_MESSAGE_ALERT', 'Discounts may be applied at the time of payment for this group.')}
133
+ </OText>
134
+ </View>
135
+ </ChCartsTotal>
136
+ )}
137
+ <CheckoutAction style={{ marginTop: 0 }}>
138
+ <OButton
139
+ text={t('CHECKOUT', 'Checkout')}
140
+ bgColor={!cartsAvailable.length ? theme.colors.secundary : theme.colors.primary}
141
+ isDisabled={!cartsAvailable.length}
142
+ borderColor={theme.colors.primary}
143
+ imgRightSrc={null}
144
+ textStyle={{ color: 'white', textAlign: 'center', flex: 1 }}
145
+ onClick={() => handleCheckoutRedirect()}
146
+ style={{ width: '100%', flexDirection: 'row', justifyContent: 'center', borderRadius: 7.6, shadowOpacity: 0 }}
147
+ />
148
+ </CheckoutAction>
149
+ </>
101
150
  )}
102
151
  </>
103
152
  )}
104
153
  {(!carts || carts?.length === 0) && (
105
154
  <CCNotCarts>
106
- <OText size={24} style={{ textAlign: 'center' }}>
107
- {t('CARTS_NOT_FOUND', 'You don\'t have carts available')}
108
- </OText>
109
- <OButton
110
- text={t('START_SHOPPING', 'Start shopping')}
111
- bgColor={theme.colors.primary}
112
- borderColor={theme.colors.primary}
113
- textStyle={{
114
- color: theme.colors.white,
115
- fontSize: 14,
116
- paddingRight: 0
117
- }}
118
- style={{ height: 35, marginVertical: 20, borderRadius: 8 }}
119
- imgRightSrc={null}
120
- onClick={() => onNavigationRedirect('BusinessList')}
155
+ <NotFoundSource
156
+ hideImage
157
+ btnStyle={{ borderRadius: 8 }}
158
+ content={t('CARTS_NOT_FOUND', 'You don\'t have carts available')}
159
+ btnTitle={t('START_SHOPPING', 'Start shopping')}
160
+ onClickButton={() => singleBusiness ? onNavigationRedirect('Business') : onNavigationRedirect('BusinessList')}
121
161
  />
122
162
  </CCNotCarts>
123
163
  )}
@@ -5,13 +5,9 @@ export const CCContainer = styled.View`
5
5
  `
6
6
 
7
7
  export const CCNotCarts = styled.View`
8
- height: 300px;
9
- display: flex;
10
8
  flex-direction: column;
11
- justify-content: center;
12
- align-items: center;
13
- width: 80%;
14
- margin: auto;
9
+ align-items: center;
10
+ margin-top: 40px;
15
11
  `
16
12
 
17
13
  export const CCList = styled.ScrollView`
@@ -27,3 +23,7 @@ export const CheckoutAction = styled.View`
27
23
  margin-top: 10px;
28
24
  margin-bottom: 10px;
29
25
  `
26
+
27
+ export const ChCartsTotal = styled.View`
28
+ margin-bottom: 16px;
29
+ `