ordering-ui-react-native 0.22.58 → 0.22.59-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 (142) hide show
  1. package/package.json +5 -7
  2. package/src/DeliveryApp.tsx +1 -1
  3. package/src/components/BusinessesListing/index.tsx +1 -1
  4. package/src/components/Checkout/index.tsx +40 -39
  5. package/src/components/VerifyPhone/styles.tsx +1 -2
  6. package/src/context/OfflineActions/index.tsx +236 -0
  7. package/src/providers/AlertProvider.tsx +3 -1
  8. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +5 -3
  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 +3 -2
  12. package/themes/business/src/components/Chat/index.tsx +15 -3
  13. package/themes/business/src/components/DriverMap/index.tsx +44 -33
  14. package/themes/business/src/components/FloatingButton/index.tsx +3 -2
  15. package/themes/business/src/components/LanguageSelector/index.tsx +1 -1
  16. package/themes/business/src/components/LoginForm/index.tsx +123 -98
  17. package/themes/business/src/components/LogoutButton/index.tsx +13 -4
  18. package/themes/business/src/components/MapView/RenderMarker.tsx +146 -0
  19. package/themes/business/src/components/MapView/index.tsx +68 -142
  20. package/themes/business/src/components/NewOrderNotification/index.tsx +39 -55
  21. package/themes/business/src/components/OrderDetails/Business.tsx +56 -20
  22. package/themes/business/src/components/OrderDetails/Delivery.tsx +123 -54
  23. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +146 -36
  24. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +51 -28
  25. package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
  26. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +17 -16
  27. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
  28. package/themes/business/src/components/OrderSummary/index.tsx +271 -176
  29. package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
  30. package/themes/business/src/components/OrdersOption/index.tsx +345 -231
  31. package/themes/business/src/components/OrdersOption/styles.tsx +14 -0
  32. package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
  33. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +30 -18
  34. package/themes/business/src/components/PreviousOrders/index.tsx +74 -66
  35. package/themes/business/src/components/PreviousOrders/styles.tsx +2 -1
  36. package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
  37. package/themes/business/src/components/PrinterEdition/index.tsx +143 -75
  38. package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
  39. package/themes/business/src/components/PrinterSettings/index.tsx +1 -1
  40. package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
  41. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  42. package/themes/business/src/components/StoresList/index.tsx +2 -2
  43. package/themes/business/src/components/UserProfileForm/index.tsx +48 -10
  44. package/themes/business/src/components/UserProfileForm/styles.tsx +7 -0
  45. package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
  46. package/themes/business/src/config/currency.tsx +1010 -0
  47. package/themes/business/src/hooks/useLocation.tsx +16 -12
  48. package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
  49. package/themes/business/src/types/index.tsx +33 -7
  50. package/themes/business/src/utils/index.tsx +28 -3
  51. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  52. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  53. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  54. package/themes/kiosk/src/components/Checkout/index.tsx +9 -5
  55. package/themes/kiosk/src/components/CustomerName/index.tsx +1 -1
  56. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  57. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  58. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  59. package/themes/kiosk/src/components/PaymentOptions/index.tsx +121 -57
  60. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  61. package/themes/original/index.tsx +223 -219
  62. package/themes/original/src/components/AddressForm/index.tsx +14 -8
  63. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  64. package/themes/original/src/components/BusinessBasicInformation/index.tsx +1 -1
  65. package/themes/original/src/components/BusinessController/index.tsx +4 -2
  66. package/themes/original/src/components/BusinessItemAccordion/index.tsx +10 -4
  67. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +103 -92
  68. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +7 -3
  69. package/themes/original/src/components/BusinessListingSearch/index.tsx +8 -13
  70. package/themes/original/src/components/BusinessPreorder/index.tsx +34 -15
  71. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +73 -70
  72. package/themes/original/src/components/BusinessProductsList/index.tsx +6 -7
  73. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  74. package/themes/original/src/components/BusinessProductsListing/index.tsx +10 -6
  75. package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
  76. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
  77. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
  78. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  79. package/themes/original/src/components/Cart/index.tsx +50 -14
  80. package/themes/original/src/components/CartContent/index.tsx +2 -3
  81. package/themes/original/src/components/Checkout/index.tsx +133 -90
  82. package/themes/original/src/components/Favorite/index.tsx +1 -5
  83. package/themes/original/src/components/ForgotPasswordForm/index.tsx +1 -2
  84. package/themes/original/src/components/GoogleMap/index.tsx +6 -5
  85. package/themes/original/src/components/Help/functions.tsx +76 -0
  86. package/themes/original/src/components/Help/index.tsx +74 -29
  87. package/themes/original/src/components/Help/styles.tsx +4 -1
  88. package/themes/original/src/components/HelpOptions/index.tsx +44 -0
  89. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
  90. package/themes/original/src/components/Home/index.tsx +35 -16
  91. package/themes/original/src/components/LoginForm/index.tsx +11 -5
  92. package/themes/original/src/components/MessageListing/index.tsx +1 -1
  93. package/themes/original/src/components/Messages/index.tsx +20 -13
  94. package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
  95. package/themes/original/src/components/MomentOption/index.tsx +72 -51
  96. package/themes/original/src/components/MomentSelector/index.tsx +5 -2
  97. package/themes/original/src/components/MultiCheckout/index.tsx +78 -36
  98. package/themes/original/src/components/MyOrders/index.tsx +2 -2
  99. package/themes/original/src/components/NavBar/index.tsx +6 -2
  100. package/themes/original/src/components/NotFoundSource/index.tsx +40 -39
  101. package/themes/original/src/components/NotFoundSource/styles.tsx +18 -9
  102. package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
  103. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +11 -4
  104. package/themes/original/src/components/OrderDetails/index.tsx +44 -19
  105. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  106. package/themes/original/src/components/OrderProgress/index.tsx +4 -3
  107. package/themes/original/src/components/OrderSummary/index.tsx +32 -11
  108. package/themes/original/src/components/OrderTypeSelector/index.tsx +4 -3
  109. package/themes/original/src/components/OrdersOption/index.tsx +3 -6
  110. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  111. package/themes/original/src/components/PaymentOptions/index.tsx +471 -459
  112. package/themes/original/src/components/PhoneInputNumber/index.tsx +92 -7
  113. package/themes/original/src/components/ProductForm/ActionButton.tsx +6 -10
  114. package/themes/original/src/components/ProductItemAccordion/index.tsx +28 -37
  115. package/themes/original/src/components/ProductOptionSubOption/index.tsx +15 -14
  116. package/themes/original/src/components/ServiceForm/index.tsx +1 -1
  117. package/themes/original/src/components/SignupForm/index.tsx +40 -24
  118. package/themes/original/src/components/SingleOrderCard/index.tsx +7 -4
  119. package/themes/original/src/components/SingleProductCard/index.tsx +3 -4
  120. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  121. package/themes/original/src/components/StripeCardsList/index.tsx +9 -4
  122. package/themes/original/src/components/StripeElementsForm/index.tsx +2 -2
  123. package/themes/original/src/components/StripeElementsForm/naked.tsx +1 -1
  124. package/themes/original/src/components/TaxInformation/index.tsx +3 -2
  125. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +7 -2
  126. package/themes/original/src/components/UserDetails/index.tsx +17 -16
  127. package/themes/original/src/components/UserFormDetails/index.tsx +109 -67
  128. package/themes/original/src/components/UserProfile/index.tsx +9 -1
  129. package/themes/original/src/components/UserVerification/index.tsx +18 -5
  130. package/themes/original/src/components/shared/OAlert.tsx +2 -1
  131. package/themes/original/src/components/shared/OButton.tsx +2 -2
  132. package/themes/original/src/components/shared/OInput.tsx +4 -8
  133. package/themes/original/src/components/shared/OModal.tsx +7 -2
  134. package/themes/original/src/types/index.tsx +699 -691
  135. package/themes/original/src/utils/index.tsx +29 -0
  136. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
  137. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +0 -62
  138. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +0 -12
  139. package/themes/original/src/components/HelpGuide/index.tsx +0 -68
  140. package/themes/original/src/components/HelpGuide/styles.tsx +0 -12
  141. package/themes/original/src/components/HelpOrder/index.tsx +0 -71
  142. package/themes/original/src/components/HelpOrder/styles.tsx +0 -13
@@ -1,27 +1,48 @@
1
1
  import React, { useState } from 'react'
2
- import { useTheme } from 'styled-components/native';
3
- import { Platform, RefreshControl } from 'react-native'
4
- import { HelpParams } from '../../types'
2
+ import { Platform, RefreshControl, View } from 'react-native'
3
+ import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder'
4
+ import { useTheme } from 'styled-components/native'
5
5
  import { useLanguage } from 'ordering-components/native'
6
+
7
+ import { HelpParams } from '../../types'
8
+ import { CmsContent } from './functions'
9
+ import { HelpSubItem, LastOrdersContainer } from './styles'
10
+ import { Container } from '../../layouts/Container'
11
+
12
+ import { OText, OIcon } from '../shared'
13
+ import { NotFoundSource } from '../NotFoundSource'
6
14
  import NavBar from '../NavBar'
7
- import { OText } from '../shared'
8
15
  import { LastOrders } from '../LastOrders'
9
- import { Container } from '../../layouts/Container'
10
16
 
11
- import {
12
- HelpSubItem,
13
- LastOrdersContainer
14
- } from './styles'
17
+ const HelpUI = (props: HelpParams) => {
18
+ const { cmsState, navigation } = props
19
+
20
+ const { items, loading, error, pages } = cmsState
15
21
 
16
- export const Help = (props: HelpParams) => {
17
- const {
18
- navigation
19
- } = props
20
22
  const [, t] = useLanguage()
21
23
  const theme = useTheme()
22
- const [refreshing] = useState(false);
24
+
25
+ const [refreshing] = useState(false)
23
26
  const [refresh, setRefresh] = useState(false)
24
27
 
28
+ const HelpItem = ({ item }: any) => {
29
+ const currentItem = pages.find((p: any) => p.id === item.id)
30
+ return (
31
+ <HelpSubItem
32
+ activeOpacity={0.7}
33
+ onPress={() => onRedirect('HelpOptions', { item: currentItem })}
34
+ >
35
+ <OText size={14} style={{ width: '90%' }}>
36
+ {item.name}
37
+ </OText>
38
+ <OIcon
39
+ width={15}
40
+ src={theme.images.general.chevron_right}
41
+ />
42
+ </HelpSubItem>
43
+ )
44
+ }
45
+
25
46
  const goToBack = () => navigation?.canGoBack() && navigation.goBack()
26
47
  const onRedirect = (route: string, params?: any) => {
27
48
  navigation.navigate(route, params)
@@ -49,22 +70,36 @@ export const Help = (props: HelpParams) => {
49
70
  showCall={false}
50
71
  btnStyle={{ paddingLeft: 0 }}
51
72
  />
52
- <HelpSubItem
53
- onPress={() => onRedirect('HelpOrder')}
73
+ <OText
74
+ size={20}
75
+ weight={'bold'}
76
+ style={{ marginBottom: 20 }}
54
77
  >
55
- <OText size={14}>{t('HELP_WITH_ORDER', 'Help with an order')}</OText>
56
- </HelpSubItem>
57
- <HelpSubItem
58
- onPress={() => onRedirect('HelpAccountAndPayment')}
59
- >
60
- <OText size={14}>{t('ACCOUNT_PAYMENT_OPTIONS', 'Account and Payment Options')}</OText>
61
- </HelpSubItem>
62
- <HelpSubItem
63
- onPress={() => onRedirect('HelpGuide')}
64
- >
65
- <OText size={14}>{t('GUIDE_TO_ORDERING', 'Guide to Ordering')}</OText>
66
- </HelpSubItem>
67
-
78
+ {t('ALL_THE_THEMES', 'All the themes')}
79
+ </OText>
80
+ {!loading && !error && items.map((item: any) => (
81
+ <HelpItem
82
+ key={item.id}
83
+ item={item}
84
+ />
85
+ ))}
86
+ {loading && (
87
+ <Placeholder Animation={Fade}>
88
+ <View style={{ flexDirection: 'column' }}>
89
+ {[...Array(5)].map((_, i) => (
90
+ <HelpSubItem key={i}>
91
+ <PlaceholderLine key={i} height={30} width={90} noMargin />
92
+ </HelpSubItem>
93
+ ))}
94
+ </View>
95
+ </Placeholder>
96
+ )}
97
+ {!loading && !!error && (
98
+ <NotFoundSource
99
+ simple
100
+ content={error}
101
+ />
102
+ )}
68
103
  <LastOrdersContainer>
69
104
  <OText size={18} weight={600}>{t('LAST_ORDERS', 'Last Orders')}</OText>
70
105
  <LastOrders {...props} onRedirect={onRedirect} refresh={refresh} setRefresh={setRefresh} />
@@ -72,3 +107,13 @@ export const Help = (props: HelpParams) => {
72
107
  </Container>
73
108
  )
74
109
  }
110
+
111
+ export const Help = (props: HelpParams) => {
112
+ const helpProps = {
113
+ ...props,
114
+ UIComponent: HelpUI
115
+ }
116
+ return (
117
+ <CmsContent {...helpProps} />
118
+ )
119
+ }
@@ -1,9 +1,12 @@
1
1
  import styled from 'styled-components/native'
2
2
 
3
3
  export const HelpSubItem = styled.TouchableOpacity`
4
- border-bottom-color: #E9ECEF;
4
+ border-bottom-color: ${(props: any) => props.theme.colors.border};
5
5
  border-bottom-width: 1px;
6
6
  padding-vertical: 15px;
7
+ flex-direction: row;
8
+ justify-content: space-between;
9
+ align-items: center;
7
10
  `
8
11
 
9
12
  export const LastOrdersContainer = styled.View`
@@ -0,0 +1,44 @@
1
+ import React from 'react'
2
+ import { Dimensions, Platform } from 'react-native'
3
+ import { WebView } from 'react-native-webview'
4
+ import { useLanguage } from 'ordering-components/native'
5
+
6
+ import { Container } from '../../layouts/Container'
7
+ import { NotFoundSource } from '../NotFoundSource'
8
+ import NavBar from '../NavBar'
9
+
10
+ const HEIGHT_SCREEN = Dimensions.get('screen').height
11
+
12
+ export const HelpOptions = (props: any) => {
13
+ const { item, goToBack } = props
14
+ const [, t] = useLanguage()
15
+
16
+ return (
17
+ <Container
18
+ pt={Platform.OS === 'ios' ? 20 : 10}
19
+ noPadding
20
+ >
21
+ <NavBar
22
+ title={t('HELP', 'Help')}
23
+ titleAlign={'center'}
24
+ onActionLeft={goToBack}
25
+ showCall={false}
26
+ btnStyle={{ paddingLeft: 0 }}
27
+ />
28
+ {!!item?.body && (
29
+ <WebView
30
+ originWhitelist={['*']}
31
+ automaticallyAdjustContentInsets={false}
32
+ source={{ html: item.body }}
33
+ style={{ flex: 1, height: HEIGHT_SCREEN }}
34
+ />
35
+ )}
36
+ {!item?.body && (
37
+ <NotFoundSource
38
+ simple
39
+ content={t('NO_CONTENT_TO_SHOW', 'Nothing to show')}
40
+ />
41
+ )}
42
+ </Container>
43
+ )
44
+ }
@@ -162,4 +162,4 @@ export const HighestRatedBusinesses = (props: any) => {
162
162
  };
163
163
 
164
164
  return <BusinessesListingController {...highestRatedBusinessesProps} />;
165
- };
165
+ };
@@ -1,33 +1,53 @@
1
- import React, { useEffect } from 'react';
2
- import { useLanguage, useOrder, useConfig } from 'ordering-components/native';
1
+ import React from 'react';
2
+ import { useLanguage, useOrder, useConfig, useSession, useApi, ToastType, useToast } from 'ordering-components/native';
3
3
  import { useTheme } from 'styled-components/native';
4
4
  import { StyleSheet, View } from 'react-native';
5
5
  import { OButton, OIcon, OText } from '../shared';
6
6
  import { LanguageSelector } from '../LanguageSelector';
7
7
  import { TouchableOpacity } from 'react-native-gesture-handler';
8
8
  import { useWindowDimensions, Platform } from 'react-native';
9
+ import uuid from 'react-native-uuid';
9
10
 
10
11
  export const Home = (props: any) => {
11
12
  const { onNavigationRedirect, businessSlug } = props;
12
13
  const { width, height } = useWindowDimensions();
13
14
  const [, t] = useLanguage();
14
- const [orderState] = useOrder();
15
+ const [orderState, { handleOrderStateLoading, setStateInitialValues }] = useOrder();
15
16
  const [{ configs }] = useConfig()
17
+ const [, { login }] = useSession()
18
+ const [ordering] = useApi()
19
+ const [, { showToast }] = useToast()
16
20
 
17
21
  const theme = useTheme();
18
- const unaddressedTypes = configs?.unaddressed_order_types_allowed?.value.split('|').map((value: any) => Number(value)) || []
19
- const isAllowUnaddressOrderType = unaddressedTypes.includes(orderState?.options?.type)
20
22
 
21
- useEffect(() => {
22
- if (isAllowUnaddressOrderType) {
23
- onNavigationRedirect(!!businessSlug ? 'Business' : 'BusinessList')
23
+ const handleCreateGuestUser = async (values: any) => {
24
+ try {
25
+ await handleOrderStateLoading(true)
26
+ const { content: { error, result } } = await ordering.users().save(values)
27
+ if (!error) {
28
+ await login({
29
+ user: result,
30
+ token: result.session?.access_token
31
+ })
32
+ } else {
33
+ showToast(ToastType.Error, t('ERROR_CREATING_GUEST_USER', 'Error creating guest users'))
34
+ }
35
+ await handleOrderStateLoading(false)
36
+ } catch (err) {
37
+ await handleOrderStateLoading(false)
38
+ showToast(ToastType.Error, t('ERROR_CREATING_GUEST_USER', 'Error creating guest users'))
24
39
  }
25
- }, [isAllowUnaddressOrderType])
40
+ }
41
+
42
+ const handleUpdateGuest = async () => {
43
+ const guestToken = uuid.v4()
44
+ if (guestToken) await handleCreateGuestUser({ guest_token: guestToken })
45
+ }
26
46
 
27
47
  return (
28
48
  <View style={styles.container}>
29
49
  <View>
30
- <View style={{ paddingTop: (height <= 756 && Platform.OS !== 'ios') ? (height * 0.05) : 0 }}>
50
+ <View style={{paddingTop: (height <= 756 && Platform.OS !== 'ios') ? (height * 0.05) : 0 }}>
31
51
  <LanguageSelector />
32
52
  </View>
33
53
  <OIcon
@@ -53,6 +73,7 @@ export const Home = (props: any) => {
53
73
  isCircle={false}
54
74
  onClick={() => onNavigationRedirect('Login')}
55
75
  imgRightSrc={null}
76
+ isDisabled={orderState?.loading}
56
77
  />
57
78
  <OButton
58
79
  text={t('SIGNUP', 'Signup')}
@@ -62,15 +83,13 @@ export const Home = (props: any) => {
62
83
  textStyle={{ color: 'black' }}
63
84
  onClick={() => onNavigationRedirect('Signup')}
64
85
  imgRightSrc={null}
86
+ isDisabled={orderState?.loading}
65
87
  />
66
88
  <TouchableOpacity
89
+ disabled={orderState?.loading}
67
90
  style={{ ...styles.textLink, marginTop: 12 }}
68
- onPress={() =>
69
- orderState?.options?.address?.address
70
- ? onNavigationRedirect(!!businessSlug ? 'Business' : 'BusinessList', { isGuestUser: true })
71
- : onNavigationRedirect('AddressForm', { isGuestUser: true })
72
- }>
73
- <OText weight="normal" size={18} color={theme.colors.white}>
91
+ onPress={() => handleUpdateGuest()}>
92
+ <OText weight="normal" size={18} color={orderState?.loading ? '#ccc' : theme.colors.white}>
74
93
  {t('CONTINUE_AS_GUEST', 'Continue as guest')}
75
94
  </OText>
76
95
  </TouchableOpacity>
@@ -73,7 +73,8 @@ const LoginFormUI = (props: LoginParams) => {
73
73
  generateOtpCode,
74
74
  useLoginOtpEmail,
75
75
  useLoginOtpCellphone,
76
- isGuest
76
+ isGuest,
77
+ setCellphoneStartZero
77
78
  } = props;
78
79
 
79
80
  const [, { showToast }] = useToast();
@@ -106,9 +107,9 @@ const LoginFormUI = (props: LoginParams) => {
106
107
 
107
108
  const [isCheckingCode, setCheckingCode] = useState(false)
108
109
 
109
- const googleLoginEnabled = configs?.google_login_enabled?.value === '1' || !configs?.google_login_enabled?.enabled
110
- const facebookLoginEnabled = configs?.facebook_login_enabled?.value === '1' || !configs?.facebook_login_enabled?.enabled
111
- const appleLoginEnabled = Platform.OS === 'ios' && (configs?.apple_login_enabled?.value === '1' || !configs?.apple_login_enabled?.enabled)
110
+ const googleLoginEnabled = configs?.google_login_enabled?.value === '1'
111
+ const facebookLoginEnabled = configs?.facebook_login_enabled?.value === '1'
112
+ const appleLoginEnabled = Platform.OS === 'ios' && (configs?.apple_login_enabled?.value === '1')
112
113
 
113
114
  const loginStyle = StyleSheet.create({
114
115
  btnOutline: {
@@ -300,6 +301,11 @@ const LoginFormUI = (props: LoginParams) => {
300
301
  setTabLayouts(_tabLayouts)
301
302
  }
302
303
 
304
+ const handleChangePhoneNumber = (number: any, rawNumber: any) => {
305
+ setPhoneInputData(number)
306
+ setCellphoneStartZero && setCellphoneStartZero(rawNumber?.number && rawNumber?.countryCallingCode ? rawNumber?.number : null)
307
+ }
308
+
303
309
  useEffect(() => {
304
310
  if (configs && Object.keys(configs).length > 0 && enableReCaptcha) {
305
311
  if (configs?.security_recaptcha_type?.value === 'v3' &&
@@ -586,7 +592,7 @@ const LoginFormUI = (props: LoginParams) => {
586
592
  <View style={{ marginBottom: 28 }}>
587
593
  <PhoneInputNumber
588
594
  data={phoneInputData}
589
- handleData={(val: any) => setPhoneInputData(val)}
595
+ handleData={handleChangePhoneNumber}
590
596
  textInputProps={{
591
597
  returnKeyType: 'next',
592
598
  onSubmitEditing: () => passwordRef?.current?.focus?.(),
@@ -200,7 +200,7 @@ export const OrderListing = (props: OrdersOptionParams) => {
200
200
  const OrderListingProps = {
201
201
  ...props,
202
202
  UIComponent: OrdersOptionUI,
203
- orderStatus: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23],
203
+ orderStatus: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26],
204
204
  useDefualtSessionManager: true,
205
205
  paginationSettings: {
206
206
  initialPage: 1,
@@ -1,6 +1,6 @@
1
1
  import React, { useEffect, useState } from 'react'
2
2
  import Clipboard from '@react-native-clipboard/clipboard';
3
- import { Messages as MessagesController, useSession, useUtils, useLanguage, ToastType, useToast } from 'ordering-components/native'
3
+ import { Messages as MessagesController, useSession, useUtils, useLanguage, ToastType, useToast, useConfig } from 'ordering-components/native'
4
4
  import { useTheme } from 'styled-components/native';
5
5
  import { launchImageLibrary } from 'react-native-image-picker'
6
6
  import { GiftedChat, Actions, ActionsProps, InputToolbar, Composer, Send, Bubble, MessageImage, InputToolbarProps, ComposerProps } from 'react-native-gifted-chat'
@@ -39,7 +39,10 @@ const ORDER_STATUS: any = {
39
39
  20: 'ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS',
40
40
  21: 'ORDER_CUSTOMER_ARRIVED_BUSINESS',
41
41
  22: 'ORDER_LOOKING_FOR_DRIVER',
42
- 23: 'ORDER_DRIVER_ON_WAY'
42
+ 23: 'ORDER_DRIVER_ON_WAY',
43
+ 24: 'ORDER_DRIVER_WAITING_FOR_ORDER',
44
+ 25: 'ORDER_ACCEPTED_BY_DRIVER_COMPANY',
45
+ 26: 'ORDER_DRIVER_ARRIVED_CUSTOMER'
43
46
  }
44
47
 
45
48
  const filterSpecialStatus = ['prepared_in', 'delivered_in', 'delivery_datetime']
@@ -52,7 +55,6 @@ const MessagesUI = (props: MessagesParams) => {
52
55
  messages,
53
56
  image,
54
57
  message,
55
- messagesToShow,
56
58
  sendMessage,
57
59
  setCanRead,
58
60
  setMessage,
@@ -67,13 +69,14 @@ const MessagesUI = (props: MessagesParams) => {
67
69
  } = props
68
70
 
69
71
  const [{ user }] = useSession()
72
+ const [{ configs }] = useConfig()
70
73
  const [{ parseDate }] = useUtils()
71
74
  const [, t] = useLanguage()
72
75
  const [, { showToast }] = useToast();
73
76
 
74
77
  const [formattedMessages, setFormattedMessages] = useState<Array<any>>([])
75
78
  const [isKeyboardShow, setIsKeyboardShow] = useState(false)
76
- const previousStatus = [1, 2, 5, 6, 10, 11, 12, 16, 17]
79
+ const previousStatus = [1, 2, 5, 6, 10, 11, 12, 15, 16, 17]
77
80
  const chatDisabled = previousStatus.includes(order?.status)
78
81
  const { height } = useWindowDimensions();
79
82
  const { top, bottom } = useSafeAreaInsets();
@@ -142,23 +145,24 @@ const MessagesUI = (props: MessagesParams) => {
142
145
  }
143
146
 
144
147
  useEffect(() => {
145
- let newMessages: Array<any> = []
148
+ const newMessages: Array<any> = []
146
149
  const _console = `${t('ORDER_PLACED_FOR', 'Order placed for')} ${parseDate(order?.created_at)} ${t('VIA', 'Via')} ${order?.app_id ? t(order?.app_id.toUpperCase(), order?.app_id) : t('OTHER', 'Other')}`
147
150
  const firstMessage = {
148
151
  _id: 0,
152
+ type: 0,
149
153
  text: _console,
150
154
  createdAt: parseDate(order?.created_at, { outputFormat: 'YYYY-MM-DD HH:mm:ss' }),
151
155
  system: true
152
156
  }
153
- const newMessage: any = [];
154
157
  messages.messages.map((message: any) => {
155
158
  if (message.change?.attribute === 'driver_group_id') return
156
- if (business && message.type !== 0 && (messagesToShow?.messages?.length || message?.can_see?.includes('2'))) {
157
- newMessage.push({
159
+ if (business && message.type !== 0 && (props?.messagesToShow?.messages?.length || message?.can_see?.includes('2'))) {
160
+ newMessages.push({
158
161
  _id: message?.id,
159
162
  text: message.type === 1 ? messageConsole(message) : message.comment,
160
163
  createdAt: message.type !== 0 && parseDate(message?.created_at, { outputFormat: 'YYYY-MM-DD HH:mm:ss' }),
161
164
  image: message.source,
165
+ type: message.type,
162
166
  system: message.type === 1,
163
167
  user: {
164
168
  _id: message.author && message.author.id,
@@ -168,12 +172,13 @@ const MessagesUI = (props: MessagesParams) => {
168
172
  });
169
173
  }
170
174
 
171
- if (driver && message.type !== 0 && (messagesToShow?.messages?.length || message?.can_see?.includes('4'))) {
172
- newMessage.push({
175
+ if (driver && message.type !== 0 && (props?.messagesToShow?.messages?.length || message?.can_see?.includes('4'))) {
176
+ newMessages.push({
173
177
  _id: message?.id,
174
178
  text: message.type === 1 ? messageConsole(message) : message.comment,
175
179
  createdAt: message.type !== 0 && parseDate(message?.created_at, { outputFormat: 'YYYY-MM-DD HH:mm:ss' }),
176
180
  image: message.source,
181
+ type: message.type,
177
182
  system: message.type === 1,
178
183
  user: {
179
184
  _id: message.author && message.author.id,
@@ -184,10 +189,12 @@ const MessagesUI = (props: MessagesParams) => {
184
189
  }
185
190
 
186
191
  if (message.type === 0) {
187
- newMessage.push(firstMessage);
192
+ newMessages.push(firstMessage);
188
193
  }
189
194
  })
190
- setFormattedMessages(newMessage.reverse())
195
+ let _arrayMessages = [...newMessages.reverse()]
196
+
197
+ setFormattedMessages(_arrayMessages);
191
198
  }, [messages.messages.length, business, driver])
192
199
 
193
200
  useEffect(() => {
@@ -461,7 +468,7 @@ const MessagesUI = (props: MessagesParams) => {
461
468
  active={business}
462
469
  >
463
470
  <OIcon
464
- url={order?.business?.logo || theme.images.dummies.businessLogo}
471
+ url={order?.business?.logo}
465
472
  width={32}
466
473
  height={32}
467
474
  style={{ borderRadius: 32 }}
@@ -0,0 +1,56 @@
1
+ import React from 'react'
2
+ import { Pressable } from 'react-native'
3
+ import {
4
+ TimeItem,
5
+ } from './styles'
6
+ import { OIcon, OText } from '../shared'
7
+ import { useTheme } from 'styled-components/native'
8
+
9
+ const timeListItemPropsAreEqual = (prevProps: any, nextProps: any) => {
10
+ return JSON.stringify(prevProps.time) === JSON.stringify(nextProps.time) &&
11
+ JSON.stringify(prevProps.selectedTime) === JSON.stringify(nextProps.selectedTime) &&
12
+ JSON.stringify(prevProps.cateringPreorder) === JSON.stringify(nextProps.cateringPreorder)
13
+ }
14
+ export const TimeListItem = React.memo((props : any) => {
15
+ const {
16
+ time,
17
+ selectedTime,
18
+ handleChangeTimeSelected,
19
+ cateringPreorder
20
+ } = props
21
+ const theme = useTheme()
22
+
23
+ return (
24
+ <Pressable onPress={() => handleChangeTimeSelected(time.value)}>
25
+ <TimeItem
26
+ active={selectedTime === time.value}
27
+ cateringPreorder={cateringPreorder}
28
+ >
29
+ {cateringPreorder && (
30
+ <>
31
+ {selectedTime === time.value ? (
32
+ <OIcon
33
+ src={theme.images.general.option_checked}
34
+ width={18}
35
+ style={{ marginEnd: 24, bottom: 2 }}
36
+ />
37
+ ) : (
38
+ <OIcon
39
+ src={theme.images.general.option_normal}
40
+ width={18}
41
+ style={{ marginEnd: 24, bottom: 2 }}
42
+ />
43
+ )}
44
+ </>
45
+ )}
46
+ <OText
47
+ size={cateringPreorder ? 18 : 16}
48
+ color={selectedTime === time.value ? theme.colors.primary : theme.colors.textNormal}
49
+ style={{
50
+ lineHeight: 24
51
+ }}
52
+ >{time.text} {cateringPreorder && `- ${time.endText}`}</OText>
53
+ </TimeItem>
54
+ </Pressable>
55
+ )
56
+ }, timeListItemPropsAreEqual)