ordering-ui-react-native 0.15.90 → 0.15.91-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 (239) 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 +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/PaymentOptions/index.tsx +335 -365
  20. package/src/components/PaymentOptionsWebView/index.tsx +120 -121
  21. package/src/components/ReviewDriver/index.tsx +1 -1
  22. package/src/components/ReviewOrder/index.tsx +2 -1
  23. package/src/components/ReviewProducts/index.tsx +11 -0
  24. package/src/components/SignupForm/index.tsx +145 -61
  25. package/src/components/SingleProductCard/index.tsx +16 -4
  26. package/src/components/SingleProductReview/index.tsx +1 -1
  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/index.tsx +18 -11
  46. package/src/utils/index.tsx +1 -2
  47. package/themes/business/index.tsx +4 -0
  48. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +1 -1
  49. package/themes/business/src/components/Chat/index.tsx +52 -92
  50. package/themes/business/src/components/DriverMap/index.tsx +6 -5
  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 +89 -2
  54. package/themes/business/src/components/LoginForm/styles.tsx +6 -0
  55. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  56. package/themes/business/src/components/MapView/index.tsx +1 -1
  57. package/themes/business/src/components/MessagesOption/index.tsx +11 -1
  58. package/themes/business/src/components/NewOrderNotification/index.tsx +24 -13
  59. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  60. package/themes/business/src/components/OrderDetails/Delivery.tsx +17 -7
  61. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +26 -18
  62. package/themes/business/src/components/OrdersListManager/index.tsx +10 -3
  63. package/themes/business/src/components/OrdersOption/index.tsx +66 -20
  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 +1 -0
  73. package/themes/business/src/components/PreviousOrders/index.tsx +7 -7
  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 +15 -7
  83. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  84. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  85. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  86. package/themes/kiosk/src/components/BusinessMenu/index.tsx +25 -26
  87. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -3
  88. package/themes/kiosk/src/components/Cart/index.tsx +10 -11
  89. package/themes/kiosk/src/components/CartBottomSheet/index.tsx +9 -2
  90. package/themes/kiosk/src/components/CartContent/index.tsx +0 -11
  91. package/themes/kiosk/src/components/CartItem/index.tsx +4 -3
  92. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +107 -62
  93. package/themes/kiosk/src/components/Checkout/index.tsx +40 -22
  94. package/themes/kiosk/src/components/CustomerName/index.tsx +0 -6
  95. package/themes/kiosk/src/components/DrawerView/index.tsx +1 -0
  96. package/themes/kiosk/src/components/DrawerView/styles.tsx +2 -2
  97. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  98. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  99. package/themes/kiosk/src/components/OrderDetails/index.tsx +2 -2
  100. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +9 -11
  101. package/themes/kiosk/src/components/PaymentOptions/index.tsx +55 -53
  102. package/themes/kiosk/src/components/ProductForm/index.tsx +6 -7
  103. package/themes/kiosk/src/components/ProductOptionSubOption/index.tsx +3 -1
  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 +1 -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 +6 -8
  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 +11 -8
  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 +217 -127
  123. package/themes/original/src/components/BusinessListingSearch/styles.tsx +29 -11
  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 +296 -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 -462
  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 +141 -93
  145. package/themes/original/src/components/Checkout/styles.tsx +0 -1
  146. package/themes/original/src/components/DriverTips/index.tsx +17 -12
  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 +298 -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/Help/index.tsx +21 -4
  154. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +8 -3
  155. package/themes/original/src/components/HelpGuide/index.tsx +8 -3
  156. package/themes/original/src/components/HelpOrder/index.tsx +8 -3
  157. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
  158. package/themes/original/src/components/LastOrders/index.tsx +12 -1
  159. package/themes/original/src/components/LoginForm/Otp/index.tsx +3 -3
  160. package/themes/original/src/components/LoginForm/index.tsx +52 -13
  161. package/themes/original/src/components/LoginForm/styles.tsx +1 -3
  162. package/themes/original/src/components/Messages/index.tsx +17 -17
  163. package/themes/original/src/components/MomentSelector/index.tsx +197 -0
  164. package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
  165. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
  166. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
  167. package/themes/original/src/components/MultiCheckout/index.tsx +304 -0
  168. package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
  169. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
  170. package/themes/original/src/components/MultiOrdersDetails/index.tsx +262 -0
  171. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
  172. package/themes/original/src/components/MyOrders/index.tsx +132 -27
  173. package/themes/original/src/components/MyOrders/styles.tsx +8 -1
  174. package/themes/original/src/components/NavBar/index.tsx +11 -5
  175. package/themes/original/src/components/NotFoundSource/index.tsx +2 -1
  176. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  177. package/themes/original/src/components/OrderDetails/index.tsx +154 -77
  178. package/themes/original/src/components/OrderDetails/styles.tsx +5 -2
  179. package/themes/original/src/components/OrderItAgain/index.tsx +73 -0
  180. package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
  181. package/themes/original/src/components/OrderProgress/index.tsx +8 -2
  182. package/themes/original/src/components/OrderSummary/index.tsx +2 -35
  183. package/themes/original/src/components/OrderTypeSelector/index.tsx +84 -36
  184. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  185. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +140 -0
  186. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
  187. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +53 -0
  188. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
  189. package/themes/original/src/components/OrdersOption/index.tsx +138 -46
  190. package/themes/original/src/components/OrdersOption/styles.tsx +4 -1
  191. package/themes/original/src/components/PaymentOptionCash/index.tsx +2 -2
  192. package/themes/original/src/components/PaymentOptionWallet/index.tsx +15 -22
  193. package/themes/original/src/components/PaymentOptions/index.tsx +57 -37
  194. package/themes/original/src/components/PhoneInputNumber/index.tsx +4 -10
  195. package/themes/original/src/components/PlaceSpot/index.tsx +243 -47
  196. package/themes/original/src/components/PlaceSpot/styles.tsx +0 -2
  197. package/themes/original/src/components/PreviousOrders/index.tsx +18 -147
  198. package/themes/original/src/components/ProductForm/index.tsx +737 -682
  199. package/themes/original/src/components/ProductForm/styles.tsx +9 -7
  200. package/themes/original/src/components/ProductItemAccordion/index.tsx +2 -2
  201. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  202. package/themes/original/src/components/ProductOptionSubOption/index.tsx +13 -9
  203. package/themes/original/src/components/ProfessionalFilter/index.tsx +128 -0
  204. package/themes/original/src/components/ProfessionalFilter/styles.tsx +0 -0
  205. package/themes/original/src/components/ProfessionalProfile/index.tsx +298 -0
  206. package/themes/original/src/components/ProfessionalProfile/styles.tsx +46 -0
  207. package/themes/original/src/components/Promotions/index.tsx +22 -6
  208. package/themes/original/src/components/ReviewDriver/index.tsx +6 -6
  209. package/themes/original/src/components/ReviewOrder/index.tsx +1 -1
  210. package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
  211. package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
  212. package/themes/original/src/components/SearchBar/index.tsx +13 -5
  213. package/themes/original/src/components/ServiceForm/index.tsx +579 -0
  214. package/themes/original/src/components/ServiceForm/styles.tsx +50 -0
  215. package/themes/original/src/components/SignupForm/index.tsx +237 -127
  216. package/themes/original/src/components/SingleOrderCard/index.tsx +316 -0
  217. package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
  218. package/themes/original/src/components/SingleProductCard/index.tsx +204 -95
  219. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -2
  220. package/themes/original/src/components/StripeElementsForm/index.tsx +25 -9
  221. package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
  222. package/themes/original/src/components/UpsellingProducts/index.tsx +7 -3
  223. package/themes/original/src/components/UserDetails/index.tsx +32 -18
  224. package/themes/original/src/components/UserFormDetails/index.tsx +108 -74
  225. package/themes/original/src/components/UserProfile/index.tsx +4 -0
  226. package/themes/original/src/components/UserProfileForm/index.tsx +15 -10
  227. package/themes/original/src/components/UserVerification/index.tsx +178 -192
  228. package/themes/original/src/components/WalletTransactions/index.tsx +76 -0
  229. package/themes/original/src/components/WalletTransactions/styles.tsx +13 -0
  230. package/themes/original/src/components/Wallets/index.tsx +176 -162
  231. package/themes/original/src/components/Wallets/styles.tsx +10 -8
  232. package/themes/original/src/components/shared/OBottomPopup.tsx +47 -14
  233. package/themes/original/src/components/shared/OButton.tsx +10 -3
  234. package/themes/original/src/components/shared/OInput.tsx +3 -2
  235. package/themes/original/src/components/shared/OModal.tsx +4 -2
  236. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  237. package/themes/original/src/types/index.tsx +200 -48
  238. package/themes/original/src/utils/index.tsx +77 -0
  239. 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';
@@ -42,7 +43,9 @@ import { OSRow } from '../OrderSummary/styles';
42
43
  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,
@@ -82,8 +87,14 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
82
87
  justifyContent: 'flex-start',
83
88
  paddingLeft: 0,
84
89
  height: 30,
85
- width: 40,
90
+ width: 30,
91
+ marginTop: Platform.OS === 'ios' ? 0 : 30
86
92
  },
93
+ linkWrapper: {
94
+ display: 'flex',
95
+ alignItems: 'center',
96
+ flexDirection: 'row'
97
+ }
87
98
  });
88
99
 
89
100
  const [, t] = useLanguage();
@@ -92,9 +103,12 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
92
103
  const [{ carts }] = useOrder()
93
104
 
94
105
  const [isReviewed, setIsReviewed] = useState(false)
106
+ const [isOrderHistory, setIsOrderHistory] = useState(false)
95
107
  const [openTaxModal, setOpenTaxModal] = useState<any>({ open: false, tax: null, type: '' })
108
+ const [refreshing] = useState(false);
96
109
  const { order, businessData } = props.order;
97
110
  const mapValidStatuses = [9, 19, 23]
111
+ const placeSpotTypes = [3, 4, 5]
98
112
 
99
113
  const walletName: any = {
100
114
  cash: {
@@ -332,7 +346,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
332
346
  };
333
347
 
334
348
  const getIncludedTaxes = () => {
335
- if (order?.taxes?.length === 0) {
349
+ if (order?.taxes?.length === 0 || !order?.taxes) {
336
350
  return order.tax_type === 1 ? order?.summary?.tax ?? 0 : 0
337
351
  } else {
338
352
  return order?.taxes.reduce((taxIncluded: number, tax: any) => {
@@ -363,26 +377,18 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
363
377
  )
364
378
  }
365
379
 
366
- const RenderGoogleMap = () => {
367
- const driverLocationString = typeof order?.driver?.location?.location === 'string' && order?.driver?.location?.location?.split(',').map((l : string) => l.replace(/[^-.0-9]/g, ''))
368
- const parsedLocations = locations.map(location => typeof location?.location === 'string' ? {
369
- ...location,
370
- lat: parseFloat(location?.location?.split(',')[0].replace(/[^-.0-9]/g, '')),
371
- lng: parseFloat(location?.location?.split(',')[1].replace(/[^-.0-9]/g, ''))
372
- } : 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
+ }
373
388
 
374
- return (
375
- <GoogleMap
376
- location={typeof order?.driver?.location?.location === 'string'
377
- ? {
378
- lat: parseFloat(driverLocationString[0]),
379
- lng: parseFloat(driverLocationString[1]),
380
- } : order?.driver?.location
381
- }
382
- locations={parsedLocations}
383
- readOnly
384
- />
385
- )
389
+
390
+ const resfreshOrder = () => {
391
+ getOrder()
386
392
  }
387
393
 
388
394
  useEffect(() => {
@@ -395,12 +401,13 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
395
401
  }
396
402
  if (!reorderState?.error && reorderState.loading === false && businessData?.id) {
397
403
  const products = carts?.[_businessId]?.products
398
- const available = products.every((product: any) => product.valid === true)
404
+ const available = products?.every((product: any) => product.valid === true)
399
405
 
400
- if (available && reorderState?.result?.uuid) {
406
+ if (available && reorderState?.result?.uuid && (products?.length === order?.products.length)) {
401
407
  onNavigationRedirect && onNavigationRedirect('CheckoutNavigator', { cartUuid: reorderState?.result.uuid })
402
408
  } else {
403
409
  _setStoreData('adjust-cart-products', JSON.stringify(_businessId))
410
+ products?.length !== order?.products.length && _setStoreData('already-removed', JSON.stringify('removed'))
404
411
  navigation.navigate('Business', { store: businessData?.slug })
405
412
  }
406
413
  }
@@ -434,15 +441,32 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
434
441
  'https://res.cloudinary.com/demo/image/upload/c_thumb,g_face,r_max/d_avatar.png/non_existing_id.png',
435
442
  },
436
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)
437
450
 
438
451
  useEffect(() => {
439
452
  if (driverLocation) {
440
- locations[0] = driverLocation;
453
+ parsedLocations[0] = {
454
+ ...locations[0],
455
+ ...driverLocation
456
+ }
441
457
  }
442
458
  }, [driverLocation]);
443
459
 
444
460
  return (
445
- <OrderDetailsContainer keyboardShouldPersistTaps="handled">
461
+ <OrderDetailsContainer
462
+ keyboardShouldPersistTaps="handled"
463
+ refreshControl={
464
+ <RefreshControl
465
+ refreshing={refreshing}
466
+ onRefresh={() => resfreshOrder()}
467
+ />
468
+ }
469
+ >
446
470
  {(!order || Object.keys(order).length === 0) && (
447
471
  <Placeholder style={{ marginTop: 30 }}>
448
472
  <Header>
@@ -498,49 +522,62 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
498
522
  {order && Object.keys(order).length > 0 && (
499
523
  <>
500
524
  <Header>
501
- <OButton
502
- imgLeftSrc={theme.images.general.arrow_left}
503
- imgRightSrc={null}
504
- style={styles.btnBackArrow}
505
- onClick={() => handleArrowBack()}
506
- imgLeftStyle={{ tintColor: theme.colors.disabled }}
525
+ <NavBar
526
+ title={`${t('ORDER', 'Order')} #${order?.id}`}
527
+ titleAlign={'center'}
528
+ onActionLeft={handleArrowBack}
529
+ showCall={false}
530
+ btnStyle={{ paddingLeft: 0 }}
531
+ style={{ marginTop: Platform.OS === 'ios' ? 0 : 20 }}
532
+ titleWrapStyle={{ paddingHorizontal: 0 }}
533
+ titleStyle={{ marginRight: 0, marginLeft: 0 }}
534
+ subTitle={<OText size={12} lineHeight={18} color={theme.colors.textNormal}>
535
+ {order?.delivery_datetime_utc
536
+ ? parseDate(order?.delivery_datetime_utc)
537
+ : parseDate(order?.delivery_datetime, { utc: false })}
538
+ </OText>}
507
539
  />
508
540
  <OrderInfo>
509
541
  <OrderData>
510
- <OText
511
- size={20}
512
- lineHeight={30}
513
- weight={'600'}
514
- color={theme.colors.textNormal}>
515
- {t('ORDER', 'Order')} #{order?.id}
516
- </OText>
517
- <OText size={12} lineHeight={18} color={theme.colors.textNormal}>
518
- {order?.delivery_datetime_utc
519
- ? parseDate(order?.delivery_datetime_utc)
520
- : parseDate(order?.delivery_datetime, { utc: false })}
521
- </OText>
522
- {
523
- (
524
- parseInt(order?.status) === 1 ||
525
- parseInt(order?.status) === 11 ||
526
- parseInt(order?.status) === 15
527
- ) && !order.review && !isReviewed && (
528
- <TouchableOpacity
529
- activeOpacity={0.7}
530
- style={{ marginTop: 6 }}
531
- 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)}
532
568
 
569
+ >
570
+ <OText
571
+ size={10}
572
+ lineHeight={15}
573
+ color={theme.colors.primary}
574
+ style={{ textDecorationLine: 'underline', textTransform: 'capitalize' }}
533
575
  >
534
- <OText
535
- size={10}
536
- lineHeight={15}
537
- color={theme.colors.textSecondary}
538
- style={{ textDecorationLine: 'underline' }}
539
- >
540
- {t('REVIEW_YOUR_ORDER', 'Review your order')}
541
- </OText>
542
- </TouchableOpacity>
543
- )}
576
+ {t('VIEW_DETAILS', 'View Details')}
577
+ </OText>
578
+ </TouchableOpacity>
579
+ </View>
580
+
544
581
  <StaturBar>
545
582
  <LinearGradient
546
583
  start={{ x: 0.0, y: 0.0 }}
@@ -647,6 +684,18 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
647
684
  </OText>
648
685
  </View>
649
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
+
650
699
  <View
651
700
  style={{
652
701
  height: 8,
@@ -680,13 +729,15 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
680
729
  mBottom={2}>
681
730
  {order?.customer?.address}
682
731
  </OText>
683
- <OText
684
- size={12}
685
- lineHeight={18}
686
- color={theme.colors.textNormal}
687
- mBottom={2}>
688
- {order?.customer?.cellphone}
689
- </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
+ )}
690
741
  </InfoBlock>
691
742
  </Customer>
692
743
  {order?.delivery_option !== undefined && order?.delivery_type === 1 && (
@@ -699,7 +750,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
699
750
  </OText>
700
751
  </View>
701
752
  )}
702
- {order?.comment && (
753
+ {!!order?.comment && (
703
754
  <View style={{ marginTop: 15 }}>
704
755
  <OText size={16} style={{ textAlign: 'left' }} color={theme.colors.textNormal}>
705
756
  {t('COMMENT', 'Comment')}
@@ -711,7 +762,16 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
711
762
  <>
712
763
  {order?.driver?.location && mapValidStatuses.includes(parseInt(order?.status)) && (
713
764
  <Map>
714
- <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
+ />
715
775
  </Map>
716
776
  )}
717
777
  </>
@@ -1035,7 +1095,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
1035
1095
  )}
1036
1096
  </View>
1037
1097
  <OText>
1038
- -{parsePrice(event.amount)}
1098
+ -{parsePrice(event.amount, { isTruncable: true })}
1039
1099
  </OText>
1040
1100
  </View>
1041
1101
  ))}
@@ -1057,6 +1117,23 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
1057
1117
  products={order?.products}
1058
1118
  />
1059
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>
1060
1137
  </OrderDetailsContainer>
1061
1138
  );
1062
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}