ordering-ui-react-native 0.21.87 → 0.21.88-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 (162) 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/StripeMethodForm/index.tsx +6 -4
  5. package/src/components/VerifyPhone/styles.tsx +1 -2
  6. package/src/types/index.tsx +3 -1
  7. package/themes/business/index.tsx +2 -0
  8. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
  9. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
  10. package/themes/business/src/components/BusinessController/index.tsx +8 -3
  11. package/themes/business/src/components/BusinessProductList/index.tsx +2 -1
  12. package/themes/business/src/components/Chat/index.tsx +5 -2
  13. package/themes/business/src/components/DriverMap/index.tsx +49 -27
  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 +36 -17
  20. package/themes/business/src/components/NewOrderNotification/index.tsx +69 -33
  21. package/themes/business/src/components/OrderDetails/Business.tsx +74 -9
  22. package/themes/business/src/components/OrderDetails/Delivery.tsx +131 -51
  23. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +112 -41
  24. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +62 -24
  25. package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
  26. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +221 -0
  27. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
  28. package/themes/business/src/components/OrderSummary/index.tsx +223 -73
  29. package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
  30. package/themes/business/src/components/OrdersOption/index.tsx +251 -159
  31. package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
  32. package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
  33. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +42 -20
  34. package/themes/business/src/components/PreviousOrders/index.tsx +76 -66
  35. package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
  36. package/themes/business/src/components/PrinterEdition/index.tsx +431 -0
  37. package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
  38. package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
  39. package/themes/business/src/components/PrinterSettings/index.tsx +267 -0
  40. package/themes/business/src/components/PrinterSettings/styles.tsx +30 -0
  41. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  42. package/themes/business/src/components/Sessions/index.tsx +1 -1
  43. package/themes/business/src/components/StoresList/index.tsx +2 -2
  44. package/themes/business/src/components/UserFormDetails/index.tsx +111 -107
  45. package/themes/business/src/components/UserProfileForm/index.tsx +47 -29
  46. package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
  47. package/themes/business/src/components/shared/OInput.tsx +2 -0
  48. package/themes/business/src/components/shared/OTextarea.tsx +8 -9
  49. package/themes/business/src/hooks/useLocation.tsx +5 -4
  50. package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
  51. package/themes/business/src/types/index.tsx +14 -4
  52. package/themes/business/src/utils/index.tsx +25 -1
  53. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  54. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  55. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  56. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  57. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  58. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  59. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  60. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  61. package/themes/original/index.tsx +11 -0
  62. package/themes/original/src/components/AddressDetails/index.tsx +20 -10
  63. package/themes/original/src/components/AddressForm/index.tsx +32 -17
  64. package/themes/original/src/components/AddressList/index.tsx +8 -7
  65. package/themes/original/src/components/AnalyticsSegment/index.tsx +6 -6
  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/BusinessController/index.tsx +12 -7
  69. package/themes/original/src/components/BusinessItemAccordion/index.tsx +13 -5
  70. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +2 -3
  71. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +1 -3
  72. package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
  73. package/themes/original/src/components/BusinessPreorder/index.tsx +20 -15
  74. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +5 -5
  75. package/themes/original/src/components/BusinessProductsList/index.tsx +2 -2
  76. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  77. package/themes/original/src/components/BusinessProductsListing/index.tsx +18 -6
  78. package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
  79. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
  80. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +1 -1
  81. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
  82. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  83. package/themes/original/src/components/Cart/index.tsx +43 -15
  84. package/themes/original/src/components/CartContent/index.tsx +21 -8
  85. package/themes/original/src/components/Checkout/index.tsx +105 -59
  86. package/themes/original/src/components/CitiesControl/index.tsx +0 -3
  87. package/themes/original/src/components/CouponControl/index.tsx +1 -3
  88. package/themes/original/src/components/DriverTips/index.tsx +1 -3
  89. package/themes/original/src/components/Favorite/index.tsx +1 -5
  90. package/themes/original/src/components/FavoriteList/index.tsx +0 -1
  91. package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -7
  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 +7 -9
  96. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +11 -12
  97. package/themes/original/src/components/GoogleMap/index.tsx +39 -18
  98. package/themes/original/src/components/Help/index.tsx +2 -0
  99. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
  100. package/themes/original/src/components/Home/index.tsx +2 -10
  101. package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
  102. package/themes/original/src/components/LoginForm/index.tsx +4 -7
  103. package/themes/original/src/components/MessageListing/index.tsx +2 -1
  104. package/themes/original/src/components/Messages/index.tsx +13 -9
  105. package/themes/original/src/components/MomentOption/index.tsx +13 -2
  106. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -3
  107. package/themes/original/src/components/MultiCheckout/index.tsx +130 -86
  108. package/themes/original/src/components/MultiOrdersDetails/index.tsx +2 -1
  109. package/themes/original/src/components/MyOrders/index.tsx +10 -23
  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 +13 -10
  115. package/themes/original/src/components/OrderDetails/index.tsx +42 -19
  116. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  117. package/themes/original/src/components/OrderProgress/index.tsx +26 -6
  118. package/themes/original/src/components/OrderSummary/index.tsx +28 -9
  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 +17 -9
  124. package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
  125. package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
  126. package/themes/original/src/components/ProductForm/ActionButton.tsx +17 -20
  127. package/themes/original/src/components/ProductForm/index.tsx +107 -102
  128. package/themes/original/src/components/ProductItemAccordion/index.tsx +55 -49
  129. package/themes/original/src/components/ProductItemAccordion/styles.tsx +3 -4
  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 +86 -78
  140. package/themes/original/src/components/SingleOrderCard/index.tsx +7 -5
  141. package/themes/original/src/components/SingleProductCard/index.tsx +3 -4
  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 +10 -3
  145. package/themes/original/src/components/StripeElementsForm/index.tsx +77 -60
  146. package/themes/original/src/components/StripeElementsForm/naked.tsx +48 -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 +3 -2
  152. package/themes/original/src/components/UserFormDetails/index.tsx +154 -130
  153. package/themes/original/src/components/UserProfile/index.tsx +9 -1
  154. package/themes/original/src/components/Wallets/index.tsx +6 -3
  155. package/themes/original/src/components/WebsocketStatus/index.tsx +1 -4
  156. package/themes/original/src/components/shared/OAlert.tsx +2 -1
  157. package/themes/original/src/components/shared/OButton.tsx +5 -4
  158. package/themes/original/src/components/shared/OInput.tsx +4 -8
  159. package/themes/original/src/components/shared/OModal.tsx +7 -2
  160. package/themes/original/src/types/index.tsx +5 -1
  161. package/themes/original/src/utils/index.tsx +30 -1
  162. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -6,12 +6,14 @@ 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';
@@ -50,8 +52,12 @@ const { useDeviceOrientation, PORTRAIT } = DeviceOrientationMethods
50
52
 
51
53
  const OrdersOptionUI = (props: OrdersOptionParams) => {
52
54
  const {
55
+ navigation,
53
56
  setCurrentFilters,
54
57
  tabs,
58
+ combineTabs,
59
+ setCombineTabsState,
60
+ isNetConnected,
55
61
  currentTabSelected,
56
62
  setCurrentTabSelected,
57
63
  ordersGroup,
@@ -68,7 +74,6 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
68
74
  logisticOrders,
69
75
  loadLogisticOrders,
70
76
  isLogisticActivated,
71
- isAlsea,
72
77
  handleChangeOrderStatus,
73
78
  handleSendCustomerReview
74
79
  } = props;
@@ -94,6 +99,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
94
99
  const [, t] = useLanguage();
95
100
  const [{ parseDate }] = useUtils()
96
101
  const [configState] = useConfig()
102
+
97
103
  const [orientationState] = useDeviceOrientation();
98
104
  const [openSearchModal, setOpenSearchModal] = useState(false)
99
105
  const [openSLASettingModal, setOpenSLASettingModal] = useState(false)
@@ -125,9 +131,12 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
125
131
  ]
126
132
  const [selectedTabStatus, setSelectedTabStatus] = useState<any>(deliveryStatus)
127
133
  const [openedSelect, setOpenedSelect] = useState('')
134
+ const [lastDateConnection, setLastDateConnection] = useState(null)
135
+ const [internetLoading, setInternetLoading] = useState(!isNetConnected && isNetConnected !== null)
128
136
 
129
137
  const HEIGHT_SCREEN = orientationState?.dimensions?.height
130
138
  const IS_PORTRAIT = orientationState.orientation === PORTRAIT
139
+ const showTagsList = !props.isAlsea && !props.isDriverApp && currentTabSelected !== 'logisticOrders'
131
140
 
132
141
  const preorderTypeList = [
133
142
  { key: null, name: t('SLA', 'SLA\'s') },
@@ -249,7 +258,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
249
258
  paddingLeft: 0,
250
259
  paddingRight: 0,
251
260
  marginBottom: 30,
252
- marginTop: 30
261
+ marginTop: Platform.OS === 'ios' ? 60 : 30
253
262
  },
254
263
  rowStyle: {
255
264
  display: 'flex',
@@ -378,12 +387,76 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
378
387
  }
379
388
 
380
389
  useEffect(() => {
381
- scrollRefTab.current?.scrollTo({ animated: true });
382
- scrollListRef.current?.scrollTo({ animated: true });
383
- scrollRef.current?.scrollTo({ y: 0, animated: true });
390
+ scrollRefTab.current?.scrollTo();
391
+ scrollListRef.current?.scrollTo();
392
+ scrollRef.current?.scrollTo();
384
393
  setTags({ values: [] })
385
394
  }, [currentTabSelected])
386
395
 
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]);
459
+
387
460
  return (
388
461
  <>
389
462
  <View style={styles.header}>
@@ -392,13 +465,15 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
392
465
  <View style={{ marginRight: 10 }}>
393
466
  <WebsocketStatus />
394
467
  </View>
395
- <FeatherIcon
396
- name='refresh-cw'
397
- color={theme.colors.backgroundDark}
398
- size={24}
399
- onPress={() => { currentTabSelected === 'logisticOrders' ? loadLogisticOrders() : loadOrders && loadOrders({ newFetch: true }) }}
400
- style={{ marginRight: 20 }}
401
- />
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={{ marginRight: 20 }}
475
+ />
476
+ )}
402
477
  <FontistoIcon
403
478
  name='search'
404
479
  color={theme.colors.backgroundDark}
@@ -407,57 +482,6 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
407
482
  />
408
483
  </IconWrapper>
409
484
  </View>
410
- {configState?.configs?.order_deadlines_enabled?.value === '1' && (
411
- <View style={styles.SLAwrapper}>
412
- {/* <View style={{ flex: 0.5 }}>
413
- <OButton
414
- text={t('SLA_SETTING', 'SLA’s Settings')}
415
- textStyle={{ color: theme.colors.backArrow }}
416
- imgRightSrc={null}
417
- style={{
418
- backgroundColor: theme.colors.inputChat,
419
- borderRadius: 7.6,
420
- zIndex: 10,
421
- borderWidth: 0,
422
- minHeight: 40
423
- }}
424
- onClick={onClickSetting}
425
- />
426
- </View> */}
427
- {/* <View style={{ width: 10, height: '100%' }} /> */}
428
- {/* <View style={{ flex: 0.5, justifyContent: 'center' }}>
429
- <SelectDropdown
430
- defaultButtonText={t('SLA', 'SLA\'s')}
431
- data={preorderTypeList}
432
- onSelect={(selectedItem, index) => {
433
- onFiltered && onFiltered({ ...search, timeStatus: selectedItem?.key })
434
- }}
435
- buttonTextAfterSelection={(selectedItem, index) => {
436
- return selectedItem.name
437
- }}
438
- rowTextForSelection={(item, index) => {
439
- return item.key
440
- }}
441
- buttonStyle={styles.selectOption}
442
- buttonTextStyle={styles.buttonTextStyle}
443
- renderDropdownIcon={isOpened => {
444
- return <FeatherIcon name={isOpened ? 'chevron-up' : 'chevron-down'} color={'#444'} size={18} />;
445
- }}
446
- dropdownStyle={styles.dropdownStyle}
447
- dropdownOverlayColor='transparent'
448
- rowStyle={styles.rowStyle}
449
- renderCustomizedRowChild={(item, index) => {
450
- return (
451
- <SlaOption>
452
- {index !== 0 && <OrderStatus timeState={item?.key} />}
453
- <View><OText size={14} color={'#748194'} >{item?.name}</OText></View>
454
- </SlaOption>
455
- );
456
- }}
457
- />
458
- </View> */}
459
- </View>
460
- )}
461
485
  <FiltersTab>
462
486
  <ScrollView
463
487
  ref={scrollRefTab}
@@ -467,7 +491,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
467
491
  nestedScrollEnabled={true}
468
492
  >
469
493
  <TabsContainer>
470
- {(isLogisticActivated && !isBusinessApp) && (
494
+ {(isLogisticActivated && !isBusinessApp && !combineTabs) && (
471
495
  <Pressable
472
496
  style={styles.pressable}
473
497
  onPress={() => setCurrentTabSelected('logisticOrders')}>
@@ -512,7 +536,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
512
536
  </ScrollView>
513
537
  </FiltersTab>
514
538
  <View style={{ flex: 1, minHeight: HEIGHT_SCREEN - 450 }}>
515
- {currentTabSelected !== 'logisticOrders' && !isAlsea && (
539
+ {showTagsList && (
516
540
  <View
517
541
  style={{
518
542
  display: 'flex',
@@ -579,6 +603,22 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
579
603
  </ScrollView>
580
604
  </View>
581
605
  )}
606
+ {isNetConnected === false && lastDateConnection && (
607
+ <View
608
+ style={{
609
+ borderRadius: 8,
610
+ paddingVertical: 3,
611
+ backgroundColor: theme.colors.danger500,
612
+ marginBottom: 10
613
+ }}
614
+ >
615
+ <OText
616
+ style={{ color: 'white', textAlign: 'center' }}
617
+ >
618
+ {`${t('LAST_UPDATE', 'Last Update')}: ${lastDateConnection}`}
619
+ </OText>
620
+ </View>
621
+ )}
582
622
  <ScrollView
583
623
  ref={scrollListRef}
584
624
  showsVerticalScrollIndicator={false}
@@ -587,7 +627,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
587
627
  refreshControl={
588
628
  <RefreshControl
589
629
  refreshing={refreshing}
590
- onRefresh={() => { currentTabSelected === 'logisticOrders' ? loadLogisticOrders() : loadOrders && loadOrders({ newFetch: true }) }}
630
+ onRefresh={() => { isNetConnected && (currentTabSelected === 'logisticOrders' ? loadLogisticOrders && loadLogisticOrders() : loadOrders && loadOrders({ newFetch: true })) }}
591
631
  />
592
632
  }
593
633
  >
@@ -624,42 +664,48 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
624
664
  />
625
665
  )
626
666
  }
627
- {((currentOrdersGroup?.loading ||
628
- currentOrdersGroup?.pagination?.total === null) ||
629
- (logisticOrders?.loading)) &&
667
+ {(
630
668
  (
631
- <>
632
- <View>
633
- {[...Array(5)].map((_, i) => (
634
- <Placeholder key={i} Animation={Fade}>
635
- <View
669
+ (
670
+ currentOrdersGroup?.loading ||
671
+ (currentOrdersGroup?.pagination?.total === null && isNetConnected) ||
672
+ logisticOrders?.loading
673
+ ) &&
674
+ !currentOrdersGroup?.error?.length &&
675
+ !currentOrdersGroup?.orders?.length
676
+ ) || internetLoading
677
+ ) && (
678
+ <View>
679
+ {[...Array(5)].map((_, i) => (
680
+ <Placeholder key={i} Animation={Fade}>
681
+ <View
682
+ style={{
683
+ width: '100%',
684
+ flexDirection: 'row',
685
+ marginBottom: 10,
686
+ }}>
687
+ <PlaceholderLine
688
+ width={IS_PORTRAIT ? 22 : 11}
689
+ height={74}
636
690
  style={{
637
- width: '100%',
638
- flexDirection: 'row',
639
- marginBottom: 10,
640
- }}>
641
- <PlaceholderLine
642
- width={IS_PORTRAIT ? 22 : 11}
643
- height={74}
644
- style={{
645
- marginRight: 20,
646
- marginBottom: 20,
647
- borderRadius: 7.6,
648
- }}
649
- />
650
- <Placeholder>
651
- <PlaceholderLine width={30} style={{ marginTop: 5 }} />
652
- <PlaceholderLine width={50} />
653
- <PlaceholderLine width={20} />
654
- </Placeholder>
655
- </View>
656
- </Placeholder>
657
- ))}
658
- </View>
659
- </>
691
+ marginRight: 20,
692
+ marginBottom: 20,
693
+ borderRadius: 7.6,
694
+ }}
695
+ />
696
+ <Placeholder>
697
+ <PlaceholderLine width={30} style={{ marginTop: 5 }} />
698
+ <PlaceholderLine width={50} />
699
+ <PlaceholderLine width={20} />
700
+ </Placeholder>
701
+ </View>
702
+ </Placeholder>
703
+ ))}
704
+ </View>
660
705
  )}
661
706
 
662
- {!currentOrdersGroup?.error?.length &&
707
+ {isNetConnected &&
708
+ !currentOrdersGroup?.error?.length &&
663
709
  !currentOrdersGroup?.loading &&
664
710
  currentOrdersGroup?.pagination?.totalPages &&
665
711
  currentOrdersGroup?.pagination?.currentPage < currentOrdersGroup?.pagination?.totalPages &&
@@ -676,33 +722,35 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
676
722
  />
677
723
  )}
678
724
 
679
- {((!currentOrdersGroup?.loading &&
680
- (currentOrdersGroup?.error?.length ||
681
- currentOrdersGroup?.orders?.length === 0)) ||
682
- (currentTabSelected === 'logisticOrders' &&
683
- (logisticOrders?.error?.length > 0 || logisticOrders?.orders?.length === 0 || !logisticOrders?.orders?.some(order => !order?.expired)))
684
- ) &&
725
+ {!internetLoading &&
726
+ ((!currentOrdersGroup?.loading &&
727
+ (currentOrdersGroup?.error?.length ||
728
+ currentOrdersGroup?.orders?.length === 0)) ||
729
+ (currentTabSelected === 'logisticOrders' &&
730
+ (logisticOrders?.error?.length > 0 || logisticOrders?.orders?.length === 0 || !logisticOrders?.orders?.some(order => !order?.expired)))
731
+ ) &&
685
732
  (
686
733
  <NotFoundSource
687
734
  content={
688
- ((currentTabSelected !== 'logisticOrders' && !currentOrdersGroup?.error?.length) ||
689
- (currentTabSelected === 'logisticOrders' && (!logisticOrders?.error?.length || (logisticOrders?.orders?.length > 0 && !logisticOrders?.orders?.some(order => !order?.expired)))))
690
- ? t('NO_RESULTS_FOUND', 'Sorry, no results found')
691
- : currentOrdersGroup?.error?.[0]?.message ||
692
- currentOrdersGroup?.error?.[0] ||
693
- (currentTabSelected === 'logisticOrders' && logisticOrders?.error) ||
694
- t('NETWORK_ERROR', 'Network Error')
735
+ !isNetConnected ? t('NETWORK_ERROR', 'Network Error') :
736
+ ((currentTabSelected !== 'logisticOrders' && !currentOrdersGroup?.error?.length) ||
737
+ (currentTabSelected === 'logisticOrders' && (!logisticOrders?.error?.length || (logisticOrders?.orders?.length > 0 && !logisticOrders?.orders?.some(order => !order?.expired)))))
738
+ ? t('NO_RESULTS_FOUND', 'Sorry, no results found')
739
+ : currentOrdersGroup?.error?.[0]?.message ||
740
+ currentOrdersGroup?.error?.[0] ||
741
+ (currentTabSelected === 'logisticOrders' && logisticOrders?.error) ||
742
+ t('NETWORK_ERROR', 'Network Error')
695
743
  }
696
744
  image={theme.images.general.notFound}
697
745
  conditioned={false}
746
+ btnTitle={!isNetConnected && t('REFRESH', 'Refresh')}
747
+ onClickButton={!isNetConnected && (() => RNRestart.Restart())}
698
748
  />
699
749
  )}
700
750
  </ScrollView>
701
751
  </View>
702
752
 
703
- {isBusinessApp && (
704
- <NewOrderNotification isBusinessApp={isBusinessApp} />
705
- )}
753
+ <NewOrderNotification isBusinessApp={isBusinessApp} />
706
754
 
707
755
  {(openSearchModal || openSLASettingModal) && (
708
756
  <OModal open={openSearchModal || openSLASettingModal} entireModal customClose>
@@ -715,39 +763,41 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
715
763
  {openSearchModal && (
716
764
  <SearchModalContent>
717
765
  <ModalTitle>{t('SEARCH_ORDERS', 'Search orders')}</ModalTitle>
718
- <InputContainer style={{ marginBottom: 24 }}>
719
- <SelectDropdown
720
- defaultButtonText={search?.timeStatus
721
- ? preorderTypeList.find(type => type.key === search?.timeStatus)?.name
722
- : t('SLA', 'SLA\'s')}
723
- data={preorderTypeList}
724
- onSelect={(selectedItem, index) => {
725
- setSearch({ ...search, timeStatus: selectedItem?.key })
726
- }}
727
- buttonTextAfterSelection={(selectedItem, index) => {
728
- return selectedItem.name
729
- }}
730
- rowTextForSelection={(item, index) => {
731
- return item.key
732
- }}
733
- buttonStyle={styles.selectOption}
734
- buttonTextStyle={styles.buttonTextStyle}
735
- renderDropdownIcon={isOpened => {
736
- return <FeatherIcon name={isOpened ? 'chevron-up' : 'chevron-down'} color={'#444'} size={18} />;
737
- }}
738
- dropdownStyle={styles.dropdownStyle}
739
- dropdownOverlayColor='transparent'
740
- rowStyle={styles.rowStyle}
741
- renderCustomizedRowChild={(item, index) => {
742
- return (
743
- <SlaOption>
744
- {index !== 0 && <OrderStatus timeState={item?.key} />}
745
- <View><OText size={14} color={'#748194'} >{item?.name}</OText></View>
746
- </SlaOption>
747
- );
748
- }}
749
- />
750
- </InputContainer>
766
+ {configState?.configs?.order_deadlines_enabled?.value === '1' && (
767
+ <InputContainer style={{ marginBottom: 24 }}>
768
+ <SelectDropdown
769
+ defaultButtonText={search?.timeStatus
770
+ ? preorderTypeList.find(type => type.key === search?.timeStatus)?.name
771
+ : t('SLA', 'SLA\'s')}
772
+ data={preorderTypeList}
773
+ onSelect={(selectedItem, index) => {
774
+ setSearch({ ...search, timeStatus: selectedItem?.key })
775
+ }}
776
+ buttonTextAfterSelection={(selectedItem, index) => {
777
+ return selectedItem.name
778
+ }}
779
+ rowTextForSelection={(item, index) => {
780
+ return item.key
781
+ }}
782
+ buttonStyle={styles.selectOption}
783
+ buttonTextStyle={styles.buttonTextStyle}
784
+ renderDropdownIcon={isOpened => {
785
+ return <FeatherIcon name={isOpened ? 'chevron-up' : 'chevron-down'} color={'#444'} size={18} />;
786
+ }}
787
+ dropdownStyle={styles.dropdownStyle}
788
+ dropdownOverlayColor='transparent'
789
+ rowStyle={styles.rowStyle}
790
+ renderCustomizedRowChild={(item, index) => {
791
+ return (
792
+ <SlaOption>
793
+ {index !== 0 && <OrderStatus timeState={item?.key} />}
794
+ <View><OText size={14} color={'#748194'} >{item?.name}</OText></View>
795
+ </SlaOption>
796
+ );
797
+ }}
798
+ />
799
+ </InputContainer>
800
+ )}
751
801
  <InputContainer>
752
802
  <OInput
753
803
  value={search.id}
@@ -974,12 +1024,18 @@ export const Timer = () => {
974
1024
 
975
1025
  export const OrdersOption = (props: OrdersOptionParams) => {
976
1026
  const [, t] = useLanguage();
1027
+ const [configState] = useConfig()
977
1028
  const [checkNotificationStatus, setCheckNotificationStatus] = useState({ open: false, checked: false })
1029
+
1030
+ const getCombineTabsStoraged = async () => await _retrieveStoreData('combine_pending_and_progress_orders')
1031
+ const combineTabs = typeof configState?.configs?.combine_pending_and_progress_orders === 'object' ? configState?.configs?.combine_pending_and_progress_orders?.value === '1' : getCombineTabsStoraged()
1032
+
978
1033
  const ordersProps = {
979
1034
  ...props,
980
1035
  UIComponent: OrdersOptionUI,
981
1036
  useDefualtSessionManager: true,
982
1037
  asDashboard: true,
1038
+ combineTabs,
983
1039
  isIos: Platform.OS === 'ios',
984
1040
  orderStatus: [
985
1041
  { key: 0, text: t('PENDING', 'Pending') },
@@ -1059,34 +1115,66 @@ export const OrdersOption = (props: OrdersOptionParams) => {
1059
1115
  {
1060
1116
  key: 23,
1061
1117
  text: t('ORDER_DRIVER_ON_WAY', 'Driver on way')
1118
+ },
1119
+ {
1120
+ key: 24,
1121
+ text: t('ORDER_DRIVER_WAITING_FOR_ORDER', 'Driver waiting for order')
1122
+ },
1123
+ {
1124
+ key: 25,
1125
+ text: t('ORDER_ACCEPTED_BY_DRIVER_COMPANY', 'Accepted by driver company')
1126
+ },
1127
+ {
1128
+ key: 26,
1129
+ text: t('ORDER_DRIVER_ARRIVED_CUSTOMER', 'Driver arrived to customer')
1062
1130
  }
1063
1131
  ],
1064
- tabs: [
1132
+ tabs: combineTabs ? [
1065
1133
  {
1066
1134
  key: 0,
1067
- text: t('PENDING', 'Pending'),
1068
- tags: props?.orderGroupStatusCustom?.pending ?? [0, 13],
1069
- title: 'pending'
1135
+ text: t('ACTIVE', 'Active'),
1136
+ tags: props?.orderGroupStatusCustom?.active ?? [0, 3, 4, 7, 8, 9, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26],
1137
+ title: 'active',
1070
1138
  },
1071
1139
  {
1072
1140
  key: 1,
1073
- text: t('IN_PROGRESS', 'In Progress'),
1074
- tags: props?.orderGroupStatusCustom?.inProgress ?? [3, 4, 7, 8, 9, 14, 18, 19, 20, 21, 22, 23],
1075
- title: 'inProgress',
1076
- },
1077
- {
1078
- key: 2,
1079
1141
  text: t('COMPLETED', 'Completed'),
1080
1142
  tags: props?.orderGroupStatusCustom?.completed ?? [1, 11, 15],
1081
1143
  title: 'completed',
1082
1144
  },
1083
1145
  {
1084
- key: 3,
1146
+ key: 2,
1085
1147
  text: t('CANCELLED', 'Cancelled'),
1086
1148
  tags: props?.orderGroupStatusCustom?.cancelled ?? [2, 5, 6, 10, 12, 16, 17],
1087
1149
  title: 'cancelled',
1088
1150
  },
1089
- ]
1151
+ ] :
1152
+ [
1153
+ {
1154
+ key: 0,
1155
+ text: t('PENDING', 'Pending'),
1156
+ tags: props?.orderGroupStatusCustom?.pending ?? [0, 13],
1157
+ title: 'pending'
1158
+ },
1159
+ {
1160
+ key: 1,
1161
+ text: t('IN_PROGRESS', 'In Progress'),
1162
+ tags: props?.orderGroupStatusCustom?.inProgress ?? [3, 4, 7, 8, 9, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26],
1163
+ title: 'inProgress',
1164
+ },
1165
+ {
1166
+ key: 2,
1167
+ text: t('COMPLETED', 'Completed'),
1168
+ tags: props?.orderGroupStatusCustom?.completed ?? [1, 11, 15],
1169
+ title: 'completed',
1170
+ },
1171
+ {
1172
+ key: 3,
1173
+ text: t('CANCELLED', 'Cancelled'),
1174
+ tags: props?.orderGroupStatusCustom?.cancelled ?? [2, 5, 6, 10, 12, 16, 17],
1175
+ title: 'cancelled',
1176
+ },
1177
+ ]
1090
1178
  };
1091
1179
 
1092
1180
  return (<>
@@ -1097,3 +1185,7 @@ export const OrdersOption = (props: OrdersOptionParams) => {
1097
1185
  )}
1098
1186
  </>);
1099
1187
  };
1188
+
1189
+ OrdersOption.defaultProps = {
1190
+ isNetConnected: true
1191
+ }
@@ -6,7 +6,7 @@ import { useTheme } from 'styled-components/native';
6
6
  import { Wrapper } from './styles';
7
7
  import { OText, OIcon } from '../shared';
8
8
  import { PhoneInputParams } from '../../types';
9
- import { transformCountryCode } from '../../utils';
9
+ import { transformCountryCode, findExitingCode } from '../../utils';
10
10
 
11
11
  export const PhoneInputNumber = (props: PhoneInputParams) => {
12
12
  const {
@@ -97,10 +97,13 @@ export const PhoneInputNumber = (props: PhoneInputParams) => {
97
97
  containerStyle={{ width: '100%' }}
98
98
  ref={phoneInput}
99
99
  defaultValue={userphoneNumber || defaultValue}
100
- defaultCode={
101
- defaultCode
102
- ? transformCountryCode(defaultCode)
103
- : configs?.default_country_code?.value
100
+ defaultCode={defaultCode ?
101
+ !isNaN(defaultCode)
102
+ ? transformCountryCode(defaultCode)
103
+ : findExitingCode(defaultCode)
104
+ : !isNaN((configs?.default_country_code?.value || '')?.replace(/\+/g, ''))
105
+ ? transformCountryCode((configs?.default_country_code?.value || '')?.replace(/\+/g, ''))
106
+ : findExitingCode(configs?.default_country_code?.value?.toUpperCase())
104
107
  }
105
108
  onChangeFormattedText={(text: string) => handleChangeNumber(text)}
106
109
  countryPickerProps={{
@@ -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>