ordering-ui-react-native 0.15.63 → 0.15.64-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 (213) hide show
  1. package/package.json +7 -3
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/AddressForm/index.tsx +18 -2
  4. package/src/components/BusinessBasicInformation/index.tsx +11 -19
  5. package/src/components/BusinessController/index.tsx +16 -8
  6. package/src/components/BusinessInformation/index.tsx +14 -0
  7. package/src/components/BusinessTypeFilter/index.tsx +1 -2
  8. package/src/components/BusinessesListing/index.tsx +1 -1
  9. package/src/components/Checkout/index.tsx +23 -2
  10. package/src/components/DriverTips/index.tsx +11 -6
  11. package/src/components/LanguageSelector/index.tsx +6 -2
  12. package/src/components/LoginForm/index.tsx +120 -30
  13. package/src/components/LoginForm/styles.tsx +6 -0
  14. package/src/components/OrderDetails/index.tsx +7 -21
  15. package/src/components/PaymentOptions/index.tsx +67 -50
  16. package/src/components/PaymentOptionsWebView/index.tsx +120 -121
  17. package/src/components/ReviewDriver/index.tsx +1 -1
  18. package/src/components/ReviewOrder/index.tsx +2 -1
  19. package/src/components/ReviewProducts/index.tsx +11 -0
  20. package/src/components/SignupForm/index.tsx +145 -61
  21. package/src/components/SingleProductCard/index.tsx +16 -4
  22. package/src/components/SingleProductReview/index.tsx +1 -1
  23. package/src/components/StripeMethodForm/index.tsx +22 -24
  24. package/src/components/UpsellingProducts/index.tsx +1 -1
  25. package/src/components/UserProfileForm/index.tsx +63 -6
  26. package/src/components/UserProfileForm/styles.tsx +8 -0
  27. package/src/components/VerifyPhone/styles.tsx +1 -2
  28. package/src/components/shared/OModal.tsx +1 -1
  29. package/src/hooks/useCountdownTimer.tsx +26 -0
  30. package/src/navigators/CheckoutNavigator.tsx +6 -0
  31. package/src/navigators/HomeNavigator.tsx +12 -0
  32. package/src/pages/BusinessesListing.tsx +7 -6
  33. package/src/pages/MultiCheckout.tsx +31 -0
  34. package/src/pages/MultiOrdersDetails.tsx +27 -0
  35. package/src/pages/OrderDetails.tsx +1 -1
  36. package/src/pages/ReviewDriver.tsx +2 -2
  37. package/src/pages/ReviewOrder.tsx +2 -2
  38. package/src/pages/Sessions.tsx +22 -0
  39. package/src/theme.json +0 -1
  40. package/src/types/index.tsx +18 -11
  41. package/src/utils/index.tsx +68 -1
  42. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +103 -15
  43. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -0
  44. package/themes/business/src/components/Chat/index.tsx +42 -90
  45. package/themes/business/src/components/DriverMap/index.tsx +6 -5
  46. package/themes/business/src/components/LoginForm/index.tsx +89 -2
  47. package/themes/business/src/components/LoginForm/styles.tsx +6 -0
  48. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  49. package/themes/business/src/components/NewOrderNotification/index.tsx +26 -13
  50. package/themes/business/src/components/OrderDetails/Business.tsx +2 -2
  51. package/themes/business/src/components/OrderDetails/Delivery.tsx +28 -11
  52. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +14 -7
  53. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +6 -0
  54. package/themes/business/src/components/OrdersListManager/index.tsx +1 -1
  55. package/themes/business/src/components/OrdersOption/index.tsx +8 -4
  56. package/themes/business/src/components/PreviousOrders/index.tsx +7 -7
  57. package/themes/business/src/components/ProductItemAccordion/index.tsx +2 -2
  58. package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
  59. package/themes/business/src/components/UserProfileForm/index.tsx +2 -0
  60. package/themes/business/src/components/shared/OModal.tsx +1 -1
  61. package/themes/business/src/types/index.tsx +8 -2
  62. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  63. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  64. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  65. package/themes/kiosk/src/components/BusinessMenu/index.tsx +39 -28
  66. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -3
  67. package/themes/kiosk/src/components/Cart/index.tsx +11 -12
  68. package/themes/kiosk/src/components/CartBottomSheet/index.tsx +9 -2
  69. package/themes/kiosk/src/components/CartContent/index.tsx +0 -11
  70. package/themes/kiosk/src/components/CartItem/index.tsx +4 -3
  71. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +107 -62
  72. package/themes/kiosk/src/components/Checkout/index.tsx +40 -22
  73. package/themes/kiosk/src/components/CustomerName/index.tsx +0 -6
  74. package/themes/kiosk/src/components/DrawerView/index.tsx +1 -0
  75. package/themes/kiosk/src/components/DrawerView/styles.tsx +2 -2
  76. package/themes/kiosk/src/components/NavBar/index.tsx +29 -20
  77. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  78. package/themes/kiosk/src/components/OrderDetails/index.tsx +32 -27
  79. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +9 -11
  80. package/themes/kiosk/src/components/PaymentOptions/index.tsx +56 -54
  81. package/themes/kiosk/src/components/ProductForm/index.tsx +7 -8
  82. package/themes/kiosk/src/components/ProductItemAccordion/index.tsx +2 -2
  83. package/themes/kiosk/src/components/ProductOption/index.tsx +1 -1
  84. package/themes/kiosk/src/components/ProductOptionSubOption/index.tsx +3 -1
  85. package/themes/kiosk/src/components/UpsellingProducts/index.tsx +16 -5
  86. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  87. package/themes/kiosk/src/types/index.d.ts +1 -0
  88. package/themes/original/index.tsx +30 -8
  89. package/themes/original/src/components/ActiveOrders/index.tsx +15 -132
  90. package/themes/original/src/components/ActiveOrders/styles.tsx +0 -54
  91. package/themes/original/src/components/AddressForm/index.tsx +7 -6
  92. package/themes/original/src/components/AddressList/index.tsx +30 -18
  93. package/themes/original/src/components/AppleLogin/index.tsx +6 -8
  94. package/themes/original/src/components/BusinessBasicInformation/index.tsx +305 -159
  95. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +6 -2
  96. package/themes/original/src/components/BusinessController/index.tsx +168 -96
  97. package/themes/original/src/components/BusinessController/styles.tsx +5 -0
  98. package/themes/original/src/components/BusinessItemAccordion/index.tsx +8 -5
  99. package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -1
  100. package/themes/original/src/components/BusinessListingSearch/index.tsx +231 -63
  101. package/themes/original/src/components/BusinessListingSearch/styles.tsx +22 -2
  102. package/themes/original/src/components/BusinessPreorder/index.tsx +1 -1
  103. package/themes/original/src/components/BusinessProductsCategories/index.tsx +2 -2
  104. package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -0
  105. package/themes/original/src/components/BusinessProductsList/index.tsx +51 -52
  106. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  107. package/themes/original/src/components/BusinessProductsListing/index.tsx +317 -155
  108. package/themes/original/src/components/BusinessProductsListing/styles.tsx +32 -0
  109. package/themes/original/src/components/BusinessReviews/index.tsx +6 -1
  110. package/themes/original/src/components/BusinessTypeFilter/index.tsx +106 -39
  111. package/themes/original/src/components/BusinessTypeFilter/styles.tsx +2 -0
  112. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +560 -0
  113. package/themes/original/src/components/BusinessesListing/{styles.tsx → Layout/Appointment/styles.tsx} +24 -2
  114. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +679 -0
  115. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +137 -0
  116. package/themes/original/src/components/BusinessesListing/index.tsx +99 -458
  117. package/themes/original/src/components/Cart/index.tsx +61 -42
  118. package/themes/original/src/components/Checkout/index.tsx +90 -39
  119. package/themes/original/src/components/DriverTips/index.tsx +17 -12
  120. package/themes/original/src/components/Favorite/index.tsx +92 -0
  121. package/themes/original/src/components/Favorite/styles.tsx +22 -0
  122. package/themes/original/src/components/FavoriteList/index.tsx +298 -0
  123. package/themes/original/src/components/FavoriteList/styles.tsx +5 -0
  124. package/themes/original/src/components/ForgotPasswordForm/index.tsx +84 -4
  125. package/themes/original/src/components/GPSButton/index.tsx +15 -8
  126. package/themes/original/src/components/GoogleMap/index.tsx +11 -11
  127. package/themes/original/src/components/Help/index.tsx +21 -4
  128. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
  129. package/themes/original/src/components/LastOrders/index.tsx +12 -1
  130. package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -0
  131. package/themes/original/src/components/LoginForm/Otp/styles.tsx +7 -0
  132. package/themes/original/src/components/LoginForm/index.tsx +332 -164
  133. package/themes/original/src/components/LoginForm/styles.tsx +1 -3
  134. package/themes/original/src/components/MessageListing/index.tsx +10 -1
  135. package/themes/original/src/components/Messages/index.tsx +1 -1
  136. package/themes/original/src/components/MomentOption/index.tsx +10 -1
  137. package/themes/original/src/components/MomentOption/styles.tsx +1 -1
  138. package/themes/original/src/components/MomentSelector/index.tsx +197 -0
  139. package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
  140. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
  141. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
  142. package/themes/original/src/components/MultiCheckout/index.tsx +298 -0
  143. package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
  144. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
  145. package/themes/original/src/components/MultiOrdersDetails/index.tsx +258 -0
  146. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
  147. package/themes/original/src/components/MyOrders/index.tsx +120 -32
  148. package/themes/original/src/components/MyOrders/styles.tsx +8 -1
  149. package/themes/original/src/components/NavBar/index.tsx +4 -4
  150. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  151. package/themes/original/src/components/OrderDetails/index.tsx +150 -64
  152. package/themes/original/src/components/OrderDetails/styles.tsx +1 -2
  153. package/themes/original/src/components/OrderSummary/index.tsx +6 -6
  154. package/themes/original/src/components/OrderTypeSelector/index.tsx +79 -35
  155. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  156. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +153 -0
  157. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
  158. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +53 -0
  159. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
  160. package/themes/original/src/components/OrdersOption/index.tsx +137 -38
  161. package/themes/original/src/components/OrdersOption/styles.tsx +4 -1
  162. package/themes/original/src/components/PaymentOptionCash/index.tsx +2 -2
  163. package/themes/original/src/components/PaymentOptionWallet/index.tsx +17 -23
  164. package/themes/original/src/components/PaymentOptionWallet/styles.tsx +1 -1
  165. package/themes/original/src/components/PaymentOptions/index.tsx +58 -37
  166. package/themes/original/src/components/PhoneInputNumber/index.tsx +5 -11
  167. package/themes/original/src/components/PreviousOrders/index.tsx +18 -147
  168. package/themes/original/src/components/ProductForm/index.tsx +718 -679
  169. package/themes/original/src/components/ProductForm/styles.tsx +6 -2
  170. package/themes/original/src/components/ProductItemAccordion/index.tsx +2 -2
  171. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  172. package/themes/original/src/components/ProductOptionSubOption/index.tsx +18 -12
  173. package/themes/original/src/components/ProfessionalFilter/index.tsx +128 -0
  174. package/themes/original/src/components/ProfessionalFilter/styles.tsx +0 -0
  175. package/themes/original/src/components/ProfessionalProfile/index.tsx +298 -0
  176. package/themes/original/src/components/ProfessionalProfile/styles.tsx +46 -0
  177. package/themes/original/src/components/Promotions/index.tsx +151 -133
  178. package/themes/original/src/components/Promotions/styles.tsx +3 -23
  179. package/themes/original/src/components/ReviewDriver/index.tsx +6 -6
  180. package/themes/original/src/components/ReviewOrder/index.tsx +1 -1
  181. package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
  182. package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
  183. package/themes/original/src/components/SearchBar/index.tsx +13 -5
  184. package/themes/original/src/components/ServiceForm/index.tsx +579 -0
  185. package/themes/original/src/components/ServiceForm/styles.tsx +50 -0
  186. package/themes/original/src/components/Sessions/index.tsx +160 -0
  187. package/themes/original/src/components/Sessions/styles.tsx +15 -0
  188. package/themes/original/src/components/SignupForm/index.tsx +237 -126
  189. package/themes/original/src/components/SingleOrderCard/index.tsx +275 -0
  190. package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
  191. package/themes/original/src/components/SingleProductCard/index.tsx +161 -88
  192. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -2
  193. package/themes/original/src/components/StripeElementsForm/index.tsx +16 -8
  194. package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
  195. package/themes/original/src/components/UpsellingProducts/index.tsx +86 -74
  196. package/themes/original/src/components/UserDetails/index.tsx +15 -81
  197. package/themes/original/src/components/UserFormDetails/index.tsx +98 -66
  198. package/themes/original/src/components/UserProfile/index.tsx +11 -2
  199. package/themes/original/src/components/UserProfileForm/index.tsx +33 -22
  200. package/themes/original/src/components/UserVerification/index.tsx +178 -192
  201. package/themes/original/src/components/VerifyPhone/index.tsx +10 -7
  202. package/themes/original/src/components/VerifyPhone/styles.tsx +2 -1
  203. package/themes/original/src/components/Wallets/index.tsx +76 -9
  204. package/themes/original/src/components/Wallets/styles.tsx +21 -0
  205. package/themes/original/src/components/shared/OBottomPopup.tsx +44 -13
  206. package/themes/original/src/components/shared/OButton.tsx +2 -0
  207. package/themes/original/src/components/shared/OInput.tsx +3 -2
  208. package/themes/original/src/components/shared/OModal.tsx +4 -2
  209. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  210. package/themes/original/src/types/index.tsx +187 -35
  211. package/themes/original/src/utils/index.tsx +96 -2
  212. package/themes/single-business/src/components/OrderTypeSelector/index.tsx +1 -1
  213. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -1,5 +1,5 @@
1
1
  import React, { useState, useEffect } from 'react';
2
- import { View, StyleSheet, BackHandler, Platform, Linking } from 'react-native';
2
+ import { View, StyleSheet, BackHandler, Platform, Linking, RefreshControl } from 'react-native';
3
3
  import LinearGradient from 'react-native-linear-gradient';
4
4
  import { _setStoreData } from '../../providers/StoreUtil';
5
5
  import {
@@ -42,7 +42,8 @@ import { OSRow } from '../OrderSummary/styles';
42
42
  import AntIcon from 'react-native-vector-icons/AntDesign'
43
43
  import { TaxInformation } from '../TaxInformation';
44
44
  import { Placeholder, PlaceholderLine } from 'rn-placeholder';
45
-
45
+ import NavBar from '../NavBar'
46
+ import { OrderHistory } from './OrderHistory';
46
47
  export const OrderDetailsUI = (props: OrderDetailsParams) => {
47
48
  const {
48
49
  navigation,
@@ -53,7 +54,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
53
54
  driverLocation,
54
55
  onNavigationRedirect,
55
56
  reorderState,
56
- handleReorder
57
+ handleReorder,
58
+ getOrder
57
59
  } = props;
58
60
 
59
61
  const theme = useTheme();
@@ -82,8 +84,14 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
82
84
  justifyContent: 'flex-start',
83
85
  paddingLeft: 0,
84
86
  height: 30,
85
- width: 40,
87
+ width: 30,
88
+ marginTop: Platform.OS === 'ios' ? 0 : 30
86
89
  },
90
+ linkWrapper: {
91
+ display: 'flex',
92
+ alignItems: 'center',
93
+ flexDirection: 'row'
94
+ }
87
95
  });
88
96
 
89
97
  const [, t] = useLanguage();
@@ -92,8 +100,11 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
92
100
  const [{ carts }] = useOrder()
93
101
 
94
102
  const [isReviewed, setIsReviewed] = useState(false)
103
+ const [isOrderHistory, setIsOrderHistory] = useState(false)
95
104
  const [openTaxModal, setOpenTaxModal] = useState<any>({ open: false, tax: null, type: '' })
105
+ const [refreshing] = useState(false);
96
106
  const { order, businessData } = props.order;
107
+ const mapValidStatuses = [9, 19, 23]
97
108
 
98
109
  const walletName: any = {
99
110
  cash: {
@@ -331,7 +342,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
331
342
  };
332
343
 
333
344
  const getIncludedTaxes = () => {
334
- if (order?.taxes?.length === 0) {
345
+ if (order?.taxes?.length === 0 || !order?.taxes) {
335
346
  return order.tax_type === 1 ? order?.summary?.tax ?? 0 : 0
336
347
  } else {
337
348
  return order?.taxes.reduce((taxIncluded: number, tax: any) => {
@@ -362,18 +373,39 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
362
373
  )
363
374
  }
364
375
 
376
+ const handleTriggerReview = () => {
377
+ setIsOrderHistory(false);
378
+ (
379
+ parseInt(order?.status) === 1 ||
380
+ parseInt(order?.status) === 11 ||
381
+ parseInt(order?.status) === 15
382
+ ) && !order.review && !isReviewed && handleClickOrderReview(order)
383
+ }
384
+
385
+
386
+ const resfreshOrder = () => {
387
+ getOrder()
388
+ }
365
389
 
366
390
  useEffect(() => {
391
+ const _businessId = 'businessId:' + businessData?.id
367
392
  if (reorderState?.error) {
368
- const _businessId = 'businessId:' + businessData?.id
369
- const _uuid = carts[_businessId]?.uuid
370
- if (_uuid) {
371
- _setStoreData('remove-cartId', JSON.stringify(_uuid))
393
+ if (businessData?.id) {
394
+ _setStoreData('adjust-cart-products', JSON.stringify(_businessId))
372
395
  navigation.navigate('Business', { store: businessData?.slug })
373
396
  }
374
397
  }
375
- if (!reorderState?.error && reorderState?.result?.uuid) {
376
- onNavigationRedirect && onNavigationRedirect('CheckoutNavigator', { cartUuid: reorderState?.result.uuid })
398
+ if (!reorderState?.error && reorderState.loading === false && businessData?.id) {
399
+ const products = carts?.[_businessId]?.products
400
+ const available = products?.every((product: any) => product.valid === true)
401
+
402
+ if (available && reorderState?.result?.uuid && (products?.length === order?.products.length)) {
403
+ onNavigationRedirect && onNavigationRedirect('CheckoutNavigator', { cartUuid: reorderState?.result.uuid })
404
+ } else {
405
+ _setStoreData('adjust-cart-products', JSON.stringify(_businessId))
406
+ products?.length !== order?.products.length && _setStoreData('already-removed', JSON.stringify('removed'))
407
+ navigation.navigate('Business', { store: businessData?.slug })
408
+ }
377
409
  }
378
410
  }, [reorderState])
379
411
 
@@ -405,15 +437,32 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
405
437
  'https://res.cloudinary.com/demo/image/upload/c_thumb,g_face,r_max/d_avatar.png/non_existing_id.png',
406
438
  },
407
439
  ];
440
+ const driverLocationString = typeof order?.driver?.location?.location === 'string' && order?.driver?.location?.location?.split(',').map((l: string) => l.replace(/[^-.0-9]/g, ''))
441
+ const parsedLocations = locations.map(location => typeof location?.location === 'string' ? {
442
+ ...location,
443
+ lat: parseFloat(location?.location?.split(',')[0].replace(/[^-.0-9]/g, '')),
444
+ lng: parseFloat(location?.location?.split(',')[1].replace(/[^-.0-9]/g, ''))
445
+ } : location)
408
446
 
409
447
  useEffect(() => {
410
448
  if (driverLocation) {
411
- locations[0] = driverLocation;
449
+ parsedLocations[0] = {
450
+ ...locations[0],
451
+ ...driverLocation
452
+ }
412
453
  }
413
454
  }, [driverLocation]);
414
455
 
415
456
  return (
416
- <OrderDetailsContainer keyboardShouldPersistTaps="handled">
457
+ <OrderDetailsContainer
458
+ keyboardShouldPersistTaps="handled"
459
+ refreshControl={
460
+ <RefreshControl
461
+ refreshing={refreshing}
462
+ onRefresh={() => resfreshOrder()}
463
+ />
464
+ }
465
+ >
417
466
  {(!order || Object.keys(order).length === 0) && (
418
467
  <Placeholder style={{ marginTop: 30 }}>
419
468
  <Header>
@@ -469,49 +518,62 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
469
518
  {order && Object.keys(order).length > 0 && (
470
519
  <>
471
520
  <Header>
472
- <OButton
473
- imgLeftSrc={theme.images.general.arrow_left}
474
- imgRightSrc={null}
475
- style={styles.btnBackArrow}
476
- onClick={() => handleArrowBack()}
477
- imgLeftStyle={{ tintColor: theme.colors.disabled }}
521
+ <NavBar
522
+ title={`${t('ORDER', 'Order')} #${order?.id}`}
523
+ titleAlign={'center'}
524
+ onActionLeft={handleArrowBack}
525
+ showCall={false}
526
+ btnStyle={{ paddingLeft: 0 }}
527
+ style={{ marginTop: Platform.OS === 'ios' ? 0 : 20 }}
528
+ titleWrapStyle={{ paddingHorizontal: 0 }}
529
+ titleStyle={{ marginRight: 0, marginLeft: 0 }}
530
+ subTitle={<OText size={12} lineHeight={18} color={theme.colors.textNormal}>
531
+ {order?.delivery_datetime_utc
532
+ ? parseDate(order?.delivery_datetime_utc)
533
+ : parseDate(order?.delivery_datetime, { utc: false })}
534
+ </OText>}
478
535
  />
479
536
  <OrderInfo>
480
537
  <OrderData>
481
- <OText
482
- size={20}
483
- lineHeight={30}
484
- weight={'600'}
485
- color={theme.colors.textNormal}>
486
- {t('ORDER', 'Order')} #{order?.id}
487
- </OText>
488
- <OText size={12} lineHeight={18} color={theme.colors.textNormal}>
489
- {order?.delivery_datetime_utc
490
- ? parseDate(order?.delivery_datetime_utc)
491
- : parseDate(order?.delivery_datetime, { utc: false })}
492
- </OText>
493
- {
494
- (
495
- parseInt(order?.status) === 1 ||
496
- parseInt(order?.status) === 11 ||
497
- parseInt(order?.status) === 15
498
- ) && !order.review && !isReviewed && (
499
- <TouchableOpacity
500
- activeOpacity={0.7}
501
- style={{ marginTop: 6 }}
502
- onPress={() => handleClickOrderReview(order)}
538
+ <View style={styles.linkWrapper}>
539
+ {
540
+ (
541
+ parseInt(order?.status) === 1 ||
542
+ parseInt(order?.status) === 11 ||
543
+ parseInt(order?.status) === 15
544
+ ) && !order.review && !isReviewed && (
545
+ <TouchableOpacity
546
+ activeOpacity={0.7}
547
+ style={{ marginTop: 6, marginRight: 10 }}
548
+ onPress={() => handleClickOrderReview(order)}
549
+ >
550
+ <OText
551
+ size={10}
552
+ lineHeight={15}
553
+ color={theme.colors.primary}
554
+ style={{ textDecorationLine: 'underline' }}
555
+ >
556
+ {t('REVIEW_YOUR_ORDER', 'Review your order')}
557
+ </OText>
558
+ </TouchableOpacity>
559
+ )}
560
+ <TouchableOpacity
561
+ activeOpacity={0.7}
562
+ style={{ marginTop: 6 }}
563
+ onPress={() => setIsOrderHistory(true)}
503
564
 
565
+ >
566
+ <OText
567
+ size={10}
568
+ lineHeight={15}
569
+ color={theme.colors.primary}
570
+ style={{ textDecorationLine: 'underline', textTransform: 'capitalize' }}
504
571
  >
505
- <OText
506
- size={10}
507
- lineHeight={15}
508
- color={theme.colors.textSecondary}
509
- style={{ textDecorationLine: 'underline' }}
510
- >
511
- {t('REVIEW_YOUR_ORDER', 'Review your order')}
512
- </OText>
513
- </TouchableOpacity>
514
- )}
572
+ {t('VIEW_DETAILS', 'View Details')}
573
+ </OText>
574
+ </TouchableOpacity>
575
+ </View>
576
+
515
577
  <StaturBar>
516
578
  <LinearGradient
517
579
  start={{ x: 0.0, y: 0.0 }}
@@ -651,13 +713,15 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
651
713
  mBottom={2}>
652
714
  {order?.customer?.address}
653
715
  </OText>
654
- <OText
655
- size={12}
656
- lineHeight={18}
657
- color={theme.colors.textNormal}
658
- mBottom={2}>
659
- {order?.customer?.cellphone}
660
- </OText>
716
+ {(!!order?.customer?.cellphone) && (
717
+ <OText
718
+ size={12}
719
+ lineHeight={18}
720
+ color={theme.colors.textNormal}
721
+ mBottom={2}>
722
+ {`${!!order?.customer?.country_phone_code ? '+' + order?.customer?.country_phone_code : ''} ${order?.customer?.cellphone}`}
723
+ </OText>
724
+ )}
661
725
  </InfoBlock>
662
726
  </Customer>
663
727
  {order?.delivery_option !== undefined && order?.delivery_type === 1 && (
@@ -670,7 +734,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
670
734
  </OText>
671
735
  </View>
672
736
  )}
673
- {order?.comment && (
737
+ {!!order?.comment && (
674
738
  <View style={{ marginTop: 15 }}>
675
739
  <OText size={16} style={{ textAlign: 'left' }} color={theme.colors.textNormal}>
676
740
  {t('COMMENT', 'Comment')}
@@ -680,11 +744,16 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
680
744
  )}
681
745
  {order?.driver && (
682
746
  <>
683
- {order?.driver?.location && parseInt(order?.status) === 9 && (
747
+ {order?.driver?.location && mapValidStatuses.includes(parseInt(order?.status)) && (
684
748
  <Map>
685
- <GoogleMap
686
- location={order?.driver?.location}
687
- locations={locations}
749
+ <GoogleMap
750
+ location={typeof order?.driver?.location?.location === 'string'
751
+ ? {
752
+ lat: parseFloat(driverLocationString[0]),
753
+ lng: parseFloat(driverLocationString[1]),
754
+ } : driverLocation ?? order?.driver?.location
755
+ }
756
+ locations={parsedLocations}
688
757
  readOnly
689
758
  />
690
759
  </Map>
@@ -1010,7 +1079,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
1010
1079
  )}
1011
1080
  </View>
1012
1081
  <OText>
1013
- -{parsePrice(event.amount)}
1082
+ -{parsePrice(event.amount, { isTruncable: true })}
1014
1083
  </OText>
1015
1084
  </View>
1016
1085
  ))}
@@ -1032,6 +1101,23 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
1032
1101
  products={order?.products}
1033
1102
  />
1034
1103
  </OModal>
1104
+ <OModal
1105
+ open={isOrderHistory}
1106
+ onClose={() => setIsOrderHistory(false)}
1107
+ entireModal
1108
+ >
1109
+ <OrderHistory
1110
+ order={order}
1111
+ messages={messages}
1112
+ enableReview={(
1113
+ parseInt(order?.status) === 1 ||
1114
+ parseInt(order?.status) === 11 ||
1115
+ parseInt(order?.status) === 15
1116
+ ) && !order.review && !isReviewed}
1117
+ onClose={() => setIsOrderHistory(false)}
1118
+ handleTriggerReview={handleTriggerReview}
1119
+ />
1120
+ </OModal>
1035
1121
  </OrderDetailsContainer>
1036
1122
  );
1037
1123
  };
@@ -5,7 +5,6 @@ export const OrderDetailsContainer = styled.ScrollView`
5
5
  `
6
6
 
7
7
  export const NavBack = styled.TouchableOpacity`
8
-
9
8
  `
10
9
 
11
10
 
@@ -127,4 +126,4 @@ export const Divider = styled.View`
127
126
  `
128
127
  export const OrderAction = styled.View`
129
128
  flex-direction: row;
130
- `
129
+ `
@@ -39,7 +39,8 @@ const OrderSummaryUI = (props: any) => {
39
39
  commentState,
40
40
  handleChangeComment,
41
41
  onNavigationRedirect,
42
- handleRemoveOfferClick
42
+ handleRemoveOfferClick,
43
+ placeSpotTypes
43
44
  } = props;
44
45
 
45
46
  const theme = useTheme()
@@ -52,7 +53,6 @@ const OrderSummaryUI = (props: any) => {
52
53
  const [confirm, setConfirm] = useState<any>({ open: false, content: null, handleOnAccept: null, id: null, title: null })
53
54
  const [openPlaceModal, setOpenPlaceModal] = useState(false)
54
55
  const isCouponEnabled = validationFields?.fields?.checkout?.coupon?.enabled;
55
- const placeSpotTypes = [3, 4]
56
56
 
57
57
  const handleDeleteClick = (product: any) => {
58
58
  removeProduct(product, cart)
@@ -71,7 +71,7 @@ const OrderSummaryUI = (props: any) => {
71
71
  }
72
72
 
73
73
  const getIncludedTaxes = () => {
74
- if (cart?.taxes === null) {
74
+ if (cart?.taxes === null || !cart?.taxes) {
75
75
  return cart.business.tax_type === 1 ? cart?.tax : 0
76
76
  } else {
77
77
  return cart?.taxes.reduce((taxIncluded: number, tax: any) => {
@@ -202,7 +202,7 @@ const OrderSummaryUI = (props: any) => {
202
202
  <OSRow>
203
203
  <OText size={12} numberOfLines={1}>
204
204
  {fee.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}{' '}
205
- ({fee?.fixed > 0 && `${parsePrice(fee?.fixed)} + `}{fee.percentage}%)
205
+ ({fee?.fixed > 0 && `${parsePrice(fee?.fixed)}${fee.percentage > 0 ? ' + ' : ''}`}{fee.percentage > 0 && `${fee.percentage}%`}){' '}
206
206
  </OText>
207
207
  <TouchableOpacity onPress={() => setOpenTaxModal({ open: true, data: fee, type: 'fee' })} >
208
208
  <AntIcon name='infocirlceo' size={16} color={theme.colors.primary} />
@@ -299,12 +299,12 @@ const OrderSummaryUI = (props: any) => {
299
299
  {t('TOTAL', 'Total')}
300
300
  </OText>
301
301
  <OText size={14} style={{ fontWeight: 'bold' }} >
302
- {parsePrice(cart?.total >= 0 ? cart?.total : 0)}
302
+ {parsePrice(cart?.balance >= 0 ? cart?.balance : 0)}
303
303
  </OText>
304
304
  </OSTable>
305
305
  </View>
306
306
  )}
307
- {placeSpotTypes.includes(orderState?.options?.type) && (
307
+ {placeSpotTypes && placeSpotTypes.includes(orderState?.options?.type) && (
308
308
  <OSTable style={{ marginTop: 15 }}>
309
309
  <OText size={14} lineHeight={21} weight={'600'}>
310
310
  {t('SPOT', 'Spot')}: {cart?.place?.name || t('NO_SELECTED', 'No selected')}
@@ -6,7 +6,7 @@ import {
6
6
  } from 'ordering-components/native'
7
7
  import { useTheme } from 'styled-components/native';
8
8
  import { Platform, View } from 'react-native'
9
- import { BgImage, ListWrapper, MaskCont, OrderTypeWrapper, Wrapper } from './styles'
9
+ import { BgImage, ListWrapper, MaskCont, OrderTypeWrapper, OTab, OTabs, TabBtn, Wrapper } from './styles'
10
10
  import { OrderTypeSelectParams } from '../../types'
11
11
  import { OIcon, OText } from '../shared'
12
12
  import NavBar from '../NavBar';
@@ -19,14 +19,17 @@ const OrderTypeSelectorUI = (props: OrderTypeSelectParams) => {
19
19
  typeSelected,
20
20
  defaultValue,
21
21
  configTypes,
22
- orderTypes
22
+ orderTypes,
23
+ setOrderTypeValue,
24
+ isChewLayout,
25
+ chewOrderTypes
23
26
  } = props
24
27
 
25
28
  const theme = useTheme();
26
29
  const [orderState] = useOrder();
27
30
  const [, t] = useLanguage();
28
31
  const _orderTypes = orderTypes.filter((type: any) => configTypes?.includes(type.value));
29
-
32
+
30
33
  const items = _orderTypes.map((type) => {
31
34
  return {
32
35
  value: type.value,
@@ -39,44 +42,85 @@ const OrderTypeSelectorUI = (props: OrderTypeSelectParams) => {
39
42
 
40
43
  const handleChangeOrderTypeCallback = (orderType: number) => {
41
44
  if (!orderState.loading) {
45
+ setOrderTypeValue && setOrderTypeValue(orderType)
42
46
  handleChangeOrderType(orderType)
43
- goToBack();
47
+ if(!isChewLayout){
48
+ goToBack();
49
+ }
44
50
  }
45
51
  }
46
52
 
47
53
  return (
48
54
  <Wrapper>
49
- <NavBar
50
- onActionLeft={() => goToBack()}
51
- btnStyle={{ paddingLeft: 0 }}
52
- paddingTop={0}
53
- style={{ paddingBottom: 0 }}
54
- title={t('HOW_WILL_YOUR_ORDER_TYPE', 'How will your order type?')}
55
- titleAlign={'center'}
56
- titleStyle={{ fontSize: 14 }}
57
- />
58
- {
59
- items.length > 0 && (
60
- <ListWrapper>
61
- {
62
- items && items.map((item: any, idx: number) =>
63
- <OrderTypeWrapper activeOpacity={0.8} key={idx} disabled={orderState.loading} onPress={() => handleChangeOrderTypeCallback(item.value)}>
64
- <BgImage source={theme.images.orderTypes[`type${item?.value || 1}`]} resizeMode={'cover'} style={{opacity: item?.value == typeSelected || typeSelected === undefined ? 1 : 0.4}}>
65
- <MaskCont>
66
- <OText size={12} lineHeight={18} color={theme.colors.white} weight={Platform.OS === 'android' ? 'bold' : '600'}>{item?.label}</OText>
67
- <OText size={10} lineHeight={15} color={theme.colors.white}>{item?.description}</OText>
68
- <View style={{flexDirection: 'row', alignItems: 'center'}}>
69
- <OText size={10} lineHeight={15} color={theme.colors.white}>{t('START_MY_ORDER', 'Start my order')}</OText>
70
- <OIcon src={theme.images.general.arrow_left} width={16} color={theme.colors.white} style={{transform: [{ rotate: '180deg' }], marginStart: 4}} />
71
- </View>
72
- </MaskCont>
73
- </BgImage>
74
- </OrderTypeWrapper>
75
- )
76
- }
77
- </ListWrapper>
78
- )
79
- }
55
+ {isChewLayout ? (
56
+ <View>
57
+ <OTabs
58
+ horizontal
59
+ showsHorizontalScrollIndicator={false}
60
+ >
61
+ {chewOrderTypes?.map((type : any) => (
62
+ <TabBtn
63
+ key={type.value}
64
+ onPress={() => handleChangeOrderTypeCallback(type.value)}
65
+ >
66
+ <OTab
67
+ style={{
68
+ borderBottomColor:
69
+ type.value === typeSelected
70
+ ? theme.colors.textNormal
71
+ : theme.colors.border,
72
+ }}>
73
+ <OText
74
+ size={14}
75
+ color={
76
+ type.value === typeSelected
77
+ ? theme.colors.textNormal
78
+ : theme.colors.disabled
79
+ }
80
+ weight={type.value === typeSelected ? 'bold' : 'normal'}>
81
+ {type.name}
82
+ </OText>
83
+ </OTab>
84
+ </TabBtn>
85
+ ))}
86
+ </OTabs>
87
+ </View>
88
+ ) : (
89
+ <>
90
+ <NavBar
91
+ onActionLeft={() => goToBack()}
92
+ btnStyle={{ paddingLeft: 0 }}
93
+ paddingTop={0}
94
+ style={{ paddingBottom: 0 }}
95
+ title={t('HOW_WILL_YOU_DELIVERY_TYPE', 'How will your order type?')}
96
+ titleAlign={'center'}
97
+ titleStyle={{ fontSize: 14 }}
98
+ />
99
+ {
100
+ items.length > 0 && (
101
+ <ListWrapper>
102
+ {
103
+ items && items.map((item: any, idx: number) =>
104
+ <OrderTypeWrapper activeOpacity={0.8} key={idx} disabled={orderState.loading} onPress={() => handleChangeOrderTypeCallback(item.value)}>
105
+ <BgImage source={theme.images.orderTypes[`type${item?.value || 1}`]} resizeMode={'cover'} style={{ opacity: item?.value == typeSelected || typeSelected === undefined ? 1 : 0.4 }}>
106
+ <MaskCont>
107
+ <OText size={12} lineHeight={18} color={theme.colors.white} weight={Platform.OS === 'android' ? 'bold' : '600'}>{item?.label}</OText>
108
+ <OText size={10} lineHeight={15} color={theme.colors.white}>{item?.description}</OText>
109
+ <View style={{ flexDirection: 'row', alignItems: 'center' }}>
110
+ <OText size={10} lineHeight={15} color={theme.colors.white}>{t('START_MY_ORDER', 'Start my order')}</OText>
111
+ <OIcon src={theme.images.general.arrow_left} width={16} color={theme.colors.white} style={{ transform: [{ rotate: '180deg' }], marginStart: 4 }} />
112
+ </View>
113
+ </MaskCont>
114
+ </BgImage>
115
+ </OrderTypeWrapper>
116
+ )
117
+ }
118
+ </ListWrapper>
119
+ )
120
+ }
121
+ </>
122
+ )}
123
+
80
124
  </Wrapper>
81
125
  )
82
126
  }
@@ -24,4 +24,22 @@ export const MaskCont = styled.View`
24
24
  padding: 16px 39px;
25
25
  background-color: #0000004D;
26
26
  height: 100%;
27
- `;
27
+ `;
28
+
29
+ export const OTabs = styled.View`
30
+ flex-direction: row;
31
+ width: 100%;
32
+ margin-bottom: -1px;
33
+ justify-content: space-between;
34
+ `;
35
+
36
+ export const OTab = styled.View`
37
+ padding-bottom: 10px;
38
+ border-bottom-width: 1px;
39
+ padding-horizontal: 10px;
40
+ `;
41
+
42
+ export const TabBtn = styled.TouchableOpacity`
43
+ min-height: 30px;
44
+ height: 30px;
45
+ `;