ordering-ui-react-native 0.22.33 → 0.22.34-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/Checkout/index.tsx +40 -39
  5. package/src/components/StripeMethodForm/index.tsx +4 -2
  6. package/src/components/VerifyPhone/styles.tsx +1 -2
  7. package/src/context/OfflineActions/index.tsx +236 -0
  8. package/src/types/index.tsx +2 -1
  9. package/themes/business/index.tsx +2 -0
  10. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
  11. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
  12. package/themes/business/src/components/BusinessController/index.tsx +8 -3
  13. package/themes/business/src/components/BusinessProductList/index.tsx +3 -2
  14. package/themes/business/src/components/Chat/index.tsx +15 -3
  15. package/themes/business/src/components/DriverMap/index.tsx +49 -26
  16. package/themes/business/src/components/FloatingButton/index.tsx +3 -2
  17. package/themes/business/src/components/GoogleMap/index.tsx +15 -8
  18. package/themes/business/src/components/LanguageSelector/index.tsx +1 -4
  19. package/themes/business/src/components/LoginForm/index.tsx +123 -98
  20. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  21. package/themes/business/src/components/MapView/index.tsx +46 -29
  22. package/themes/business/src/components/NewOrderNotification/index.tsx +38 -19
  23. package/themes/business/src/components/OrderDetails/Business.tsx +47 -27
  24. package/themes/business/src/components/OrderDetails/Delivery.tsx +134 -53
  25. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +156 -46
  26. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +55 -29
  27. package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
  28. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +17 -16
  29. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
  30. package/themes/business/src/components/OrderSummary/index.tsx +6 -4
  31. package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
  32. package/themes/business/src/components/OrdersOption/index.tsx +222 -158
  33. package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
  34. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +30 -18
  35. package/themes/business/src/components/PreviousOrders/index.tsx +74 -66
  36. package/themes/business/src/components/PreviousOrders/styles.tsx +2 -1
  37. package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
  38. package/themes/business/src/components/PrinterEdition/index.tsx +431 -0
  39. package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
  40. package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
  41. package/themes/business/src/components/PrinterSettings/index.tsx +162 -174
  42. package/themes/business/src/components/PrinterSettings/styles.tsx +14 -1
  43. package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
  44. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  45. package/themes/business/src/components/StoresList/index.tsx +2 -2
  46. package/themes/business/src/components/UserProfileForm/index.tsx +57 -24
  47. package/themes/business/src/components/UserProfileForm/styles.tsx +7 -0
  48. package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
  49. package/themes/business/src/components/shared/OTextarea.tsx +8 -9
  50. package/themes/business/src/config/currency.tsx +1010 -0
  51. package/themes/business/src/hooks/useLocation.tsx +16 -12
  52. package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
  53. package/themes/business/src/types/index.tsx +18 -5
  54. package/themes/business/src/utils/index.tsx +28 -3
  55. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  56. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  57. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  58. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  59. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  60. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  61. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  62. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  63. package/themes/original/index.tsx +11 -0
  64. package/themes/original/src/components/AddressForm/index.tsx +27 -16
  65. package/themes/original/src/components/AddressList/index.tsx +8 -7
  66. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  67. package/themes/original/src/components/BusinessBasicInformation/index.tsx +5 -8
  68. package/themes/original/src/components/BusinessItemAccordion/index.tsx +14 -6
  69. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +103 -92
  70. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +8 -6
  71. package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
  72. package/themes/original/src/components/BusinessPreorder/index.tsx +46 -28
  73. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +73 -70
  74. package/themes/original/src/components/BusinessProductsList/index.tsx +6 -7
  75. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  76. package/themes/original/src/components/BusinessProductsListing/index.tsx +10 -6
  77. package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
  78. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -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 +46 -14
  82. package/themes/original/src/components/CartContent/index.tsx +2 -4
  83. package/themes/original/src/components/Checkout/index.tsx +127 -77
  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/GiftCardUI/index.tsx +15 -17
  91. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +3 -7
  92. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +24 -32
  93. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +7 -9
  94. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +11 -12
  95. package/themes/original/src/components/GoogleMap/index.tsx +39 -18
  96. package/themes/original/src/components/Help/index.tsx +2 -0
  97. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
  98. package/themes/original/src/components/Home/index.tsx +2 -11
  99. package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
  100. package/themes/original/src/components/LoginForm/index.tsx +12 -9
  101. package/themes/original/src/components/MessageListing/index.tsx +2 -1
  102. package/themes/original/src/components/Messages/index.tsx +27 -19
  103. package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
  104. package/themes/original/src/components/MomentOption/index.tsx +80 -52
  105. package/themes/original/src/components/MomentSelector/index.tsx +5 -2
  106. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -3
  107. package/themes/original/src/components/MultiCheckout/index.tsx +55 -27
  108. package/themes/original/src/components/MultiOrdersDetails/index.tsx +1 -0
  109. package/themes/original/src/components/MyOrders/index.tsx +2 -2
  110. package/themes/original/src/components/NavBar/index.tsx +7 -4
  111. package/themes/original/src/components/NetworkError/index.tsx +0 -5
  112. package/themes/original/src/components/NotFoundSource/index.tsx +0 -3
  113. package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
  114. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +16 -11
  115. package/themes/original/src/components/OrderDetails/index.tsx +45 -22
  116. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  117. package/themes/original/src/components/OrderProgress/index.tsx +4 -3
  118. package/themes/original/src/components/OrderSummary/index.tsx +29 -10
  119. package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -6
  120. package/themes/original/src/components/OrdersOption/index.tsx +3 -6
  121. package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
  122. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  123. package/themes/original/src/components/PaymentOptions/index.tsx +462 -461
  124. package/themes/original/src/components/PhoneInputNumber/index.tsx +92 -7
  125. package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
  126. package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
  127. package/themes/original/src/components/ProductForm/ActionButton.tsx +17 -20
  128. package/themes/original/src/components/ProductForm/index.tsx +107 -102
  129. package/themes/original/src/components/ProductItemAccordion/index.tsx +30 -38
  130. package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
  131. package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
  132. package/themes/original/src/components/Promotions/index.tsx +6 -9
  133. package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
  134. package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
  135. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  136. package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
  137. package/themes/original/src/components/ServiceForm/index.tsx +52 -54
  138. package/themes/original/src/components/Sessions/index.tsx +3 -3
  139. package/themes/original/src/components/SignupForm/index.tsx +42 -30
  140. package/themes/original/src/components/SingleOrderCard/index.tsx +6 -4
  141. package/themes/original/src/components/SingleProductCard/index.tsx +5 -5
  142. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  143. package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
  144. package/themes/original/src/components/StripeCardsList/index.tsx +16 -3
  145. package/themes/original/src/components/StripeElementsForm/index.tsx +10 -4
  146. package/themes/original/src/components/StripeElementsForm/naked.tsx +1 -1
  147. package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
  148. package/themes/original/src/components/TaxInformation/index.tsx +3 -2
  149. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +10 -7
  150. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
  151. package/themes/original/src/components/UserDetails/index.tsx +17 -16
  152. package/themes/original/src/components/UserFormDetails/index.tsx +102 -74
  153. package/themes/original/src/components/UserProfile/index.tsx +9 -1
  154. package/themes/original/src/components/UserVerification/index.tsx +15 -4
  155. package/themes/original/src/components/Wallets/index.tsx +6 -3
  156. package/themes/original/src/components/WebsocketStatus/index.tsx +1 -4
  157. package/themes/original/src/components/shared/OAlert.tsx +2 -1
  158. package/themes/original/src/components/shared/OButton.tsx +5 -4
  159. package/themes/original/src/components/shared/OInput.tsx +4 -8
  160. package/themes/original/src/components/shared/OModal.tsx +7 -2
  161. package/themes/original/src/types/index.tsx +12 -4
  162. package/themes/original/src/utils/index.tsx +29 -0
  163. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -1,17 +1,19 @@
1
1
  import React, { useEffect, useState, useRef } from 'react';
2
2
  import { View, Pressable, StyleSheet, ScrollView, RefreshControl, Platform, TouchableOpacity } from 'react-native';
3
- import { useLanguage, useUtils, useToast, OrderListGroups, useConfig } from 'ordering-components/native';
3
+ import { useLanguage, useUtils, OrderListGroups, useConfig } from 'ordering-components/native';
4
4
  import SelectDropdown from 'react-native-select-dropdown'
5
5
  import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder';
6
6
  import FeatherIcon from 'react-native-vector-icons/Feather';
7
7
  import FontistoIcon from 'react-native-vector-icons/Fontisto'
8
8
  import AntDesignIcon from 'react-native-vector-icons/AntDesign'
9
+ import RNRestart from 'react-native-restart'
9
10
 
10
11
  import { useTheme } from 'styled-components/native';
11
12
  import { DeviceOrientationMethods } from '../../../../../src/hooks/DeviceOrientation'
12
13
  import { NotificationSetting } from '../../../../../src/components/NotificationSetting'
13
14
  import { NewOrderNotification } from '../NewOrderNotification';
14
15
  import { WebsocketStatus } from '../WebsocketStatus'
16
+ import { _retrieveStoreData, _setStoreData } from '../../providers/StoreUtil'
15
17
 
16
18
  import { OText, OButton, OModal, OInput, OIcon } from '../shared';
17
19
  import { NotFoundSource } from '../NotFoundSource';
@@ -53,6 +55,9 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
53
55
  navigation,
54
56
  setCurrentFilters,
55
57
  tabs,
58
+ combineTabs,
59
+ setCombineTabsState,
60
+ isNetConnected,
56
61
  currentTabSelected,
57
62
  setCurrentTabSelected,
58
63
  ordersGroup,
@@ -69,7 +74,6 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
69
74
  logisticOrders,
70
75
  loadLogisticOrders,
71
76
  isLogisticActivated,
72
- isAlsea,
73
77
  handleChangeOrderStatus,
74
78
  handleSendCustomerReview
75
79
  } = props;
@@ -95,6 +99,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
95
99
  const [, t] = useLanguage();
96
100
  const [{ parseDate }] = useUtils()
97
101
  const [configState] = useConfig()
102
+
98
103
  const [orientationState] = useDeviceOrientation();
99
104
  const [openSearchModal, setOpenSearchModal] = useState(false)
100
105
  const [openSLASettingModal, setOpenSLASettingModal] = useState(false)
@@ -124,12 +129,14 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
124
129
  backColor: '#E63757'
125
130
  }
126
131
  ]
127
- const combineTabs = configState?.configs?.combine_pending_and_progress_orders?.value === '1'
128
132
  const [selectedTabStatus, setSelectedTabStatus] = useState<any>(deliveryStatus)
129
133
  const [openedSelect, setOpenedSelect] = useState('')
134
+ const [lastDateConnection, setLastDateConnection] = useState(null)
135
+ const [internetLoading, setInternetLoading] = useState(!isNetConnected && isNetConnected !== null)
130
136
 
131
137
  const HEIGHT_SCREEN = orientationState?.dimensions?.height
132
138
  const IS_PORTRAIT = orientationState.orientation === PORTRAIT
139
+ const showTagsList = !props.isAlsea && !props.isDriverApp && currentTabSelected !== 'logisticOrders'
133
140
 
134
141
  const preorderTypeList = [
135
142
  { key: null, name: t('SLA', 'SLA\'s') },
@@ -251,7 +258,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
251
258
  paddingLeft: 0,
252
259
  paddingRight: 0,
253
260
  marginBottom: 30,
254
- marginTop: 30
261
+ marginTop: Platform.OS === 'ios' ? 60 : 30
255
262
  },
256
263
  rowStyle: {
257
264
  display: 'flex',
@@ -380,18 +387,75 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
380
387
  }
381
388
 
382
389
  useEffect(() => {
383
- scrollRefTab.current?.scrollTo({ animated: true });
384
- scrollListRef.current?.scrollTo({ animated: true });
385
- scrollRef.current?.scrollTo({ y: 0, animated: true });
390
+ scrollRefTab.current?.scrollTo();
391
+ scrollListRef.current?.scrollTo();
392
+ scrollRef.current?.scrollTo();
386
393
  setTags({ values: [] })
387
394
  }, [currentTabSelected])
388
395
 
389
- useEffect(() => {
390
- const unsubcribe = navigation.addListener('focus', () => {
391
- currentTabSelected === 'logisticOrders' ? loadLogisticOrders() : loadOrders && loadOrders({ newFetch: true })
392
- })
393
- return unsubcribe
394
- }, [navigation, loadOrders, loadLogisticOrders])
396
+ useEffect(() => {
397
+ const unsubcribe = navigation.addListener('focus', () => {
398
+ currentTabSelected === 'logisticOrders' && loadLogisticOrders && loadLogisticOrders()
399
+ })
400
+ return unsubcribe
401
+ }, [navigation, loadLogisticOrders])
402
+
403
+ useEffect(() => {
404
+ const orderStatuses = ['active', 'pending', 'inProgress', 'completed', 'cancelled']
405
+
406
+ const manageStoragedOrders = async () => {
407
+ setInternetLoading(true)
408
+ let lastConnection = await _retrieveStoreData('last_date_connection');
409
+ let _combineTabs = await _retrieveStoreData('combine_pending_and_progress_orders')
410
+ let ordersStoraged: any = {}
411
+ for (const status of orderStatuses) {
412
+ ordersStoraged[status] = await _retrieveStoreData(`${status}_orders`) ?? []
413
+ }
414
+
415
+ if (_combineTabs || !_combineTabs && combineTabs) {
416
+ _combineTabs && setCombineTabsState(_combineTabs)
417
+ _setStoreData('combine_pending_and_progress_orders', _combineTabs || combineTabs);
418
+ }
419
+
420
+ if (!lastConnection) {
421
+ const formattedDate = parseDate(new Date())
422
+ lastConnection = formattedDate
423
+ _setStoreData('last_date_connection', formattedDate);
424
+ }
425
+
426
+ lastConnection && setLastDateConnection(lastConnection)
427
+
428
+ if (Object.values(ordersStoraged).every((key: any) => Array.isArray(key) && !key?.length)) {
429
+ for (const status of orderStatuses) {
430
+ ordersStoraged[status] = ordersGroup[status]?.orders
431
+ _setStoreData(`${status}_orders`, ordersGroup[status]?.orders);
432
+ }
433
+ }
434
+
435
+ if (Object.values(ordersStoraged).some((key: any) => Array.isArray(key) && key?.length)) {
436
+ let newOrderGroup = {
437
+ ...ordersGroup
438
+ }
439
+ for (const status of orderStatuses) {
440
+ newOrderGroup[status] = {
441
+ ...ordersGroup[status],
442
+ error: null,
443
+ orders: ordersStoraged[status]
444
+ }
445
+ }
446
+ setOrdersGroup(newOrderGroup)
447
+ }
448
+ setInternetLoading(false)
449
+ };
450
+
451
+ if (isNetConnected) {
452
+ _setStoreData('last_date_connection', null);
453
+ _setStoreData('combine_pending_and_progress_orders', null);
454
+ orderStatuses.forEach((key: any) => _setStoreData(`${key}_orders`, null))
455
+ } else if (isNetConnected === false) {
456
+ manageStoragedOrders()
457
+ }
458
+ }, [isNetConnected]);
395
459
 
396
460
  return (
397
461
  <>
@@ -401,13 +465,17 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
401
465
  <View style={{ marginRight: 10 }}>
402
466
  <WebsocketStatus />
403
467
  </View>
404
- <FeatherIcon
405
- name='refresh-cw'
406
- color={theme.colors.backgroundDark}
407
- size={24}
408
- onPress={() => { currentTabSelected === 'logisticOrders' ? loadLogisticOrders() : loadOrders && loadOrders({ newFetch: true }) }}
409
- style={{ marginRight: 20 }}
410
- />
468
+ {isNetConnected && (
469
+ <FeatherIcon
470
+ name='refresh-cw'
471
+ color={theme.colors.backgroundDark}
472
+ size={24}
473
+ onPress={() => currentTabSelected === 'logisticOrders' ? loadLogisticOrders && loadLogisticOrders() : loadOrders && loadOrders({ newFetch: true })}
474
+ style={{
475
+ marginRight: 20
476
+ }}
477
+ />
478
+ )}
411
479
  <FontistoIcon
412
480
  name='search'
413
481
  color={theme.colors.backgroundDark}
@@ -416,57 +484,6 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
416
484
  />
417
485
  </IconWrapper>
418
486
  </View>
419
- {configState?.configs?.order_deadlines_enabled?.value === '1' && (
420
- <View style={styles.SLAwrapper}>
421
- {/* <View style={{ flex: 0.5 }}>
422
- <OButton
423
- text={t('SLA_SETTING', 'SLA’s Settings')}
424
- textStyle={{ color: theme.colors.backArrow }}
425
- imgRightSrc={null}
426
- style={{
427
- backgroundColor: theme.colors.inputChat,
428
- borderRadius: 7.6,
429
- zIndex: 10,
430
- borderWidth: 0,
431
- minHeight: 40
432
- }}
433
- onClick={onClickSetting}
434
- />
435
- </View> */}
436
- {/* <View style={{ width: 10, height: '100%' }} /> */}
437
- {/* <View style={{ flex: 0.5, justifyContent: 'center' }}>
438
- <SelectDropdown
439
- defaultButtonText={t('SLA', 'SLA\'s')}
440
- data={preorderTypeList}
441
- onSelect={(selectedItem, index) => {
442
- onFiltered && onFiltered({ ...search, timeStatus: selectedItem?.key })
443
- }}
444
- buttonTextAfterSelection={(selectedItem, index) => {
445
- return selectedItem.name
446
- }}
447
- rowTextForSelection={(item, index) => {
448
- return item.key
449
- }}
450
- buttonStyle={styles.selectOption}
451
- buttonTextStyle={styles.buttonTextStyle}
452
- renderDropdownIcon={isOpened => {
453
- return <FeatherIcon name={isOpened ? 'chevron-up' : 'chevron-down'} color={'#444'} size={18} />;
454
- }}
455
- dropdownStyle={styles.dropdownStyle}
456
- dropdownOverlayColor='transparent'
457
- rowStyle={styles.rowStyle}
458
- renderCustomizedRowChild={(item, index) => {
459
- return (
460
- <SlaOption>
461
- {index !== 0 && <OrderStatus timeState={item?.key} />}
462
- <View><OText size={14} color={'#748194'} >{item?.name}</OText></View>
463
- </SlaOption>
464
- );
465
- }}
466
- />
467
- </View> */}
468
- </View>
469
- )}
470
487
  <FiltersTab>
471
488
  <ScrollView
472
489
  ref={scrollRefTab}
@@ -521,7 +538,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
521
538
  </ScrollView>
522
539
  </FiltersTab>
523
540
  <View style={{ flex: 1, minHeight: HEIGHT_SCREEN - 450 }}>
524
- {currentTabSelected !== 'logisticOrders' && !isAlsea && (
541
+ {showTagsList && (
525
542
  <View
526
543
  style={{
527
544
  display: 'flex',
@@ -588,6 +605,22 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
588
605
  </ScrollView>
589
606
  </View>
590
607
  )}
608
+ {isNetConnected === false && lastDateConnection && (
609
+ <View
610
+ style={{
611
+ borderRadius: 8,
612
+ paddingVertical: 3,
613
+ backgroundColor: theme.colors.danger500,
614
+ marginBottom: 10
615
+ }}
616
+ >
617
+ <OText
618
+ style={{ color: 'white', textAlign: 'center' }}
619
+ >
620
+ {`${t('LAST_UPDATE', 'Last Update')}: ${lastDateConnection}`}
621
+ </OText>
622
+ </View>
623
+ )}
591
624
  <ScrollView
592
625
  ref={scrollListRef}
593
626
  showsVerticalScrollIndicator={false}
@@ -596,13 +629,14 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
596
629
  refreshControl={
597
630
  <RefreshControl
598
631
  refreshing={refreshing}
599
- onRefresh={() => { currentTabSelected === 'logisticOrders' ? loadLogisticOrders() : loadOrders && loadOrders({ newFetch: true }) }}
632
+ onRefresh={() => { isNetConnected && (currentTabSelected === 'logisticOrders' ? loadLogisticOrders && loadLogisticOrders() : loadOrders && loadOrders({ newFetch: true })) }}
600
633
  />
601
634
  }
602
635
  >
603
636
  {!currentOrdersGroup?.error?.length &&
604
637
  currentOrdersGroup?.orders?.length > 0 &&
605
638
  currentTabSelected !== 'logisticOrders' &&
639
+ !currentOrdersGroup?.loading &&
606
640
  (
607
641
  <PreviousOrders
608
642
  orders={ordersFormatted}
@@ -621,7 +655,8 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
621
655
  />
622
656
  )}
623
657
  {!logisticOrders?.error?.length &&
624
- logisticOrders?.orders?.length > 0 &&
658
+ logisticOrders && logisticOrders?.orders?.length > 0 &&
659
+ !logisticOrders?.loading &&
625
660
  currentTabSelected === 'logisticOrders' && (
626
661
  <PreviousOrders
627
662
  orders={logisticOrders?.orders?.filter((order: any) => !order?.expired).map((order: any) => ({ ...order, isLogistic: true }))}
@@ -633,42 +668,47 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
633
668
  />
634
669
  )
635
670
  }
636
- {((currentOrdersGroup?.loading ||
637
- currentOrdersGroup?.pagination?.total === null) ||
638
- (logisticOrders?.loading)) &&
671
+ {(
639
672
  (
640
- <>
641
- <View>
642
- {[...Array(5)].map((_, i) => (
643
- <Placeholder key={i} Animation={Fade}>
644
- <View
673
+ (
674
+ currentOrdersGroup?.loading ||
675
+ (currentOrdersGroup?.pagination?.total === null && isNetConnected) ||
676
+ logisticOrders?.loading
677
+ ) &&
678
+ !currentOrdersGroup?.error?.length
679
+ ) || internetLoading
680
+ ) && (
681
+ <View style={{ marginTop: 10 }}>
682
+ {[...Array(5)].map((_, i) => (
683
+ <Placeholder key={i} Animation={Fade}>
684
+ <View
685
+ style={{
686
+ width: '100%',
687
+ flexDirection: 'row',
688
+ marginBottom: 10,
689
+ }}>
690
+ <PlaceholderLine
691
+ width={IS_PORTRAIT ? 22 : 11}
692
+ height={74}
645
693
  style={{
646
- width: '100%',
647
- flexDirection: 'row',
648
- marginBottom: 10,
649
- }}>
650
- <PlaceholderLine
651
- width={IS_PORTRAIT ? 22 : 11}
652
- height={74}
653
- style={{
654
- marginRight: 20,
655
- marginBottom: 20,
656
- borderRadius: 7.6,
657
- }}
658
- />
659
- <Placeholder>
660
- <PlaceholderLine width={30} style={{ marginTop: 5 }} />
661
- <PlaceholderLine width={50} />
662
- <PlaceholderLine width={20} />
663
- </Placeholder>
664
- </View>
665
- </Placeholder>
666
- ))}
667
- </View>
668
- </>
694
+ marginRight: 20,
695
+ marginBottom: 20,
696
+ borderRadius: 7.6,
697
+ }}
698
+ />
699
+ <Placeholder>
700
+ <PlaceholderLine width={30} style={{ marginTop: 5 }} />
701
+ <PlaceholderLine width={50} />
702
+ <PlaceholderLine width={20} />
703
+ </Placeholder>
704
+ </View>
705
+ </Placeholder>
706
+ ))}
707
+ </View>
669
708
  )}
670
709
 
671
- {!currentOrdersGroup?.error?.length &&
710
+ {isNetConnected &&
711
+ !currentOrdersGroup?.error?.length &&
672
712
  !currentOrdersGroup?.loading &&
673
713
  currentOrdersGroup?.pagination?.totalPages &&
674
714
  currentOrdersGroup?.pagination?.currentPage < currentOrdersGroup?.pagination?.totalPages &&
@@ -685,33 +725,35 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
685
725
  />
686
726
  )}
687
727
 
688
- {((!currentOrdersGroup?.loading &&
689
- (currentOrdersGroup?.error?.length ||
690
- currentOrdersGroup?.orders?.length === 0)) ||
691
- (currentTabSelected === 'logisticOrders' &&
692
- (logisticOrders?.error?.length > 0 || logisticOrders?.orders?.length === 0 || !logisticOrders?.orders?.some(order => !order?.expired)))
693
- ) &&
728
+ {!internetLoading &&
729
+ ((!currentOrdersGroup?.loading &&
730
+ (currentOrdersGroup?.error?.length ||
731
+ currentOrdersGroup?.orders?.length === 0)) ||
732
+ (currentTabSelected === 'logisticOrders' &&
733
+ (logisticOrders && !logisticOrders?.loading && (logisticOrders?.error?.length > 0 || logisticOrders?.orders?.length === 0 || !logisticOrders?.orders?.some(order => !order?.expired))))
734
+ ) &&
694
735
  (
695
736
  <NotFoundSource
696
737
  content={
697
- ((currentTabSelected !== 'logisticOrders' && !currentOrdersGroup?.error?.length) ||
698
- (currentTabSelected === 'logisticOrders' && (!logisticOrders?.error?.length || (logisticOrders?.orders?.length > 0 && !logisticOrders?.orders?.some(order => !order?.expired)))))
699
- ? t('NO_RESULTS_FOUND', 'Sorry, no results found')
700
- : currentOrdersGroup?.error?.[0]?.message ||
701
- currentOrdersGroup?.error?.[0] ||
702
- (currentTabSelected === 'logisticOrders' && logisticOrders?.error) ||
703
- t('NETWORK_ERROR', 'Network Error')
738
+ !isNetConnected ? t('NETWORK_ERROR', 'Network Error') :
739
+ ((currentTabSelected !== 'logisticOrders' && !currentOrdersGroup?.error?.length) ||
740
+ (currentTabSelected === 'logisticOrders' && (!logisticOrders?.error?.length || (logisticOrders?.orders?.length > 0 && !logisticOrders?.orders?.some(order => !order?.expired)))))
741
+ ? t('NO_RESULTS_FOUND', 'Sorry, no results found')
742
+ : currentOrdersGroup?.error?.[0]?.message ||
743
+ currentOrdersGroup?.error?.[0] ||
744
+ (currentTabSelected === 'logisticOrders' && logisticOrders?.error) ||
745
+ t('NETWORK_ERROR', 'Network Error')
704
746
  }
705
747
  image={theme.images.general.notFound}
706
748
  conditioned={false}
749
+ btnTitle={!isNetConnected && t('REFRESH', 'Refresh')}
750
+ onClickButton={!isNetConnected && (() => RNRestart.Restart())}
707
751
  />
708
752
  )}
709
753
  </ScrollView>
710
754
  </View>
711
755
 
712
- {isBusinessApp && (
713
- <NewOrderNotification isBusinessApp={isBusinessApp} />
714
- )}
756
+ <NewOrderNotification isBusinessApp={isBusinessApp} />
715
757
 
716
758
  {(openSearchModal || openSLASettingModal) && (
717
759
  <OModal open={openSearchModal || openSLASettingModal} entireModal customClose>
@@ -724,39 +766,41 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
724
766
  {openSearchModal && (
725
767
  <SearchModalContent>
726
768
  <ModalTitle>{t('SEARCH_ORDERS', 'Search orders')}</ModalTitle>
727
- <InputContainer style={{ marginBottom: 24 }}>
728
- <SelectDropdown
729
- defaultButtonText={search?.timeStatus
730
- ? preorderTypeList.find(type => type.key === search?.timeStatus)?.name
731
- : t('SLA', 'SLA\'s')}
732
- data={preorderTypeList}
733
- onSelect={(selectedItem, index) => {
734
- setSearch({ ...search, timeStatus: selectedItem?.key })
735
- }}
736
- buttonTextAfterSelection={(selectedItem, index) => {
737
- return selectedItem.name
738
- }}
739
- rowTextForSelection={(item, index) => {
740
- return item.key
741
- }}
742
- buttonStyle={styles.selectOption}
743
- buttonTextStyle={styles.buttonTextStyle}
744
- renderDropdownIcon={isOpened => {
745
- return <FeatherIcon name={isOpened ? 'chevron-up' : 'chevron-down'} color={'#444'} size={18} />;
746
- }}
747
- dropdownStyle={styles.dropdownStyle}
748
- dropdownOverlayColor='transparent'
749
- rowStyle={styles.rowStyle}
750
- renderCustomizedRowChild={(item, index) => {
751
- return (
752
- <SlaOption>
753
- {index !== 0 && <OrderStatus timeState={item?.key} />}
754
- <View><OText size={14} color={'#748194'} >{item?.name}</OText></View>
755
- </SlaOption>
756
- );
757
- }}
758
- />
759
- </InputContainer>
769
+ {configState?.configs?.order_deadlines_enabled?.value === '1' && (
770
+ <InputContainer style={{ marginBottom: 24 }}>
771
+ <SelectDropdown
772
+ defaultButtonText={search?.timeStatus
773
+ ? preorderTypeList.find(type => type.key === search?.timeStatus)?.name
774
+ : t('SLA', 'SLA\'s')}
775
+ data={preorderTypeList}
776
+ onSelect={(selectedItem, index) => {
777
+ setSearch({ ...search, timeStatus: selectedItem?.key })
778
+ }}
779
+ buttonTextAfterSelection={(selectedItem, index) => {
780
+ return selectedItem.name
781
+ }}
782
+ rowTextForSelection={(item, index) => {
783
+ return item.key
784
+ }}
785
+ buttonStyle={styles.selectOption}
786
+ buttonTextStyle={styles.buttonTextStyle}
787
+ renderDropdownIcon={isOpened => {
788
+ return <FeatherIcon name={isOpened ? 'chevron-up' : 'chevron-down'} color={'#444'} size={18} />;
789
+ }}
790
+ dropdownStyle={styles.dropdownStyle}
791
+ dropdownOverlayColor='transparent'
792
+ rowStyle={styles.rowStyle}
793
+ renderCustomizedRowChild={(item, index) => {
794
+ return (
795
+ <SlaOption>
796
+ {index !== 0 && <OrderStatus timeState={item?.key} />}
797
+ <View><OText size={14} color={'#748194'} >{item?.name}</OText></View>
798
+ </SlaOption>
799
+ );
800
+ }}
801
+ />
802
+ </InputContainer>
803
+ )}
760
804
  <InputContainer>
761
805
  <OInput
762
806
  value={search.id}
@@ -985,12 +1029,16 @@ export const OrdersOption = (props: OrdersOptionParams) => {
985
1029
  const [, t] = useLanguage();
986
1030
  const [configState] = useConfig()
987
1031
  const [checkNotificationStatus, setCheckNotificationStatus] = useState({ open: false, checked: false })
988
- const combineTabs = configState?.configs?.combine_pending_and_progress_orders?.value === '1'
1032
+
1033
+ const getCombineTabsStoraged = async () => await _retrieveStoreData('combine_pending_and_progress_orders')
1034
+ const combineTabs = typeof configState?.configs?.combine_pending_and_progress_orders === 'object' ? configState?.configs?.combine_pending_and_progress_orders?.value === '1' : getCombineTabsStoraged()
1035
+
989
1036
  const ordersProps = {
990
1037
  ...props,
991
1038
  UIComponent: OrdersOptionUI,
992
1039
  useDefualtSessionManager: true,
993
1040
  asDashboard: true,
1041
+ combineTabs,
994
1042
  isIos: Platform.OS === 'ios',
995
1043
  orderStatus: [
996
1044
  { key: 0, text: t('PENDING', 'Pending') },
@@ -1070,13 +1118,25 @@ export const OrdersOption = (props: OrdersOptionParams) => {
1070
1118
  {
1071
1119
  key: 23,
1072
1120
  text: t('ORDER_DRIVER_ON_WAY', 'Driver on way')
1121
+ },
1122
+ {
1123
+ key: 24,
1124
+ text: t('ORDER_DRIVER_WAITING_FOR_ORDER', 'Driver waiting for order')
1125
+ },
1126
+ {
1127
+ key: 25,
1128
+ text: t('ORDER_ACCEPTED_BY_DRIVER_COMPANY', 'Accepted by driver company')
1129
+ },
1130
+ {
1131
+ key: 26,
1132
+ text: t('ORDER_DRIVER_ARRIVED_CUSTOMER', 'Driver arrived to customer')
1073
1133
  }
1074
1134
  ],
1075
1135
  tabs: combineTabs ? [
1076
1136
  {
1077
1137
  key: 0,
1078
1138
  text: t('ACTIVE', 'Active'),
1079
- tags: props?.orderGroupStatusCustom?.active ?? [0, 3, 4, 7, 8, 9, 13, 14, 18, 19, 20, 21, 22, 23],
1139
+ tags: props?.orderGroupStatusCustom?.active ?? [0, 3, 4, 7, 8, 9, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26],
1080
1140
  title: 'active',
1081
1141
  },
1082
1142
  {
@@ -1102,7 +1162,7 @@ export const OrdersOption = (props: OrdersOptionParams) => {
1102
1162
  {
1103
1163
  key: 1,
1104
1164
  text: t('IN_PROGRESS', 'In Progress'),
1105
- tags: props?.orderGroupStatusCustom?.inProgress ?? [3, 4, 7, 8, 9, 14, 18, 19, 20, 21, 22, 23],
1165
+ tags: props?.orderGroupStatusCustom?.inProgress ?? [3, 4, 7, 8, 9, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26],
1106
1166
  title: 'inProgress',
1107
1167
  },
1108
1168
  {
@@ -1128,3 +1188,7 @@ export const OrdersOption = (props: OrdersOptionParams) => {
1128
1188
  )}
1129
1189
  </>);
1130
1190
  };
1191
+
1192
+ OrdersOption.defaultProps = {
1193
+ isNetConnected: true
1194
+ }
@@ -1,5 +1,6 @@
1
1
  import React, { useState } from 'react';
2
2
  import { StyleSheet, TouchableOpacity, FlatList, RefreshControl } from 'react-native';
3
+ import FastImage from 'react-native-fast-image';
3
4
  import { useTheme } from 'styled-components/native';
4
5
  import { useLanguage, useUtils } from 'ordering-components/native';
5
6
  import { Card, Logo, Information, Header, Badge } from './styles';
@@ -201,6 +202,24 @@ export const PreviousMessages = (props: PreviousMessagesParams) => {
201
202
  value: t('ORDER_DRIVER_ON_WAY', 'Driver on way'),
202
203
  slug: 'ORDER_DRIVER_ON_WAY',
203
204
  percentage: 45
205
+ },
206
+ {
207
+ key: 24,
208
+ value: t('ORDER_DRIVER_WAITING_FOR_ORDER', 'Driver waiting for order'),
209
+ slug: 'ORDER_DRIVER_WAITING_FOR_ORDER',
210
+ percentage: 25
211
+ },
212
+ {
213
+ key: 25,
214
+ value: t('ORDER_ACCEPTED_BY_DRIVER_COMPANY', 'Accepted by driver company'),
215
+ slug: 'ORDER_ACCEPTED_BY_DRIVER_COMPANY',
216
+ percentage: 25
217
+ },
218
+ {
219
+ key: 26,
220
+ value: t('ORDER_DRIVER_ARRIVED_CUSTOMER', 'Driver arrived to customer'),
221
+ slug: 'ORDER_DRIVER_ARRIVED_CUSTOMER',
222
+ percentage: 80
204
223
  }
205
224
  ];
206
225
 
@@ -284,10 +303,14 @@ export const PreviousMessages = (props: PreviousMessagesParams) => {
284
303
  activeOpacity={1}>
285
304
  <Card key={order?.id}>
286
305
  <Logo style={styles.logo}>
287
- <OIcon
288
- url={optimizeImage(order?.business?.logo, 'h_300,c_limit')}
289
- src={!order?.business?.logo && theme?.images?.dummies?.businessLogo}
306
+ <FastImage
290
307
  style={styles.icon}
308
+ source={order.business?.logo?.includes('https') ? {
309
+ uri: order.business?.logo,
310
+ priority: FastImage.priority.high,
311
+ cache: FastImage.cacheControl.immutable
312
+ } : order.business?.logo ?? theme?.images?.dummies?.businessLogo}
313
+ resizeMode={FastImage.resizeMode.cover}
291
314
  />
292
315
  </Logo>
293
316
  <Information>