ordering-ui-react-native 0.22.21 → 0.22.22-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/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 +2 -3
  19. package/themes/business/src/components/LanguageSelector/lang_country.json +515 -70
  20. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  21. package/themes/business/src/components/MapView/index.tsx +36 -17
  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 +128 -41
  26. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +45 -18
  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 +217 -156
  33. package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
  34. package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
  35. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +39 -16
  36. package/themes/business/src/components/PreviousOrders/index.tsx +74 -66
  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 +55 -22
  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 +16 -4
  54. package/themes/business/src/utils/index.tsx +33 -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 +32 -17
  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 +13 -5
  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 +3 -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 -51
  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 +44 -21
  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 +4 -3
  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 +50 -43
  130. package/themes/original/src/components/ProductItemAccordion/styles.tsx +0 -3
  131. package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
  132. package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
  133. package/themes/original/src/components/Promotions/index.tsx +6 -9
  134. package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
  135. package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
  136. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  137. package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
  138. package/themes/original/src/components/ServiceForm/index.tsx +52 -54
  139. package/themes/original/src/components/Sessions/index.tsx +3 -3
  140. package/themes/original/src/components/SignupForm/index.tsx +102 -88
  141. package/themes/original/src/components/SingleOrderCard/index.tsx +6 -4
  142. package/themes/original/src/components/SingleProductCard/index.tsx +5 -5
  143. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  144. package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
  145. package/themes/original/src/components/StripeCardsList/index.tsx +16 -3
  146. package/themes/original/src/components/StripeElementsForm/index.tsx +76 -62
  147. package/themes/original/src/components/StripeElementsForm/naked.tsx +48 -1
  148. package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
  149. package/themes/original/src/components/TaxInformation/index.tsx +3 -2
  150. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +10 -7
  151. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
  152. package/themes/original/src/components/UserDetails/index.tsx +17 -16
  153. package/themes/original/src/components/UserFormDetails/index.tsx +164 -135
  154. package/themes/original/src/components/UserProfile/index.tsx +9 -1
  155. package/themes/original/src/components/UserVerification/index.tsx +15 -4
  156. package/themes/original/src/components/Wallets/index.tsx +6 -3
  157. package/themes/original/src/components/WebsocketStatus/index.tsx +1 -4
  158. package/themes/original/src/components/shared/OAlert.tsx +2 -1
  159. package/themes/original/src/components/shared/OButton.tsx +5 -4
  160. package/themes/original/src/components/shared/OInput.tsx +4 -8
  161. package/themes/original/src/components/shared/OModal.tsx +7 -2
  162. package/themes/original/src/types/index.tsx +10 -3
  163. package/themes/original/src/utils/index.tsx +30 -1
  164. 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';
@@ -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,15 @@ 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={{ marginRight: 20 }}
475
+ />
476
+ )}
411
477
  <FontistoIcon
412
478
  name='search'
413
479
  color={theme.colors.backgroundDark}
@@ -416,57 +482,6 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
416
482
  />
417
483
  </IconWrapper>
418
484
  </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
485
  <FiltersTab>
471
486
  <ScrollView
472
487
  ref={scrollRefTab}
@@ -521,7 +536,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
521
536
  </ScrollView>
522
537
  </FiltersTab>
523
538
  <View style={{ flex: 1, minHeight: HEIGHT_SCREEN - 450 }}>
524
- {currentTabSelected !== 'logisticOrders' && !isAlsea && (
539
+ {showTagsList && (
525
540
  <View
526
541
  style={{
527
542
  display: 'flex',
@@ -588,6 +603,22 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
588
603
  </ScrollView>
589
604
  </View>
590
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
+ )}
591
622
  <ScrollView
592
623
  ref={scrollListRef}
593
624
  showsVerticalScrollIndicator={false}
@@ -596,7 +627,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
596
627
  refreshControl={
597
628
  <RefreshControl
598
629
  refreshing={refreshing}
599
- onRefresh={() => { currentTabSelected === 'logisticOrders' ? loadLogisticOrders() : loadOrders && loadOrders({ newFetch: true }) }}
630
+ onRefresh={() => { isNetConnected && (currentTabSelected === 'logisticOrders' ? loadLogisticOrders && loadLogisticOrders() : loadOrders && loadOrders({ newFetch: true })) }}
600
631
  />
601
632
  }
602
633
  >
@@ -633,42 +664,48 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
633
664
  />
634
665
  )
635
666
  }
636
- {((currentOrdersGroup?.loading ||
637
- currentOrdersGroup?.pagination?.total === null) ||
638
- (logisticOrders?.loading)) &&
667
+ {(
639
668
  (
640
- <>
641
- <View>
642
- {[...Array(5)].map((_, i) => (
643
- <Placeholder key={i} Animation={Fade}>
644
- <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}
645
690
  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
- </>
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>
669
705
  )}
670
706
 
671
- {!currentOrdersGroup?.error?.length &&
707
+ {isNetConnected &&
708
+ !currentOrdersGroup?.error?.length &&
672
709
  !currentOrdersGroup?.loading &&
673
710
  currentOrdersGroup?.pagination?.totalPages &&
674
711
  currentOrdersGroup?.pagination?.currentPage < currentOrdersGroup?.pagination?.totalPages &&
@@ -685,33 +722,35 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
685
722
  />
686
723
  )}
687
724
 
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
- ) &&
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
+ ) &&
694
732
  (
695
733
  <NotFoundSource
696
734
  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')
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')
704
743
  }
705
744
  image={theme.images.general.notFound}
706
745
  conditioned={false}
746
+ btnTitle={!isNetConnected && t('REFRESH', 'Refresh')}
747
+ onClickButton={!isNetConnected && (() => RNRestart.Restart())}
707
748
  />
708
749
  )}
709
750
  </ScrollView>
710
751
  </View>
711
752
 
712
- {isBusinessApp && (
713
- <NewOrderNotification isBusinessApp={isBusinessApp} />
714
- )}
753
+ <NewOrderNotification isBusinessApp={isBusinessApp} />
715
754
 
716
755
  {(openSearchModal || openSLASettingModal) && (
717
756
  <OModal open={openSearchModal || openSLASettingModal} entireModal customClose>
@@ -724,39 +763,41 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
724
763
  {openSearchModal && (
725
764
  <SearchModalContent>
726
765
  <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>
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
+ )}
760
801
  <InputContainer>
761
802
  <OInput
762
803
  value={search.id}
@@ -985,12 +1026,16 @@ export const OrdersOption = (props: OrdersOptionParams) => {
985
1026
  const [, t] = useLanguage();
986
1027
  const [configState] = useConfig()
987
1028
  const [checkNotificationStatus, setCheckNotificationStatus] = useState({ open: false, checked: false })
988
- const combineTabs = configState?.configs?.combine_pending_and_progress_orders?.value === '1'
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
+
989
1033
  const ordersProps = {
990
1034
  ...props,
991
1035
  UIComponent: OrdersOptionUI,
992
1036
  useDefualtSessionManager: true,
993
1037
  asDashboard: true,
1038
+ combineTabs,
994
1039
  isIos: Platform.OS === 'ios',
995
1040
  orderStatus: [
996
1041
  { key: 0, text: t('PENDING', 'Pending') },
@@ -1070,13 +1115,25 @@ export const OrdersOption = (props: OrdersOptionParams) => {
1070
1115
  {
1071
1116
  key: 23,
1072
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')
1073
1130
  }
1074
1131
  ],
1075
1132
  tabs: combineTabs ? [
1076
1133
  {
1077
1134
  key: 0,
1078
1135
  text: t('ACTIVE', 'Active'),
1079
- tags: props?.orderGroupStatusCustom?.active ?? [0, 3, 4, 7, 8, 9, 13, 14, 18, 19, 20, 21, 22, 23],
1136
+ tags: props?.orderGroupStatusCustom?.active ?? [0, 3, 4, 7, 8, 9, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26],
1080
1137
  title: 'active',
1081
1138
  },
1082
1139
  {
@@ -1102,7 +1159,7 @@ export const OrdersOption = (props: OrdersOptionParams) => {
1102
1159
  {
1103
1160
  key: 1,
1104
1161
  text: t('IN_PROGRESS', 'In Progress'),
1105
- tags: props?.orderGroupStatusCustom?.inProgress ?? [3, 4, 7, 8, 9, 14, 18, 19, 20, 21, 22, 23],
1162
+ tags: props?.orderGroupStatusCustom?.inProgress ?? [3, 4, 7, 8, 9, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26],
1106
1163
  title: 'inProgress',
1107
1164
  },
1108
1165
  {
@@ -1128,3 +1185,7 @@ export const OrdersOption = (props: OrdersOptionParams) => {
1128
1185
  )}
1129
1186
  </>);
1130
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>