ordering-ui-react-native 0.17.96 → 0.17.97-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 +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 +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 +62 -33
  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 +5 -10
  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 +32 -16
  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)) ?? {}
@@ -108,18 +108,23 @@ const CartUI = (props: any) => {
108
108
  }
109
109
  }
110
110
 
111
- const handleUpsellingPage = () => {
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
- if (cartsAvailable.length === 1) {
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)
119
+ if (cartsAvailable.length === 1 || !isMultiCheckout) {
120
+ const cart = isMultiCheckout ? cartsAvailable[0] : individualCart
116
121
  onNavigationRedirect('CheckoutNavigator', {
117
122
  screen: 'CheckoutPage',
118
- cartUuid: cartsAvailable[0]?.uuid,
119
- businessLogo: cartsAvailable[0]?.business?.logo,
120
- businessName: cartsAvailable[0]?.business?.name,
121
- cartTotal: cartsAvailable[0]?.total
122
- })
123
+ cartUuid: cart?.uuid,
124
+ businessLogo: cart?.business?.logo,
125
+ businessName: cart?.business?.name,
126
+ cartTotal: cart?.total
127
+ }, true)
123
128
  } else {
124
129
  const groupKeys: any = {}
125
130
  cartsAvailable.forEach((_cart: any) => {
@@ -135,12 +140,12 @@ const CartUI = (props: any) => {
135
140
  onNavigationRedirect('CheckoutNavigator', {
136
141
  screen: 'MultiCheckout',
137
142
  checkCarts: true
138
- })
143
+ }, true)
139
144
  } else {
140
145
  onNavigationRedirect('CheckoutNavigator', {
141
146
  screen: 'MultiCheckout',
142
147
  cartUuid: cartsAvailable[0]?.group?.uuid
143
- })
148
+ }, true)
144
149
  }
145
150
  }
146
151
  }
@@ -159,16 +164,16 @@ const CartUI = (props: any) => {
159
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)
160
165
  }
161
166
 
162
- const onRemoveOffer = (id: number) => {
163
- setConfirm({
164
- open: true,
165
- content: [t('QUESTION_DELETE_OFFER', 'Are you sure that you want to delete the offer?')],
166
- title: t('OFFER', 'Offer'),
167
- handleOnAccept: () => {
168
- setConfirm({ ...confirm, open: false })
169
- handleRemoveOfferClick(id)
170
- }
171
- })
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
+ )
172
177
  }
173
178
 
174
179
  const walletName: any = {
@@ -186,19 +191,6 @@ const CartUI = (props: any) => {
186
191
  return acc = acc
187
192
  }, cart?.subtotal)
188
193
 
189
- useEffect(() => {
190
- const limitDays = parseInt(preorderMaximumDays ?? configs?.max_days_preorder?.value, 10)
191
- const currentDate = new Date()
192
- const time = limitDays > 1
193
- ? currentDate.getTime() + ((limitDays - 1) * 24 * 60 * 60 * 1000)
194
- : limitDays === 1 ? currentDate.getTime() : currentDate.getTime() + (6 * 24 * 60 * 60 * 1000)
195
-
196
- currentDate.setTime(time)
197
- currentDate.setHours(23)
198
- currentDate.setMinutes(59)
199
- setMaxDate(currentDate)
200
- }, [preorderMaximumDays, configs?.max_days_preorder?.value])
201
-
202
194
  return (
203
195
  <CContainer>
204
196
  {openUpselling && (
@@ -225,6 +217,8 @@ const CartUI = (props: any) => {
225
217
  handleClickCheckout={() => setOpenUpselling(true)}
226
218
  checkoutButtonDisabled={(openUpselling && !canOpenUpselling) || subtotalWithTaxes < cart?.minimum || !cart?.valid_address}
227
219
  isMultiCheckout={isMultiCheckout}
220
+ isFromUpselling={isFromUpselling}
221
+ isGiftCart={!cart?.business_id}
228
222
  >
229
223
  {cart?.products?.length > 0 && cart?.products.map((product: any, i: number) => (
230
224
  <ProductItemAccordion
@@ -238,7 +232,6 @@ const CartUI = (props: any) => {
238
232
  offsetDisabled={offsetDisabled}
239
233
  onDeleteProduct={handleDeleteClick}
240
234
  onEditProduct={handleEditProduct}
241
- viewString='business_view'
242
235
  />
243
236
  ))}
244
237
 
@@ -250,7 +243,7 @@ const CartUI = (props: any) => {
250
243
  {parsePrice(cart?.subtotal + getIncludedTaxes())}
251
244
  </OText>
252
245
  </OSTable>
253
- {!hideCartDiscount && cart?.discount > 0 && cart?.total >= 0 && cart?.offers?.length === 0 && (
246
+ {cart?.discount > 0 && cart?.total >= 0 && cart?.offers?.length === 0 && (
254
247
  <OSTable>
255
248
  {cart?.discount_type === 1 ? (
256
249
  <OText size={12} lineHeight={18}>
@@ -264,7 +257,7 @@ const CartUI = (props: any) => {
264
257
  </OSTable>
265
258
  )}
266
259
  {
267
- !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) => (
268
261
  <OSTable key={`${offer.id}_${i}`}>
269
262
  <OSRow>
270
263
  <OText size={12} lineHeight={18}>{offer.name}</OText>
@@ -274,9 +267,9 @@ const CartUI = (props: any) => {
274
267
  <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_1' })}>
275
268
  <AntIcon name='infocirlceo' size={16} color={theme.colors.primary} />
276
269
  </TouchableOpacity>
277
- <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => onRemoveOffer(offer?.id)}>
278
- <AntIcon name='closecircle' size={16} color={theme.colors.primary} />
279
- </TouchableOpacity>
270
+ {!!offer?.id && (
271
+ <OfferAlert offerId={offer?.id} />
272
+ )}
280
273
  </OSRow>
281
274
  <OText size={12} lineHeight={18}>
282
275
  - {parsePrice(offer?.summary?.discount)}
@@ -285,7 +278,7 @@ const CartUI = (props: any) => {
285
278
  ))
286
279
  }
287
280
  {/* <Divider /> */}
288
- {!hideCartDiscount && cart?.subtotal_with_discount > 0 && cart?.discount > 0 && cart?.total >= 0 && (
281
+ {cart?.subtotal_with_discount > 0 && cart?.discount > 0 && cart?.total >= 0 && (
289
282
  <OSTable>
290
283
  <OText size={12} lineHeight={18} numberOfLines={1}>{t('SUBTOTAL_WITH_DISCOUNT', 'Subtotal with discount')}</OText>
291
284
  {cart?.business?.tax_type === 1 ? (
@@ -338,10 +331,8 @@ const CartUI = (props: any) => {
338
331
  <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_3' })}>
339
332
  <AntIcon name='infocirlceo' size={16} color={theme.colors.primary} />
340
333
  </TouchableOpacity>
341
- {!offer?.type && (
342
- <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => onRemoveOffer(offer?.id)}>
343
- <AntIcon name='closecircle' size={16} color={theme.colors.primary} />
344
- </TouchableOpacity>
334
+ {!!offer?.id && (
335
+ <OfferAlert offerId={offer?.id} />
345
336
  )}
346
337
  </OSRow>
347
338
  <OText size={12} lineHeight={18}>
@@ -350,10 +341,10 @@ const CartUI = (props: any) => {
350
341
  </OSTable>
351
342
  ))
352
343
  }
353
- {orderState?.options?.type === 1 && cart?.delivery_price > 0 && !hideDeliveryFee && (
344
+ {orderState?.options?.type === 1 && cart?.delivery_price_with_discount > 0 && !hideDeliveryFee && (
354
345
  <OSTable>
355
346
  <OText size={12} lineHeight={18}>{t('DELIVERY_FEE', 'Delivery Fee')}</OText>
356
- <OText size={12} lineHeight={18}>{parsePrice(cart?.delivery_price)}</OText>
347
+ <OText size={12} lineHeight={18}>{parsePrice(cart?.delivery_price_with_discount)}</OText>
357
348
  </OSTable>
358
349
  )}
359
350
  {
@@ -367,9 +358,9 @@ const CartUI = (props: any) => {
367
358
  <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_2' })}>
368
359
  <AntIcon name='infocirlceo' size={16} color={theme.colors.primary} />
369
360
  </TouchableOpacity>
370
- <TouchableOpacity style={{ marginLeft: 3 }} onPress={() => onRemoveOffer(offer?.id)}>
371
- <AntIcon name='closecircle' size={16} color={theme.colors.primary} />
372
- </TouchableOpacity>
361
+ {!!offer?.id && (
362
+ <OfferAlert offerId={offer?.id} />
363
+ )}
373
364
  </OSRow>
374
365
  <OText size={12} lineHeight={18}>
375
366
  - {parsePrice(offer?.summary?.discount)}
@@ -377,12 +368,6 @@ const CartUI = (props: any) => {
377
368
  </OSTable>
378
369
  ))
379
370
  }
380
- {orderState?.options?.type === 1 && cart?.delivery_price > 0 && cart?.delivery_price_with_discount >= 0 && !hideDeliveryFee && (
381
- <OSTable>
382
- <OText size={12} lineHeight={18}>{t('DELIVERY_FEE_AFTER_DISCOUNT', 'Delivery Fee After Discount')}</OText>
383
- <OText size={12} lineHeight={18}>{parsePrice(cart?.delivery_price_with_discount)}</OText>
384
- </OSTable>
385
- )}
386
371
  {cart?.driver_tip > 0 && !hideDriverTip && (
387
372
  <OSTable>
388
373
  <OText size={12} lineHeight={18}>
@@ -405,12 +390,13 @@ const CartUI = (props: any) => {
405
390
  <OText size={12}>-{parsePrice(event.amount, { isTruncable: true })}</OText>
406
391
  </OSTable>
407
392
  ))}
408
- {isCouponEnabled && !isCartPending && (
393
+ {isCouponEnabled && !isCartPending && !hideCouponInput && (
409
394
  <OSTable>
410
395
  <OSCoupon>
411
396
  <CouponControl
412
397
  businessId={businessId}
413
398
  price={cart.total}
399
+ cart={cart}
414
400
  />
415
401
  </OSCoupon>
416
402
  </OSTable>
@@ -423,6 +409,7 @@ const CartUI = (props: any) => {
423
409
  cart?.status !== 2 &&
424
410
  validationFields?.fields?.checkout?.driver_tip?.enabled &&
425
411
  driverTipsOptions && driverTipsOptions?.length > 0 &&
412
+ cart?.business_id &&
426
413
  (
427
414
  <DriverTipsContainer>
428
415
  <OText size={14} lineHeight={20} color={theme.colors.textNormal}>
@@ -471,7 +458,7 @@ const CartUI = (props: any) => {
471
458
  </TouchableOpacity>
472
459
  </OSTable>
473
460
  )}
474
- {cart?.status !== 2 && !hideCartComments && (
461
+ {cart?.status !== 2 && (
475
462
  <OSTable>
476
463
  <View style={{ width: '100%', marginTop: 20 }}>
477
464
  <OText size={16} lineHeight={18}>{t('COMMENTS', 'Comments')}</OText>
@@ -506,21 +493,6 @@ const CartUI = (props: any) => {
506
493
  )}
507
494
  </OSBill>
508
495
  )}
509
- {cateringTypes.includes(orderState?.options?.type) && maxDate && cart?.valid_products && (
510
- <View>
511
- <MomentOption
512
- maxDate={maxDate}
513
- cateringPreorder
514
- isCart
515
- preorderSlotInterval={preorderSlotInterval}
516
- preorderLeadTime={preorderLeadTime}
517
- preorderTimeRange={preorderTimeRange}
518
- preorderMaximumDays={preorderMaximumDays}
519
- preorderMinimumDays={preorderMinimumDays}
520
- business={cart?.business}
521
- />
522
- </View>
523
- )}
524
496
  {!isMultiCheckout && (
525
497
  <>
526
498
  {cart?.valid_products ? (
@@ -537,7 +509,7 @@ const CartUI = (props: any) => {
537
509
  isDisabled={(openUpselling && !canOpenUpselling) || subtotalWithTaxes < cart?.minimum || !cart?.valid_address}
538
510
  borderColor={theme.colors.primary}
539
511
  imgRightSrc={null}
540
- textStyle={{ color: '#fff', textAlign: 'center', flex: 1 }}
512
+ textStyle={{ color: 'white', textAlign: 'center', flex: 1 }}
541
513
  onClick={() => setOpenUpselling(true)}
542
514
  style={{ width: '100%', flexDirection: 'row', justifyContent: 'center', borderRadius: 7.6, shadowOpacity: 0 }}
543
515
  />
@@ -587,14 +559,6 @@ const CartUI = (props: any) => {
587
559
  setOpenPlaceModal={setOpenPlaceModal}
588
560
  />
589
561
  </OModal>
590
- <OAlert
591
- open={confirm.open}
592
- title={confirm.title}
593
- content={confirm.content}
594
- onAccept={confirm.handleOnAccept}
595
- onCancel={() => setConfirm({ ...confirm, open: false, title: null })}
596
- onClose={() => setConfirm({ ...confirm, open: false, title: null })}
597
- />
598
562
  </CContainer>
599
563
  )
600
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
+ `