ordering-ui-react-native 0.16.2 → 0.16.3-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 (228) hide show
  1. package/package.json +8 -4
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/ActiveOrders/index.tsx +61 -63
  4. package/src/components/ActiveOrders/styles.tsx +8 -14
  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 +10 -8
  8. package/src/components/BusinessInformation/index.tsx +22 -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 +2 -1
  12. package/src/components/DriverTips/index.tsx +11 -6
  13. package/src/components/LanguageSelector/index.tsx +21 -16
  14. package/src/components/LoginForm/index.tsx +120 -30
  15. package/src/components/LoginForm/styles.tsx +6 -0
  16. package/src/components/Messages/index.tsx +2 -2
  17. package/src/components/NotificationSetting/index.tsx +85 -0
  18. package/src/components/OrderDetails/index.tsx +7 -21
  19. package/src/components/OrdersOption/index.tsx +54 -56
  20. package/src/components/PaymentOptions/index.tsx +335 -365
  21. package/src/components/PaymentOptionsWebView/index.tsx +120 -121
  22. package/src/components/ReviewDriver/index.tsx +1 -1
  23. package/src/components/ReviewOrder/index.tsx +2 -1
  24. package/src/components/ReviewProducts/index.tsx +11 -0
  25. package/src/components/SignupForm/index.tsx +145 -61
  26. package/src/components/SingleProductReview/index.tsx +8 -5
  27. package/src/components/StripeElementsForm/index.tsx +25 -16
  28. package/src/components/StripeMethodForm/index.tsx +1 -2
  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/index.tsx +2 -0
  35. package/src/navigators/CheckoutNavigator.tsx +6 -0
  36. package/src/navigators/HomeNavigator.tsx +6 -0
  37. package/src/pages/BusinessesListing.tsx +7 -6
  38. package/src/pages/MultiCheckout.tsx +31 -0
  39. package/src/pages/MultiOrdersDetails.tsx +27 -0
  40. package/src/pages/OrderDetails.tsx +1 -1
  41. package/src/pages/ReviewDriver.tsx +2 -2
  42. package/src/pages/ReviewOrder.tsx +2 -2
  43. package/src/theme.json +0 -1
  44. package/src/types/@fatnlazycat/react-native-recaptcha-v3/index.d.ts +1 -0
  45. package/src/types/index.tsx +15 -9
  46. package/src/utils/index.tsx +0 -1
  47. package/themes/business/index.tsx +4 -0
  48. package/themes/business/src/components/BusinessController/index.tsx +2 -2
  49. package/themes/business/src/components/Chat/index.tsx +42 -34
  50. package/themes/business/src/components/DriverMap/index.tsx +12 -8
  51. package/themes/business/src/components/DriverSchedule/index.tsx +71 -0
  52. package/themes/business/src/components/DriverSchedule/styles.tsx +6 -0
  53. package/themes/business/src/components/LoginForm/index.tsx +111 -74
  54. package/themes/business/src/components/MapView/index.tsx +1 -1
  55. package/themes/business/src/components/MessagesOption/index.tsx +11 -1
  56. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  57. package/themes/business/src/components/OrderDetails/Delivery.tsx +3 -3
  58. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +25 -18
  59. package/themes/business/src/components/OrdersListManager/index.tsx +10 -3
  60. package/themes/business/src/components/OrdersOption/index.tsx +65 -21
  61. package/themes/business/src/components/OrdersOption/styles.tsx +5 -1
  62. package/themes/business/src/components/OrdersOptionBusiness/index.tsx +15 -1
  63. package/themes/business/src/components/OrdersOptionCity/index.tsx +15 -1
  64. package/themes/business/src/components/OrdersOptionDate/index.tsx +19 -6
  65. package/themes/business/src/components/OrdersOptionDelivery/index.tsx +15 -1
  66. package/themes/business/src/components/OrdersOptionDriver/index.tsx +15 -1
  67. package/themes/business/src/components/OrdersOptionPaymethod/index.tsx +15 -1
  68. package/themes/business/src/components/OrdersOptionStatus/index.tsx +10 -1
  69. package/themes/business/src/components/PreviousMessages/index.tsx +17 -18
  70. package/themes/business/src/components/PreviousOrders/index.tsx +21 -23
  71. package/themes/business/src/components/ProductItemAccordion/index.tsx +5 -4
  72. package/themes/business/src/components/ReviewCustomer/index.tsx +1 -1
  73. package/themes/business/src/components/ScheduleBlocked/index.tsx +53 -0
  74. package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
  75. package/themes/business/src/components/UserProfileForm/index.tsx +28 -4
  76. package/themes/business/src/components/shared/ODropDown.tsx +42 -8
  77. package/themes/business/src/components/shared/ODropDownCalendar.tsx +36 -7
  78. package/themes/business/src/components/shared/OModal.tsx +41 -38
  79. package/themes/business/src/types/index.tsx +14 -9
  80. package/themes/business/src/utils/index.tsx +10 -0
  81. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  82. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  83. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  84. package/themes/kiosk/src/components/BusinessMenu/index.tsx +2 -1
  85. package/themes/kiosk/src/components/CartItem/index.tsx +4 -3
  86. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +1 -0
  87. package/themes/kiosk/src/components/Checkout/index.tsx +18 -3
  88. package/themes/kiosk/src/components/CustomerName/index.tsx +0 -6
  89. package/themes/kiosk/src/components/DrawerView/index.tsx +1 -0
  90. package/themes/kiosk/src/components/DrawerView/styles.tsx +2 -2
  91. package/themes/kiosk/src/components/LoginForm/index.tsx +121 -10
  92. package/themes/kiosk/src/components/LoginForm/styles.tsx +5 -0
  93. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  94. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  95. package/themes/kiosk/src/components/OrderDetails/index.tsx +2 -2
  96. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  97. package/themes/kiosk/src/components/PaymentOptions/index.tsx +1 -1
  98. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  99. package/themes/kiosk/src/types/index.d.ts +2 -0
  100. package/themes/original/index.tsx +22 -0
  101. package/themes/original/src/components/ActiveOrders/index.tsx +15 -132
  102. package/themes/original/src/components/ActiveOrders/styles.tsx +0 -54
  103. package/themes/original/src/components/AddressForm/index.tsx +136 -133
  104. package/themes/original/src/components/AddressList/index.tsx +1 -1
  105. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  106. package/themes/original/src/components/BusinessBasicInformation/index.tsx +302 -160
  107. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +6 -2
  108. package/themes/original/src/components/BusinessController/index.tsx +179 -96
  109. package/themes/original/src/components/BusinessController/styles.tsx +5 -0
  110. package/themes/original/src/components/BusinessItemAccordion/index.tsx +12 -9
  111. package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -1
  112. package/themes/original/src/components/BusinessListingSearch/BusinessControllerSkeletons/index.tsx +57 -0
  113. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +59 -0
  114. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/styles.tsx +13 -0
  115. package/themes/original/src/components/BusinessListingSearch/index.tsx +106 -126
  116. package/themes/original/src/components/BusinessListingSearch/styles.tsx +18 -13
  117. package/themes/original/src/components/BusinessPreorder/index.tsx +1 -1
  118. package/themes/original/src/components/BusinessProductsCategories/index.tsx +2 -2
  119. package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -0
  120. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
  121. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
  122. package/themes/original/src/components/BusinessProductsList/index.tsx +66 -73
  123. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  124. package/themes/original/src/components/BusinessProductsListing/index.tsx +290 -178
  125. package/themes/original/src/components/BusinessProductsListing/styles.tsx +18 -0
  126. package/themes/original/src/components/BusinessReviews/index.tsx +6 -1
  127. package/themes/original/src/components/BusinessTypeFilter/index.tsx +106 -38
  128. package/themes/original/src/components/BusinessTypeFilter/styles.tsx +2 -0
  129. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +561 -0
  130. package/themes/original/src/components/BusinessesListing/{styles.tsx → Layout/Appointment/styles.tsx} +24 -2
  131. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +673 -0
  132. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +137 -0
  133. package/themes/original/src/components/BusinessesListing/index.tsx +102 -464
  134. package/themes/original/src/components/Cart/index.tsx +82 -37
  135. package/themes/original/src/components/Cart/styles.tsx +4 -0
  136. package/themes/original/src/components/CartContent/index.tsx +22 -16
  137. package/themes/original/src/components/Checkout/index.tsx +107 -67
  138. package/themes/original/src/components/Checkout/styles.tsx +0 -1
  139. package/themes/original/src/components/DriverTips/index.tsx +11 -6
  140. package/themes/original/src/components/Favorite/index.tsx +92 -0
  141. package/themes/original/src/components/Favorite/styles.tsx +22 -0
  142. package/themes/original/src/components/FavoriteList/index.tsx +317 -0
  143. package/themes/original/src/components/FavoriteList/styles.tsx +5 -0
  144. package/themes/original/src/components/GPSButton/index.tsx +25 -17
  145. package/themes/original/src/components/GoogleMap/index.tsx +21 -12
  146. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +8 -3
  147. package/themes/original/src/components/HelpGuide/index.tsx +8 -3
  148. package/themes/original/src/components/HelpOrder/index.tsx +8 -3
  149. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
  150. package/themes/original/src/components/LoginForm/Otp/index.tsx +3 -2
  151. package/themes/original/src/components/LoginForm/index.tsx +86 -43
  152. package/themes/original/src/components/Messages/index.tsx +17 -17
  153. package/themes/original/src/components/MomentSelector/index.tsx +197 -0
  154. package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
  155. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
  156. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
  157. package/themes/original/src/components/MultiCheckout/index.tsx +304 -0
  158. package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
  159. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
  160. package/themes/original/src/components/MultiOrdersDetails/index.tsx +262 -0
  161. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
  162. package/themes/original/src/components/MyOrders/index.tsx +132 -27
  163. package/themes/original/src/components/MyOrders/styles.tsx +8 -1
  164. package/themes/original/src/components/NavBar/index.tsx +11 -5
  165. package/themes/original/src/components/NotFoundSource/index.tsx +2 -1
  166. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  167. package/themes/original/src/components/OrderDetails/index.tsx +135 -56
  168. package/themes/original/src/components/OrderDetails/styles.tsx +5 -2
  169. package/themes/original/src/components/OrderItAgain/index.tsx +73 -0
  170. package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
  171. package/themes/original/src/components/OrderProgress/index.tsx +8 -2
  172. package/themes/original/src/components/OrderSummary/index.tsx +2 -35
  173. package/themes/original/src/components/OrderTypeSelector/index.tsx +84 -36
  174. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  175. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +140 -0
  176. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
  177. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +56 -0
  178. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
  179. package/themes/original/src/components/OrdersOption/index.tsx +143 -47
  180. package/themes/original/src/components/OrdersOption/styles.tsx +4 -1
  181. package/themes/original/src/components/PaymentOptionWallet/index.tsx +15 -23
  182. package/themes/original/src/components/PaymentOptions/index.tsx +57 -37
  183. package/themes/original/src/components/PhoneInputNumber/index.tsx +4 -10
  184. package/themes/original/src/components/PlaceSpot/index.tsx +243 -47
  185. package/themes/original/src/components/PlaceSpot/styles.tsx +0 -2
  186. package/themes/original/src/components/PreviousOrders/index.tsx +18 -147
  187. package/themes/original/src/components/ProductForm/index.tsx +697 -649
  188. package/themes/original/src/components/ProductForm/styles.tsx +9 -7
  189. package/themes/original/src/components/ProductItemAccordion/index.tsx +37 -24
  190. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  191. package/themes/original/src/components/ProfessionalFilter/index.tsx +129 -0
  192. package/themes/original/src/components/ProfessionalFilter/styles.tsx +0 -0
  193. package/themes/original/src/components/ProfessionalProfile/index.tsx +309 -0
  194. package/themes/original/src/components/ProfessionalProfile/styles.tsx +46 -0
  195. package/themes/original/src/components/ReviewDriver/index.tsx +6 -6
  196. package/themes/original/src/components/ReviewOrder/index.tsx +18 -3
  197. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  198. package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
  199. package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
  200. package/themes/original/src/components/SearchBar/index.tsx +13 -5
  201. package/themes/original/src/components/ServiceForm/index.tsx +608 -0
  202. package/themes/original/src/components/ServiceForm/styles.tsx +50 -0
  203. package/themes/original/src/components/SignupForm/index.tsx +307 -159
  204. package/themes/original/src/components/SingleOrderCard/index.tsx +316 -0
  205. package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
  206. package/themes/original/src/components/SingleProductCard/index.tsx +215 -95
  207. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -2
  208. package/themes/original/src/components/SingleProductReview/index.tsx +30 -3
  209. package/themes/original/src/components/SingleProductReview/styles.tsx +12 -0
  210. package/themes/original/src/components/StripeElementsForm/index.tsx +25 -9
  211. package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
  212. package/themes/original/src/components/UpsellingProducts/index.tsx +7 -3
  213. package/themes/original/src/components/UserDetails/index.tsx +32 -18
  214. package/themes/original/src/components/UserFormDetails/index.tsx +107 -73
  215. package/themes/original/src/components/UserProfile/index.tsx +4 -0
  216. package/themes/original/src/components/UserProfileForm/index.tsx +15 -10
  217. package/themes/original/src/components/WalletTransactions/index.tsx +76 -0
  218. package/themes/original/src/components/WalletTransactions/styles.tsx +13 -0
  219. package/themes/original/src/components/Wallets/index.tsx +176 -162
  220. package/themes/original/src/components/Wallets/styles.tsx +10 -8
  221. package/themes/original/src/components/shared/OBottomPopup.tsx +47 -14
  222. package/themes/original/src/components/shared/OButton.tsx +10 -3
  223. package/themes/original/src/components/shared/OInput.tsx +3 -2
  224. package/themes/original/src/components/shared/OModal.tsx +4 -2
  225. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  226. package/themes/original/src/types/index.tsx +200 -47
  227. package/themes/original/src/utils/index.tsx +77 -0
  228. 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 {
@@ -30,7 +30,8 @@ import {
30
30
  OrderDriver,
31
31
  Map,
32
32
  Divider,
33
- OrderAction
33
+ OrderAction,
34
+ PlaceSpotWrapper
34
35
  } from './styles';
35
36
  import { OButton, OIcon, OModal, OText } from '../shared';
36
37
  import { ProductItemAccordion } from '../ProductItemAccordion';
@@ -43,6 +44,8 @@ import AntIcon from 'react-native-vector-icons/AntDesign'
43
44
  import { TaxInformation } from '../TaxInformation';
44
45
  import { Placeholder, PlaceholderLine } from 'rn-placeholder';
45
46
  import NavBar from '../NavBar'
47
+ import { OrderHistory } from './OrderHistory';
48
+ import { PlaceSpot } from '../PlaceSpot'
46
49
  export const OrderDetailsUI = (props: OrderDetailsParams) => {
47
50
  const {
48
51
  navigation,
@@ -53,7 +56,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
53
56
  driverLocation,
54
57
  onNavigationRedirect,
55
58
  reorderState,
56
- handleReorder
59
+ handleReorder,
60
+ getOrder
57
61
  } = props;
58
62
 
59
63
  const theme = useTheme();
@@ -64,6 +68,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
64
68
  },
65
69
  statusBar: {
66
70
  height: 12,
71
+ borderRadius: 8
67
72
  },
68
73
  logo: {
69
74
  width: 75,
@@ -85,6 +90,11 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
85
90
  width: 30,
86
91
  marginTop: Platform.OS === 'ios' ? 0 : 30
87
92
  },
93
+ linkWrapper: {
94
+ display: 'flex',
95
+ alignItems: 'center',
96
+ flexDirection: 'row'
97
+ }
88
98
  });
89
99
 
90
100
  const [, t] = useLanguage();
@@ -93,9 +103,12 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
93
103
  const [{ carts }] = useOrder()
94
104
 
95
105
  const [isReviewed, setIsReviewed] = useState(false)
106
+ const [isOrderHistory, setIsOrderHistory] = useState(false)
96
107
  const [openTaxModal, setOpenTaxModal] = useState<any>({ open: false, tax: null, type: '' })
108
+ const [refreshing] = useState(false);
97
109
  const { order, businessData } = props.order;
98
110
  const mapValidStatuses = [9, 19, 23]
111
+ const placeSpotTypes = [3, 4, 5]
99
112
 
100
113
  const walletName: any = {
101
114
  cash: {
@@ -333,7 +346,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
333
346
  };
334
347
 
335
348
  const getIncludedTaxes = () => {
336
- if (order?.taxes?.length === 0) {
349
+ if (order?.taxes?.length === 0 || !order?.taxes) {
337
350
  return order.tax_type === 1 ? order?.summary?.tax ?? 0 : 0
338
351
  } else {
339
352
  return order?.taxes.reduce((taxIncluded: number, tax: any) => {
@@ -364,26 +377,18 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
364
377
  )
365
378
  }
366
379
 
367
- const RenderGoogleMap = () => {
368
- const driverLocationString = typeof order?.driver?.location?.location === 'string' && order?.driver?.location?.location?.split(',').map((l: string) => l.replace(/[^-.0-9]/g, ''))
369
- const parsedLocations = locations.map(location => typeof location?.location === 'string' ? {
370
- ...location,
371
- lat: parseFloat(location?.location?.split(',')[0].replace(/[^-.0-9]/g, '')),
372
- lng: parseFloat(location?.location?.split(',')[1].replace(/[^-.0-9]/g, ''))
373
- } : location)
380
+ const handleTriggerReview = () => {
381
+ setIsOrderHistory(false);
382
+ (
383
+ parseInt(order?.status) === 1 ||
384
+ parseInt(order?.status) === 11 ||
385
+ parseInt(order?.status) === 15
386
+ ) && !order.review && !isReviewed && handleClickOrderReview(order)
387
+ }
374
388
 
375
- return (
376
- <GoogleMap
377
- location={typeof order?.driver?.location?.location === 'string'
378
- ? {
379
- lat: parseFloat(driverLocationString[0]),
380
- lng: parseFloat(driverLocationString[1]),
381
- } : order?.driver?.location
382
- }
383
- locations={parsedLocations}
384
- readOnly
385
- />
386
- )
389
+
390
+ const resfreshOrder = () => {
391
+ getOrder()
387
392
  }
388
393
 
389
394
  useEffect(() => {
@@ -396,7 +401,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
396
401
  }
397
402
  if (!reorderState?.error && reorderState.loading === false && businessData?.id) {
398
403
  const products = carts?.[_businessId]?.products
399
- const available = products.every((product: any) => product.valid === true)
404
+ const available = products?.every((product: any) => product.valid === true)
400
405
 
401
406
  if (available && reorderState?.result?.uuid && (products?.length === order?.products.length)) {
402
407
  onNavigationRedirect && onNavigationRedirect('CheckoutNavigator', { cartUuid: reorderState?.result.uuid })
@@ -436,15 +441,32 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
436
441
  'https://res.cloudinary.com/demo/image/upload/c_thumb,g_face,r_max/d_avatar.png/non_existing_id.png',
437
442
  },
438
443
  ];
444
+ const driverLocationString = typeof order?.driver?.location?.location === 'string' && order?.driver?.location?.location?.split(',').map((l: string) => l.replace(/[^-.0-9]/g, ''))
445
+ const parsedLocations = locations.map(location => typeof location?.location === 'string' ? {
446
+ ...location,
447
+ lat: parseFloat(location?.location?.split(',')[0].replace(/[^-.0-9]/g, '')),
448
+ lng: parseFloat(location?.location?.split(',')[1].replace(/[^-.0-9]/g, ''))
449
+ } : location)
439
450
 
440
451
  useEffect(() => {
441
452
  if (driverLocation) {
442
- locations[0] = driverLocation;
453
+ parsedLocations[0] = {
454
+ ...locations[0],
455
+ ...driverLocation
456
+ }
443
457
  }
444
458
  }, [driverLocation]);
445
459
 
446
460
  return (
447
- <OrderDetailsContainer keyboardShouldPersistTaps="handled">
461
+ <OrderDetailsContainer
462
+ keyboardShouldPersistTaps="handled"
463
+ refreshControl={
464
+ <RefreshControl
465
+ refreshing={refreshing}
466
+ onRefresh={() => resfreshOrder()}
467
+ />
468
+ }
469
+ >
448
470
  {(!order || Object.keys(order).length === 0) && (
449
471
  <Placeholder style={{ marginTop: 30 }}>
450
472
  <Header>
@@ -517,28 +539,45 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
517
539
  />
518
540
  <OrderInfo>
519
541
  <OrderData>
520
- {
521
- (
522
- parseInt(order?.status) === 1 ||
523
- parseInt(order?.status) === 11 ||
524
- parseInt(order?.status) === 15
525
- ) && !order.review && !isReviewed && (
526
- <TouchableOpacity
527
- activeOpacity={0.7}
528
- style={{ marginTop: 6 }}
529
- onPress={() => handleClickOrderReview(order)}
542
+ <View style={styles.linkWrapper}>
543
+ {
544
+ (
545
+ parseInt(order?.status) === 1 ||
546
+ parseInt(order?.status) === 11 ||
547
+ parseInt(order?.status) === 15
548
+ ) && !order.review && !isReviewed && (
549
+ <TouchableOpacity
550
+ activeOpacity={0.7}
551
+ style={{ marginTop: 6, marginRight: 10 }}
552
+ onPress={() => handleClickOrderReview(order)}
553
+ >
554
+ <OText
555
+ size={10}
556
+ lineHeight={15}
557
+ color={theme.colors.primary}
558
+ style={{ textDecorationLine: 'underline' }}
559
+ >
560
+ {t('REVIEW_YOUR_ORDER', 'Review your order')}
561
+ </OText>
562
+ </TouchableOpacity>
563
+ )}
564
+ <TouchableOpacity
565
+ activeOpacity={0.7}
566
+ style={{ marginTop: 6 }}
567
+ onPress={() => setIsOrderHistory(true)}
530
568
 
569
+ >
570
+ <OText
571
+ size={10}
572
+ lineHeight={15}
573
+ color={theme.colors.primary}
574
+ style={{ textDecorationLine: 'underline', textTransform: 'capitalize' }}
531
575
  >
532
- <OText
533
- size={10}
534
- lineHeight={15}
535
- color={theme.colors.textSecondary}
536
- style={{ textDecorationLine: 'underline' }}
537
- >
538
- {t('REVIEW_YOUR_ORDER', 'Review your order')}
539
- </OText>
540
- </TouchableOpacity>
541
- )}
576
+ {t('VIEW_DETAILS', 'View Details')}
577
+ </OText>
578
+ </TouchableOpacity>
579
+ </View>
580
+
542
581
  <StaturBar>
543
582
  <LinearGradient
544
583
  start={{ x: 0.0, y: 0.0 }}
@@ -645,6 +684,18 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
645
684
  </OText>
646
685
  </View>
647
686
  </OrderBusiness>
687
+
688
+ {placeSpotTypes.includes(order?.delivery_type) && (
689
+ <PlaceSpotWrapper>
690
+ <PlaceSpot
691
+ isInputMode
692
+ cart={order}
693
+ spotNumberDefault={order?.spot_number}
694
+ vehicleDefault={order?.vehicle}
695
+ />
696
+ </PlaceSpotWrapper>
697
+ )}
698
+
648
699
  <View
649
700
  style={{
650
701
  height: 8,
@@ -678,13 +729,15 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
678
729
  mBottom={2}>
679
730
  {order?.customer?.address}
680
731
  </OText>
681
- <OText
682
- size={12}
683
- lineHeight={18}
684
- color={theme.colors.textNormal}
685
- mBottom={2}>
686
- {order?.customer?.cellphone}
687
- </OText>
732
+ {(!!order?.customer?.cellphone) && (
733
+ <OText
734
+ size={12}
735
+ lineHeight={18}
736
+ color={theme.colors.textNormal}
737
+ mBottom={2}>
738
+ {`${!!order?.customer?.country_phone_code ? '+' + order?.customer?.country_phone_code : ''} ${order?.customer?.cellphone}`}
739
+ </OText>
740
+ )}
688
741
  </InfoBlock>
689
742
  </Customer>
690
743
  {order?.delivery_option !== undefined && order?.delivery_type === 1 && (
@@ -697,7 +750,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
697
750
  </OText>
698
751
  </View>
699
752
  )}
700
- {order?.comment && (
753
+ {!!order?.comment && (
701
754
  <View style={{ marginTop: 15 }}>
702
755
  <OText size={16} style={{ textAlign: 'left' }} color={theme.colors.textNormal}>
703
756
  {t('COMMENT', 'Comment')}
@@ -709,7 +762,16 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
709
762
  <>
710
763
  {order?.driver?.location && mapValidStatuses.includes(parseInt(order?.status)) && (
711
764
  <Map>
712
- <RenderGoogleMap />
765
+ <GoogleMap
766
+ location={typeof order?.driver?.location?.location === 'string'
767
+ ? {
768
+ lat: parseFloat(driverLocationString[0]),
769
+ lng: parseFloat(driverLocationString[1]),
770
+ } : driverLocation ?? order?.driver?.location
771
+ }
772
+ locations={parsedLocations}
773
+ readOnly
774
+ />
713
775
  </Map>
714
776
  )}
715
777
  </>
@@ -1033,7 +1095,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
1033
1095
  )}
1034
1096
  </View>
1035
1097
  <OText>
1036
- -{parsePrice(event.amount)}
1098
+ -{parsePrice(event.amount, { isTruncable: true })}
1037
1099
  </OText>
1038
1100
  </View>
1039
1101
  ))}
@@ -1055,6 +1117,23 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
1055
1117
  products={order?.products}
1056
1118
  />
1057
1119
  </OModal>
1120
+ <OModal
1121
+ open={isOrderHistory}
1122
+ onClose={() => setIsOrderHistory(false)}
1123
+ entireModal
1124
+ >
1125
+ <OrderHistory
1126
+ order={order}
1127
+ messages={messages}
1128
+ enableReview={(
1129
+ parseInt(order?.status) === 1 ||
1130
+ parseInt(order?.status) === 11 ||
1131
+ parseInt(order?.status) === 15
1132
+ ) && !order.review && !isReviewed}
1133
+ onClose={() => setIsOrderHistory(false)}
1134
+ handleTriggerReview={handleTriggerReview}
1135
+ />
1136
+ </OModal>
1058
1137
  </OrderDetailsContainer>
1059
1138
  );
1060
1139
  };
@@ -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,8 @@ export const Divider = styled.View`
127
126
  `
128
127
  export const OrderAction = styled.View`
129
128
  flex-direction: row;
130
- `
129
+ `
130
+
131
+ export const PlaceSpotWrapper = styled.View`
132
+ padding-horizontal: 40px;
133
+ `
@@ -0,0 +1,73 @@
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
+ searchValue
24
+ } = props
25
+
26
+ const [, t] = useLanguage()
27
+ const theme = useTheme()
28
+ const { width } = Dimensions.get('window');
29
+ const productsFilterd = productList?.length > 0 && productList?.sort((a: any, b:any) => moment(b?.last_ordered_date).valueOf() - moment(a?.last_ordered_date).valueOf()).filter((product : any) => product?.name?.toLowerCase()?.includes(searchValue?.toLowerCase()))
30
+ return (
31
+ <Container hide={productsFilterd?.length === 0}>
32
+ <OText
33
+ size={16}
34
+ lineHeight={24}
35
+ color={theme.colors.textNormal}
36
+ style={{
37
+ fontWeight: '600',
38
+ marginBottom: 6
39
+ }}
40
+ >
41
+ {t('ORDER_IT_AGAIN', 'Order it again')}
42
+ </OText>
43
+ <OText
44
+ size={12}
45
+ lineHeight={18}
46
+ color={theme.colors.disabled}
47
+ >
48
+ {t('ORDER_IT_AGAIN_DESC', 'Quickly add items from your past orders.')}
49
+ </OText>
50
+ <ScrollView
51
+ horizontal
52
+ showsVerticalScrollIndicator={false}
53
+ showsHorizontalScrollIndicator={false}
54
+ >
55
+ {productsFilterd.map((product: any, i: number) => (
56
+ <ProductWrapper key={'prod_' + product.id + `_${i}`} style={{ width: width - 120, }}>
57
+ <SingleProductCard
58
+ isSoldOut={product.inventoried && !product.quantity}
59
+ product={product}
60
+ businessId={businessId}
61
+ categoryState={categoryState}
62
+ onProductClick={() => onProductClick(product)}
63
+ productAddedToCartLength={currentCart?.products?.reduce((productsLength: number, Cproduct: any) => { return productsLength + (Cproduct?.id === product?.id ? Cproduct?.quantity : 0) }, 0)}
64
+ handleUpdateProducts={handleUpdateProducts}
65
+ navigation={navigation}
66
+ isPreviously
67
+ />
68
+ </ProductWrapper>
69
+ ))}
70
+ </ScrollView>
71
+ </Container>
72
+ )
73
+ }
@@ -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
+ `
@@ -33,6 +33,7 @@ const OrderProgressUI = (props: any) => {
33
33
  const [{ optimizeImage, parseDate, parseTime }] = useUtils()
34
34
  const [lastOrder, setLastOrder] = useState<any>(null)
35
35
  const imageFails = theme.images.general.emptyActiveOrders
36
+ const [initialLoaded, setInitialLoaded] = useState(false)
36
37
 
37
38
  const styles = StyleSheet.create({
38
39
  main: {
@@ -135,16 +136,21 @@ const OrderProgressUI = (props: any) => {
135
136
  }
136
137
  }, [isFocused])
137
138
 
139
+ useEffect(() => {
140
+ if (orderList.loading || initialLoaded) return
141
+ setInitialLoaded(true)
142
+ }, [orderList.loading, initialLoaded])
143
+
138
144
  return (
139
145
  <>
140
- {orderList?.loading && (
146
+ {(orderList?.loading && !initialLoaded) && (
141
147
  <Placeholder Animation={Fade} height={Platform.OS === 'ios' ? 147.5 : 158}>
142
148
  <PlaceholderLine height={60} style={{ borderRadius: 8, marginBottom: 10 }} />
143
149
  <PlaceholderLine height={20} style={{ marginBottom: 10 }} />
144
150
  <PlaceholderLine height={40} style={{ borderRadius: 8, marginBottom: 10 }} />
145
151
  </Placeholder>
146
152
  )}
147
- {!orderList?.loading && orderList?.orders?.length > 0 && lastOrder && (
153
+ {(!orderList?.loading || initialLoaded) && orderList?.orders?.length > 0 && lastOrder && (
148
154
  <View style={styles.main}>
149
155
  <OrderInfoWrapper style={{ flex: 1 }}>
150
156
  <View style={styles.logoWrapper}>
@@ -26,7 +26,6 @@ import AntIcon from 'react-native-vector-icons/AntDesign'
26
26
  import { TaxInformation } from '../TaxInformation';
27
27
  import { TouchableOpacity } from 'react-native';
28
28
  import { OAlert } from '../../../../../src/components/shared'
29
- import { PlaceSpot } from '../PlaceSpot'
30
29
 
31
30
  const OrderSummaryUI = (props: any) => {
32
31
  const {
@@ -50,9 +49,7 @@ const OrderSummaryUI = (props: any) => {
50
49
  const [validationFields] = useValidationFields();
51
50
  const [openTaxModal, setOpenTaxModal] = useState<any>({ open: false, data: null, type: '' })
52
51
  const [confirm, setConfirm] = useState<any>({ open: false, content: null, handleOnAccept: null, id: null, title: null })
53
- const [openPlaceModal, setOpenPlaceModal] = useState(false)
54
52
  const isCouponEnabled = validationFields?.fields?.checkout?.coupon?.enabled;
55
- const placeSpotTypes = [3, 4]
56
53
 
57
54
  const handleDeleteClick = (product: any) => {
58
55
  removeProduct(product, cart)
@@ -71,7 +68,7 @@ const OrderSummaryUI = (props: any) => {
71
68
  }
72
69
 
73
70
  const getIncludedTaxes = () => {
74
- if (cart?.taxes === null) {
71
+ if (cart?.taxes === null || !cart?.taxes) {
75
72
  return cart.business.tax_type === 1 ? cart?.tax : 0
76
73
  } else {
77
74
  return cart?.taxes.reduce((taxIncluded: number, tax: any) => {
@@ -299,29 +296,11 @@ const OrderSummaryUI = (props: any) => {
299
296
  {t('TOTAL', 'Total')}
300
297
  </OText>
301
298
  <OText size={14} style={{ fontWeight: 'bold' }} >
302
- {parsePrice(cart?.total >= 0 ? cart?.total : 0)}
299
+ {parsePrice(cart?.balance >= 0 ? cart?.balance : 0)}
303
300
  </OText>
304
301
  </OSTable>
305
302
  </View>
306
303
  )}
307
- {placeSpotTypes.includes(orderState?.options?.type) && (
308
- <OSTable style={{ marginTop: 15 }}>
309
- <OText size={14} lineHeight={21} weight={'600'}>
310
- {t('SPOT', 'Spot')}: {cart?.place?.name || t('NO_SELECTED', 'No selected')}
311
- </OText>
312
- <TouchableOpacity onPress={() => setOpenPlaceModal(true)}>
313
- <OText
314
- size={14}
315
- lineHeight={21}
316
- weight={'600'}
317
- color={theme.colors.primary}
318
- style={{ textDecorationLine: 'underline' }}
319
- >
320
- {t('EDIT', 'Edit')}
321
- </OText>
322
- </TouchableOpacity>
323
- </OSTable>
324
- )}
325
304
  {cart?.status !== 2 && (
326
305
  <OSTable>
327
306
  <View style={{ width: '100%', marginTop: 20 }}>
@@ -370,18 +349,6 @@ const OrderSummaryUI = (props: any) => {
370
349
  products={cart?.products}
371
350
  />
372
351
  </OModal>
373
- <OModal
374
- open={openPlaceModal}
375
- title={t('CHOOSE_YOUR_SPOT', 'Choose your spot')}
376
- onClose={() => setOpenPlaceModal(false)}
377
- entireModal
378
- >
379
- <PlaceSpot
380
- cart={cart}
381
- isOpenPlaceSpot={openPlaceModal}
382
- setOpenPlaceModal={setOpenPlaceModal}
383
- />
384
- </OModal>
385
352
  <OAlert
386
353
  open={confirm.open}
387
354
  title={confirm.title}