ordering-ui-react-native 0.15.98 → 0.16.0-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 (236) hide show
  1. package/package.json +8 -3
  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 +22 -24
  29. package/src/components/UpsellingProducts/index.tsx +1 -1
  30. package/src/components/UserProfileForm/index.tsx +63 -6
  31. package/src/components/UserProfileForm/styles.tsx +8 -0
  32. package/src/components/VerifyPhone/styles.tsx +1 -2
  33. package/src/components/shared/OBottomPopup.tsx +6 -2
  34. package/src/components/shared/OModal.tsx +1 -1
  35. package/src/index.tsx +2 -0
  36. package/src/navigators/CheckoutNavigator.tsx +6 -0
  37. package/src/navigators/HomeNavigator.tsx +6 -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/theme.json +0 -1
  45. package/src/types/@fatnlazycat/react-native-recaptcha-v3/index.d.ts +1 -0
  46. package/src/types/index.tsx +15 -9
  47. package/src/utils/index.tsx +0 -1
  48. package/themes/business/index.tsx +4 -0
  49. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +1 -1
  50. package/themes/business/src/components/BusinessController/index.tsx +2 -2
  51. package/themes/business/src/components/Chat/index.tsx +42 -34
  52. package/themes/business/src/components/DriverMap/index.tsx +12 -8
  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 +111 -74
  56. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  57. package/themes/business/src/components/MapView/index.tsx +1 -1
  58. package/themes/business/src/components/MessagesOption/index.tsx +11 -1
  59. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  60. package/themes/business/src/components/OrderDetails/Delivery.tsx +3 -3
  61. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +25 -18
  62. package/themes/business/src/components/OrdersListManager/index.tsx +10 -3
  63. package/themes/business/src/components/OrdersOption/index.tsx +65 -21
  64. package/themes/business/src/components/OrdersOption/styles.tsx +5 -1
  65. package/themes/business/src/components/OrdersOptionBusiness/index.tsx +15 -1
  66. package/themes/business/src/components/OrdersOptionCity/index.tsx +15 -1
  67. package/themes/business/src/components/OrdersOptionDate/index.tsx +19 -6
  68. package/themes/business/src/components/OrdersOptionDelivery/index.tsx +15 -1
  69. package/themes/business/src/components/OrdersOptionDriver/index.tsx +15 -1
  70. package/themes/business/src/components/OrdersOptionPaymethod/index.tsx +15 -1
  71. package/themes/business/src/components/OrdersOptionStatus/index.tsx +10 -1
  72. package/themes/business/src/components/PreviousMessages/index.tsx +17 -18
  73. package/themes/business/src/components/PreviousOrders/index.tsx +21 -23
  74. package/themes/business/src/components/ProductItemAccordion/index.tsx +5 -4
  75. package/themes/business/src/components/ReviewCustomer/index.tsx +1 -1
  76. package/themes/business/src/components/ScheduleBlocked/index.tsx +53 -0
  77. package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
  78. package/themes/business/src/components/UserProfileForm/index.tsx +28 -4
  79. package/themes/business/src/components/shared/ODropDown.tsx +42 -8
  80. package/themes/business/src/components/shared/ODropDownCalendar.tsx +36 -7
  81. package/themes/business/src/components/shared/OModal.tsx +41 -38
  82. package/themes/business/src/types/index.tsx +14 -9
  83. package/themes/business/src/utils/index.tsx +10 -0
  84. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  85. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  86. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  87. package/themes/kiosk/src/components/BusinessMenu/index.tsx +2 -1
  88. package/themes/kiosk/src/components/CartBottomSheet/index.tsx +9 -2
  89. package/themes/kiosk/src/components/CartContent/index.tsx +0 -11
  90. package/themes/kiosk/src/components/CartItem/index.tsx +4 -3
  91. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +70 -31
  92. package/themes/kiosk/src/components/Checkout/index.tsx +18 -3
  93. package/themes/kiosk/src/components/CustomerName/index.tsx +0 -6
  94. package/themes/kiosk/src/components/DrawerView/index.tsx +1 -0
  95. package/themes/kiosk/src/components/DrawerView/styles.tsx +2 -2
  96. package/themes/kiosk/src/components/LoginForm/index.tsx +121 -10
  97. package/themes/kiosk/src/components/LoginForm/styles.tsx +5 -0
  98. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  99. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  100. package/themes/kiosk/src/components/OrderDetails/index.tsx +2 -2
  101. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  102. package/themes/kiosk/src/components/PaymentOptions/index.tsx +1 -1
  103. package/themes/kiosk/src/components/ProductForm/index.tsx +6 -7
  104. package/themes/kiosk/src/components/UpsellingProducts/index.tsx +16 -5
  105. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  106. package/themes/kiosk/src/types/index.d.ts +3 -0
  107. package/themes/original/index.tsx +22 -0
  108. package/themes/original/src/components/ActiveOrders/index.tsx +15 -132
  109. package/themes/original/src/components/ActiveOrders/styles.tsx +0 -54
  110. package/themes/original/src/components/AddressForm/index.tsx +137 -134
  111. package/themes/original/src/components/AddressList/index.tsx +2 -2
  112. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  113. package/themes/original/src/components/BusinessBasicInformation/index.tsx +302 -160
  114. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +6 -2
  115. package/themes/original/src/components/BusinessController/index.tsx +179 -96
  116. package/themes/original/src/components/BusinessController/styles.tsx +5 -0
  117. package/themes/original/src/components/BusinessItemAccordion/index.tsx +12 -9
  118. package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -1
  119. package/themes/original/src/components/BusinessListingSearch/BusinessControllerSkeletons/index.tsx +57 -0
  120. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +59 -0
  121. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/styles.tsx +13 -0
  122. package/themes/original/src/components/BusinessListingSearch/index.tsx +106 -126
  123. package/themes/original/src/components/BusinessListingSearch/styles.tsx +18 -13
  124. package/themes/original/src/components/BusinessPreorder/index.tsx +1 -1
  125. package/themes/original/src/components/BusinessProductsCategories/index.tsx +2 -2
  126. package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -0
  127. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
  128. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
  129. package/themes/original/src/components/BusinessProductsList/index.tsx +66 -73
  130. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  131. package/themes/original/src/components/BusinessProductsListing/index.tsx +298 -178
  132. package/themes/original/src/components/BusinessProductsListing/styles.tsx +18 -0
  133. package/themes/original/src/components/BusinessReviews/index.tsx +6 -1
  134. package/themes/original/src/components/BusinessTypeFilter/index.tsx +106 -38
  135. package/themes/original/src/components/BusinessTypeFilter/styles.tsx +2 -0
  136. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +561 -0
  137. package/themes/original/src/components/BusinessesListing/{styles.tsx → Layout/Appointment/styles.tsx} +24 -2
  138. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +673 -0
  139. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +137 -0
  140. package/themes/original/src/components/BusinessesListing/index.tsx +102 -464
  141. package/themes/original/src/components/Cart/index.tsx +82 -37
  142. package/themes/original/src/components/Cart/styles.tsx +4 -0
  143. package/themes/original/src/components/CartContent/index.tsx +22 -16
  144. package/themes/original/src/components/Checkout/index.tsx +107 -67
  145. package/themes/original/src/components/Checkout/styles.tsx +0 -1
  146. package/themes/original/src/components/DriverTips/index.tsx +11 -6
  147. package/themes/original/src/components/Favorite/index.tsx +92 -0
  148. package/themes/original/src/components/Favorite/styles.tsx +22 -0
  149. package/themes/original/src/components/FavoriteList/index.tsx +317 -0
  150. package/themes/original/src/components/FavoriteList/styles.tsx +5 -0
  151. package/themes/original/src/components/GPSButton/index.tsx +25 -17
  152. package/themes/original/src/components/GoogleMap/index.tsx +21 -12
  153. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +8 -3
  154. package/themes/original/src/components/HelpGuide/index.tsx +8 -3
  155. package/themes/original/src/components/HelpOrder/index.tsx +8 -3
  156. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
  157. package/themes/original/src/components/LoginForm/Otp/index.tsx +3 -2
  158. package/themes/original/src/components/LoginForm/index.tsx +86 -43
  159. package/themes/original/src/components/Messages/index.tsx +17 -17
  160. package/themes/original/src/components/MomentSelector/index.tsx +197 -0
  161. package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
  162. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
  163. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
  164. package/themes/original/src/components/MultiCheckout/index.tsx +304 -0
  165. package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
  166. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
  167. package/themes/original/src/components/MultiOrdersDetails/index.tsx +262 -0
  168. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
  169. package/themes/original/src/components/MyOrders/index.tsx +132 -27
  170. package/themes/original/src/components/MyOrders/styles.tsx +8 -1
  171. package/themes/original/src/components/NavBar/index.tsx +11 -5
  172. package/themes/original/src/components/NotFoundSource/index.tsx +2 -1
  173. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  174. package/themes/original/src/components/OrderDetails/index.tsx +138 -58
  175. package/themes/original/src/components/OrderDetails/styles.tsx +5 -2
  176. package/themes/original/src/components/OrderItAgain/index.tsx +73 -0
  177. package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
  178. package/themes/original/src/components/OrderProgress/index.tsx +8 -2
  179. package/themes/original/src/components/OrderSummary/index.tsx +2 -35
  180. package/themes/original/src/components/OrderTypeSelector/index.tsx +84 -36
  181. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  182. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +140 -0
  183. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
  184. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +56 -0
  185. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
  186. package/themes/original/src/components/OrdersOption/index.tsx +143 -47
  187. package/themes/original/src/components/OrdersOption/styles.tsx +4 -1
  188. package/themes/original/src/components/PaymentOptionWallet/index.tsx +15 -23
  189. package/themes/original/src/components/PaymentOptions/index.tsx +57 -37
  190. package/themes/original/src/components/PhoneInputNumber/index.tsx +4 -10
  191. package/themes/original/src/components/PlaceSpot/index.tsx +243 -47
  192. package/themes/original/src/components/PlaceSpot/styles.tsx +0 -2
  193. package/themes/original/src/components/PreviousOrders/index.tsx +18 -147
  194. package/themes/original/src/components/ProductForm/index.tsx +697 -649
  195. package/themes/original/src/components/ProductForm/styles.tsx +9 -7
  196. package/themes/original/src/components/ProductItemAccordion/index.tsx +38 -25
  197. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  198. package/themes/original/src/components/ProfessionalFilter/index.tsx +128 -0
  199. package/themes/original/src/components/ProfessionalFilter/styles.tsx +0 -0
  200. package/themes/original/src/components/ProfessionalProfile/index.tsx +298 -0
  201. package/themes/original/src/components/ProfessionalProfile/styles.tsx +46 -0
  202. package/themes/original/src/components/ReviewDriver/index.tsx +6 -6
  203. package/themes/original/src/components/ReviewOrder/index.tsx +18 -3
  204. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  205. package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
  206. package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
  207. package/themes/original/src/components/SearchBar/index.tsx +13 -5
  208. package/themes/original/src/components/ServiceForm/index.tsx +579 -0
  209. package/themes/original/src/components/ServiceForm/styles.tsx +50 -0
  210. package/themes/original/src/components/SignupForm/index.tsx +307 -159
  211. package/themes/original/src/components/SingleOrderCard/index.tsx +316 -0
  212. package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
  213. package/themes/original/src/components/SingleProductCard/index.tsx +215 -95
  214. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -2
  215. package/themes/original/src/components/SingleProductReview/index.tsx +30 -3
  216. package/themes/original/src/components/SingleProductReview/styles.tsx +12 -0
  217. package/themes/original/src/components/StripeElementsForm/index.tsx +25 -9
  218. package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
  219. package/themes/original/src/components/UpsellingProducts/index.tsx +7 -3
  220. package/themes/original/src/components/UserDetails/index.tsx +32 -18
  221. package/themes/original/src/components/UserFormDetails/index.tsx +108 -74
  222. package/themes/original/src/components/UserProfile/index.tsx +4 -0
  223. package/themes/original/src/components/UserProfileForm/index.tsx +15 -10
  224. package/themes/original/src/components/UserVerification/index.tsx +178 -192
  225. package/themes/original/src/components/WalletTransactions/index.tsx +76 -0
  226. package/themes/original/src/components/WalletTransactions/styles.tsx +13 -0
  227. package/themes/original/src/components/Wallets/index.tsx +176 -162
  228. package/themes/original/src/components/Wallets/styles.tsx +10 -8
  229. package/themes/original/src/components/shared/OBottomPopup.tsx +47 -14
  230. package/themes/original/src/components/shared/OButton.tsx +10 -3
  231. package/themes/original/src/components/shared/OInput.tsx +3 -2
  232. package/themes/original/src/components/shared/OModal.tsx +4 -2
  233. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  234. package/themes/original/src/types/index.tsx +200 -47
  235. package/themes/original/src/utils/index.tsx +77 -0
  236. 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,12 +401,13 @@ 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
- if (available && reorderState?.result?.uuid) {
406
+ if (available && reorderState?.result?.uuid && (products?.length === order?.products.length)) {
402
407
  onNavigationRedirect && onNavigationRedirect('CheckoutNavigator', { cartUuid: reorderState?.result.uuid })
403
408
  } else {
404
409
  _setStoreData('adjust-cart-products', JSON.stringify(_businessId))
410
+ products?.length !== order?.products.length && _setStoreData('already-removed', JSON.stringify('removed'))
405
411
  navigation.navigate('Business', { store: businessData?.slug })
406
412
  }
407
413
  }
@@ -435,15 +441,32 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
435
441
  'https://res.cloudinary.com/demo/image/upload/c_thumb,g_face,r_max/d_avatar.png/non_existing_id.png',
436
442
  },
437
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)
438
450
 
439
451
  useEffect(() => {
440
452
  if (driverLocation) {
441
- locations[0] = driverLocation;
453
+ parsedLocations[0] = {
454
+ ...locations[0],
455
+ ...driverLocation
456
+ }
442
457
  }
443
458
  }, [driverLocation]);
444
459
 
445
460
  return (
446
- <OrderDetailsContainer keyboardShouldPersistTaps="handled">
461
+ <OrderDetailsContainer
462
+ keyboardShouldPersistTaps="handled"
463
+ refreshControl={
464
+ <RefreshControl
465
+ refreshing={refreshing}
466
+ onRefresh={() => resfreshOrder()}
467
+ />
468
+ }
469
+ >
447
470
  {(!order || Object.keys(order).length === 0) && (
448
471
  <Placeholder style={{ marginTop: 30 }}>
449
472
  <Header>
@@ -505,7 +528,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
505
528
  onActionLeft={handleArrowBack}
506
529
  showCall={false}
507
530
  btnStyle={{ paddingLeft: 0 }}
508
- style={{ flexDirection: 'column', alignItems: 'flex-start', marginTop: Platform.OS === 'ios' ? 0 : 20 }}
531
+ style={{ marginTop: Platform.OS === 'ios' ? 0 : 20 }}
509
532
  titleWrapStyle={{ paddingHorizontal: 0 }}
510
533
  titleStyle={{ marginRight: 0, marginLeft: 0 }}
511
534
  subTitle={<OText size={12} lineHeight={18} color={theme.colors.textNormal}>
@@ -516,28 +539,45 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
516
539
  />
517
540
  <OrderInfo>
518
541
  <OrderData>
519
- {
520
- (
521
- parseInt(order?.status) === 1 ||
522
- parseInt(order?.status) === 11 ||
523
- parseInt(order?.status) === 15
524
- ) && !order.review && !isReviewed && (
525
- <TouchableOpacity
526
- activeOpacity={0.7}
527
- style={{ marginTop: 6 }}
528
- 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)}
529
568
 
569
+ >
570
+ <OText
571
+ size={10}
572
+ lineHeight={15}
573
+ color={theme.colors.primary}
574
+ style={{ textDecorationLine: 'underline', textTransform: 'capitalize' }}
530
575
  >
531
- <OText
532
- size={10}
533
- lineHeight={15}
534
- color={theme.colors.textSecondary}
535
- style={{ textDecorationLine: 'underline' }}
536
- >
537
- {t('REVIEW_YOUR_ORDER', 'Review your order')}
538
- </OText>
539
- </TouchableOpacity>
540
- )}
576
+ {t('VIEW_DETAILS', 'View Details')}
577
+ </OText>
578
+ </TouchableOpacity>
579
+ </View>
580
+
541
581
  <StaturBar>
542
582
  <LinearGradient
543
583
  start={{ x: 0.0, y: 0.0 }}
@@ -644,6 +684,18 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
644
684
  </OText>
645
685
  </View>
646
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
+
647
699
  <View
648
700
  style={{
649
701
  height: 8,
@@ -677,13 +729,15 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
677
729
  mBottom={2}>
678
730
  {order?.customer?.address}
679
731
  </OText>
680
- <OText
681
- size={12}
682
- lineHeight={18}
683
- color={theme.colors.textNormal}
684
- mBottom={2}>
685
- {order?.customer?.cellphone}
686
- </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
+ )}
687
741
  </InfoBlock>
688
742
  </Customer>
689
743
  {order?.delivery_option !== undefined && order?.delivery_type === 1 && (
@@ -696,7 +750,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
696
750
  </OText>
697
751
  </View>
698
752
  )}
699
- {order?.comment && (
753
+ {!!order?.comment && (
700
754
  <View style={{ marginTop: 15 }}>
701
755
  <OText size={16} style={{ textAlign: 'left' }} color={theme.colors.textNormal}>
702
756
  {t('COMMENT', 'Comment')}
@@ -708,7 +762,16 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
708
762
  <>
709
763
  {order?.driver?.location && mapValidStatuses.includes(parseInt(order?.status)) && (
710
764
  <Map>
711
- <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
+ />
712
775
  </Map>
713
776
  )}
714
777
  </>
@@ -1032,7 +1095,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
1032
1095
  )}
1033
1096
  </View>
1034
1097
  <OText>
1035
- -{parsePrice(event.amount)}
1098
+ -{parsePrice(event.amount, { isTruncable: true })}
1036
1099
  </OText>
1037
1100
  </View>
1038
1101
  ))}
@@ -1054,6 +1117,23 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
1054
1117
  products={order?.products}
1055
1118
  />
1056
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>
1057
1137
  </OrderDetailsContainer>
1058
1138
  );
1059
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}