ordering-ui-react-native 0.15.86 → 0.15.87-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 +28 -29
  47. package/themes/business/index.tsx +4 -0
  48. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +100 -60
  49. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
  50. package/themes/business/src/components/Chat/index.tsx +52 -92
  51. package/themes/business/src/components/DriverMap/index.tsx +6 -5
  52. package/themes/business/src/components/DriverSchedule/index.tsx +71 -0
  53. package/themes/business/src/components/DriverSchedule/styles.tsx +6 -0
  54. package/themes/business/src/components/LoginForm/index.tsx +89 -2
  55. package/themes/business/src/components/LoginForm/styles.tsx +6 -0
  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/NewOrderNotification/index.tsx +26 -13
  60. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  61. package/themes/business/src/components/OrderDetails/Delivery.tsx +17 -7
  62. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +26 -18
  63. package/themes/business/src/components/OrdersListManager/index.tsx +11 -4
  64. package/themes/business/src/components/OrdersOption/index.tsx +66 -20
  65. package/themes/business/src/components/OrdersOption/styles.tsx +5 -1
  66. package/themes/business/src/components/OrdersOptionBusiness/index.tsx +15 -1
  67. package/themes/business/src/components/OrdersOptionCity/index.tsx +15 -1
  68. package/themes/business/src/components/OrdersOptionDate/index.tsx +19 -6
  69. package/themes/business/src/components/OrdersOptionDelivery/index.tsx +15 -1
  70. package/themes/business/src/components/OrdersOptionDriver/index.tsx +15 -1
  71. package/themes/business/src/components/OrdersOptionPaymethod/index.tsx +15 -1
  72. package/themes/business/src/components/OrdersOptionStatus/index.tsx +10 -1
  73. package/themes/business/src/components/PreviousMessages/index.tsx +1 -0
  74. package/themes/business/src/components/PreviousOrders/index.tsx +7 -7
  75. package/themes/business/src/components/ProductItemAccordion/index.tsx +5 -4
  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 +26 -33
  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 +104 -462
  141. package/themes/original/src/components/Cart/index.tsx +83 -38
  142. package/themes/original/src/components/Cart/styles.tsx +4 -0
  143. package/themes/original/src/components/CartContent/index.tsx +3 -3
  144. package/themes/original/src/components/Checkout/index.tsx +128 -67
  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/ForgotPasswordForm/index.tsx +13 -4
  152. package/themes/original/src/components/GPSButton/index.tsx +25 -17
  153. package/themes/original/src/components/GoogleMap/index.tsx +11 -11
  154. package/themes/original/src/components/Help/index.tsx +21 -4
  155. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +8 -3
  156. package/themes/original/src/components/HelpGuide/index.tsx +8 -3
  157. package/themes/original/src/components/HelpOrder/index.tsx +8 -3
  158. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
  159. package/themes/original/src/components/LastOrders/index.tsx +12 -1
  160. package/themes/original/src/components/LoginForm/Otp/index.tsx +3 -3
  161. package/themes/original/src/components/LoginForm/index.tsx +52 -13
  162. package/themes/original/src/components/LoginForm/styles.tsx +1 -3
  163. package/themes/original/src/components/Messages/index.tsx +17 -17
  164. package/themes/original/src/components/MomentSelector/index.tsx +197 -0
  165. package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
  166. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
  167. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
  168. package/themes/original/src/components/MultiCheckout/index.tsx +304 -0
  169. package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
  170. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
  171. package/themes/original/src/components/MultiOrdersDetails/index.tsx +262 -0
  172. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
  173. package/themes/original/src/components/MyOrders/index.tsx +132 -27
  174. package/themes/original/src/components/MyOrders/styles.tsx +8 -1
  175. package/themes/original/src/components/NavBar/index.tsx +11 -5
  176. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  177. package/themes/original/src/components/OrderDetails/index.tsx +153 -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 -126
  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 +197 -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 +5 -1
  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 +177 -163
  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 +199 -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();
@@ -82,8 +86,14 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
82
86
  justifyContent: 'flex-start',
83
87
  paddingLeft: 0,
84
88
  height: 30,
85
- width: 40,
89
+ width: 30,
90
+ marginTop: Platform.OS === 'ios' ? 0 : 30
86
91
  },
92
+ linkWrapper: {
93
+ display: 'flex',
94
+ alignItems: 'center',
95
+ flexDirection: 'row'
96
+ }
87
97
  });
88
98
 
89
99
  const [, t] = useLanguage();
@@ -92,9 +102,12 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
92
102
  const [{ carts }] = useOrder()
93
103
 
94
104
  const [isReviewed, setIsReviewed] = useState(false)
105
+ const [isOrderHistory, setIsOrderHistory] = useState(false)
95
106
  const [openTaxModal, setOpenTaxModal] = useState<any>({ open: false, tax: null, type: '' })
107
+ const [refreshing] = useState(false);
96
108
  const { order, businessData } = props.order;
97
109
  const mapValidStatuses = [9, 19, 23]
110
+ const placeSpotTypes = [3, 4, 5]
98
111
 
99
112
  const walletName: any = {
100
113
  cash: {
@@ -332,7 +345,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
332
345
  };
333
346
 
334
347
  const getIncludedTaxes = () => {
335
- if (order?.taxes?.length === 0) {
348
+ if (order?.taxes?.length === 0 || !order?.taxes) {
336
349
  return order.tax_type === 1 ? order?.summary?.tax ?? 0 : 0
337
350
  } else {
338
351
  return order?.taxes.reduce((taxIncluded: number, tax: any) => {
@@ -363,26 +376,18 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
363
376
  )
364
377
  }
365
378
 
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)
379
+ const handleTriggerReview = () => {
380
+ setIsOrderHistory(false);
381
+ (
382
+ parseInt(order?.status) === 1 ||
383
+ parseInt(order?.status) === 11 ||
384
+ parseInt(order?.status) === 15
385
+ ) && !order.review && !isReviewed && handleClickOrderReview(order)
386
+ }
373
387
 
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
- )
388
+
389
+ const resfreshOrder = () => {
390
+ getOrder()
386
391
  }
387
392
 
388
393
  useEffect(() => {
@@ -395,12 +400,13 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
395
400
  }
396
401
  if (!reorderState?.error && reorderState.loading === false && businessData?.id) {
397
402
  const products = carts?.[_businessId]?.products
398
- const available = products.every((product: any) => product.valid === true)
403
+ const available = products?.every((product: any) => product.valid === true)
399
404
 
400
- if (available && reorderState?.result?.uuid) {
405
+ if (available && reorderState?.result?.uuid && (products?.length === order?.products.length)) {
401
406
  onNavigationRedirect && onNavigationRedirect('CheckoutNavigator', { cartUuid: reorderState?.result.uuid })
402
407
  } else {
403
408
  _setStoreData('adjust-cart-products', JSON.stringify(_businessId))
409
+ products?.length !== order?.products.length && _setStoreData('already-removed', JSON.stringify('removed'))
404
410
  navigation.navigate('Business', { store: businessData?.slug })
405
411
  }
406
412
  }
@@ -434,15 +440,32 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
434
440
  'https://res.cloudinary.com/demo/image/upload/c_thumb,g_face,r_max/d_avatar.png/non_existing_id.png',
435
441
  },
436
442
  ];
443
+ const driverLocationString = typeof order?.driver?.location?.location === 'string' && order?.driver?.location?.location?.split(',').map((l: string) => l.replace(/[^-.0-9]/g, ''))
444
+ const parsedLocations = locations.map(location => typeof location?.location === 'string' ? {
445
+ ...location,
446
+ lat: parseFloat(location?.location?.split(',')[0].replace(/[^-.0-9]/g, '')),
447
+ lng: parseFloat(location?.location?.split(',')[1].replace(/[^-.0-9]/g, ''))
448
+ } : location)
437
449
 
438
450
  useEffect(() => {
439
451
  if (driverLocation) {
440
- locations[0] = driverLocation;
452
+ parsedLocations[0] = {
453
+ ...locations[0],
454
+ ...driverLocation
455
+ }
441
456
  }
442
457
  }, [driverLocation]);
443
458
 
444
459
  return (
445
- <OrderDetailsContainer keyboardShouldPersistTaps="handled">
460
+ <OrderDetailsContainer
461
+ keyboardShouldPersistTaps="handled"
462
+ refreshControl={
463
+ <RefreshControl
464
+ refreshing={refreshing}
465
+ onRefresh={() => resfreshOrder()}
466
+ />
467
+ }
468
+ >
446
469
  {(!order || Object.keys(order).length === 0) && (
447
470
  <Placeholder style={{ marginTop: 30 }}>
448
471
  <Header>
@@ -498,49 +521,62 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
498
521
  {order && Object.keys(order).length > 0 && (
499
522
  <>
500
523
  <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 }}
524
+ <NavBar
525
+ title={`${t('ORDER', 'Order')} #${order?.id}`}
526
+ titleAlign={'center'}
527
+ onActionLeft={handleArrowBack}
528
+ showCall={false}
529
+ btnStyle={{ paddingLeft: 0 }}
530
+ style={{ marginTop: Platform.OS === 'ios' ? 0 : 20 }}
531
+ titleWrapStyle={{ paddingHorizontal: 0 }}
532
+ titleStyle={{ marginRight: 0, marginLeft: 0 }}
533
+ subTitle={<OText size={12} lineHeight={18} color={theme.colors.textNormal}>
534
+ {order?.delivery_datetime_utc
535
+ ? parseDate(order?.delivery_datetime_utc)
536
+ : parseDate(order?.delivery_datetime, { utc: false })}
537
+ </OText>}
507
538
  />
508
539
  <OrderInfo>
509
540
  <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)}
541
+ <View style={styles.linkWrapper}>
542
+ {
543
+ (
544
+ parseInt(order?.status) === 1 ||
545
+ parseInt(order?.status) === 11 ||
546
+ parseInt(order?.status) === 15
547
+ ) && !order.review && !isReviewed && (
548
+ <TouchableOpacity
549
+ activeOpacity={0.7}
550
+ style={{ marginTop: 6, marginRight: 10 }}
551
+ onPress={() => handleClickOrderReview(order)}
552
+ >
553
+ <OText
554
+ size={10}
555
+ lineHeight={15}
556
+ color={theme.colors.primary}
557
+ style={{ textDecorationLine: 'underline' }}
558
+ >
559
+ {t('REVIEW_YOUR_ORDER', 'Review your order')}
560
+ </OText>
561
+ </TouchableOpacity>
562
+ )}
563
+ <TouchableOpacity
564
+ activeOpacity={0.7}
565
+ style={{ marginTop: 6 }}
566
+ onPress={() => setIsOrderHistory(true)}
532
567
 
568
+ >
569
+ <OText
570
+ size={10}
571
+ lineHeight={15}
572
+ color={theme.colors.primary}
573
+ style={{ textDecorationLine: 'underline', textTransform: 'capitalize' }}
533
574
  >
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
- )}
575
+ {t('VIEW_DETAILS', 'View Details')}
576
+ </OText>
577
+ </TouchableOpacity>
578
+ </View>
579
+
544
580
  <StaturBar>
545
581
  <LinearGradient
546
582
  start={{ x: 0.0, y: 0.0 }}
@@ -647,6 +683,18 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
647
683
  </OText>
648
684
  </View>
649
685
  </OrderBusiness>
686
+
687
+ {placeSpotTypes.includes(order?.delivery_type) && (
688
+ <PlaceSpotWrapper>
689
+ <PlaceSpot
690
+ isInputMode
691
+ cart={order}
692
+ spotNumberDefault={order?.spot_number}
693
+ vehicleDefault={order?.vehicle}
694
+ />
695
+ </PlaceSpotWrapper>
696
+ )}
697
+
650
698
  <View
651
699
  style={{
652
700
  height: 8,
@@ -680,13 +728,15 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
680
728
  mBottom={2}>
681
729
  {order?.customer?.address}
682
730
  </OText>
683
- <OText
684
- size={12}
685
- lineHeight={18}
686
- color={theme.colors.textNormal}
687
- mBottom={2}>
688
- {order?.customer?.cellphone}
689
- </OText>
731
+ {(!!order?.customer?.cellphone) && (
732
+ <OText
733
+ size={12}
734
+ lineHeight={18}
735
+ color={theme.colors.textNormal}
736
+ mBottom={2}>
737
+ {`${!!order?.customer?.country_phone_code ? '+' + order?.customer?.country_phone_code : ''} ${order?.customer?.cellphone}`}
738
+ </OText>
739
+ )}
690
740
  </InfoBlock>
691
741
  </Customer>
692
742
  {order?.delivery_option !== undefined && order?.delivery_type === 1 && (
@@ -699,7 +749,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
699
749
  </OText>
700
750
  </View>
701
751
  )}
702
- {order?.comment && (
752
+ {!!order?.comment && (
703
753
  <View style={{ marginTop: 15 }}>
704
754
  <OText size={16} style={{ textAlign: 'left' }} color={theme.colors.textNormal}>
705
755
  {t('COMMENT', 'Comment')}
@@ -711,7 +761,16 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
711
761
  <>
712
762
  {order?.driver?.location && mapValidStatuses.includes(parseInt(order?.status)) && (
713
763
  <Map>
714
- <RenderGoogleMap />
764
+ <GoogleMap
765
+ location={typeof order?.driver?.location?.location === 'string'
766
+ ? {
767
+ lat: parseFloat(driverLocationString[0]),
768
+ lng: parseFloat(driverLocationString[1]),
769
+ } : driverLocation ?? order?.driver?.location
770
+ }
771
+ locations={parsedLocations}
772
+ readOnly
773
+ />
715
774
  </Map>
716
775
  )}
717
776
  </>
@@ -1035,7 +1094,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
1035
1094
  )}
1036
1095
  </View>
1037
1096
  <OText>
1038
- -{parsePrice(event.amount)}
1097
+ -{parsePrice(event.amount, { isTruncable: true })}
1039
1098
  </OText>
1040
1099
  </View>
1041
1100
  ))}
@@ -1057,6 +1116,23 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
1057
1116
  products={order?.products}
1058
1117
  />
1059
1118
  </OModal>
1119
+ <OModal
1120
+ open={isOrderHistory}
1121
+ onClose={() => setIsOrderHistory(false)}
1122
+ entireModal
1123
+ >
1124
+ <OrderHistory
1125
+ order={order}
1126
+ messages={messages}
1127
+ enableReview={(
1128
+ parseInt(order?.status) === 1 ||
1129
+ parseInt(order?.status) === 11 ||
1130
+ parseInt(order?.status) === 15
1131
+ ) && !order.review && !isReviewed}
1132
+ onClose={() => setIsOrderHistory(false)}
1133
+ handleTriggerReview={handleTriggerReview}
1134
+ />
1135
+ </OModal>
1060
1136
  </OrderDetailsContainer>
1061
1137
  );
1062
1138
  };
@@ -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}