ordering-ui-react-native 0.21.66 → 0.21.67-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 (164) 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/BusinessProductList/index.tsx +2 -1
  12. package/themes/business/src/components/Chat/index.tsx +3 -1
  13. package/themes/business/src/components/DriverMap/index.tsx +36 -23
  14. package/themes/business/src/components/GoogleMap/index.tsx +15 -8
  15. package/themes/business/src/components/Home/index.tsx +5 -1
  16. package/themes/business/src/components/LanguageSelector/index.tsx +2 -3
  17. package/themes/business/src/components/LanguageSelector/lang_country.json +515 -70
  18. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  19. package/themes/business/src/components/MapView/index.tsx +26 -11
  20. package/themes/business/src/components/NewOrderNotification/index.tsx +76 -26
  21. package/themes/business/src/components/OrderDetails/Business.tsx +63 -7
  22. package/themes/business/src/components/OrderDetails/Delivery.tsx +36 -21
  23. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +90 -35
  24. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +61 -35
  25. package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
  26. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +220 -0
  27. package/themes/business/src/components/OrderSummary/index.tsx +240 -76
  28. package/themes/business/src/components/OrdersListManager/index.tsx +9 -1
  29. package/themes/business/src/components/OrdersOption/index.tsx +250 -127
  30. package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
  31. package/themes/business/src/components/PreviousMessages/index.tsx +12 -0
  32. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +29 -19
  33. package/themes/business/src/components/PreviousOrders/index.tsx +5 -3
  34. package/themes/business/src/components/PrinterEdition/index.tsx +363 -0
  35. package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
  36. package/themes/business/src/components/PrinterSettings/index.tsx +267 -0
  37. package/themes/business/src/components/PrinterSettings/styles.tsx +30 -0
  38. package/themes/business/src/components/ProductItemAccordion/index.tsx +2 -2
  39. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  40. package/themes/business/src/components/Sessions/index.tsx +187 -0
  41. package/themes/business/src/components/Sessions/styles.tsx +20 -0
  42. package/themes/business/src/components/StoresList/index.tsx +2 -2
  43. package/themes/business/src/components/UserFormDetails/index.tsx +111 -107
  44. package/themes/business/src/components/UserProfileForm/index.tsx +106 -54
  45. package/themes/business/src/components/WebsocketStatus/index.tsx +4 -4
  46. package/themes/business/src/components/shared/OInput.tsx +2 -0
  47. package/themes/business/src/components/shared/OTextarea.tsx +8 -9
  48. package/themes/business/src/hooks/useLocation.tsx +5 -4
  49. package/themes/business/src/types/index.tsx +22 -4
  50. package/themes/business/src/utils/index.tsx +19 -1
  51. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  52. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  53. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  54. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  55. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  56. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  57. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  58. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  59. package/themes/original/index.tsx +13 -1
  60. package/themes/original/src/components/AddressDetails/index.tsx +20 -10
  61. package/themes/original/src/components/AddressForm/index.tsx +32 -17
  62. package/themes/original/src/components/AddressList/index.tsx +8 -7
  63. package/themes/original/src/components/AnalyticsSegment/index.tsx +6 -6
  64. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  65. package/themes/original/src/components/BusinessBasicInformation/index.tsx +6 -9
  66. package/themes/original/src/components/BusinessController/index.tsx +12 -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 +17 -8
  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 +1 -1
  103. package/themes/original/src/components/Home/index.tsx +2 -10
  104. package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
  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/OrderEta.tsx +1 -1
  118. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +5 -7
  119. package/themes/original/src/components/OrderDetails/index.tsx +5 -7
  120. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  121. package/themes/original/src/components/OrderProgress/index.tsx +22 -3
  122. package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -6
  123. package/themes/original/src/components/OrdersOption/index.tsx +2 -4
  124. package/themes/original/src/components/PaymentOptionCard/index.tsx +4 -2
  125. package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
  126. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  127. package/themes/original/src/components/PaymentOptions/index.tsx +47 -6
  128. package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
  129. package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
  130. package/themes/original/src/components/ProductForm/ActionButton.tsx +16 -19
  131. package/themes/original/src/components/ProductForm/index.tsx +120 -109
  132. package/themes/original/src/components/ProductItemAccordion/index.tsx +55 -49
  133. package/themes/original/src/components/ProductItemAccordion/styles.tsx +3 -4
  134. package/themes/original/src/components/ProductOptionSubOption/index.tsx +112 -91
  135. package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
  136. package/themes/original/src/components/Promotions/index.tsx +6 -9
  137. package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
  138. package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
  139. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  140. package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
  141. package/themes/original/src/components/ServiceForm/index.tsx +52 -54
  142. package/themes/original/src/components/Sessions/index.tsx +3 -3
  143. package/themes/original/src/components/SignupForm/index.tsx +65 -67
  144. package/themes/original/src/components/SingleOrderCard/index.tsx +1 -2
  145. package/themes/original/src/components/SingleProductCard/index.tsx +5 -6
  146. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  147. package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
  148. package/themes/original/src/components/StripeCardsList/index.tsx +12 -36
  149. package/themes/original/src/components/StripeElementsForm/index.tsx +78 -59
  150. package/themes/original/src/components/StripeElementsForm/naked.tsx +48 -1
  151. package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
  152. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +10 -7
  153. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
  154. package/themes/original/src/components/UserFormDetails/index.tsx +83 -84
  155. package/themes/original/src/components/UserProfile/index.tsx +11 -2
  156. package/themes/original/src/components/Wallets/index.tsx +7 -4
  157. package/themes/original/src/components/WebsocketStatus/index.tsx +169 -0
  158. package/themes/original/src/components/WebsocketStatus/styles.tsx +28 -0
  159. package/themes/original/src/components/shared/OAlert.tsx +2 -1
  160. package/themes/original/src/components/shared/OButton.tsx +8 -7
  161. package/themes/original/src/components/shared/OInput.tsx +1 -4
  162. package/themes/original/src/types/index.tsx +5 -1
  163. package/themes/original/src/utils/index.tsx +12 -1
  164. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -13,6 +13,8 @@ import {
13
13
  OrderBill,
14
14
  Total,
15
15
  OSRow,
16
+ OrderVehicle,
17
+ OrderSpot,
16
18
  } from './styles';
17
19
 
18
20
  import { ProductItemAccordion } from '../ProductItemAccordion';
@@ -219,8 +221,8 @@ export const OrderContentComponent = (props: OrderContent) => {
219
221
  <OLink
220
222
  PressStyle={styles.linkWithIcons}
221
223
  url={Platform.select({
222
- ios: `maps:0,0?q=${order?.business?.address}`,
223
- android: `geo:0,0?q=${order?.business?.address}`,
224
+ ios: `maps:0,0?q=${order?.business?.address}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
225
+ android: `geo:0,0?q=${order?.business?.address}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
224
226
  })}
225
227
  numberOfLines={2}
226
228
  shorcut={order?.business?.address}
@@ -230,7 +232,7 @@ export const OrderContentComponent = (props: OrderContent) => {
230
232
  )}
231
233
  {!!order?.business?.location && order?.customer?.location && (
232
234
  <OText>
233
- {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)}
235
+ {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
236
  </OText>
235
237
  )}
236
238
  {!!order?.business?.address_notes && (
@@ -239,8 +241,8 @@ export const OrderContentComponent = (props: OrderContent) => {
239
241
  <OLink
240
242
  PressStyle={styles.linkWithIcons}
241
243
  url={Platform.select({
242
- ios: `maps:0,0?q=${order?.business?.address_notes}`,
243
- android: `geo:0,0?q=${order?.business?.address_notes}`,
244
+ ios: `maps:0,0?q=${order?.business?.address_notes}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
245
+ android: `geo:0,0?q=${order?.business?.address_notes}@${order?.business?.location?.lat},${order?.business?.location?.lng}`,
244
246
  })}
245
247
  shorcut={order?.business?.address_notes}
246
248
  TextStyle={styles.textLink}
@@ -360,8 +362,8 @@ export const OrderContentComponent = (props: OrderContent) => {
360
362
  <OLink
361
363
  PressStyle={{ ...styles.linkWithIcons, marginBottom: 0 }}
362
364
  url={Platform.select({
363
- ios: `maps:0,0?q=${order?.customer?.address}`,
364
- android: `geo:0,0?q=${order?.customer?.address}`,
365
+ ios: `maps:0,0?q=${order?.customer?.address}@${order?.customer?.location?.lat},${order?.customer?.location?.lng}`,
366
+ android: `geo:0,0?q=${order?.customer?.address}@${order?.customer?.location?.lat},${order?.customer?.location?.lng}`,
365
367
  })}
366
368
  onTextLayout={e => onTextLayout(e, 'customerAddress')}
367
369
  numberOfLines={isReadMore.customerAddress ? 20 : 2}
@@ -408,26 +410,16 @@ export const OrderContentComponent = (props: OrderContent) => {
408
410
  {t('ON_BEHALF_OF', 'On behalf of')}{': '} {order?.on_behalf_of}
409
411
  </OText>
410
412
  )}
411
- {((order?.delivery_option !== undefined && order?.delivery_type === 1) || !!order?.comment) && (
413
+ {(order?.delivery_option !== undefined && order?.delivery_type === 1) && (
412
414
  <View style={{ marginTop: 10 }}>
413
415
  {order?.delivery_option !== undefined && order?.delivery_type === 1 && (
414
416
  <OText>
415
- {t(order?.delivery_option?.name?.toUpperCase()?.replace(/ /g, '_'), order?.delivery_option?.name)}
417
+ {t(order?.delivery_option?.name?.toUpperCase?.()?.replace(/ /g, '_'), order?.delivery_option?.name)}
416
418
  </OText>
417
419
  )}
418
- {!!order?.comment && (
419
- <>
420
- <OText weight='500' style={{ marginBottom: 5 }}>
421
- {t('ORDER_COMMENT', 'Order Comment')}
422
- </OText>
423
- <OText style={{ fontStyle: 'italic', opacity: 0.6, marginBottom: 20 }}>
424
- {order?.comment}
425
- </OText>
426
- </>
427
- )}
428
420
  </View>
429
421
  )}
430
- {!order?.user_review && pastOrderStatuses.includes(order?.status) && (
422
+ {!order?.user_review && pastOrderStatuses.includes(order?.status) && order?.customer_id && (
431
423
  <OButton
432
424
  style={styles.btnReview}
433
425
  textStyle={{ color: theme.colors.white }}
@@ -439,10 +431,16 @@ export const OrderContentComponent = (props: OrderContent) => {
439
431
  </OrderCustomer>
440
432
 
441
433
  <OrderProducts>
442
- <OText style={{ marginBottom: 5 }} size={16} weight="600">
434
+ <OText style={{ marginBottom: 10 }} size={16} weight="600">
443
435
  {t('ORDER_DETAILS', 'Order Details')}
444
436
  </OText>
445
437
 
438
+ {!!order?.comment && (
439
+ <OText>
440
+ {`${t('ORDER_COMMENT', 'Order Comment')}: ${order?.comment}`}
441
+ </OText>
442
+ )}
443
+
446
444
  {order?.products?.length > 0 &&
447
445
  order?.products.map((product: any, i: number) => (
448
446
  <ProductItemAccordion
@@ -453,7 +451,7 @@ export const OrderContentComponent = (props: OrderContent) => {
453
451
  ))}
454
452
  </OrderProducts>
455
453
 
456
- <OrderBill>
454
+ <OrderBill vehicleExists={!!order?.vehicle}>
457
455
  <Table>
458
456
  <OText mBottom={4}>{t('SUBTOTAL', 'Subtotal')}</OText>
459
457
  <OText mBottom={4}>
@@ -478,7 +476,7 @@ export const OrderContentComponent = (props: OrderContent) => {
478
476
  <Table key={offer.id}>
479
477
  <OSRow>
480
478
  <OText mBottom={4}>
481
- {t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
479
+ {t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
482
480
  {offer.rate_type === 1 && (
483
481
  <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
484
482
  )}
@@ -524,7 +522,7 @@ export const OrderContentComponent = (props: OrderContent) => {
524
522
  <Table key={tax.id}>
525
523
  <OSRow>
526
524
  <OText mBottom={4}>
527
- {t(tax?.name?.toUpperCase()?.replace(/ /g, '_'), tax?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
525
+ {t(tax?.name?.toUpperCase?.()?.replace(/ /g, '_'), tax?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
528
526
  {`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
529
527
  </OText>
530
528
  </OSRow>
@@ -537,7 +535,7 @@ export const OrderContentComponent = (props: OrderContent) => {
537
535
  <Table key={fee.id}>
538
536
  <OSRow>
539
537
  <OText mBottom={4}>
540
- {t(fee?.name?.toUpperCase()?.replace(/ /g, '_'), fee?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
538
+ {t(fee?.name?.toUpperCase?.()?.replace(/ /g, '_'), fee?.name) || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
541
539
  ({fee?.fixed > 0 && `${parsePrice(fee?.fixed, { currency: order?.currency })} + `}{fee.percentage}%){' '}
542
540
  </OText>
543
541
  </OSRow>
@@ -550,7 +548,7 @@ export const OrderContentComponent = (props: OrderContent) => {
550
548
  <Table key={offer.id}>
551
549
  <OSRow>
552
550
  <OText mBottom={4}>
553
- {t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
551
+ {t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
554
552
  {offer.rate_type === 1 && (
555
553
  <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
556
554
  )}
@@ -561,7 +559,7 @@ export const OrderContentComponent = (props: OrderContent) => {
561
559
  ))
562
560
  }
563
561
  {
564
- typeof order?.summary?.delivery_price === 'number' && (
562
+ typeof order?.summary?.delivery_price === 'number' && order.delivery_type !== 2 && (
565
563
  <Table>
566
564
  <OText mBottom={4}>
567
565
  {t('DELIVERY_FEE', 'Delivery Fee')}
@@ -578,7 +576,7 @@ export const OrderContentComponent = (props: OrderContent) => {
578
576
  <Table key={offer.id}>
579
577
  <OSRow>
580
578
  <OText mBottom={4}>
581
- {t(offer.name?.toUpperCase()?.replace(/ /g, '_'), offer.name)}
579
+ {t(offer.name?.toUpperCase?.()?.replace(/ /g, '_'), offer.name)}
582
580
  {offer.rate_type === 1 && (
583
581
  <OText>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</OText>
584
582
  )}
@@ -588,7 +586,7 @@ export const OrderContentComponent = (props: OrderContent) => {
588
586
  </Table>
589
587
  ))
590
588
  }
591
- {(order?.summary?.driver_tip > 0 || order?.driver_tip > 0) && (
589
+ {(order?.summary?.driver_tip > 0 || order?.driver_tip > 0) && order.delivery_type !== 2 && (
592
590
  <Table>
593
591
  <OText mBottom={4}>
594
592
  {t('DRIVER_TIP', 'Driver tip')}
@@ -646,13 +644,12 @@ export const OrderContentComponent = (props: OrderContent) => {
646
644
  <OText>
647
645
  {event?.wallet_event
648
646
  ? walletName[event?.wallet_event?.wallet?.type]?.name
649
- : t(event?.paymethod?.name?.toUpperCase()?.replace(/ /g, '_'), event?.paymethod?.name)}
647
+ : event?.paymethod?.gateway
648
+ ? t(event?.paymethod?.gateway?.toUpperCase?.(), event?.paymethod?.name)
649
+ : order?.paymethod?.id === event?.paymethod_id
650
+ ? t(order?.paymethod?.gateway?.toUpperCase?.(), order?.paymethod?.name)
651
+ : ''}
650
652
  </OText>
651
- {/* {event?.data?.charge_id && (
652
- <OText>
653
- {`${t('CODE', 'Code')}: ${event?.data?.charge_id}`}
654
- </OText>
655
- )} */}
656
653
  </View>
657
654
  <OText>
658
655
  {(event?.paymethod?.gateway === 'cash' && order?.cash)
@@ -664,7 +661,65 @@ export const OrderContentComponent = (props: OrderContent) => {
664
661
  </View>
665
662
  </View>
666
663
  )}
664
+
667
665
  </OrderBill >
666
+
667
+ {!!order?.spot_number && (
668
+ <OrderSpot vehicleExists={!!order?.vehicle}>
669
+ <Table>
670
+ <OText style={{ marginBottom: 5 }}>
671
+ {t('SPOT_NUMBER', 'Spot number')}
672
+ </OText>
673
+ <OText style={{ marginBottom: 5 }}>
674
+ {order?.spot_number}
675
+ </OText>
676
+ </Table>
677
+ </OrderSpot>
678
+ )}
679
+
680
+ {!!order?.vehicle && (
681
+ <OrderVehicle>
682
+ <OText
683
+ style={{ marginBottom: 5 }}
684
+ size={16}
685
+ weight="600"
686
+ color={theme.colors.textGray}>
687
+ {t('VEHICLE', 'Vehicle')}
688
+ </OText>
689
+ <Table>
690
+ <OText style={{ marginBottom: 5 }}>
691
+ {t('CAR_REGISTRATION', 'Car registration')}
692
+ </OText>
693
+ <OText style={{ marginBottom: 5 }}>
694
+ {order?.vehicle?.car_registration}
695
+ </OText>
696
+ </Table>
697
+ <Table>
698
+ <OText style={{ marginBottom: 5 }}>
699
+ {t('COLOR', 'Color')}
700
+ </OText>
701
+ <OText style={{ marginBottom: 5 }}>
702
+ {order?.vehicle?.color}
703
+ </OText>
704
+ </Table>
705
+ <Table>
706
+ <OText style={{ marginBottom: 5 }}>
707
+ {t('MODEL', 'Model')}
708
+ </OText>
709
+ <OText style={{ marginBottom: 5 }}>
710
+ {order?.vehicle?.model}
711
+ </OText>
712
+ </Table>
713
+ <Table>
714
+ <OText style={{ marginBottom: 5 }}>
715
+ {t('TYPE', 'Type')}
716
+ </OText>
717
+ <OText style={{ marginBottom: 5 }}>
718
+ {order?.vehicle?.type}
719
+ </OText>
720
+ </Table>
721
+ </OrderVehicle>
722
+ )}
668
723
  <OModal
669
724
  open={openReviewModal}
670
725
  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,28 @@ 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;
83
+ flex: 1;
84
+ `;
85
+
86
+ export const OrderSpot = styled.View`
87
+ border-top-width: 1px;
88
+ border-top-color: ${(props: any) => props.theme.colors.borderTops};
89
+ padding-vertical: 20px;
90
+ ${(props: any) => !props.vehicleExists && css`
91
+ padding-bottom: 50px;
92
+ `}
72
93
  flex: 1;
73
94
  `;
74
95
 
@@ -98,3 +119,18 @@ export const OSRow = styled.View`
98
119
  width: 70%;
99
120
  flex-wrap: wrap;
100
121
  `
122
+
123
+ export const Messages = styled.View`
124
+ position: relative;
125
+ `;
126
+
127
+ export const Dot = styled.View`
128
+ position: absolute;
129
+ width: 8px;
130
+ height: 8px;
131
+ border-radius: 4px;
132
+ background-color: ${(props: any) => props.theme.colors.red};
133
+ top: 10;
134
+ right: 10;
135
+ z-index: 99;
136
+ `;