ordering-ui-react-native 0.17.76 → 0.17.77-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 (225) hide show
  1. package/package.json +8 -7
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessInformation/index.tsx +10 -9
  4. package/src/components/BusinessesListing/index.tsx +1 -1
  5. package/src/components/OrderCreating/index.tsx +1 -21
  6. package/src/components/PaymentOptionsWebView/index.tsx +29 -8
  7. package/src/components/PhoneInputNumber/index.tsx +6 -2
  8. package/src/components/StripeMethodForm/index.tsx +136 -102
  9. package/src/components/VerifyPhone/styles.tsx +1 -2
  10. package/src/components/shared/OToast.tsx +3 -2
  11. package/src/types/index.tsx +5 -0
  12. package/src/utils/index.tsx +5 -0
  13. package/themes/business/index.tsx +2 -0
  14. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +28 -25
  15. package/themes/business/src/components/BusinessController/index.tsx +0 -1
  16. package/themes/business/src/components/Chat/index.tsx +149 -118
  17. package/themes/business/src/components/DriverMap/index.tsx +17 -6
  18. package/themes/business/src/components/DriverSchedule/index.tsx +45 -8
  19. package/themes/business/src/components/GoogleMap/index.tsx +58 -57
  20. package/themes/business/src/components/LoginForm/Otp/index.tsx +31 -3
  21. package/themes/business/src/components/LoginForm/index.tsx +15 -22
  22. package/themes/business/src/components/MapView/index.tsx +10 -10
  23. package/themes/business/src/components/MessagesOption/index.tsx +20 -93
  24. package/themes/business/src/components/NewOrderNotification/index.tsx +128 -96
  25. package/themes/business/src/components/NotFoundSource/index.tsx +2 -2
  26. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  27. package/themes/business/src/components/OrderDetails/Delivery.tsx +191 -6
  28. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +102 -40
  29. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +70 -67
  30. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +195 -0
  31. package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
  32. package/themes/business/src/components/OrderMessage/index.tsx +19 -18
  33. package/themes/business/src/components/OrderSummary/index.tsx +114 -123
  34. package/themes/business/src/components/OrdersOption/index.tsx +20 -22
  35. package/themes/business/src/components/PreviousMessages/FooterMessageComponent.tsx +103 -0
  36. package/themes/business/src/components/PreviousMessages/index.tsx +97 -55
  37. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +17 -12
  38. package/themes/business/src/components/PreviousOrders/OrderList.tsx +88 -0
  39. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +1 -1
  40. package/themes/business/src/components/PreviousOrders/index.tsx +139 -174
  41. package/themes/business/src/components/ProductItemAccordion/index.tsx +27 -3
  42. package/themes/business/src/components/ReviewCustomer/index.tsx +18 -13
  43. package/themes/business/src/components/StoresList/index.tsx +3 -4
  44. package/themes/business/src/components/UserProfileForm/index.tsx +14 -15
  45. package/themes/business/src/components/shared/OLink.tsx +9 -2
  46. package/themes/business/src/components/shared/OModal.tsx +16 -9
  47. package/themes/business/src/components/shared/OText.tsx +6 -1
  48. package/themes/business/src/types/index.tsx +25 -10
  49. package/themes/business/src/utils/index.tsx +29 -2
  50. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  51. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  52. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  53. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  54. package/themes/kiosk/src/components/Intro/index.tsx +16 -1
  55. package/themes/kiosk/src/components/LoginForm/index.tsx +7 -9
  56. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  57. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  58. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  59. package/themes/kiosk/src/components/PhoneInputNumber/index.tsx +2 -2
  60. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  61. package/themes/original/index.tsx +1 -1
  62. package/themes/original/src/components/AddressDetails/index.tsx +19 -3
  63. package/themes/original/src/components/AddressForm/index.tsx +61 -39
  64. package/themes/original/src/components/AddressList/index.tsx +11 -6
  65. package/themes/original/src/components/AnalyticsSegment/index.tsx +193 -10
  66. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  67. package/themes/original/src/components/AppleLogin/styles.tsx +3 -1
  68. package/themes/original/src/components/BusinessBasicInformation/index.tsx +153 -96
  69. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +10 -12
  70. package/themes/original/src/components/BusinessController/index.tsx +81 -68
  71. package/themes/original/src/components/BusinessController/styles.tsx +12 -5
  72. package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
  73. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
  74. package/themes/original/src/components/BusinessInformation/index.tsx +140 -85
  75. package/themes/original/src/components/BusinessItemAccordion/index.tsx +15 -20
  76. package/themes/original/src/components/BusinessListingSearch/index.tsx +348 -340
  77. package/themes/original/src/components/BusinessListingSearch/styles.tsx +0 -18
  78. package/themes/original/src/components/BusinessPreorder/index.tsx +103 -19
  79. package/themes/original/src/components/BusinessProductsCategories/index.tsx +1 -2
  80. package/themes/original/src/components/BusinessProductsList/index.tsx +15 -7
  81. package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
  82. package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +1 -1
  83. package/themes/original/src/components/BusinessProductsListing/index.tsx +684 -559
  84. package/themes/original/src/components/BusinessProductsListing/styles.tsx +1 -1
  85. package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
  86. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +70 -39
  87. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +0 -1
  88. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  89. package/themes/original/src/components/Cart/index.tsx +76 -79
  90. package/themes/original/src/components/CartContent/index.tsx +112 -19
  91. package/themes/original/src/components/CartContent/styles.tsx +16 -6
  92. package/themes/original/src/components/Checkout/index.tsx +294 -56
  93. package/themes/original/src/components/CitiesControl/index.tsx +1 -1
  94. package/themes/original/src/components/CouponControl/index.tsx +10 -3
  95. package/themes/original/src/components/DriverTips/index.tsx +52 -34
  96. package/themes/original/src/components/FacebookLogin/styles.tsx +3 -1
  97. package/themes/original/src/components/Favorite/index.tsx +2 -6
  98. package/themes/original/src/components/FavoriteList/index.tsx +1 -35
  99. package/themes/original/src/components/FloatingButton/index.tsx +10 -13
  100. package/themes/original/src/components/GPSButton/index.tsx +6 -4
  101. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +7 -3
  102. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +2 -0
  103. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +19 -6
  104. package/themes/original/src/components/GoogleLogin/styles.tsx +1 -1
  105. package/themes/original/src/components/GoogleMap/index.tsx +60 -5
  106. package/themes/original/src/components/Help/index.tsx +2 -2
  107. package/themes/original/src/components/HelpGuide/index.tsx +2 -2
  108. package/themes/original/src/components/HelpGuide/styles.tsx +1 -0
  109. package/themes/original/src/components/Home/index.tsx +13 -4
  110. package/themes/original/src/components/LastOrder/index.tsx +1 -34
  111. package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -25
  112. package/themes/original/src/components/LoginForm/index.tsx +64 -34
  113. package/themes/original/src/components/LottieAnimation/index.tsx +88 -63
  114. package/themes/original/src/components/MessageListing/index.tsx +16 -42
  115. package/themes/original/src/components/Messages/index.tsx +14 -7
  116. package/themes/original/src/components/MomentOption/index.tsx +193 -90
  117. package/themes/original/src/components/MomentSelector/index.tsx +1 -1
  118. package/themes/original/src/components/MultiCart/index.tsx +41 -54
  119. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +162 -50
  120. package/themes/original/src/components/MultiCheckout/index.tsx +329 -100
  121. package/themes/original/src/components/MultiCheckout/styles.tsx +3 -1
  122. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +37 -224
  123. package/themes/original/src/components/MultiOrdersDetails/index.tsx +54 -21
  124. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +1 -1
  125. package/themes/original/src/components/MyOrders/index.tsx +37 -24
  126. package/themes/original/src/components/NavBar/index.tsx +20 -12
  127. package/themes/original/src/components/NotFoundSource/index.tsx +14 -10
  128. package/themes/original/src/components/Notifications/styles.tsx +1 -5
  129. package/themes/original/src/components/OrderDetails/OrderEta.tsx +76 -0
  130. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +21 -5
  131. package/themes/original/src/components/OrderDetails/index.tsx +139 -306
  132. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  133. package/themes/original/src/components/OrderItAgain/index.tsx +3 -1
  134. package/themes/original/src/components/OrderProgress/index.tsx +33 -57
  135. package/themes/original/src/components/OrderSummary/index.tsx +83 -57
  136. package/themes/original/src/components/OrderTypeSelector/index.tsx +2 -1
  137. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +14 -14
  138. package/themes/original/src/components/OrdersOption/index.tsx +61 -81
  139. package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
  140. package/themes/original/src/components/PageBanner/index.tsx +98 -38
  141. package/themes/original/src/components/PageBanner/styles.tsx +0 -10
  142. package/themes/original/src/components/PaymentOptionCard/index.tsx +180 -0
  143. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
  144. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  145. package/themes/original/src/components/PaymentOptions/index.tsx +95 -33
  146. package/themes/original/src/components/PhoneInputNumber/index.tsx +18 -4
  147. package/themes/original/src/components/ProductForm/index.tsx +103 -40
  148. package/themes/original/src/components/ProductForm/styles.tsx +3 -3
  149. package/themes/original/src/components/ProductItemAccordion/index.tsx +8 -6
  150. package/themes/original/src/components/ProductOptionSubOption/index.tsx +50 -21
  151. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +10 -9
  152. package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
  153. package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -50
  154. package/themes/original/src/components/ProfessionalProfile/index.tsx +36 -7
  155. package/themes/original/src/components/Promotions/index.tsx +2 -2
  156. package/themes/original/src/components/Promotions/styles.tsx +3 -1
  157. package/themes/original/src/components/ReviewProducts/index.tsx +16 -7
  158. package/themes/original/src/components/ScheduleAccordion/index.tsx +3 -3
  159. package/themes/original/src/components/ServiceForm/index.tsx +63 -20
  160. package/themes/original/src/components/Sessions/index.tsx +11 -8
  161. package/themes/original/src/components/Sessions/styles.tsx +5 -0
  162. package/themes/original/src/components/SignupForm/index.tsx +43 -27
  163. package/themes/original/src/components/SingleOrderCard/index.tsx +102 -63
  164. package/themes/original/src/components/SingleOrderCard/styles.tsx +1 -1
  165. package/themes/original/src/components/SingleProductCard/index.tsx +72 -31
  166. package/themes/original/src/components/SingleProductCard/styles.tsx +20 -4
  167. package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
  168. package/themes/original/src/components/StripeCardsList/index.tsx +49 -5
  169. package/themes/original/src/components/StripeElementsForm/index.tsx +48 -34
  170. package/themes/original/src/components/StripeElementsForm/naked.tsx +12 -1
  171. package/themes/original/src/components/UpsellingProducts/index.tsx +238 -224
  172. package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
  173. package/themes/original/src/components/UserDetails/index.tsx +3 -1
  174. package/themes/original/src/components/UserFormDetails/index.tsx +78 -9
  175. package/themes/original/src/components/UserFormDetails/styles.tsx +1 -1
  176. package/themes/original/src/components/UserProfile/index.tsx +87 -76
  177. package/themes/original/src/components/UserProfileForm/index.tsx +10 -3
  178. package/themes/original/src/components/UserProfileForm/styles.tsx +1 -1
  179. package/themes/original/src/components/UserVerification/index.tsx +55 -50
  180. package/themes/original/src/components/WalletTransactionItem/index.tsx +2 -2
  181. package/themes/original/src/components/WalletTransactions/index.tsx +3 -3
  182. package/themes/original/src/components/Wallets/index.tsx +56 -33
  183. package/themes/original/src/components/Wallets/styles.tsx +3 -4
  184. package/themes/original/src/components/shared/OButton.tsx +6 -2
  185. package/themes/original/src/components/shared/OInput.tsx +6 -1
  186. package/themes/original/src/components/shared/OModal.tsx +3 -3
  187. package/themes/original/src/types/index.tsx +39 -10
  188. package/themes/original/src/utils/index.tsx +386 -1
  189. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
  190. package/src/navigators/BottomNavigator.tsx +0 -117
  191. package/src/navigators/CheckoutNavigator.tsx +0 -66
  192. package/src/navigators/HomeNavigator.tsx +0 -202
  193. package/src/navigators/NavigationRef.tsx +0 -7
  194. package/src/navigators/RootNavigator.tsx +0 -269
  195. package/src/pages/Account.tsx +0 -34
  196. package/src/pages/AddressForm.tsx +0 -62
  197. package/src/pages/AddressList.tsx +0 -24
  198. package/src/pages/BusinessProductsList.tsx +0 -81
  199. package/src/pages/BusinessesListing.tsx +0 -43
  200. package/src/pages/CartList.tsx +0 -49
  201. package/src/pages/Checkout.tsx +0 -101
  202. package/src/pages/ForgotPassword.tsx +0 -24
  203. package/src/pages/Help.tsx +0 -23
  204. package/src/pages/HelpAccountAndPayment.tsx +0 -23
  205. package/src/pages/HelpGuide.tsx +0 -23
  206. package/src/pages/HelpOrder.tsx +0 -23
  207. package/src/pages/Home.tsx +0 -36
  208. package/src/pages/IntroductoryTutorial.tsx +0 -170
  209. package/src/pages/Login.tsx +0 -47
  210. package/src/pages/MomentOption.tsx +0 -30
  211. package/src/pages/MultiCheckout.tsx +0 -31
  212. package/src/pages/MultiOrdersDetails.tsx +0 -27
  213. package/src/pages/MyOrders.tsx +0 -40
  214. package/src/pages/NetworkError.tsx +0 -24
  215. package/src/pages/NotFound.tsx +0 -22
  216. package/src/pages/OrderDetails.tsx +0 -25
  217. package/src/pages/ProductDetails.tsx +0 -55
  218. package/src/pages/Profile.tsx +0 -36
  219. package/src/pages/ReviewDriver.tsx +0 -30
  220. package/src/pages/ReviewOrder.tsx +0 -32
  221. package/src/pages/ReviewProducts.tsx +0 -30
  222. package/src/pages/Sessions.tsx +0 -22
  223. package/src/pages/Signup.tsx +0 -53
  224. package/src/pages/SpinnerLoader.tsx +0 -10
  225. package/src/pages/Splash.tsx +0 -21
@@ -1,6 +1,6 @@
1
- import React, { useState } from 'react'
1
+ import React, { useState, useCallback } from 'react'
2
2
 
3
- import { Platform, StyleSheet, View } from 'react-native';
3
+ import { Platform, StyleSheet, View, TouchableOpacity, ScrollView } from 'react-native';
4
4
 
5
5
  import { OButton, OText, OLink, OModal } from '../shared'
6
6
  import {
@@ -16,18 +16,23 @@ import {
16
16
 
17
17
  import { ProductItemAccordion } from '../ProductItemAccordion';
18
18
 
19
- import { verifyDecimals } from '../../utils';
19
+ import { verifyDecimals, calculateDistance, transformDistance } from '../../utils';
20
20
 
21
21
  import {
22
22
  useLanguage,
23
23
  useUtils,
24
24
  useConfig,
25
+ useSession
25
26
  } from 'ordering-components/native';
26
27
  import { useTheme } from 'styled-components/native';
27
28
  import { ReviewCustomer } from '../ReviewCustomer'
28
29
 
29
30
  import MaterialIcon from 'react-native-vector-icons/MaterialCommunityIcons'
30
31
 
32
+ import { DeviceOrientationMethods } from '../../../../../src/hooks/DeviceOrientation'
33
+
34
+ const { useDeviceOrientation } = DeviceOrientationMethods
35
+
31
36
  interface OrderContent {
32
37
  order: any,
33
38
  logisticOrderStatus?: Array<number>,
@@ -38,12 +43,26 @@ interface OrderContent {
38
43
  export const OrderContentComponent = (props: OrderContent) => {
39
44
  const [, t] = useLanguage();
40
45
  const theme = useTheme()
41
-
46
+ const [{ user }] = useSession()
42
47
  const { order, logisticOrderStatus, isOrderGroup, lastOrder } = props;
43
48
  const [{ parsePrice, parseNumber }] = useUtils();
44
49
  const [{ configs }] = useConfig();
50
+ const [orientationState] = useDeviceOrientation();
51
+ const distanceUnit = configs?.distance_unit?.value
52
+
53
+ const WIDTH_SCREEN = orientationState?.dimensions?.width
54
+
45
55
  const [openReviewModal, setOpenReviewModal] = useState(false)
46
56
 
57
+ const [isReadMore, setIsReadMore] = useState({
58
+ customerAddress: false,
59
+ businessAddressNotes: false
60
+ })
61
+ const [lengthMore, setLengthMore] = useState({
62
+ customerAddress: false,
63
+ businessAddressNotes: false
64
+ })
65
+
47
66
  const pastOrderStatuses = [1, 2, 5, 6, 10, 11, 12, 16, 17]
48
67
 
49
68
  const walletName: any = {
@@ -95,10 +114,21 @@ export const OrderContentComponent = (props: OrderContent) => {
95
114
  return /^\d+$/.test(str);
96
115
  }
97
116
 
117
+ const onTextLayout = useCallback((e: any, item: string) => {
118
+ if (item === 'customerAddress') {
119
+ const customerAddressMore = (e.nativeEvent.lines.length == 2 && e.nativeEvent.lines[1].width > WIDTH_SCREEN * .76) || e.nativeEvent.lines.length > 2
120
+ setLengthMore(prev => ({ ...prev, customerAddress: customerAddressMore }))
121
+ }
122
+ if (item === 'businessAddressNotes') {
123
+ const businessAddressNotesMore = (e.nativeEvent.lines.length == 3 && e.nativeEvent.lines[2].width > WIDTH_SCREEN * .76) || e.nativeEvent.lines.length > 3
124
+ setLengthMore(prev => ({ ...prev, businessAddressNotes: businessAddressNotesMore }))
125
+ }
126
+ }, []);
127
+
98
128
  return (
99
129
  <OrderContent isOrderGroup={isOrderGroup} lastOrder={lastOrder}>
100
130
  {isOrderGroup && (
101
- <OText size={18}>{t('ORDER', 'Order')} #{isOrderGroup ? order?.order_group_id : order?.id}</OText>
131
+ <OText size={18}>{t('ORDER', 'Order')} #{order?.id}</OText>
102
132
  )}
103
133
 
104
134
  {order?.metafields?.length > 0 && (
@@ -186,19 +216,34 @@ export const OrderContentComponent = (props: OrderContent) => {
186
216
  />
187
217
  </View>
188
218
  )}
189
-
219
+ {!!order?.business?.location && order?.customer?.location && (
220
+ <OText>
221
+ {t('DISTANCE_TO_THE_BUSINESS', 'Distance to the business')}: {transformDistance(calculateDistance(order?.business?.location, { latitude: order?.customer?.location?.lat, longitude: order?.customer?.location?.lng }), distanceUnit)} {t(distanceUnit.toUpperCase(), distanceUnit)}
222
+ </OText>
223
+ )}
190
224
  {!!order?.business?.address_notes && (
191
- <View style={styles.linkWithIcons}>
192
- <OLink
193
- PressStyle={styles.linkWithIcons}
194
- url={Platform.select({
195
- ios: `maps:0,0?q=${order?.business?.address_notes}`,
196
- android: `geo:0,0?q=${order?.business?.address_notes}`,
197
- })}
198
- shorcut={order?.business?.address_notes}
199
- TextStyle={styles.textLink}
200
- />
201
- </View>
225
+ <>
226
+ <View style={styles.linkWithIcons}>
227
+ <OLink
228
+ PressStyle={styles.linkWithIcons}
229
+ url={Platform.select({
230
+ ios: `maps:0,0?q=${order?.business?.address_notes}`,
231
+ android: `geo:0,0?q=${order?.business?.address_notes}`,
232
+ })}
233
+ shorcut={order?.business?.address_notes}
234
+ TextStyle={styles.textLink}
235
+ onTextLayout={e => onTextLayout(e, 'businessAddressNotes')}
236
+ numberOfLines={isReadMore.businessAddressNotes ? 20 : 3}
237
+ />
238
+ </View>
239
+ {lengthMore.businessAddressNotes && (
240
+ <TouchableOpacity
241
+ onPress={() => setIsReadMore({ ...isReadMore, businessAddressNotes: !isReadMore.businessAddressNotes })}
242
+ >
243
+ <OText size={12} color={theme.colors.statusOrderBlue}>{isReadMore.businessAddressNotes ? t('SHOW_LESS', 'Show less') : t('READ_MORE', 'Read more')}</OText>
244
+ </TouchableOpacity>
245
+ )}
246
+ </>
202
247
  )}
203
248
  </OrderBusiness>
204
249
 
@@ -298,18 +343,28 @@ export const OrderContentComponent = (props: OrderContent) => {
298
343
  )}
299
344
 
300
345
  {!!order?.customer?.address && (
301
- <View style={styles.linkWithIcons}>
302
- <OLink
303
- PressStyle={styles.linkWithIcons}
304
- url={Platform.select({
305
- ios: `maps:0,0?q=${order?.customer?.address}`,
306
- android: `geo:0,0?q=${order?.customer?.address}`,
307
- })}
308
- numberOfLines={2}
309
- shorcut={order?.customer?.address}
310
- TextStyle={styles.textLink}
311
- />
312
- </View>
346
+ <>
347
+ <View style={styles.linkWithIcons}>
348
+ <OLink
349
+ PressStyle={{ ...styles.linkWithIcons, marginBottom: 0 }}
350
+ url={Platform.select({
351
+ ios: `maps:0,0?q=${order?.customer?.address}`,
352
+ android: `geo:0,0?q=${order?.customer?.address}`,
353
+ })}
354
+ onTextLayout={e => onTextLayout(e, 'customerAddress')}
355
+ numberOfLines={isReadMore.customerAddress ? 20 : 2}
356
+ shorcut={order?.customer?.address}
357
+ TextStyle={styles.textLink}
358
+ />
359
+ </View>
360
+ {lengthMore.customerAddress && (
361
+ <TouchableOpacity
362
+ onPress={() => setIsReadMore({ ...isReadMore, customerAddress: !isReadMore.customerAddress })}
363
+ >
364
+ <OText size={12} color={theme.colors.statusOrderBlue}>{isReadMore.customerAddress ? t('SHOW_LESS', 'Show less') : t('READ_MORE', 'Read more')}</OText>
365
+ </TouchableOpacity>
366
+ )}
367
+ </>
313
368
  )}
314
369
 
315
370
  {!!order?.customer?.internal_number && (
@@ -319,9 +374,15 @@ export const OrderContentComponent = (props: OrderContent) => {
319
374
  )}
320
375
 
321
376
  {!!order?.customer?.address_notes && (
322
- <OText numberOfLines={1} mBottom={4} ellipsizeMode="tail">
323
- {order?.customer?.address_notes}
324
- </OText>
377
+ <ScrollView
378
+ showsVerticalScrollIndicator={false}
379
+ showsHorizontalScrollIndicator={false}
380
+ horizontal
381
+ >
382
+ <OText numberOfLines={1} mBottom={4} ellipsizeMode="tail">
383
+ {order?.customer?.address_notes}
384
+ </OText>
385
+ </ScrollView>
325
386
  )}
326
387
 
327
388
  {!!order?.customer?.zipcode && (
@@ -488,7 +549,7 @@ export const OrderContentComponent = (props: OrderContent) => {
488
549
  ))
489
550
  }
490
551
  {
491
- order?.summary?.delivery_price > 0 && (
552
+ typeof order?.summary?.delivery_price === 'number' && (
492
553
  <Table>
493
554
  <OText mBottom={4}>
494
555
  {t('DELIVERY_FEE', 'Delivery Fee')}
@@ -515,15 +576,14 @@ export const OrderContentComponent = (props: OrderContent) => {
515
576
  </Table>
516
577
  ))
517
578
  }
518
- {order?.summary?.driver_tip > 0 && (
579
+ {(order?.summary?.driver_tip > 0 || order?.driver_tip > 0) && (
519
580
  <Table>
520
581
  <OText mBottom={4}>
521
582
  {t('DRIVER_TIP', 'Driver tip')}
522
- {order?.summary?.driver_tip > 0 &&
523
- parseInt(configs?.driver_tip_type?.value, 10) === 2 &&
583
+ {order?.driver_tip > 0 && parseInt(configs?.driver_tip_type?.value, 10) === 2 &&
524
584
  !parseInt(configs?.driver_tip_use_custom?.value, 10) &&
525
585
  (
526
- `(${verifyDecimals(order?.summary?.driver_tip, parseNumber)}%)`
586
+ `(${verifyDecimals(order?.driver_tip, parseNumber)}%)`
527
587
  )}
528
588
  </OText>
529
589
  <OText mBottom={4}>{parsePrice(order?.summary?.driver_tip ?? order?.totalDriverTip, { currency: order?.currency })}</OText>
@@ -576,14 +636,16 @@ export const OrderContentComponent = (props: OrderContent) => {
576
636
  ? walletName[event?.wallet_event?.wallet?.type]?.name
577
637
  : t(event?.paymethod?.name?.toUpperCase()?.replace(/ /g, '_'), event?.paymethod?.name)}
578
638
  </OText>
579
- {event?.data?.charge_id && (
639
+ {/* {event?.data?.charge_id && (
580
640
  <OText>
581
641
  {`${t('CODE', 'Code')}: ${event?.data?.charge_id}`}
582
642
  </OText>
583
- )}
643
+ )} */}
584
644
  </View>
585
645
  <OText>
586
- -{parsePrice(event.amount, { currency: order?.currency })}
646
+ {(event?.paymethod?.gateway === 'cash' && order?.cash)
647
+ ? parsePrice(order?.cash, { currency: order?.currency })
648
+ : `-${parsePrice(event?.amount, { currency: order?.currency })}`}
587
649
  </OText>
588
650
  </View>
589
651
  ))}
@@ -9,12 +9,15 @@ import {
9
9
 
10
10
  //Components
11
11
  import {
12
+ OIcon,
12
13
  OIconButton,
13
14
  OText,
14
15
  } from '../shared'
15
16
 
16
17
  import { useTheme } from 'styled-components/native';
17
- import { StyleSheet, View } from 'react-native';
18
+ import { StyleSheet, TouchableOpacity, View } from 'react-native';
19
+ import SimpleLineIcons from 'react-native-vector-icons/SimpleLineIcons'
20
+ import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons'
18
21
 
19
22
  import {
20
23
  useLanguage,
@@ -54,6 +57,19 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
54
57
  height: 40,
55
58
  padding: 10,
56
59
  alignItems: 'flex-end',
60
+ color: theme.colors.textGray,
61
+ },
62
+ btnBackArrow: {
63
+ borderWidth: 0,
64
+ width: 32,
65
+ height: 32,
66
+ tintColor: theme.colors.textGray,
67
+ backgroundColor: theme.colors.clear,
68
+ borderColor: theme.colors.clear,
69
+ shadowColor: theme.colors.clear,
70
+ paddingLeft: 0,
71
+ paddingRight: 0,
72
+ marginTop: 10
57
73
  },
58
74
  })
59
75
 
@@ -108,42 +124,32 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
108
124
  <>
109
125
  {!props.isCustomView && (
110
126
  <Header>
111
- <OIconButton
112
- icon={theme.images.general.arrow_left}
113
- iconStyle={{ width: 20, height: 20 }}
114
- borderColor={theme.colors.clear}
115
- style={{ ...styles.icons, justifyContent: 'flex-end' }}
116
- onClick={() => handleArrowBack()}
117
- />
118
-
127
+ <TouchableOpacity onPress={() => handleArrowBack()} style={styles.btnBackArrow}>
128
+ <OIcon src={theme.images.general.arrow_left} color={theme.colors.textGray} />
129
+ </TouchableOpacity>
119
130
  {(!order?.isLogistic || (!logisticOrderStatus?.includes(order?.status) && !order?.order_group)) && (
120
131
  <Actions>
121
132
  {getOrderStatus(order?.status, t)?.value !==
122
133
  t('PENDING', 'Pending') && (
123
134
  <>
124
- <OIconButton
125
- icon={theme.images.general.copy}
126
- iconStyle={{
127
- width: 20,
128
- height: 25,
129
- top: 2,
130
- tintColor: theme.colors.backArrow,
131
- }}
132
- borderColor={theme.colors.clear}
133
- style={styles.icons}
134
- onClick={() => handleCopyClipboard?.()}
135
- />
136
- <OIconButton
137
- icon={theme.images.general.print}
138
- iconStyle={{
139
- width: 25,
140
- height: 22,
141
- tintColor: theme.colors.backArrow,
142
- }}
143
- borderColor={theme.colors.clear}
144
- style={styles.icons}
145
- onClick={() => handleViewSummaryOrder?.()}
146
- />
135
+ <TouchableOpacity onPress={() => handleCopyClipboard?.()}>
136
+ <MaterialCommunityIcons
137
+ name='content-copy'
138
+ color={theme.colors.textGray}
139
+ size={20}
140
+ style={styles.icons}
141
+ />
142
+ </TouchableOpacity>
143
+ {!!handleViewSummaryOrder && (
144
+ <TouchableOpacity onPress={() => handleViewSummaryOrder?.()}>
145
+ <SimpleLineIcons
146
+ name='printer'
147
+ color={theme.colors.textGray}
148
+ size={20}
149
+ style={styles.icons}
150
+ />
151
+ </TouchableOpacity>
152
+ )}
147
153
  </>
148
154
  )}
149
155
  <OIconButton
@@ -151,7 +157,7 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
151
157
  iconStyle={{
152
158
  width: 20,
153
159
  height: 20,
154
- tintColor: theme.colors.backArrow,
160
+ tintColor: theme.colors.textGray,
155
161
  }}
156
162
  borderColor={theme.colors.clear}
157
163
  style={styles.icons}
@@ -163,7 +169,7 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
163
169
  iconStyle={{
164
170
  width: 20,
165
171
  height: 20,
166
- tintColor: theme.colors.backArrow,
172
+ tintColor: theme.colors.textGray,
167
173
  }}
168
174
  borderColor={theme.colors.clear}
169
175
  style={styles.icons}
@@ -193,29 +199,24 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
193
199
  {getOrderStatus(order?.status, t)?.value !==
194
200
  t('PENDING', 'Pending') && (
195
201
  <>
196
- <OIconButton
197
- icon={theme.images.general.copy}
198
- iconStyle={{
199
- width: 20,
200
- height: 25,
201
- top: 2,
202
- tintColor: theme.colors.backArrow,
203
- }}
204
- borderColor={theme.colors.clear}
205
- style={styles.icons}
206
- onClick={() => handleCopyClipboard?.()}
207
- />
208
- <OIconButton
209
- icon={theme.images.general.print}
210
- iconStyle={{
211
- width: 25,
212
- height: 22,
213
- tintColor: theme.colors.backArrow,
214
- }}
215
- borderColor={theme.colors.clear}
216
- style={styles.icons}
217
- onClick={() => handleViewSummaryOrder?.()}
218
- />
202
+ <TouchableOpacity onPress={() => handleCopyClipboard?.()}>
203
+ <MaterialCommunityIcons
204
+ name='content-copy'
205
+ color={theme.colors.textGray}
206
+ size={20}
207
+ style={styles.icons}
208
+ />
209
+ </TouchableOpacity>
210
+ {!!handleViewSummaryOrder && (
211
+ <TouchableOpacity onPress={() => handleViewSummaryOrder?.()}>
212
+ <SimpleLineIcons
213
+ name='printer'
214
+ color={theme.colors.textGray}
215
+ size={20}
216
+ style={styles.icons}
217
+ />
218
+ </TouchableOpacity>
219
+ )}
219
220
  </>
220
221
  )}
221
222
  <OIconButton
@@ -223,7 +224,7 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
223
224
  iconStyle={{
224
225
  width: 20,
225
226
  height: 20,
226
- tintColor: theme.colors.backArrow,
227
+ tintColor: theme.colors.textGray,
227
228
  }}
228
229
  borderColor={theme.colors.clear}
229
230
  style={styles.icons}
@@ -235,7 +236,7 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
235
236
  iconStyle={{
236
237
  width: 20,
237
238
  height: 20,
238
- tintColor: theme.colors.backArrow,
239
+ tintColor: theme.colors.textGray,
239
240
  }}
240
241
  borderColor={theme.colors.clear}
241
242
  style={styles.icons}
@@ -262,7 +263,7 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
262
263
  )}
263
264
  </>
264
265
  </OText>
265
- {!order?.isLogistic && order?.delivery_type && (!order?.order_group_id || !logisticOrderStatus?.includes(order?.status)) && (
266
+ {!order?.isLogistic && !!order?.delivery_type && (!order?.order_group_id || !logisticOrderStatus?.includes(order?.status)) && (
266
267
  <>
267
268
  <OText size={13}>
268
269
  <OText size={13} weight='bold'>{`${t('ORDER_TYPE', 'Order Type')}: `}</OText>
@@ -274,12 +275,12 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
274
275
  {t(order?.delivery_option?.name?.toUpperCase()?.replace(/ /g, '_'), order?.delivery_option?.name)}
275
276
  </OText>
276
277
  )}
277
- {order?.payment_events?.length > 0 && (
278
- <View>
278
+ <OText>
279
+ <OText size={13} weight='bold'>
280
+ {`${t('PAYMENT_METHODS', 'Payment methods')}: `}
281
+ </OText>
282
+ {order?.payment_events?.length > 0 ? (
279
283
  <OText size={13}>
280
- <OText size={13} weight='bold'>
281
- {`${t('PAYMENT_METHODS', 'Payment methods')}: `}
282
- </OText>
283
284
  {order?.payment_events?.map((event: any, idx: number) => {
284
285
  return event?.wallet_event
285
286
  ? idx < order?.payment_events?.length - 1
@@ -290,8 +291,10 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
290
291
  : t(event?.paymethod?.name?.toUpperCase()?.replace(/ /g, '_'), event?.paymethod?.name)
291
292
  })}
292
293
  </OText>
293
- </View>
294
- )}
294
+ ) : (
295
+ <OText size={13}>{t(order?.paymethod?.gateway?.toUpperCase(), order?.paymethod?.name)}</OText>
296
+ )}
297
+ </OText>
295
298
  </>
296
299
  )}
297
300
  </OrderHeader>
@@ -0,0 +1,195 @@
1
+ //React & React Native
2
+ import React, { useState, useEffect } from 'react';
3
+ import { View } from 'react-native';
4
+
5
+ // Thirds
6
+ import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder';
7
+
8
+ //OrderingComponent
9
+ import {
10
+ useLanguage,
11
+ OrderDetails as OrderDetailsConTableoller,
12
+ useSession,
13
+ } from 'ordering-components/native';
14
+
15
+ //Components
16
+ import Alert from '../../providers/AlertProvider';
17
+ import { FloatingButton } from '../FloatingButton';
18
+ import { OrderDetailsLogisticParams } from '../../types';
19
+ import { useTheme } from 'styled-components/native';
20
+ import { NotFoundSource } from '../NotFoundSource';
21
+ import { getOrderStatus } from '../../utils';
22
+ import { OrderHeaderComponent } from '../OrderDetails/OrderHeaderComponent';
23
+ import { OrderContentComponent } from '../OrderDetails/OrderContentComponent';
24
+ //Styles
25
+ import { OrderDetailsContainer } from './styles';
26
+
27
+ export const OrderDetailsLogisticUI = (props: OrderDetailsLogisticParams) => {
28
+ const {
29
+ navigation,
30
+ handleClickLogisticOrder,
31
+ orderAssingId,
32
+ } = props;
33
+ const { order } = props.order
34
+ const theme = useTheme();
35
+ const [, t] = useLanguage();
36
+ const [session] = useSession();
37
+ const [alertState, setAlertState] = useState<{
38
+ open: boolean;
39
+ content: Array<string>;
40
+ key?: string | null;
41
+ }>({ open: false, content: [], key: null });
42
+
43
+ const logisticOrderStatus = [4, 6, 7]
44
+
45
+ const showFloatButtonsAcceptOrReject: any = {
46
+ 0: true,
47
+ 4: true,
48
+ 7: true,
49
+ 14: true
50
+ };
51
+
52
+ const handleArrowBack: any = () => {
53
+ navigation?.canGoBack() && navigation.goBack();
54
+ };
55
+
56
+ const handleRejectLogisticOrder = (order: any) => {
57
+ handleClickLogisticOrder?.(2, orderAssingId || order?.logistic_order_id, order)
58
+ handleArrowBack()
59
+ }
60
+
61
+ const handleAcceptLogisticOrder = (order: any) => {
62
+ handleClickLogisticOrder?.(1, orderAssingId || order?.logistic_order_id, order)
63
+ handleArrowBack()
64
+ }
65
+
66
+ useEffect(() => {
67
+ if (order?.driver === null && session?.user?.level === 4) {
68
+ setAlertState({
69
+ open: true,
70
+ content: [
71
+ t(
72
+ 'YOU_HAVE_BEEN_REMOVED_FROM_THE_ORDER',
73
+ 'You have been removed from the order',
74
+ ),
75
+ ],
76
+ key: null,
77
+ });
78
+ }
79
+ }, [order?.driver]);
80
+
81
+ const OrderDetailsInformation = (props: { order: any, isOrderGroup?: boolean, lastOrder?: boolean }) => {
82
+ const {
83
+ order,
84
+ isOrderGroup,
85
+ lastOrder,
86
+ } = props
87
+ return (
88
+ <>
89
+ <OrderContentComponent
90
+ order={order}
91
+ logisticOrderStatus={logisticOrderStatus}
92
+ isOrderGroup={isOrderGroup}
93
+ lastOrder={lastOrder}
94
+ />
95
+ <View
96
+ style={{
97
+ height:
98
+ order?.status === 8 && order?.delivery_type === 1 ? 50 : 35,
99
+ }}
100
+ />
101
+
102
+ </>
103
+ )
104
+ }
105
+
106
+ return (
107
+ <>
108
+ {(!order || Object.keys(order).length === 0) &&
109
+ (props.order?.error?.length < 1 || !props.order?.error) && (
110
+ <View style={{ flex: 1 }}>
111
+ {[...Array(6)].map((item, i) => (
112
+ <Placeholder key={i} Animation={Fade}>
113
+ <View style={{ flexDirection: 'row', paddingVertical: 20 }}>
114
+ <Placeholder>
115
+ <PlaceholderLine width={100} />
116
+ <PlaceholderLine width={70} />
117
+ <PlaceholderLine width={30} />
118
+ <PlaceholderLine width={20} />
119
+ </Placeholder>
120
+ </View>
121
+ </Placeholder>
122
+ ))}
123
+ </View>
124
+ )}
125
+
126
+ {(!!props.order?.error || props.order?.error) && (
127
+ <NotFoundSource
128
+ btnTitle={t('GO_TO_MY_ORDERS', 'Go to my orders')}
129
+ content={
130
+ props.order.error[0] ||
131
+ props.order.error ||
132
+ t('NETWORK_ERROR', 'Network Error')
133
+ }
134
+ onClickButton={() => navigation.navigate('Orders')}
135
+ />
136
+ )}
137
+ {!((!order || Object.keys(order).length === 0) &&
138
+ (props.order?.error?.length < 1 || !props.order?.error)) && (
139
+ <View style={{ flex: 1 }}>
140
+ <OrderHeaderComponent
141
+ order={order}
142
+ getOrderStatus={getOrderStatus}
143
+ handleArrowBack={handleArrowBack}
144
+ logisticOrderStatus={logisticOrderStatus}
145
+ />
146
+ {order && Object.keys(order).length > 0 && (props.order?.error?.length < 1 || !props.order?.error) && (
147
+ <>
148
+ <OrderDetailsContainer
149
+ keyboardShouldPersistTaps="handled"
150
+ showsVerticalScrollIndicator={false}
151
+ >
152
+ {order?.order_group && !!order?.order_group_id && order?.isLogistic ? order?.order_group?.orders.map((order: any, i: number, hash: any) => (
153
+ <OrderDetailsInformation key={order?.id} order={order} isOrderGroup lastOrder={hash?.length === i + 1} />
154
+ )) : (
155
+ <OrderDetailsInformation order={order} />
156
+ )}
157
+ </OrderDetailsContainer>
158
+
159
+ {showFloatButtonsAcceptOrReject[order?.status] && (
160
+ <FloatingButton
161
+ btnText={t('REJECT', 'Reject')}
162
+ isSecondaryBtn={false}
163
+ secondButtonClick={() => handleAcceptLogisticOrder(order)}
164
+ firstButtonClick={() => handleRejectLogisticOrder(order)}
165
+ secondBtnText={t('ACCEPT', 'Accept')}
166
+ secondButton={true}
167
+ firstColorCustom={theme.colors.red}
168
+ secondColorCustom={theme.colors.green}
169
+ widthButton={'45%'}
170
+ />
171
+ )}
172
+ </>
173
+ )}
174
+ </View>
175
+ )}
176
+ {alertState?.open && (
177
+ <Alert
178
+ open={alertState.open}
179
+ onAccept={handleArrowBack}
180
+ onClose={handleArrowBack}
181
+ content={alertState.content}
182
+ title={t('WARNING', 'Warning')}
183
+ />
184
+ )}
185
+ </>
186
+ );
187
+ };
188
+
189
+ export const OrderDetailsLogistic = (props: OrderDetailsLogisticParams) => {
190
+ const orderDetailsProps = {
191
+ ...props,
192
+ UIComponent: OrderDetailsLogisticUI,
193
+ };
194
+ return <OrderDetailsConTableoller {...orderDetailsProps} />;
195
+ };
@@ -0,0 +1,5 @@
1
+ import styled from 'styled-components/native';
2
+
3
+ export const OrderDetailsContainer = styled.ScrollView`
4
+ flex: 1;
5
+ `;