ordering-ui-react-native 0.15.78 → 0.15.79-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 (220) hide show
  1. package/package.json +7 -3
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/ActiveOrders/index.tsx +61 -63
  4. package/src/components/ActiveOrders/styles.tsx +1 -1
  5. package/src/components/AddressForm/index.tsx +18 -2
  6. package/src/components/BusinessBasicInformation/index.tsx +11 -19
  7. package/src/components/BusinessController/index.tsx +16 -8
  8. package/src/components/BusinessInformation/index.tsx +14 -0
  9. package/src/components/BusinessTypeFilter/index.tsx +1 -2
  10. package/src/components/BusinessesListing/index.tsx +1 -1
  11. package/src/components/Checkout/index.tsx +25 -3
  12. package/src/components/DriverTips/index.tsx +11 -6
  13. package/src/components/LanguageSelector/index.tsx +6 -2
  14. package/src/components/LoginForm/index.tsx +120 -30
  15. package/src/components/LoginForm/styles.tsx +6 -0
  16. package/src/components/NotificationSetting/index.tsx +85 -0
  17. package/src/components/OrderDetails/index.tsx +7 -21
  18. package/src/components/PaymentOptions/index.tsx +335 -365
  19. package/src/components/PaymentOptionsWebView/index.tsx +120 -121
  20. package/src/components/ReviewDriver/index.tsx +1 -1
  21. package/src/components/ReviewOrder/index.tsx +2 -1
  22. package/src/components/ReviewProducts/index.tsx +11 -0
  23. package/src/components/SignupForm/index.tsx +145 -61
  24. package/src/components/SingleProductCard/index.tsx +16 -4
  25. package/src/components/SingleProductReview/index.tsx +1 -1
  26. package/src/components/StripeElementsForm/index.tsx +25 -16
  27. package/src/components/StripeMethodForm/index.tsx +22 -24
  28. package/src/components/UpsellingProducts/index.tsx +1 -1
  29. package/src/components/UserProfileForm/index.tsx +63 -6
  30. package/src/components/UserProfileForm/styles.tsx +8 -0
  31. package/src/components/VerifyPhone/styles.tsx +1 -2
  32. package/src/components/shared/OBottomPopup.tsx +6 -2
  33. package/src/components/shared/OModal.tsx +1 -1
  34. package/src/hooks/useCountdownTimer.tsx +26 -0
  35. package/src/index.tsx +2 -0
  36. package/src/navigators/CheckoutNavigator.tsx +6 -0
  37. package/src/navigators/HomeNavigator.tsx +12 -0
  38. package/src/pages/BusinessesListing.tsx +7 -6
  39. package/src/pages/MultiCheckout.tsx +31 -0
  40. package/src/pages/MultiOrdersDetails.tsx +27 -0
  41. package/src/pages/OrderDetails.tsx +1 -1
  42. package/src/pages/ReviewDriver.tsx +2 -2
  43. package/src/pages/ReviewOrder.tsx +2 -2
  44. package/src/pages/Sessions.tsx +22 -0
  45. package/src/theme.json +0 -1
  46. package/src/types/index.tsx +18 -11
  47. package/src/utils/index.tsx +28 -29
  48. package/themes/business/index.tsx +4 -0
  49. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +100 -60
  50. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
  51. package/themes/business/src/components/Chat/index.tsx +51 -91
  52. package/themes/business/src/components/DriverMap/index.tsx +6 -5
  53. package/themes/business/src/components/DriverSchedule/index.tsx +71 -0
  54. package/themes/business/src/components/DriverSchedule/styles.tsx +6 -0
  55. package/themes/business/src/components/LoginForm/index.tsx +89 -2
  56. package/themes/business/src/components/LoginForm/styles.tsx +6 -0
  57. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  58. package/themes/business/src/components/NewOrderNotification/index.tsx +26 -13
  59. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  60. package/themes/business/src/components/OrderDetails/Delivery.tsx +28 -11
  61. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +26 -18
  62. package/themes/business/src/components/OrdersListManager/index.tsx +11 -4
  63. package/themes/business/src/components/OrdersOption/index.tsx +16 -4
  64. package/themes/business/src/components/PreviousOrders/index.tsx +7 -7
  65. package/themes/business/src/components/ProductItemAccordion/index.tsx +5 -4
  66. package/themes/business/src/components/ScheduleBlocked/index.tsx +53 -0
  67. package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
  68. package/themes/business/src/components/UserProfileForm/index.tsx +28 -4
  69. package/themes/business/src/components/shared/OModal.tsx +41 -38
  70. package/themes/business/src/types/index.tsx +15 -7
  71. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  72. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  73. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  74. package/themes/kiosk/src/components/BusinessMenu/index.tsx +39 -28
  75. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -3
  76. package/themes/kiosk/src/components/Cart/index.tsx +11 -12
  77. package/themes/kiosk/src/components/CartBottomSheet/index.tsx +9 -2
  78. package/themes/kiosk/src/components/CartContent/index.tsx +0 -11
  79. package/themes/kiosk/src/components/CartItem/index.tsx +4 -3
  80. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +107 -62
  81. package/themes/kiosk/src/components/Checkout/index.tsx +40 -22
  82. package/themes/kiosk/src/components/CustomerName/index.tsx +0 -6
  83. package/themes/kiosk/src/components/DrawerView/index.tsx +1 -0
  84. package/themes/kiosk/src/components/DrawerView/styles.tsx +2 -2
  85. package/themes/kiosk/src/components/NavBar/index.tsx +29 -20
  86. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  87. package/themes/kiosk/src/components/OrderDetails/index.tsx +32 -27
  88. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +9 -11
  89. package/themes/kiosk/src/components/PaymentOptions/index.tsx +56 -54
  90. package/themes/kiosk/src/components/ProductForm/index.tsx +6 -7
  91. package/themes/kiosk/src/components/ProductItemAccordion/index.tsx +2 -2
  92. package/themes/kiosk/src/components/ProductOption/index.tsx +1 -1
  93. package/themes/kiosk/src/components/ProductOptionSubOption/index.tsx +3 -1
  94. package/themes/kiosk/src/components/UpsellingProducts/index.tsx +16 -5
  95. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  96. package/themes/kiosk/src/types/index.d.ts +1 -0
  97. package/themes/original/index.tsx +24 -0
  98. package/themes/original/src/components/ActiveOrders/index.tsx +15 -132
  99. package/themes/original/src/components/ActiveOrders/styles.tsx +0 -54
  100. package/themes/original/src/components/AddressForm/index.tsx +7 -6
  101. package/themes/original/src/components/AddressList/index.tsx +2 -2
  102. package/themes/original/src/components/AppleLogin/index.tsx +6 -8
  103. package/themes/original/src/components/BusinessBasicInformation/index.tsx +291 -150
  104. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +6 -2
  105. package/themes/original/src/components/BusinessController/index.tsx +201 -96
  106. package/themes/original/src/components/BusinessController/styles.tsx +5 -0
  107. package/themes/original/src/components/BusinessItemAccordion/index.tsx +8 -5
  108. package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -1
  109. package/themes/original/src/components/BusinessListingSearch/index.tsx +234 -64
  110. package/themes/original/src/components/BusinessListingSearch/styles.tsx +22 -2
  111. package/themes/original/src/components/BusinessPreorder/index.tsx +1 -1
  112. package/themes/original/src/components/BusinessProductsCategories/index.tsx +2 -2
  113. package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -0
  114. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
  115. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
  116. package/themes/original/src/components/BusinessProductsList/index.tsx +65 -73
  117. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  118. package/themes/original/src/components/BusinessProductsListing/index.tsx +315 -176
  119. package/themes/original/src/components/BusinessProductsListing/styles.tsx +11 -0
  120. package/themes/original/src/components/BusinessReviews/index.tsx +6 -1
  121. package/themes/original/src/components/BusinessTypeFilter/index.tsx +106 -38
  122. package/themes/original/src/components/BusinessTypeFilter/styles.tsx +2 -0
  123. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +560 -0
  124. package/themes/original/src/components/BusinessesListing/{styles.tsx → Layout/Appointment/styles.tsx} +24 -2
  125. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +661 -0
  126. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +137 -0
  127. package/themes/original/src/components/BusinessesListing/index.tsx +104 -462
  128. package/themes/original/src/components/Cart/index.tsx +84 -39
  129. package/themes/original/src/components/Cart/styles.tsx +4 -0
  130. package/themes/original/src/components/Checkout/index.tsx +100 -50
  131. package/themes/original/src/components/Checkout/styles.tsx +0 -1
  132. package/themes/original/src/components/DriverTips/index.tsx +17 -12
  133. package/themes/original/src/components/Favorite/index.tsx +92 -0
  134. package/themes/original/src/components/Favorite/styles.tsx +22 -0
  135. package/themes/original/src/components/FavoriteList/index.tsx +298 -0
  136. package/themes/original/src/components/FavoriteList/styles.tsx +5 -0
  137. package/themes/original/src/components/ForgotPasswordForm/index.tsx +84 -4
  138. package/themes/original/src/components/GPSButton/index.tsx +15 -8
  139. package/themes/original/src/components/GoogleMap/index.tsx +11 -11
  140. package/themes/original/src/components/Help/index.tsx +21 -4
  141. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
  142. package/themes/original/src/components/LastOrders/index.tsx +12 -1
  143. package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -0
  144. package/themes/original/src/components/LoginForm/Otp/styles.tsx +7 -0
  145. package/themes/original/src/components/LoginForm/index.tsx +332 -164
  146. package/themes/original/src/components/LoginForm/styles.tsx +1 -3
  147. package/themes/original/src/components/Messages/index.tsx +1 -1
  148. package/themes/original/src/components/MomentSelector/index.tsx +197 -0
  149. package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
  150. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
  151. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
  152. package/themes/original/src/components/MultiCheckout/index.tsx +304 -0
  153. package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
  154. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
  155. package/themes/original/src/components/MultiOrdersDetails/index.tsx +258 -0
  156. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
  157. package/themes/original/src/components/MyOrders/index.tsx +132 -27
  158. package/themes/original/src/components/MyOrders/styles.tsx +8 -1
  159. package/themes/original/src/components/NavBar/index.tsx +4 -4
  160. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  161. package/themes/original/src/components/OrderDetails/index.tsx +148 -63
  162. package/themes/original/src/components/OrderDetails/styles.tsx +1 -2
  163. package/themes/original/src/components/OrderItAgain/index.tsx +72 -0
  164. package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
  165. package/themes/original/src/components/OrderSummary/index.tsx +5 -5
  166. package/themes/original/src/components/OrderTypeSelector/index.tsx +77 -35
  167. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  168. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +153 -0
  169. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
  170. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +53 -0
  171. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
  172. package/themes/original/src/components/OrdersOption/index.tsx +139 -46
  173. package/themes/original/src/components/OrdersOption/styles.tsx +4 -1
  174. package/themes/original/src/components/PaymentOptionCash/index.tsx +2 -2
  175. package/themes/original/src/components/PaymentOptionWallet/index.tsx +15 -22
  176. package/themes/original/src/components/PaymentOptions/index.tsx +57 -37
  177. package/themes/original/src/components/PhoneInputNumber/index.tsx +5 -11
  178. package/themes/original/src/components/PreviousOrders/index.tsx +18 -147
  179. package/themes/original/src/components/ProductForm/index.tsx +712 -673
  180. package/themes/original/src/components/ProductForm/styles.tsx +9 -7
  181. package/themes/original/src/components/ProductItemAccordion/index.tsx +2 -2
  182. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  183. package/themes/original/src/components/ProductOptionSubOption/index.tsx +13 -9
  184. package/themes/original/src/components/ProfessionalFilter/index.tsx +128 -0
  185. package/themes/original/src/components/ProfessionalFilter/styles.tsx +0 -0
  186. package/themes/original/src/components/ProfessionalProfile/index.tsx +298 -0
  187. package/themes/original/src/components/ProfessionalProfile/styles.tsx +46 -0
  188. package/themes/original/src/components/Promotions/index.tsx +145 -128
  189. package/themes/original/src/components/Promotions/styles.tsx +2 -0
  190. package/themes/original/src/components/ReviewDriver/index.tsx +6 -6
  191. package/themes/original/src/components/ReviewOrder/index.tsx +1 -1
  192. package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
  193. package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
  194. package/themes/original/src/components/SearchBar/index.tsx +13 -5
  195. package/themes/original/src/components/ServiceForm/index.tsx +579 -0
  196. package/themes/original/src/components/ServiceForm/styles.tsx +50 -0
  197. package/themes/original/src/components/Sessions/index.tsx +160 -0
  198. package/themes/original/src/components/Sessions/styles.tsx +15 -0
  199. package/themes/original/src/components/SignupForm/index.tsx +237 -126
  200. package/themes/original/src/components/SingleOrderCard/index.tsx +316 -0
  201. package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
  202. package/themes/original/src/components/SingleProductCard/index.tsx +220 -94
  203. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -2
  204. package/themes/original/src/components/StripeElementsForm/index.tsx +25 -9
  205. package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
  206. package/themes/original/src/components/UpsellingProducts/index.tsx +2 -6
  207. package/themes/original/src/components/UserDetails/index.tsx +32 -18
  208. package/themes/original/src/components/UserFormDetails/index.tsx +108 -74
  209. package/themes/original/src/components/UserProfile/index.tsx +10 -1
  210. package/themes/original/src/components/UserProfileForm/index.tsx +14 -9
  211. package/themes/original/src/components/UserVerification/index.tsx +178 -192
  212. package/themes/original/src/components/Wallets/index.tsx +2 -2
  213. package/themes/original/src/components/shared/OBottomPopup.tsx +47 -14
  214. package/themes/original/src/components/shared/OButton.tsx +2 -0
  215. package/themes/original/src/components/shared/OInput.tsx +3 -2
  216. package/themes/original/src/components/shared/OModal.tsx +4 -2
  217. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  218. package/themes/original/src/types/index.tsx +199 -36
  219. package/themes/original/src/utils/index.tsx +94 -1
  220. 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,7 +100,9 @@ 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;
97
107
  const mapValidStatuses = [9, 19, 23]
98
108
 
@@ -332,7 +342,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
332
342
  };
333
343
 
334
344
  const getIncludedTaxes = () => {
335
- if (order?.taxes?.length === 0) {
345
+ if (order?.taxes?.length === 0 || !order?.taxes) {
336
346
  return order.tax_type === 1 ? order?.summary?.tax ?? 0 : 0
337
347
  } else {
338
348
  return order?.taxes.reduce((taxIncluded: number, tax: any) => {
@@ -363,18 +373,39 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
363
373
  )
364
374
  }
365
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
+ }
366
389
 
367
390
  useEffect(() => {
391
+ const _businessId = 'businessId:' + businessData?.id
368
392
  if (reorderState?.error) {
369
- const _businessId = 'businessId:' + businessData?.id
370
- const _uuid = carts[_businessId]?.uuid
371
- if (_uuid) {
372
- _setStoreData('remove-cartId', JSON.stringify(_uuid))
393
+ if (businessData?.id) {
394
+ _setStoreData('adjust-cart-products', JSON.stringify(_businessId))
373
395
  navigation.navigate('Business', { store: businessData?.slug })
374
396
  }
375
397
  }
376
- if (!reorderState?.error && reorderState?.result?.uuid) {
377
- 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
+ }
378
409
  }
379
410
  }, [reorderState])
380
411
 
@@ -406,15 +437,32 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
406
437
  'https://res.cloudinary.com/demo/image/upload/c_thumb,g_face,r_max/d_avatar.png/non_existing_id.png',
407
438
  },
408
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)
409
446
 
410
447
  useEffect(() => {
411
448
  if (driverLocation) {
412
- locations[0] = driverLocation;
449
+ parsedLocations[0] = {
450
+ ...locations[0],
451
+ ...driverLocation
452
+ }
413
453
  }
414
454
  }, [driverLocation]);
415
455
 
416
456
  return (
417
- <OrderDetailsContainer keyboardShouldPersistTaps="handled">
457
+ <OrderDetailsContainer
458
+ keyboardShouldPersistTaps="handled"
459
+ refreshControl={
460
+ <RefreshControl
461
+ refreshing={refreshing}
462
+ onRefresh={() => resfreshOrder()}
463
+ />
464
+ }
465
+ >
418
466
  {(!order || Object.keys(order).length === 0) && (
419
467
  <Placeholder style={{ marginTop: 30 }}>
420
468
  <Header>
@@ -470,49 +518,62 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
470
518
  {order && Object.keys(order).length > 0 && (
471
519
  <>
472
520
  <Header>
473
- <OButton
474
- imgLeftSrc={theme.images.general.arrow_left}
475
- imgRightSrc={null}
476
- style={styles.btnBackArrow}
477
- onClick={() => handleArrowBack()}
478
- 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>}
479
535
  />
480
536
  <OrderInfo>
481
537
  <OrderData>
482
- <OText
483
- size={20}
484
- lineHeight={30}
485
- weight={'600'}
486
- color={theme.colors.textNormal}>
487
- {t('ORDER', 'Order')} #{order?.id}
488
- </OText>
489
- <OText size={12} lineHeight={18} color={theme.colors.textNormal}>
490
- {order?.delivery_datetime_utc
491
- ? parseDate(order?.delivery_datetime_utc)
492
- : parseDate(order?.delivery_datetime, { utc: false })}
493
- </OText>
494
- {
495
- (
496
- parseInt(order?.status) === 1 ||
497
- parseInt(order?.status) === 11 ||
498
- parseInt(order?.status) === 15
499
- ) && !order.review && !isReviewed && (
500
- <TouchableOpacity
501
- activeOpacity={0.7}
502
- style={{ marginTop: 6 }}
503
- 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)}
504
564
 
565
+ >
566
+ <OText
567
+ size={10}
568
+ lineHeight={15}
569
+ color={theme.colors.primary}
570
+ style={{ textDecorationLine: 'underline', textTransform: 'capitalize' }}
505
571
  >
506
- <OText
507
- size={10}
508
- lineHeight={15}
509
- color={theme.colors.textSecondary}
510
- style={{ textDecorationLine: 'underline' }}
511
- >
512
- {t('REVIEW_YOUR_ORDER', 'Review your order')}
513
- </OText>
514
- </TouchableOpacity>
515
- )}
572
+ {t('VIEW_DETAILS', 'View Details')}
573
+ </OText>
574
+ </TouchableOpacity>
575
+ </View>
576
+
516
577
  <StaturBar>
517
578
  <LinearGradient
518
579
  start={{ x: 0.0, y: 0.0 }}
@@ -652,13 +713,15 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
652
713
  mBottom={2}>
653
714
  {order?.customer?.address}
654
715
  </OText>
655
- <OText
656
- size={12}
657
- lineHeight={18}
658
- color={theme.colors.textNormal}
659
- mBottom={2}>
660
- {order?.customer?.cellphone}
661
- </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
+ )}
662
725
  </InfoBlock>
663
726
  </Customer>
664
727
  {order?.delivery_option !== undefined && order?.delivery_type === 1 && (
@@ -671,7 +734,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
671
734
  </OText>
672
735
  </View>
673
736
  )}
674
- {order?.comment && (
737
+ {!!order?.comment && (
675
738
  <View style={{ marginTop: 15 }}>
676
739
  <OText size={16} style={{ textAlign: 'left' }} color={theme.colors.textNormal}>
677
740
  {t('COMMENT', 'Comment')}
@@ -683,9 +746,14 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
683
746
  <>
684
747
  {order?.driver?.location && mapValidStatuses.includes(parseInt(order?.status)) && (
685
748
  <Map>
686
- <GoogleMap
687
- location={order?.driver?.location}
688
- 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}
689
757
  readOnly
690
758
  />
691
759
  </Map>
@@ -1011,7 +1079,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
1011
1079
  )}
1012
1080
  </View>
1013
1081
  <OText>
1014
- -{parsePrice(event.amount)}
1082
+ -{parsePrice(event.amount, { isTruncable: true })}
1015
1083
  </OText>
1016
1084
  </View>
1017
1085
  ))}
@@ -1033,6 +1101,23 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
1033
1101
  products={order?.products}
1034
1102
  />
1035
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>
1036
1121
  </OrderDetailsContainer>
1037
1122
  );
1038
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
+ `
@@ -0,0 +1,72 @@
1
+ import React from 'react'
2
+ import { OText } from '../shared'
3
+ import { useLanguage } from 'ordering-components/native'
4
+ import { useTheme } from 'styled-components/native'
5
+ import { SingleProductCard } from '../SingleProductCard'
6
+ import { OrderItAgainParams } from '../../types'
7
+ import { ScrollView, Dimensions } from 'react-native'
8
+ import moment from 'moment';
9
+ import {
10
+ Container,
11
+ ProductWrapper
12
+ } from './styles'
13
+
14
+ export const OrderItAgain = (props: OrderItAgainParams) => {
15
+ const {
16
+ onProductClick,
17
+ productList,
18
+ businessId,
19
+ categoryState,
20
+ currentCart,
21
+ handleUpdateProducts,
22
+ navigation
23
+ } = props
24
+
25
+ const [, t] = useLanguage()
26
+ const theme = useTheme()
27
+ const { width } = Dimensions.get('window');
28
+
29
+ return (
30
+ <Container>
31
+ <OText
32
+ size={16}
33
+ lineHeight={24}
34
+ color={theme.colors.textNormal}
35
+ style={{
36
+ fontWeight: '600',
37
+ marginBottom: 6
38
+ }}
39
+ >
40
+ {t('ORDER_IT_AGAIN', 'Order it again')}
41
+ </OText>
42
+ <OText
43
+ size={12}
44
+ lineHeight={18}
45
+ color={theme.colors.disabled}
46
+ >
47
+ {t('ORDER_IT_AGAIN_DESC', 'Quickly add items from your past orders.')}
48
+ </OText>
49
+ <ScrollView
50
+ horizontal
51
+ showsVerticalScrollIndicator={false}
52
+ showsHorizontalScrollIndicator={false}
53
+ >
54
+ {productList?.length > 0 && productList?.sort((a: any, b:any) => moment(b?.last_ordered_date).valueOf() - moment(a?.last_ordered_date).valueOf()).map((product: any, i: number) => (
55
+ <ProductWrapper key={'prod_' + product.id + `_${i}`} style={{ width: width - 120, }}>
56
+ <SingleProductCard
57
+ isSoldOut={product.inventoried && !product.quantity}
58
+ product={product}
59
+ businessId={businessId}
60
+ categoryState={categoryState}
61
+ onProductClick={() => onProductClick(product)}
62
+ productAddedToCartLength={currentCart?.products?.reduce((productsLength: number, Cproduct: any) => { return productsLength + (Cproduct?.id === product?.id ? Cproduct?.quantity : 0) }, 0)}
63
+ handleUpdateProducts={handleUpdateProducts}
64
+ navigation={navigation}
65
+ isPreviously
66
+ />
67
+ </ProductWrapper>
68
+ ))}
69
+ </ScrollView>
70
+ </Container>
71
+ )
72
+ }
@@ -0,0 +1,10 @@
1
+ import styled from 'styled-components/native'
2
+
3
+ export const Container = styled.View`
4
+ margin-top: 20px;
5
+ `
6
+
7
+ export const ProductWrapper = styled.View`
8
+ margin-right: 20px;
9
+ padding-top: 30px;
10
+ `
@@ -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) => {
@@ -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';
@@ -20,14 +20,16 @@ const OrderTypeSelectorUI = (props: OrderTypeSelectParams) => {
20
20
  defaultValue,
21
21
  configTypes,
22
22
  orderTypes,
23
- setOrderTypeValue
23
+ setOrderTypeValue,
24
+ isChewLayout,
25
+ chewOrderTypes
24
26
  } = props
25
27
 
26
28
  const theme = useTheme();
27
29
  const [orderState] = useOrder();
28
30
  const [, t] = useLanguage();
29
31
  const _orderTypes = orderTypes.filter((type: any) => configTypes?.includes(type.value));
30
-
32
+
31
33
  const items = _orderTypes.map((type) => {
32
34
  return {
33
35
  value: type.value,
@@ -42,43 +44,83 @@ const OrderTypeSelectorUI = (props: OrderTypeSelectParams) => {
42
44
  if (!orderState.loading) {
43
45
  setOrderTypeValue && setOrderTypeValue(orderType)
44
46
  handleChangeOrderType(orderType)
45
- goToBack();
47
+ if(!isChewLayout){
48
+ goToBack();
49
+ }
46
50
  }
47
51
  }
48
52
 
49
53
  return (
50
54
  <Wrapper>
51
- <NavBar
52
- onActionLeft={() => goToBack()}
53
- btnStyle={{ paddingLeft: 0 }}
54
- paddingTop={0}
55
- style={{ paddingBottom: 0 }}
56
- title={t('HOW_WILL_YOU_DELIVERY_TYPE', 'How will your order type?')}
57
- titleAlign={'center'}
58
- titleStyle={{ fontSize: 14 }}
59
- />
60
- {
61
- items.length > 0 && (
62
- <ListWrapper>
63
- {
64
- items && items.map((item: any, idx: number) =>
65
- <OrderTypeWrapper activeOpacity={0.8} key={idx} disabled={orderState.loading} onPress={() => handleChangeOrderTypeCallback(item.value)}>
66
- <BgImage source={theme.images.orderTypes[`type${item?.value || 1}`]} resizeMode={'cover'} style={{opacity: item?.value == typeSelected || typeSelected === undefined ? 1 : 0.4}}>
67
- <MaskCont>
68
- <OText size={12} lineHeight={18} color={theme.colors.white} weight={Platform.OS === 'android' ? 'bold' : '600'}>{item?.label}</OText>
69
- <OText size={10} lineHeight={15} color={theme.colors.white}>{item?.description}</OText>
70
- <View style={{flexDirection: 'row', alignItems: 'center'}}>
71
- <OText size={10} lineHeight={15} color={theme.colors.white}>{t('START_MY_ORDER', 'Start my order')}</OText>
72
- <OIcon src={theme.images.general.arrow_left} width={16} color={theme.colors.white} style={{transform: [{ rotate: '180deg' }], marginStart: 4}} />
73
- </View>
74
- </MaskCont>
75
- </BgImage>
76
- </OrderTypeWrapper>
77
- )
78
- }
79
- </ListWrapper>
80
- )
81
- }
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
+
82
124
  </Wrapper>
83
125
  )
84
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
+ `;