ordering-ui-react-native 0.15.8 → 0.15.10-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 (130) hide show
  1. package/package.json +5 -3
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessTypeFilter/index.tsx +12 -2
  4. package/src/components/BusinessTypeFilter/styles.tsx +1 -1
  5. package/src/components/BusinessesListing/index.tsx +1 -1
  6. package/src/components/Checkout/index.tsx +0 -1
  7. package/src/components/LanguageSelector/index.tsx +1 -0
  8. package/src/components/Messages/index.tsx +38 -30
  9. package/src/components/MomentOption/index.tsx +3 -1
  10. package/src/components/OrderDetails/index.tsx +25 -4
  11. package/src/components/PaymentOptions/index.tsx +9 -16
  12. package/src/components/PaymentOptionsWebView/index.tsx +123 -124
  13. package/src/components/ProductForm/index.tsx +1 -1
  14. package/src/components/ProductForm/styles.tsx +1 -0
  15. package/src/components/StripeElementsForm/index.tsx +27 -48
  16. package/src/components/VerifyPhone/styles.tsx +1 -2
  17. package/src/config.json +0 -2
  18. package/src/pages/Checkout.tsx +1 -1
  19. package/src/types/index.tsx +1 -9
  20. package/src/utils/index.tsx +2 -1
  21. package/themes/business/index.tsx +2 -0
  22. package/themes/business/src/components/Chat/index.tsx +32 -31
  23. package/themes/business/src/components/Home/index.tsx +128 -55
  24. package/themes/business/src/components/Home/styles.tsx +8 -1
  25. package/themes/business/src/components/NewOrderNotification/index.tsx +59 -98
  26. package/themes/business/src/components/OrderDetails/Business.tsx +1 -0
  27. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +27 -0
  28. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +85 -17
  29. package/themes/business/src/components/OrdersListManager/index.tsx +874 -0
  30. package/themes/business/src/components/OrdersListManager/styles.tsx +123 -0
  31. package/themes/business/src/components/OrdersListManager/utils.tsx +216 -0
  32. package/themes/business/src/components/OrdersOption/index.tsx +70 -116
  33. package/themes/business/src/components/OrdersOption/styles.tsx +2 -5
  34. package/themes/business/src/components/PreviousOrders/index.tsx +82 -23
  35. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  36. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  37. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  38. package/themes/kiosk/src/components/BusinessController/index.tsx +27 -6
  39. package/themes/kiosk/src/components/BusinessController/styles.tsx +1 -1
  40. package/themes/kiosk/src/components/BusinessProductsListing/index.tsx +51 -24
  41. package/themes/kiosk/src/components/Cart/index.tsx +1 -1
  42. package/themes/kiosk/src/components/CartBottomSheet/index.tsx +1 -1
  43. package/themes/kiosk/src/components/CartBottomSheet/styles.tsx +1 -1
  44. package/themes/kiosk/src/components/CartContent/index.tsx +13 -3
  45. package/themes/kiosk/src/components/CartItem/index.tsx +20 -8
  46. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +7 -5
  47. package/themes/kiosk/src/components/CustomerName/index.tsx +89 -88
  48. package/themes/kiosk/src/components/Intro/index.tsx +13 -13
  49. package/themes/kiosk/src/components/LanguageSelector/index.tsx +12 -8
  50. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  51. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  52. package/themes/kiosk/src/components/OrderDetails/index.tsx +2 -2
  53. package/themes/kiosk/src/components/OrderSummary/index.tsx +1 -1
  54. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +10 -12
  55. package/themes/kiosk/src/components/ProductForm/index.tsx +174 -126
  56. package/themes/kiosk/src/components/ProductForm/styles.tsx +1 -1
  57. package/themes/kiosk/src/components/ProductOption/index.tsx +1 -0
  58. package/themes/kiosk/src/components/ProductOption/styles.tsx +1 -0
  59. package/themes/kiosk/src/components/UpsellingProducts/index.tsx +48 -34
  60. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  61. package/themes/kiosk/src/components/shared/OCard.tsx +112 -78
  62. package/themes/original/index.tsx +177 -0
  63. package/themes/original/src/components/AddressForm/index.tsx +15 -10
  64. package/themes/original/src/components/AddressList/index.tsx +28 -2
  65. package/themes/original/src/components/AppleLogin/index.tsx +119 -78
  66. package/themes/original/src/components/BusinessBasicInformation/index.tsx +95 -44
  67. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +28 -1
  68. package/themes/original/src/components/BusinessController/index.tsx +32 -21
  69. package/themes/original/src/components/BusinessListingSearch/index.tsx +7 -3
  70. package/themes/original/src/components/BusinessMenuList/index.tsx +11 -4
  71. package/themes/original/src/components/BusinessPreorder/index.tsx +141 -121
  72. package/themes/original/src/components/BusinessProductsCategories/index.tsx +7 -5
  73. package/themes/original/src/components/BusinessProductsList/index.tsx +129 -22
  74. package/themes/original/src/components/BusinessProductsList/styles.tsx +32 -2
  75. package/themes/original/src/components/BusinessProductsListing/index.tsx +92 -37
  76. package/themes/original/src/components/BusinessProductsListing/styles.tsx +22 -0
  77. package/themes/original/src/components/BusinessReviews/index.tsx +4 -25
  78. package/themes/original/src/components/BusinessesListing/index.tsx +40 -53
  79. package/themes/original/src/components/Cart/index.tsx +40 -9
  80. package/themes/original/src/components/CartContent/index.tsx +2 -2
  81. package/themes/original/src/components/Checkout/index.tsx +47 -31
  82. package/themes/original/src/components/Checkout/styles.tsx +7 -0
  83. package/themes/original/src/components/CouponControl/index.tsx +1 -0
  84. package/themes/original/src/components/DriverTips/index.tsx +1 -1
  85. package/themes/original/src/components/ForgotPasswordForm/index.tsx +8 -12
  86. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +97 -89
  87. package/themes/original/src/components/Home/index.tsx +1 -1
  88. package/themes/original/src/components/LoginForm/index.tsx +156 -70
  89. package/themes/original/src/components/LoginForm/styles.tsx +6 -1
  90. package/themes/original/src/components/Messages/index.tsx +52 -45
  91. package/themes/original/src/components/Messages/styles.tsx +1 -3
  92. package/themes/original/src/components/MomentOption/index.tsx +10 -1
  93. package/themes/original/src/components/MomentOption/styles.tsx +1 -1
  94. package/themes/original/src/components/OrderDetails/index.tsx +104 -126
  95. package/themes/original/src/components/OrderDetails/styles.tsx +3 -1
  96. package/themes/original/src/components/OrderProgress/index.tsx +4 -4
  97. package/themes/original/src/components/OrderProgress/styles.tsx +1 -0
  98. package/themes/original/src/components/OrderSummary/index.tsx +34 -1
  99. package/themes/original/src/components/OrdersOption/index.tsx +15 -46
  100. package/themes/original/src/components/OrdersOption/styles.tsx +0 -6
  101. package/themes/original/src/components/PaymentOptionWallet/index.tsx +6 -2
  102. package/themes/original/src/components/PaymentOptions/index.tsx +24 -25
  103. package/themes/original/src/components/PhoneInputNumber/index.tsx +15 -8
  104. package/themes/original/src/components/PlaceSpot/index.tsx +114 -0
  105. package/themes/original/src/components/PlaceSpot/styles.tsx +11 -0
  106. package/themes/original/src/components/PreviousOrders/index.tsx +19 -13
  107. package/themes/original/src/components/ProductForm/index.tsx +31 -20
  108. package/themes/original/src/components/ProductForm/styles.tsx +2 -2
  109. package/themes/original/src/components/ReviewOrder/index.tsx +10 -9
  110. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  111. package/themes/original/src/components/SignupForm/index.tsx +173 -154
  112. package/themes/original/src/components/StripeElementsForm/index.tsx +55 -72
  113. package/themes/original/src/components/TaxInformation/index.tsx +17 -7
  114. package/themes/original/src/components/UpsellingProducts/index.tsx +6 -6
  115. package/themes/original/src/components/UserDetails/index.tsx +4 -95
  116. package/themes/original/src/components/UserFormDetails/index.tsx +2 -14
  117. package/themes/original/src/components/UserProfile/index.tsx +16 -16
  118. package/themes/original/src/components/UserProfileForm/index.tsx +8 -6
  119. package/themes/original/src/components/VerifyPhone/index.tsx +10 -7
  120. package/themes/original/src/components/VerifyPhone/styles.tsx +2 -1
  121. package/themes/original/src/components/shared/HeaderTitle.tsx +21 -0
  122. package/themes/original/src/components/shared/index.tsx +2 -0
  123. package/themes/original/src/config/constants.tsx +6 -6
  124. package/themes/original/src/types/index.tsx +63 -23
  125. package/themes/original/src/utils/index.tsx +12 -2
  126. package/themes/single-business/src/components/AddressList/index.tsx +1 -1
  127. package/themes/single-business/src/components/OrderTypeSelector/index.tsx +5 -5
  128. package/themes/single-business/src/components/UserProfile/index.tsx +1 -1
  129. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
  130. package/src/components/StripeMethodForm/index.tsx +0 -168
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ordering-ui-react-native",
3
- "version": "0.15.8",
3
+ "version": "0.15.10-release",
4
4
  "description": "Reusable components made in react native",
5
5
  "main": "src/index.tsx",
6
6
  "author": "ordering.inc",
@@ -57,7 +57,7 @@
57
57
  "@types/styled-components": "^5.1.3",
58
58
  "axios": "^0.21.0",
59
59
  "moment": "^2.29.1",
60
- "ordering-components": "github:Ordering-Inc/ordering-components#development",
60
+ "ordering-components": "github:Ordering-Inc/ordering-components#release",
61
61
  "patch-package": "^6.4.7",
62
62
  "postinstall-postinstall": "^2.1.0",
63
63
  "prop-types": "^15.7.2",
@@ -71,10 +71,11 @@
71
71
  "react-native-background-timer": "^2.4.1",
72
72
  "react-native-bootsplash": "^3.2.3",
73
73
  "react-native-calendar-picker": "^7.1.2",
74
- "react-native-calendar-strip": "^2.2.5",
74
+ "react-native-calendar-strip": "^2.2.1",
75
75
  "react-native-color-matrix-image-filters": "^5.2.10",
76
76
  "react-native-country-picker-modal": "^2.0.0",
77
77
  "react-native-credit-card-input": "^0.4.1",
78
+ "react-native-device-info": "^8.7.1",
78
79
  "react-native-document-picker": "^5.2.0",
79
80
  "react-native-elements": "^3.0.0-alpha.1",
80
81
  "react-native-fast-image": "^8.3.3",
@@ -98,6 +99,7 @@
98
99
  "react-native-picker-select": "^8.0.4",
99
100
  "react-native-print": "^0.9.0",
100
101
  "react-native-reanimated": "^1.13.1",
102
+ "react-native-recaptcha-that-works": "^1.2.0",
101
103
  "react-native-restart": "^0.0.22",
102
104
  "react-native-safe-area-context": "^3.1.8",
103
105
  "react-native-screens": "^2.11.0",
@@ -7,7 +7,8 @@
7
7
  */
8
8
 
9
9
  import * as React from 'react';
10
- import { LogBox } from 'react-native';
10
+ import { LogBox, Platform } from 'react-native';
11
+ import * as Sentry from "@sentry/react-native";
11
12
  import { OrderingProvider } from 'ordering-components/native';
12
13
  import RNBootSplash from "react-native-bootsplash";
13
14
 
@@ -22,6 +23,47 @@ import theme from './theme.json';
22
23
  import AppContainer from './AppContainer';
23
24
  import { FacebookPixel } from './components/FacebookPixel';
24
25
 
26
+ Sentry.init({
27
+ environment: Platform.OS === 'ios' ? 'ios' : 'android',
28
+ dsn: 'https://e5e1115dc93b49109f4ab65f2098bef9@o460529.ingest.sentry.io/5722123',
29
+ release: 'ordering-ui-native@' + process.env.npm_package_version,
30
+ ignoreErrors: [
31
+ 'is not defined',
32
+ 'is not a function',
33
+ 'can\'t find variable',
34
+ 'objects are not valid',
35
+ 'element type is invalid',
36
+ 'requiring module',
37
+ 'has not been registered',
38
+ 'failed to connect to debugger!',
39
+ 'rendered more hooks than',
40
+ 'rendered fewer hooks than',
41
+ 'should have a queue',
42
+ 'the OS most likely terminated',
43
+ 'Connection timed out',
44
+ 'java.io.EOFException',
45
+ 'Abort',
46
+ 'Segfault',
47
+ 'Failed to allocate a',
48
+ 'Application Not Responding',
49
+ 'connection no longer valid',
50
+ 'IllegalInstruction',
51
+ 'React.Children.only expected to receive a single React element child.',
52
+ 'unrecognized selector sent to instance'
53
+ ],
54
+ tracesSampleRate: 0.2,
55
+ // Release health
56
+ enableAutoSessionTracking: true,
57
+ // Sessions close after app is 10 seconds in the background.
58
+ sessionTrackingIntervalMillis: 10000,
59
+
60
+ integrations: [
61
+ new Sentry.ReactNativeTracing({
62
+ routingInstrumentation: reactNavigationV5Instrumentation,
63
+ })
64
+ ]
65
+ });
66
+
25
67
  LogBox.ignoreLogs([
26
68
  'Sending \`onAnimatedValueUpdate` with no listeners registered.',
27
69
  'Non-serializable values were found in the navigation state.',
@@ -1,5 +1,5 @@
1
1
  import React, { useState } from 'react'
2
- import { StyleSheet, View, ScrollView, TouchableOpacity, Dimensions } from 'react-native'
2
+ import { StyleSheet, View, ScrollView, Dimensions, Platform, PlatformIOSStatic, Pressable } from 'react-native'
3
3
  import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder'
4
4
  import { BusinessTypeFilter as BusinessTypeFilterController, useLanguage } from 'ordering-components/native'
5
5
 
@@ -8,6 +8,8 @@ import { OIcon, OText, OModal } from '../shared'
8
8
  import { BusinessTypeFilterParams } from '../../types'
9
9
  import { useTheme } from 'styled-components/native'
10
10
  import MaterialIcon from 'react-native-vector-icons/MaterialCommunityIcons';
11
+ import DeviceInfo from 'react-native-device-info';
12
+ import { TouchableOpacity } from 'react-native-gesture-handler'
11
13
 
12
14
  const windowWidth = Dimensions.get('window').width;
13
15
 
@@ -18,6 +20,10 @@ export const BusinessTypeFilterUI = (props: BusinessTypeFilterParams) => {
18
20
  handleChangeBusinessType,
19
21
  } = props;
20
22
 
23
+ const platformIOS = Platform as PlatformIOSStatic
24
+ const isIpad = platformIOS.isPad
25
+ const isTablet = DeviceInfo.isTablet();
26
+
21
27
  const theme = useTheme();
22
28
  const [, t] = useLanguage();
23
29
  const [isOpenAllCategories, setIsOpenAllCategories] = useState(false)
@@ -66,11 +72,13 @@ export const BusinessTypeFilterUI = (props: BusinessTypeFilterParams) => {
66
72
  <OIcon
67
73
  url={item.image}
68
74
  style={styles.logo}
75
+ cover
69
76
  />
70
77
  ) : (
71
78
  <OIcon
72
79
  src={theme.images.categories.all}
73
80
  style={styles.logo}
81
+ cover
74
82
  />
75
83
  )}
76
84
  <OText
@@ -122,7 +130,9 @@ export const BusinessTypeFilterUI = (props: BusinessTypeFilterParams) => {
122
130
  {t('BUSINESS_CATEGORIES', 'Business Categories')}
123
131
  </OText>
124
132
  </BusinessCategoriesTitle>
125
- <BusinessCategories>
133
+ <BusinessCategories
134
+ mt={(isIpad || isTablet) ? 65 : null}
135
+ >
126
136
  {typesState?.types.slice(0, 3).map((type: any) => (
127
137
  <RenderTypes
128
138
  key={type.id}
@@ -18,7 +18,7 @@ export const BusinessCategories = styled.View`
18
18
  display: flex;
19
19
  flex-direction: row;
20
20
  justify-content: space-between;
21
- margin: 10px 0px;
21
+ margin: ${(props: any) => props.mt ?? 10}px 0px 10px;
22
22
  width: 100%;
23
23
  `
24
24
  export const Category = styled.View`
@@ -191,7 +191,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
191
191
  {isFarAway && (
192
192
  <FarAwayMessage style={styles.farAwayMsg}>
193
193
  <Ionicons name='md-warning-outline' style={styles.iconStyle} />
194
- <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'You are far from this address')}</OText>
194
+ <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'Your are far from this address')}</OText>
195
195
  </FarAwayMessage>
196
196
  )}
197
197
  </OrderControlContainer>
@@ -529,7 +529,6 @@ const CheckoutUI = (props: any) => {
529
529
  paySelected={paymethodSelected}
530
530
  handlePaymentMethodClickCustom={handlePaymentMethodClick}
531
531
  setCardData={setCardData}
532
- handlePlaceOrder={handlePlaceOrder}
533
532
  />
534
533
  </ChPaymethods>
535
534
  </ChSection>
@@ -101,6 +101,7 @@ const LanguageSelectorUI = (props: LanguageSelectorParams) => {
101
101
  disabled={orderState.loading}
102
102
  onClose={() => Platform.OS === 'ios' ? handlerChangeLanguage() : {}}
103
103
  onDonePress={() => handlerChangeLanguage()}
104
+ fixAndroidTouchableBug={true}
104
105
  />
105
106
  ) : <DummyContainer />}
106
107
  </Container>
@@ -6,7 +6,7 @@ import { GiftedChat, Actions, InputToolbar, Composer, Send, Bubble, MessageImage
6
6
  import { USER_TYPE } from '../../config/constants'
7
7
  import MaterialCommunityIcon from 'react-native-vector-icons/MaterialCommunityIcons'
8
8
  import { OIcon, OIconButton, OText, OButton } from '../shared'
9
- import { TouchableOpacity, ActivityIndicator, StyleSheet, View, Platform, Keyboard,I18nManager } from 'react-native'
9
+ import { TouchableOpacity, ActivityIndicator, StyleSheet, View, Platform, Keyboard, I18nManager } from 'react-native'
10
10
  import { Header, TitleHeader, Wrapper, QuickMessageContainer } from './styles'
11
11
  import { MessagesParams } from '../../types'
12
12
 
@@ -36,6 +36,8 @@ const ORDER_STATUS: any = {
36
36
  19: 'ORDER_DRIVER_ALMOST_ARRIVED_CUSTOMER',
37
37
  20: 'ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS',
38
38
  21: 'ORDER_CUSTOMER_ARRIVED_BUSINESS',
39
+ 22: 'ORDER_LOOKING_FOR_DRIVER',
40
+ 23: 'ORDER_DRIVER_ON_WAY'
39
41
  }
40
42
 
41
43
  const imgOptions = {
@@ -93,7 +95,7 @@ const MessagesUI = (props: MessagesParams) => {
93
95
  }
94
96
 
95
97
  const handleImagePicker = () => {
96
- launchImageLibrary(imgOptions, (response : any) => {
98
+ launchImageLibrary(imgOptions, (response: any) => {
97
99
  if (response.didCancel) {
98
100
  // showToast(ToastType.Error, response.errorMessage);
99
101
  } else if (response.errorMessage) {
@@ -119,10 +121,10 @@ const MessagesUI = (props: MessagesParams) => {
119
121
  const messageConsole = (message: any) => {
120
122
  return message.change?.attribute !== 'driver_id'
121
123
  ?
122
- `${t('ORDER', 'Order')} ${t(message.change.attribute.toUpperCase(), message.change.attribute.replace('_', ' '))} ${t('CHANGED_FROM', 'Changed from')} ${
123
- filterSpecialStatus.includes(message.change.attribute) ?
124
- `${message.change.old === null ? '0' : message.change.old} ${t('TO', 'to')} ${message.change.new} ${t('MINUTES', 'Minutes')}` :
125
- `${message.change.old !== null && t(ORDER_STATUS[parseInt(message.change.old, 10)])} ${t('TO', 'to')} ${t(ORDER_STATUS[parseInt(message.change.new, 10)])}`
124
+ `${t('ORDER', 'Order')} ${t(message.change.attribute.toUpperCase(), message.change.attribute.replace('_', ' '))} ${t('CHANGED_FROM', 'Changed from')} ${filterSpecialStatus.includes(message.change.attribute) ?
125
+ `${message.change.old === null ? '0' : message.change.old} ${t('TO', 'to')} ${message.change.new || ''} ${t('MINUTES', 'Minutes')}` :
126
+ message.change.attribute === 'status' ? `${message.change.old !== null && t(ORDER_STATUS[parseInt(message.change.old, 10)])} ${t('TO', 'to')} ${t(ORDER_STATUS[parseInt(message.change.new, 10)])}`
127
+ : `${message.change.old} ${t('TO', 'to')} ${message.change.new || t('EMPTY', 'Empty')}`
126
128
  }`
127
129
  : message.change.new
128
130
  ?
@@ -133,13 +135,17 @@ const MessagesUI = (props: MessagesParams) => {
133
135
 
134
136
  useEffect(() => {
135
137
  let newMessages: Array<any> = []
136
- 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')}`
138
+ const consoleText = `${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')}`
137
139
  const firstMessage = {
138
140
  _id: 0,
139
- text: console,
141
+ text: consoleText,
140
142
  createdAt: order?.created_at,
141
- system: true
143
+ system: true,
144
+ user: {
145
+ _id: 0
146
+ }
142
147
  }
148
+
143
149
  messages.messages.map((message: any) => {
144
150
  let newMessage
145
151
  if (message.type !== 0 && (messagesToShow?.messages?.length || (message?.can_see?.includes('2')) || (message?.can_see?.includes('4') && type === USER_TYPE.DRIVER))) {
@@ -159,7 +165,9 @@ const MessagesUI = (props: MessagesParams) => {
159
165
  if (message.type === 0) {
160
166
  newMessage = firstMessage
161
167
  }
162
- newMessages = [...newMessages, newMessage]
168
+ if (newMessage) {
169
+ newMessages = [...newMessages, newMessage]
170
+ }
163
171
  })
164
172
  setFormattedMessages([...newMessages.reverse()])
165
173
  }, [messages.messages.length])
@@ -177,7 +185,7 @@ const MessagesUI = (props: MessagesParams) => {
177
185
  }
178
186
  }, [])
179
187
 
180
- const RenderActions = (props : any) => {
188
+ const RenderActions = (props: any) => {
181
189
  return (
182
190
  <Actions
183
191
  {...props}
@@ -210,7 +218,7 @@ const MessagesUI = (props: MessagesParams) => {
210
218
  )
211
219
  }
212
220
 
213
- const renderInputToolbar = (props : any) => (
221
+ const renderInputToolbar = (props: any) => (
214
222
  <InputToolbar
215
223
  {...props}
216
224
  containerStyle={{
@@ -271,7 +279,7 @@ const MessagesUI = (props: MessagesParams) => {
271
279
  <OText size={14}>{t('NOT_SEND_MESSAGES', 'You can\'t send messages because the order has ended')}</OText>
272
280
  </View>
273
281
  ) : (
274
- <View style={{flexDirection: 'row', width: '80%'}}>
282
+ <View style={{ flexDirection: 'row', width: '80%' }}>
275
283
  <Composer
276
284
  {...props}
277
285
  textInputStyle={{
@@ -308,20 +316,20 @@ const MessagesUI = (props: MessagesParams) => {
308
316
  alwaysShowSend
309
317
  containerStyle={styles.containerSend}
310
318
  >
311
- <OIconButton
312
- onClick={onSubmit}
313
- style={{
314
- height: 32,
315
- borderRadius: 25,
316
- opacity: (sendMessage?.loading || (message === '' && !image) || messages?.loading) ? 0.4 : 1,
317
- borderColor: theme.colors.primary,
318
- }}
319
- iconStyle={{ marginTop: 3, marginRight: 2 }}
320
- icon={!sendMessage?.loading ? paperIcon : undefined}
321
- RenderIcon={sendMessage?.loading ? () => <ActivityIndicator size='small' color={theme.colors.primary} /> : undefined}
322
- disabled={(sendMessage?.loading || (message === '' && !image) || messages?.loading)}
323
- disabledColor={theme.colors.white}
324
- />
319
+ <OIconButton
320
+ onClick={onSubmit}
321
+ style={{
322
+ height: 32,
323
+ borderRadius: 25,
324
+ opacity: (sendMessage?.loading || (message === '' && !image) || messages?.loading) ? 0.4 : 1,
325
+ borderColor: theme.colors.primary,
326
+ }}
327
+ iconStyle={{ marginTop: 3, marginRight: 2 }}
328
+ icon={!sendMessage?.loading ? paperIcon : undefined}
329
+ RenderIcon={sendMessage?.loading ? () => <ActivityIndicator size='small' color={theme.colors.primary} /> : undefined}
330
+ disabled={(sendMessage?.loading || (message === '' && !image) || messages?.loading)}
331
+ disabledColor={theme.colors.white}
332
+ />
325
333
  </Send>
326
334
  )
327
335
 
@@ -338,7 +346,7 @@ const MessagesUI = (props: MessagesParams) => {
338
346
  }}
339
347
  wrapperStyle={{
340
348
  left: { backgroundColor: '#f7f7f7', padding: 5, borderBottomLeftRadius: 0 },
341
- right: { backgroundColor: theme.colors.primary, padding: 5, borderBottomRightRadius: 0}
349
+ right: { backgroundColor: theme.colors.primary, padding: 5, borderBottomRightRadius: 0 }
342
350
  }}
343
351
  />
344
352
  )
@@ -357,7 +365,7 @@ const MessagesUI = (props: MessagesParams) => {
357
365
  <>
358
366
  <Wrapper>
359
367
  <Header>
360
- <OIcon
368
+ <OIcon
361
369
  url={type === USER_TYPE.DRIVER ? order?.driver?.photo : order?.business?.logo}
362
370
  width={60}
363
371
  height={60}
@@ -415,7 +423,7 @@ const styles = StyleSheet.create({
415
423
  justifyContent: 'center',
416
424
  marginHorizontal: 4
417
425
  },
418
- editButton : {
426
+ editButton: {
419
427
  borderRadius: 50,
420
428
  backgroundColor: '#E9ECEF',
421
429
  marginRight: 10,
@@ -47,6 +47,8 @@ const MomentOptionUI = (props: MomentOptionParams) => {
47
47
  const [optionSelected, setOptionSelected] = useState({ isAsap: false, isSchedule: false })
48
48
  const [momentState, setMomentState] = useState({ isLoading: 0, isEditing: false })
49
49
 
50
+ const is12hours = configs?.dates_moment_format?.value?.includes('hh:mm')
51
+
50
52
  const goToBack = () => navigation?.canGoBack() && navigation.goBack()
51
53
 
52
54
  const _handleAsap = () => {
@@ -192,7 +194,7 @@ const MomentOptionUI = (props: MomentOptionParams) => {
192
194
  disabled={orderState.loading}
193
195
  >
194
196
  <OText color={timeSelected === hour.startTime ? theme.colors.primary : theme.colors.textSecondary}>
195
- {configs?.format_time?.value === '12' ? (
197
+ {is12hours ? (
196
198
  hour.startTime.includes('12')
197
199
  ? `${hour.startTime}PM`
198
200
  : parseTime(moment(hour.startTime, 'HH:mm'), { outputFormat: 'hh:mma' })
@@ -1,5 +1,5 @@
1
- import React, { useState, useEffect } from 'react'
2
- import { View, StyleSheet, BackHandler, TouchableOpacity, I18nManager } from 'react-native'
1
+ import React, { useState, useEffect, useRef } from 'react'
2
+ import { View, StyleSheet, BackHandler, TouchableOpacity, I18nManager, AppState } from 'react-native'
3
3
  import LinearGradient from 'react-native-linear-gradient'
4
4
  import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder';
5
5
  import MaterialCommunityIcon from 'react-native-vector-icons/MaterialCommunityIcons'
@@ -64,7 +64,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
64
64
  isFromRoot,
65
65
  driverLocation,
66
66
  goToBusinessList,
67
- onNavigationRedirect
67
+ onNavigationRedirect,
68
+ getOrder
68
69
  } = props
69
70
 
70
71
  const theme = useTheme()
@@ -108,6 +109,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
108
109
  const [isReviewed, setIsReviewed] = useState(false)
109
110
  const [openOrderCreating, setOpenOrderCreating] = useState(false)
110
111
  const [openTaxModal, setOpenTaxModal] = useState<any>({ open: false, tax: null, type: '' })
112
+ const appState = useRef(AppState.currentState)
113
+
111
114
  const { order, loading, businessData, error } = props.order
112
115
 
113
116
  const getOrderStatus = (s: string) => {
@@ -256,6 +259,24 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
256
259
  })
257
260
  }, [])
258
261
 
262
+ useEffect(() => {
263
+ const onFocusApp = (nextAppState: any) => {
264
+ if (
265
+ appState.current.match(/inactive|background/) &&
266
+ nextAppState === "active"
267
+ ) {
268
+ getOrder && getOrder()
269
+ }
270
+ appState.current = nextAppState;
271
+ }
272
+
273
+ AppState.addEventListener("change", onFocusApp);
274
+ return () => {
275
+ AppState.removeEventListener('change', onFocusApp);
276
+ };
277
+ }, [])
278
+
279
+
259
280
  return (
260
281
  <OrderDetailsContainer keyboardShouldPersistTaps='handled'>
261
282
  {order && order?.id && !error && !loading && (
@@ -387,7 +408,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
387
408
  <OText style={{ textAlign: 'left' }}>{order?.delivery_option?.name}</OText>
388
409
  </View>
389
410
  )}
390
- {order?.comment && (
411
+ {!!order?.comment && (
391
412
  <View>
392
413
  <OText size={18} style={{ textAlign: 'left' }} >{t('COMMENT', 'Comment')}</OText>
393
414
  <OText style={{ textAlign: 'left' }}>{order?.comment}</OText>
@@ -61,13 +61,12 @@ const PaymentOptionsUI = (props: any) => {
61
61
  handlePaymethodDataChange,
62
62
  handlePaymentMethodClickCustom,
63
63
  isOpenMethod,
64
- setCardData,
65
- handlePlaceOrder
64
+ setCardData
66
65
  } = props
67
66
 
68
67
  const theme = useTheme();
69
68
  const [, t] = useLanguage();
70
- const methodsPay = ['google_pay', 'apple_pay']
69
+ const methodsPay = ['google_pay']
71
70
  const stripeDirectMethods = ['stripe_direct', ...methodsPay]
72
71
 
73
72
  const [addCardOpen, setAddCardOpen] = useState({ stripe: false, stripeConnect: false });
@@ -122,11 +121,8 @@ const PaymentOptionsUI = (props: any) => {
122
121
  }, [props.paySelected])
123
122
 
124
123
  useEffect(() => {
125
- setCardData && setCardData(paymethodData)
126
- if (methodsPay.includes(paymethodSelected?.gateway) && paymethodData?.id && paymethodSelected?.data?.card) {
127
- handlePlaceOrder()
128
- }
129
- }, [paymethodData, paymethodSelected])
124
+ setCardData(paymethodData)
125
+ }, [paymethodData])
130
126
 
131
127
  const renderPaymethods = ({ item }: any) => {
132
128
  return (
@@ -156,7 +152,7 @@ const PaymentOptionsUI = (props: any) => {
156
152
  )
157
153
  }
158
154
 
159
- const excludeGateway: any = ['stripe_connect', 'stripe_redirect']; //exclude connect & redirect
155
+ const excludeGateway: any = ['stripe_connect', 'stripe_redirect', 'apple_pay']; //exclude connect & redirect & apple pay
160
156
 
161
157
  return (
162
158
  <PMContainer>
@@ -285,11 +281,11 @@ const PaymentOptionsUI = (props: any) => {
285
281
  </KeyboardAvoidingView>
286
282
  </OModal>
287
283
 
288
- {/* Stripe direct, Google pay, Apple pay */}
284
+ {/* Stripe direct */}
289
285
  <OModal
290
286
  entireModal
291
287
  title={t('ADD_CREDIT_OR_DEBIT_CARD', 'Add credit or debit card')}
292
- open={stripeDirectMethods?.includes(isOpenMethod?.paymethod?.gateway) && !paymethodData.id}
288
+ open={isOpenMethod?.paymethod?.gateway === 'stripe_direct' && !paymethodData?.id}
293
289
  onClose={() => handlePaymethodClick(null)}
294
290
  >
295
291
  <KeyboardAvoidingView
@@ -298,13 +294,10 @@ const PaymentOptionsUI = (props: any) => {
298
294
  enabled={Platform.OS === 'ios' ? true : false}
299
295
  >
300
296
  <StripeElementsForm
301
- cart={cart}
302
- paymethod={isOpenMethod?.paymethod?.gateway}
303
- methodsPay={methodsPay}
304
297
  businessId={props.businessId}
305
- publicKey={isOpenMethod?.paymethod?.credentials?.publishable || isOpenMethod?.paymethod?.credentials?.publishable_key}
298
+ publicKey={isOpenMethod?.paymethod?.credentials?.publishable}
306
299
  handleSource={handlePaymethodDataChange}
307
- onCancel={() => handlePaymethodClick(null)}
300
+ onCancel={() => handlePaymethodClick(false)}
308
301
  />
309
302
  </KeyboardAvoidingView>
310
303
  </OModal>