ordering-ui-react-native 0.21.63 → 0.21.64-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 (163) hide show
  1. package/package.json +6 -7
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessesListing/index.tsx +1 -1
  4. package/src/components/PaymentOptionsWebView/index.tsx +1 -0
  5. package/src/components/StripeMethodForm/index.tsx +6 -4
  6. package/src/components/VerifyPhone/styles.tsx +1 -2
  7. package/src/types/index.tsx +3 -1
  8. package/themes/business/index.tsx +4 -0
  9. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
  10. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
  11. package/themes/business/src/components/Chat/index.tsx +3 -1
  12. package/themes/business/src/components/DriverMap/index.tsx +36 -23
  13. package/themes/business/src/components/GoogleMap/index.tsx +15 -8
  14. package/themes/business/src/components/Home/index.tsx +5 -1
  15. package/themes/business/src/components/LanguageSelector/index.tsx +1 -2
  16. package/themes/business/src/components/LanguageSelector/lang_country.json +515 -70
  17. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  18. package/themes/business/src/components/MapView/index.tsx +30 -15
  19. package/themes/business/src/components/NewOrderNotification/index.tsx +76 -26
  20. package/themes/business/src/components/OrderDetails/Business.tsx +63 -7
  21. package/themes/business/src/components/OrderDetails/Delivery.tsx +36 -21
  22. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +107 -56
  23. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +61 -35
  24. package/themes/business/src/components/OrderDetails/styles.tsx +29 -3
  25. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +220 -0
  26. package/themes/business/src/components/OrderSummary/index.tsx +240 -76
  27. package/themes/business/src/components/OrdersListManager/index.tsx +9 -1
  28. package/themes/business/src/components/OrdersOption/index.tsx +249 -126
  29. package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
  30. package/themes/business/src/components/PreviousMessages/index.tsx +12 -0
  31. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +29 -19
  32. package/themes/business/src/components/PreviousOrders/index.tsx +5 -3
  33. package/themes/business/src/components/PrinterEdition/index.tsx +363 -0
  34. package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
  35. package/themes/business/src/components/PrinterSettings/index.tsx +267 -0
  36. package/themes/business/src/components/PrinterSettings/styles.tsx +30 -0
  37. package/themes/business/src/components/ProductItemAccordion/index.tsx +2 -2
  38. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  39. package/themes/business/src/components/Sessions/index.tsx +187 -0
  40. package/themes/business/src/components/Sessions/styles.tsx +20 -0
  41. package/themes/business/src/components/StoresList/index.tsx +2 -2
  42. package/themes/business/src/components/UserFormDetails/index.tsx +111 -107
  43. package/themes/business/src/components/UserProfileForm/index.tsx +106 -54
  44. package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
  45. package/themes/business/src/components/shared/OInput.tsx +2 -0
  46. package/themes/business/src/components/shared/OTextarea.tsx +8 -9
  47. package/themes/business/src/hooks/useLocation.tsx +5 -4
  48. package/themes/business/src/types/index.tsx +23 -5
  49. package/themes/business/src/utils/index.tsx +19 -1
  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/NavBar/index.tsx +14 -14
  55. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  56. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  57. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  58. package/themes/original/index.tsx +13 -1
  59. package/themes/original/src/components/AddressDetails/index.tsx +20 -10
  60. package/themes/original/src/components/AddressForm/index.tsx +32 -17
  61. package/themes/original/src/components/AddressList/index.tsx +8 -7
  62. package/themes/original/src/components/AnalyticsSegment/index.tsx +6 -6
  63. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  64. package/themes/original/src/components/BusinessBasicInformation/index.tsx +6 -9
  65. package/themes/original/src/components/BusinessController/index.tsx +14 -9
  66. package/themes/original/src/components/BusinessController/styles.tsx +8 -7
  67. package/themes/original/src/components/BusinessItemAccordion/index.tsx +15 -7
  68. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +2 -3
  69. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +1 -3
  70. package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
  71. package/themes/original/src/components/BusinessPreorder/index.tsx +20 -15
  72. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +5 -5
  73. package/themes/original/src/components/BusinessProductsList/index.tsx +3 -3
  74. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  75. package/themes/original/src/components/BusinessProductsListing/index.tsx +28 -13
  76. package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
  77. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
  78. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +1 -1
  79. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
  80. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  81. package/themes/original/src/components/Cart/index.tsx +26 -9
  82. package/themes/original/src/components/CartContent/index.tsx +60 -45
  83. package/themes/original/src/components/Checkout/index.tsx +94 -62
  84. package/themes/original/src/components/CitiesControl/index.tsx +0 -3
  85. package/themes/original/src/components/CouponControl/index.tsx +1 -3
  86. package/themes/original/src/components/DriverTips/index.tsx +1 -3
  87. package/themes/original/src/components/Favorite/index.tsx +1 -5
  88. package/themes/original/src/components/FavoriteList/index.tsx +0 -1
  89. package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -7
  90. package/themes/original/src/components/GiftCard/GiftCardOrdersList/index.tsx +64 -0
  91. package/themes/original/src/components/GiftCard/GiftCardOrdersList/styles.tsx +8 -0
  92. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +15 -17
  93. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +3 -7
  94. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +24 -32
  95. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +9 -11
  96. package/themes/original/src/components/GiftCard/SingleGiftCard/index.tsx +101 -0
  97. package/themes/original/src/components/GiftCard/SingleGiftCard/styles.tsx +4 -0
  98. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +82 -0
  99. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/styles.tsx +9 -0
  100. package/themes/original/src/components/GoogleMap/index.tsx +39 -18
  101. package/themes/original/src/components/Help/index.tsx +2 -0
  102. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +2 -2
  103. package/themes/original/src/components/Home/index.tsx +2 -10
  104. package/themes/original/src/components/LoginForm/Otp/index.tsx +4 -19
  105. package/themes/original/src/components/LoginForm/index.tsx +4 -7
  106. package/themes/original/src/components/MessageListing/index.tsx +1 -0
  107. package/themes/original/src/components/Messages/index.tsx +8 -7
  108. package/themes/original/src/components/MomentOption/index.tsx +13 -2
  109. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -3
  110. package/themes/original/src/components/MultiCheckout/index.tsx +123 -62
  111. package/themes/original/src/components/MultiCheckout/styles.tsx +17 -0
  112. package/themes/original/src/components/MultiOrdersDetails/index.tsx +20 -14
  113. package/themes/original/src/components/MyOrders/index.tsx +21 -26
  114. package/themes/original/src/components/NavBar/index.tsx +4 -2
  115. package/themes/original/src/components/NetworkError/index.tsx +0 -5
  116. package/themes/original/src/components/NotFoundSource/index.tsx +0 -3
  117. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +5 -7
  118. package/themes/original/src/components/OrderDetails/index.tsx +5 -7
  119. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  120. package/themes/original/src/components/OrderProgress/index.tsx +22 -3
  121. package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -6
  122. package/themes/original/src/components/OrdersOption/index.tsx +2 -4
  123. package/themes/original/src/components/PaymentOptionCard/index.tsx +4 -2
  124. package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
  125. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  126. package/themes/original/src/components/PaymentOptions/index.tsx +47 -6
  127. package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
  128. package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
  129. package/themes/original/src/components/ProductForm/ActionButton.tsx +16 -19
  130. package/themes/original/src/components/ProductForm/index.tsx +120 -109
  131. package/themes/original/src/components/ProductItemAccordion/index.tsx +55 -49
  132. package/themes/original/src/components/ProductItemAccordion/styles.tsx +3 -4
  133. package/themes/original/src/components/ProductOptionSubOption/index.tsx +112 -91
  134. package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
  135. package/themes/original/src/components/Promotions/index.tsx +6 -9
  136. package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
  137. package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
  138. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  139. package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
  140. package/themes/original/src/components/ServiceForm/index.tsx +52 -54
  141. package/themes/original/src/components/Sessions/index.tsx +3 -3
  142. package/themes/original/src/components/SignupForm/index.tsx +65 -67
  143. package/themes/original/src/components/SingleOrderCard/index.tsx +1 -2
  144. package/themes/original/src/components/SingleProductCard/index.tsx +5 -6
  145. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  146. package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
  147. package/themes/original/src/components/StripeCardsList/index.tsx +12 -36
  148. package/themes/original/src/components/StripeElementsForm/index.tsx +78 -59
  149. package/themes/original/src/components/StripeElementsForm/naked.tsx +48 -1
  150. package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
  151. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +10 -7
  152. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
  153. package/themes/original/src/components/UserFormDetails/index.tsx +83 -84
  154. package/themes/original/src/components/UserProfile/index.tsx +11 -2
  155. package/themes/original/src/components/Wallets/index.tsx +7 -4
  156. package/themes/original/src/components/WebsocketStatus/index.tsx +169 -0
  157. package/themes/original/src/components/WebsocketStatus/styles.tsx +28 -0
  158. package/themes/original/src/components/shared/OAlert.tsx +2 -1
  159. package/themes/original/src/components/shared/OButton.tsx +8 -7
  160. package/themes/original/src/components/shared/OInput.tsx +1 -4
  161. package/themes/original/src/types/index.tsx +5 -1
  162. package/themes/original/src/utils/index.tsx +12 -1
  163. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -1,6 +1,7 @@
1
1
  import React, { useState, useCallback } from 'react'
2
2
 
3
3
  import { Platform, StyleSheet, View, TouchableOpacity, ScrollView } from 'react-native';
4
+ import AntDesignIcon from 'react-native-vector-icons/AntDesign'
4
5
 
5
6
  import { OButton, OText, OLink, OModal } from '../shared'
6
7
  import {
@@ -12,6 +13,7 @@ import {
12
13
  OrderBill,
13
14
  Total,
14
15
  OSRow,
16
+ OrderVehicle,
15
17
  } from './styles';
16
18
 
17
19
  import { ProductItemAccordion } from '../ProductItemAccordion';
@@ -53,6 +55,7 @@ export const OrderContentComponent = (props: OrderContent) => {
53
55
  const WIDTH_SCREEN = orientationState?.dimensions?.width
54
56
 
55
57
  const [openReviewModal, setOpenReviewModal] = useState(false)
58
+ const [showCustomFields, setShowCustomFields] = useState<boolean>(false);
56
59
 
57
60
  const [isReadMore, setIsReadMore] = useState({
58
61
  customerAddress: false,
@@ -134,27 +137,36 @@ export const OrderContentComponent = (props: OrderContent) => {
134
137
 
135
138
  {order?.metafields?.length > 0 && (
136
139
  <OrderBusiness>
137
- <OText style={{ marginBottom: 5 }} size={16} weight="600">
138
- {t('CUSTOM_FIELDS', 'Custom fields')}
139
- </OText>
140
-
141
- {order.metafields.map((field: any) => (
142
- <View
143
- key={field.id}
144
- style={{
145
- width: '100%',
146
- flexDirection: 'row',
147
- marginBottom: 5
148
- }}
149
- >
150
- <OText style={{ width: '50%' }}>
151
- {field.key}
152
- </OText>
153
- <OText style={{ width: '45%', textAlign: 'right' }}>
154
- {field.value}
155
- </OText>
156
- </View>
157
- ))}
140
+ <TouchableOpacity onPress={() => setShowCustomFields((prev: boolean) => !prev)} style={{ flexDirection: 'row', width: '100%', justifyContent: 'space-between', alignItems: 'flex-start' }}>
141
+ <OText style={{ marginBottom: 5 }} size={16} weight="600">
142
+ {t('CUSTOM_FIELDS', 'Custom fields')}
143
+ </OText>
144
+ <AntDesignIcon
145
+ name={showCustomFields ? 'up' : 'down'}
146
+ size={14}
147
+ />
148
+ </TouchableOpacity>
149
+ {showCustomFields && (
150
+ <>
151
+ {order.metafields.map((field: any) => (
152
+ <View
153
+ key={field.id}
154
+ style={{
155
+ width: '100%',
156
+ flexDirection: 'row',
157
+ marginBottom: 5
158
+ }}
159
+ >
160
+ <OText style={{ width: '50%' }}>
161
+ {field.key}
162
+ </OText>
163
+ <OText style={{ width: '45%', textAlign: 'right' }}>
164
+ {field.value}
165
+ </OText>
166
+ </View>
167
+ ))}
168
+ </>
169
+ )}
158
170
  </OrderBusiness>
159
171
  )}
160
172
 
@@ -208,8 +220,8 @@ export const OrderContentComponent = (props: OrderContent) => {
208
220
  <OLink
209
221
  PressStyle={styles.linkWithIcons}
210
222
  url={Platform.select({
211
- ios: `maps:0,0?q=${order?.business?.address}`,
212
- android: `geo:0,0?q=${order?.business?.address}`,
223
+ ios: `maps:0,0?q=${order?.business?.address}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
224
+ android: `geo:0,0?q=${order?.business?.address}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
213
225
  })}
214
226
  numberOfLines={2}
215
227
  shorcut={order?.business?.address}
@@ -219,7 +231,7 @@ export const OrderContentComponent = (props: OrderContent) => {
219
231
  )}
220
232
  {!!order?.business?.location && order?.customer?.location && (
221
233
  <OText>
222
- {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)}
234
+ {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)}
223
235
  </OText>
224
236
  )}
225
237
  {!!order?.business?.address_notes && (
@@ -228,8 +240,8 @@ export const OrderContentComponent = (props: OrderContent) => {
228
240
  <OLink
229
241
  PressStyle={styles.linkWithIcons}
230
242
  url={Platform.select({
231
- ios: `maps:0,0?q=${order?.business?.address_notes}`,
232
- android: `geo:0,0?q=${order?.business?.address_notes}`,
243
+ ios: `maps:0,0?q=${order?.business?.address_notes}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
244
+ android: `geo:0,0?q=${order?.business?.address_notes}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
233
245
  })}
234
246
  shorcut={order?.business?.address_notes}
235
247
  TextStyle={styles.textLink}
@@ -349,8 +361,8 @@ export const OrderContentComponent = (props: OrderContent) => {
349
361
  <OLink
350
362
  PressStyle={{ ...styles.linkWithIcons, marginBottom: 0 }}
351
363
  url={Platform.select({
352
- ios: `maps:0,0?q=${order?.customer?.address}`,
353
- android: `geo:0,0?q=${order?.customer?.address}`,
364
+ ios: `maps:0,0?q=${order?.customer?.address}@${order?.customer?.location?.lat},${order?.customer?.location?.lng}`,
365
+ android: `geo:0,0?q=${order?.customer?.address}@${order?.customer?.location?.lat},${order?.customer?.location?.lng}`,
354
366
  })}
355
367
  onTextLayout={e => onTextLayout(e, 'customerAddress')}
356
368
  numberOfLines={isReadMore.customerAddress ? 20 : 2}
@@ -397,26 +409,16 @@ export const OrderContentComponent = (props: OrderContent) => {
397
409
  {t('ON_BEHALF_OF', 'On behalf of')}{': '} {order?.on_behalf_of}
398
410
  </OText>
399
411
  )}
400
- {((order?.delivery_option !== undefined && order?.delivery_type === 1) || !!order?.comment) && (
412
+ {(order?.delivery_option !== undefined && order?.delivery_type === 1) && (
401
413
  <View style={{ marginTop: 10 }}>
402
414
  {order?.delivery_option !== undefined && order?.delivery_type === 1 && (
403
415
  <OText>
404
- {t(order?.delivery_option?.name?.toUpperCase()?.replace(/ /g, '_'), order?.delivery_option?.name)}
416
+ {t(order?.delivery_option?.name?.toUpperCase?.()?.replace(/ /g, '_'), order?.delivery_option?.name)}
405
417
  </OText>
406
418
  )}
407
- {!!order?.comment && (
408
- <>
409
- <OText weight='500' style={{ marginBottom: 5 }}>
410
- {t('ORDER_COMMENT', 'Order Comment')}
411
- </OText>
412
- <OText style={{ fontStyle: 'italic', opacity: 0.6, marginBottom: 20 }}>
413
- {order?.comment}
414
- </OText>
415
- </>
416
- )}
417
419
  </View>
418
420
  )}
419
- {!order?.user_review && pastOrderStatuses.includes(order?.status) && (
421
+ {!order?.user_review && pastOrderStatuses.includes(order?.status) && order?.customer_id && (
420
422
  <OButton
421
423
  style={styles.btnReview}
422
424
  textStyle={{ color: theme.colors.white }}
@@ -428,10 +430,16 @@ export const OrderContentComponent = (props: OrderContent) => {
428
430
  </OrderCustomer>
429
431
 
430
432
  <OrderProducts>
431
- <OText style={{ marginBottom: 5 }} size={16} weight="600">
433
+ <OText style={{ marginBottom: 10 }} size={16} weight="600">
432
434
  {t('ORDER_DETAILS', 'Order Details')}
433
435
  </OText>
434
436
 
437
+ {!!order?.comment && (
438
+ <OText>
439
+ {`${t('ORDER_COMMENT', 'Order Comment')}: ${order?.comment}`}
440
+ </OText>
441
+ )}
442
+
435
443
  {order?.products?.length > 0 &&
436
444
  order?.products.map((product: any, i: number) => (
437
445
  <ProductItemAccordion
@@ -442,7 +450,7 @@ export const OrderContentComponent = (props: OrderContent) => {
442
450
  ))}
443
451
  </OrderProducts>
444
452
 
445
- <OrderBill>
453
+ <OrderBill vehicleExists={!!order?.vehicle}>
446
454
  <Table>
447
455
  <OText mBottom={4}>{t('SUBTOTAL', 'Subtotal')}</OText>
448
456
  <OText mBottom={4}>
@@ -467,7 +475,7 @@ export const OrderContentComponent = (props: OrderContent) => {
467
475
  <Table key={offer.id}>
468
476
  <OSRow>
469
477
  <OText mBottom={4}>
470
- {t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
478
+ {t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
471
479
  {offer.rate_type === 1 && (
472
480
  <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
473
481
  )}
@@ -513,7 +521,7 @@ export const OrderContentComponent = (props: OrderContent) => {
513
521
  <Table key={tax.id}>
514
522
  <OSRow>
515
523
  <OText mBottom={4}>
516
- {t(tax?.name?.toUpperCase()?.replace(/ /g, '_'), tax?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
524
+ {t(tax?.name?.toUpperCase?.()?.replace(/ /g, '_'), tax?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
517
525
  {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
518
526
  </OText>
519
527
  </OSRow>
@@ -526,7 +534,7 @@ export const OrderContentComponent = (props: OrderContent) => {
526
534
  <Table key={fee.id}>
527
535
  <OSRow>
528
536
  <OText mBottom={4}>
529
- {t(fee?.name?.toUpperCase()?.replace(/ /g, '_'), fee?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
537
+ {t(fee?.name?.toUpperCase?.()?.replace(/ /g, '_'), fee?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
530
538
  ({fee?.fixed > 0 && `${parsePrice(fee?.fixed, { currency: order?.currency })} + `}{fee.percentage}%){' '}
531
539
  </OText>
532
540
  </OSRow>
@@ -539,7 +547,7 @@ export const OrderContentComponent = (props: OrderContent) => {
539
547
  <Table key={offer.id}>
540
548
  <OSRow>
541
549
  <OText mBottom={4}>
542
- {t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
550
+ {t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
543
551
  {offer.rate_type === 1 && (
544
552
  <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
545
553
  )}
@@ -550,7 +558,7 @@ export const OrderContentComponent = (props: OrderContent) => {
550
558
  ))
551
559
  }
552
560
  {
553
- typeof order?.summary?.delivery_price === 'number' && (
561
+ typeof order?.summary?.delivery_price === 'number' && order.delivery_type !== 2 && (
554
562
  <Table>
555
563
  <OText mBottom={4}>
556
564
  {t('DELIVERY_FEE', 'Delivery Fee')}
@@ -567,7 +575,7 @@ export const OrderContentComponent = (props: OrderContent) => {
567
575
  <Table key={offer.id}>
568
576
  <OSRow>
569
577
  <OText mBottom={4}>
570
- {t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
578
+ {t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
571
579
  {offer.rate_type === 1 && (
572
580
  <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
573
581
  )}
@@ -577,7 +585,7 @@ export const OrderContentComponent = (props: OrderContent) => {
577
585
  </Table>
578
586
  ))
579
587
  }
580
- {(order?.summary?.driver_tip > 0 || order?.driver_tip > 0) && (
588
+ {(order?.summary?.driver_tip > 0 || order?.driver_tip > 0) && order.delivery_type !== 2 && (
581
589
  <Table>
582
590
  <OText mBottom={4}>
583
591
  {t('DRIVER_TIP', 'Driver tip')}
@@ -635,13 +643,12 @@ export const OrderContentComponent = (props: OrderContent) => {
635
643
  <OText>
636
644
  {event?.wallet_event
637
645
  ? walletName[event?.wallet_event?.wallet?.type]?.name
638
- : t(event?.paymethod?.name?.toUpperCase()?.replace(/ /g, '_'), event?.paymethod?.name)}
646
+ : event?.paymethod?.gateway
647
+ ? t(event?.paymethod?.gateway?.toUpperCase?.(), event?.paymethod?.name)
648
+ : order?.paymethod?.id === event?.paymethod_id
649
+ ? t(order?.paymethod?.gateway?.toUpperCase?.(), order?.paymethod?.name)
650
+ : ''}
639
651
  </OText>
640
- {/* {event?.data?.charge_id && (
641
- <OText>
642
- {`${t('CODE', 'Code')}: ${event?.data?.charge_id}`}
643
- </OText>
644
- )} */}
645
652
  </View>
646
653
  <OText>
647
654
  {(event?.paymethod?.gateway === 'cash' && order?.cash)
@@ -653,7 +660,51 @@ export const OrderContentComponent = (props: OrderContent) => {
653
660
  </View>
654
661
  </View>
655
662
  )}
663
+
656
664
  </OrderBill >
665
+ {!!order?.vehicle && (
666
+ <OrderVehicle>
667
+ <OText
668
+ style={{ marginBottom: 5 }}
669
+ size={16}
670
+ weight="600"
671
+ color={theme.colors.textGray}>
672
+ {t('VEHICLE', 'Vehicle')}
673
+ </OText>
674
+ <Table>
675
+ <OText style={{ marginBottom: 5 }}>
676
+ {t('CAR_REGISTRATION', 'Car registration')}
677
+ </OText>
678
+ <OText style={{ marginBottom: 5 }}>
679
+ {order?.vehicle?.car_registration}
680
+ </OText>
681
+ </Table>
682
+ <Table>
683
+ <OText style={{ marginBottom: 5 }}>
684
+ {t('COLOR', 'Color')}
685
+ </OText>
686
+ <OText style={{ marginBottom: 5 }}>
687
+ {order?.vehicle?.color}
688
+ </OText>
689
+ </Table>
690
+ <Table>
691
+ <OText style={{ marginBottom: 5 }}>
692
+ {t('MODEL', 'Model')}
693
+ </OText>
694
+ <OText style={{ marginBottom: 5 }}>
695
+ {order?.vehicle?.model}
696
+ </OText>
697
+ </Table>
698
+ <Table>
699
+ <OText style={{ marginBottom: 5 }}>
700
+ {t('TYPE', 'Type')}
701
+ </OText>
702
+ <OText style={{ marginBottom: 5 }}>
703
+ {order?.vehicle?.type}
704
+ </OText>
705
+ </Table>
706
+ </OrderVehicle>
707
+ )}
657
708
  <OModal
658
709
  open={openReviewModal}
659
710
  onClose={() => setOpenReviewModal(false)}
@@ -3,7 +3,9 @@ import React from 'react';
3
3
  //Styles
4
4
  import {
5
5
  Actions,
6
+ Dot,
6
7
  Header,
8
+ Messages,
7
9
  OrderHeader,
8
10
  } from './styles';
9
11
 
@@ -22,6 +24,8 @@ import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityI
22
24
  import {
23
25
  useLanguage,
24
26
  useUtils,
27
+ useConfig,
28
+ useSession
25
29
  } from 'ordering-components/native';
26
30
 
27
31
  interface OrderHeader {
@@ -34,6 +38,8 @@ interface OrderHeader {
34
38
  handleViewSummaryOrder?: any;
35
39
  handleCopyClipboard?: any
36
40
  isCustomView?: any
41
+ messages?: any
42
+ messagesReadList?: any
37
43
  }
38
44
 
39
45
  export const OrderHeaderComponent = (props: OrderHeader) => {
@@ -45,11 +51,20 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
45
51
  getOrderStatus,
46
52
  logisticOrderStatus,
47
53
  handleViewSummaryOrder,
48
- handleCopyClipboard
54
+ handleCopyClipboard,
55
+ messages,
56
+ messagesReadList
49
57
  } = props
50
58
  const theme = useTheme();
51
59
  const [, t] = useLanguage();
52
- const [{ parseDate }] = useUtils();
60
+ const [configState] = useConfig()
61
+ const [{ user }] = useSession()
62
+ const [{ parseDate, parsePrice }] = useUtils();
63
+ const paymethodsLength = order?.payment_events?.filter((item: any) => item.event === 'payment')?.length
64
+ const showExternalId = configState?.configs?.change_order_id?.value === '1'
65
+ const messagesReadIds = messagesReadList?.map((message: any) => message?.order_message_id)
66
+
67
+ const filteredMessages = messagesReadList?.length > 0 ? messages?.messages?.filter((message: any) => !messagesReadIds?.includes(message?.id)) : messages?.messages
53
68
 
54
69
  const styles = StyleSheet.create({
55
70
  icons: {
@@ -120,6 +135,30 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
120
135
  ? t('CURBSIDE', 'Curbside')
121
136
  : t('DRIVER_THRU', 'Driver thru')
122
137
 
138
+ const handlePaymethodsListString = () => {
139
+ const paymethodsList = order?.payment_events?.filter((item: any) => item.event === 'payment').map((paymethod: any) => {
140
+ return paymethod?.wallet_event
141
+ ? walletName[paymethod?.wallet_event?.wallet?.type]?.name
142
+ : paymethod?.paymethod?.gateway && paymethod?.paymethod?.gateway === 'cash' && order?.cash > 0
143
+ ? `${t(paymethod?.paymethod?.gateway?.toUpperCase(), paymethod?.paymethod?.name)} (${t('CASH_CHANGE_OF', 'Change of :amount:').replace(':amount:', parsePrice(order?.cash))})`
144
+ : paymethod?.paymethod?.gateway
145
+ ? t(paymethod?.paymethod?.gateway?.toUpperCase(), paymethod?.paymethod?.name)
146
+ : t(order?.paymethod?.gateway?.toUpperCase(), order?.paymethod?.name)
147
+ })
148
+ return paymethodsList.join(', ')
149
+ }
150
+
151
+ const deliveryDate = () => {
152
+ const dateString = order?.delivery_datetime_utc ?? order?.delivery_datetime
153
+ const currentDate = new Date();
154
+ const receivedDate: any = new Date(order?.delivery_datetime);
155
+
156
+ const formattedDate = receivedDate <= currentDate
157
+ ? `${t('ASAP_ABBREVIATION', 'ASAP')}(${parseDate(dateString, { utc: !!order?.delivery_datetime_utc })})`
158
+ : parseDate(dateString, { utc: !!order?.delivery_datetime_utc })
159
+ return formattedDate
160
+ }
161
+
123
162
  return (
124
163
  <>
125
164
  {!props.isCustomView && (
@@ -163,18 +202,20 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
163
202
  style={styles.icons}
164
203
  onClick={() => handleOpenMapView()}
165
204
  />
166
-
167
- <OIconButton
168
- icon={theme.images.general.messages}
169
- iconStyle={{
170
- width: 20,
171
- height: 20,
172
- tintColor: theme.colors.textGray,
173
- }}
174
- borderColor={theme.colors.clear}
175
- style={styles.icons}
176
- onClick={() => handleOpenMessagesForBusiness()}
177
- />
205
+ <Messages>
206
+ {filteredMessages?.filter((message: any) => message?.author_id !== user?.id && !message?.read)?.length > 0 && <Dot />}
207
+ <OIconButton
208
+ icon={theme.images.general.messages}
209
+ iconStyle={{
210
+ width: 20,
211
+ height: 20,
212
+ tintColor: theme.colors.textGray,
213
+ }}
214
+ borderColor={theme.colors.clear}
215
+ style={styles.icons}
216
+ onClick={() => handleOpenMessagesForBusiness()}
217
+ />
218
+ </Messages>
178
219
  </Actions>
179
220
  )}
180
221
  </Header>
@@ -182,16 +223,12 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
182
223
  <OrderHeader>
183
224
  {!props.isCustomView ? (
184
225
  <OText size={13} style={{ marginBottom: 5 }}>
185
- {order?.delivery_datetime_utc
186
- ? parseDate(order?.delivery_datetime_utc)
187
- : parseDate(order?.delivery_datetime, { utc: false })}
226
+ {deliveryDate()}
188
227
  </OText>
189
228
  ) : (
190
229
  <Header style={{ alignItems: 'center' }}>
191
230
  <OText size={13} style={{ marginBottom: 5 }}>
192
- {order?.delivery_datetime_utc
193
- ? parseDate(order?.delivery_datetime_utc)
194
- : parseDate(order?.delivery_datetime, { utc: false })}
231
+ {deliveryDate()}
195
232
  </OText>
196
233
 
197
234
  {(!order?.isLogistic || (!logisticOrderStatus?.includes(order?.status) && !order?.order_group)) && (
@@ -230,7 +267,6 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
230
267
  style={styles.icons}
231
268
  onClick={() => handleOpenMapView()}
232
269
  />
233
-
234
270
  <OIconButton
235
271
  icon={theme.images.general.messages}
236
272
  iconStyle={{
@@ -249,7 +285,7 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
249
285
 
250
286
  <OText numberOfLines={2} size={20} weight="600">
251
287
  <>
252
- {`${t('INVOICE_ORDER_NO', 'Order No.')} ${order?.id} `}
288
+ {`${t('INVOICE_ORDER_NO', 'Order No.')} ${showExternalId ? order?.external_id || order?.id : order?.id} `}
253
289
  {!order?.isLogistic && (!order?.order_group_id || !logisticOrderStatus?.includes(order?.status)) && (
254
290
  <>
255
291
  {t('IS', 'is')}{' '}
@@ -263,7 +299,7 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
263
299
  )}
264
300
  </>
265
301
  </OText>
266
- {order?.external_id && (
302
+ {order?.external_id && !showExternalId && (
267
303
  <OText size={13}>
268
304
  <OText size={13} weight='bold'>{`${t('EXTERNAL_ID', 'External ID :')} `}</OText>
269
305
  {order?.external_id}
@@ -283,20 +319,10 @@ export const OrderHeaderComponent = (props: OrderHeader) => {
283
319
  )}
284
320
  <OText>
285
321
  <OText size={13} weight='bold'>
286
- {`${t('PAYMENT_METHODS', 'Payment methods')}: `}
322
+ {`${t(paymethodsLength > 1 ? 'PAYMENT_METHODS' : 'PAYMENT_METHOD', paymethodsLength > 1 ? 'Payment methods' : 'Payment method')}: `}
287
323
  </OText>
288
324
  {order?.payment_events?.length > 0 ? (
289
- <OText size={13}>
290
- {order?.payment_events?.map((event: any, idx: number) => {
291
- return event?.wallet_event
292
- ? idx < order?.payment_events?.length - 1
293
- ? `${walletName[event?.wallet_event?.wallet?.type]?.name} - `
294
- : walletName[event?.wallet_event?.wallet?.type]?.name
295
- : idx < order?.payment_events?.length - 1
296
- ? `${t(event?.paymethod?.name?.toUpperCase()?.replace(/ /g, '_'), event?.paymethod?.name)} - `
297
- : t(event?.paymethod?.name?.toUpperCase()?.replace(/ /g, '_'), event?.paymethod?.name)
298
- })}
299
- </OText>
325
+ <OText size={13}>{`${handlePaymethodsListString()}`}</OText>
300
326
  ) : (
301
327
  <OText size={13}>{t(order?.paymethod?.gateway?.toUpperCase(), order?.paymethod?.name)}</OText>
302
328
  )}
@@ -25,13 +25,13 @@ export const Logo = styled.View`
25
25
 
26
26
  export const OrderContent = styled.View`
27
27
  flex: 1;
28
- ${(props : any) => props.isOrderGroup && css`
28
+ ${(props: any) => props.isOrderGroup && css`
29
29
  border-color: rgba(0, 0, 0, 0.2);
30
30
  border-width: 1px;
31
31
  padding: 10px;
32
32
  `
33
33
  }
34
- ${(props : any) => props.lastOrder && css`
34
+ ${(props: any) => props.lastOrder && css`
35
35
  margin-bottom: 50px;
36
36
  `}
37
37
  `;
@@ -68,7 +68,18 @@ export const Table = styled.View`
68
68
 
69
69
  export const OrderBill = styled.View`
70
70
  padding-vertical: 20px;
71
- padding-bottom: 30px;
71
+ ${(props: any) => !props.vehicleExists && css`
72
+ padding-bottom: 50px;
73
+ `
74
+ }
75
+ flex: 1;
76
+ `;
77
+
78
+ export const OrderVehicle = styled.View`
79
+ border-top-width: 1px;
80
+ border-top-color: ${(props: any) => props.theme.colors.borderTops};
81
+ padding-vertical: 20px;
82
+ padding-bottom: 50px;
72
83
  flex: 1;
73
84
  `;
74
85
 
@@ -98,3 +109,18 @@ export const OSRow = styled.View`
98
109
  width: 70%;
99
110
  flex-wrap: wrap;
100
111
  `
112
+
113
+ export const Messages = styled.View`
114
+ position: relative;
115
+ `;
116
+
117
+ export const Dot = styled.View`
118
+ position: absolute;
119
+ width: 8px;
120
+ height: 8px;
121
+ border-radius: 4px;
122
+ background-color: ${(props: any) => props.theme.colors.red};
123
+ top: 10;
124
+ right: 10;
125
+ z-index: 99;
126
+ `;