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.
- package/package.json +5 -3
- package/src/DeliveryApp.tsx +43 -1
- package/src/components/BusinessTypeFilter/index.tsx +12 -2
- package/src/components/BusinessTypeFilter/styles.tsx +1 -1
- package/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/Checkout/index.tsx +0 -1
- package/src/components/LanguageSelector/index.tsx +1 -0
- package/src/components/Messages/index.tsx +38 -30
- package/src/components/MomentOption/index.tsx +3 -1
- package/src/components/OrderDetails/index.tsx +25 -4
- package/src/components/PaymentOptions/index.tsx +9 -16
- package/src/components/PaymentOptionsWebView/index.tsx +123 -124
- package/src/components/ProductForm/index.tsx +1 -1
- package/src/components/ProductForm/styles.tsx +1 -0
- package/src/components/StripeElementsForm/index.tsx +27 -48
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/config.json +0 -2
- package/src/pages/Checkout.tsx +1 -1
- package/src/types/index.tsx +1 -9
- package/src/utils/index.tsx +2 -1
- package/themes/business/index.tsx +2 -0
- package/themes/business/src/components/Chat/index.tsx +32 -31
- package/themes/business/src/components/Home/index.tsx +128 -55
- package/themes/business/src/components/Home/styles.tsx +8 -1
- package/themes/business/src/components/NewOrderNotification/index.tsx +59 -98
- package/themes/business/src/components/OrderDetails/Business.tsx +1 -0
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +27 -0
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +85 -17
- package/themes/business/src/components/OrdersListManager/index.tsx +874 -0
- package/themes/business/src/components/OrdersListManager/styles.tsx +123 -0
- package/themes/business/src/components/OrdersListManager/utils.tsx +216 -0
- package/themes/business/src/components/OrdersOption/index.tsx +70 -116
- package/themes/business/src/components/OrdersOption/styles.tsx +2 -5
- package/themes/business/src/components/PreviousOrders/index.tsx +82 -23
- package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
- package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
- package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
- package/themes/kiosk/src/components/BusinessController/index.tsx +27 -6
- package/themes/kiosk/src/components/BusinessController/styles.tsx +1 -1
- package/themes/kiosk/src/components/BusinessProductsListing/index.tsx +51 -24
- package/themes/kiosk/src/components/Cart/index.tsx +1 -1
- package/themes/kiosk/src/components/CartBottomSheet/index.tsx +1 -1
- package/themes/kiosk/src/components/CartBottomSheet/styles.tsx +1 -1
- package/themes/kiosk/src/components/CartContent/index.tsx +13 -3
- package/themes/kiosk/src/components/CartItem/index.tsx +20 -8
- package/themes/kiosk/src/components/CategoriesMenu/index.tsx +7 -5
- package/themes/kiosk/src/components/CustomerName/index.tsx +89 -88
- package/themes/kiosk/src/components/Intro/index.tsx +13 -13
- package/themes/kiosk/src/components/LanguageSelector/index.tsx +12 -8
- package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
- package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
- package/themes/kiosk/src/components/OrderDetails/index.tsx +2 -2
- package/themes/kiosk/src/components/OrderSummary/index.tsx +1 -1
- package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +10 -12
- package/themes/kiosk/src/components/ProductForm/index.tsx +174 -126
- package/themes/kiosk/src/components/ProductForm/styles.tsx +1 -1
- package/themes/kiosk/src/components/ProductOption/index.tsx +1 -0
- package/themes/kiosk/src/components/ProductOption/styles.tsx +1 -0
- package/themes/kiosk/src/components/UpsellingProducts/index.tsx +48 -34
- package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
- package/themes/kiosk/src/components/shared/OCard.tsx +112 -78
- package/themes/original/index.tsx +177 -0
- package/themes/original/src/components/AddressForm/index.tsx +15 -10
- package/themes/original/src/components/AddressList/index.tsx +28 -2
- package/themes/original/src/components/AppleLogin/index.tsx +119 -78
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +95 -44
- package/themes/original/src/components/BusinessBasicInformation/styles.tsx +28 -1
- package/themes/original/src/components/BusinessController/index.tsx +32 -21
- package/themes/original/src/components/BusinessListingSearch/index.tsx +7 -3
- package/themes/original/src/components/BusinessMenuList/index.tsx +11 -4
- package/themes/original/src/components/BusinessPreorder/index.tsx +141 -121
- package/themes/original/src/components/BusinessProductsCategories/index.tsx +7 -5
- package/themes/original/src/components/BusinessProductsList/index.tsx +129 -22
- package/themes/original/src/components/BusinessProductsList/styles.tsx +32 -2
- package/themes/original/src/components/BusinessProductsListing/index.tsx +92 -37
- package/themes/original/src/components/BusinessProductsListing/styles.tsx +22 -0
- package/themes/original/src/components/BusinessReviews/index.tsx +4 -25
- package/themes/original/src/components/BusinessesListing/index.tsx +40 -53
- package/themes/original/src/components/Cart/index.tsx +40 -9
- package/themes/original/src/components/CartContent/index.tsx +2 -2
- package/themes/original/src/components/Checkout/index.tsx +47 -31
- package/themes/original/src/components/Checkout/styles.tsx +7 -0
- package/themes/original/src/components/CouponControl/index.tsx +1 -0
- package/themes/original/src/components/DriverTips/index.tsx +1 -1
- package/themes/original/src/components/ForgotPasswordForm/index.tsx +8 -12
- package/themes/original/src/components/HighestRatedBusinesses/index.tsx +97 -89
- package/themes/original/src/components/Home/index.tsx +1 -1
- package/themes/original/src/components/LoginForm/index.tsx +156 -70
- package/themes/original/src/components/LoginForm/styles.tsx +6 -1
- package/themes/original/src/components/Messages/index.tsx +52 -45
- package/themes/original/src/components/Messages/styles.tsx +1 -3
- package/themes/original/src/components/MomentOption/index.tsx +10 -1
- package/themes/original/src/components/MomentOption/styles.tsx +1 -1
- package/themes/original/src/components/OrderDetails/index.tsx +104 -126
- package/themes/original/src/components/OrderDetails/styles.tsx +3 -1
- package/themes/original/src/components/OrderProgress/index.tsx +4 -4
- package/themes/original/src/components/OrderProgress/styles.tsx +1 -0
- package/themes/original/src/components/OrderSummary/index.tsx +34 -1
- package/themes/original/src/components/OrdersOption/index.tsx +15 -46
- package/themes/original/src/components/OrdersOption/styles.tsx +0 -6
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +6 -2
- package/themes/original/src/components/PaymentOptions/index.tsx +24 -25
- package/themes/original/src/components/PhoneInputNumber/index.tsx +15 -8
- package/themes/original/src/components/PlaceSpot/index.tsx +114 -0
- package/themes/original/src/components/PlaceSpot/styles.tsx +11 -0
- package/themes/original/src/components/PreviousOrders/index.tsx +19 -13
- package/themes/original/src/components/ProductForm/index.tsx +31 -20
- package/themes/original/src/components/ProductForm/styles.tsx +2 -2
- package/themes/original/src/components/ReviewOrder/index.tsx +10 -9
- package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
- package/themes/original/src/components/SignupForm/index.tsx +173 -154
- package/themes/original/src/components/StripeElementsForm/index.tsx +55 -72
- package/themes/original/src/components/TaxInformation/index.tsx +17 -7
- package/themes/original/src/components/UpsellingProducts/index.tsx +6 -6
- package/themes/original/src/components/UserDetails/index.tsx +4 -95
- package/themes/original/src/components/UserFormDetails/index.tsx +2 -14
- package/themes/original/src/components/UserProfile/index.tsx +16 -16
- package/themes/original/src/components/UserProfileForm/index.tsx +8 -6
- package/themes/original/src/components/VerifyPhone/index.tsx +10 -7
- package/themes/original/src/components/VerifyPhone/styles.tsx +2 -1
- package/themes/original/src/components/shared/HeaderTitle.tsx +21 -0
- package/themes/original/src/components/shared/index.tsx +2 -0
- package/themes/original/src/config/constants.tsx +6 -6
- package/themes/original/src/types/index.tsx +63 -23
- package/themes/original/src/utils/index.tsx +12 -2
- package/themes/single-business/src/components/AddressList/index.tsx +1 -1
- package/themes/single-business/src/components/OrderTypeSelector/index.tsx +5 -5
- package/themes/single-business/src/components/UserProfile/index.tsx +1 -1
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
- 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.
|
|
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#
|
|
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.
|
|
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",
|
package/src/DeliveryApp.tsx
CHANGED
|
@@ -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,
|
|
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:
|
|
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', '
|
|
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>
|
|
@@ -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
|
|
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
|
-
|
|
124
|
-
`${message.change.old
|
|
125
|
-
|
|
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
|
|
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:
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
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
|
-
|
|
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
|
-
{
|
|
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'
|
|
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
|
|
126
|
-
|
|
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
|
|
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={
|
|
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
|
|
298
|
+
publicKey={isOpenMethod?.paymethod?.credentials?.publishable}
|
|
306
299
|
handleSource={handlePaymethodDataChange}
|
|
307
|
-
onCancel={() => handlePaymethodClick(
|
|
300
|
+
onCancel={() => handlePaymethodClick(false)}
|
|
308
301
|
/>
|
|
309
302
|
</KeyboardAvoidingView>
|
|
310
303
|
</OModal>
|