ordering-ui-react-native 0.15.16 → 0.15.17-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/OrderDetails/index.tsx +26 -5
- 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/navigators/HomeNavigator.tsx +6 -0
- package/src/pages/BusinessProductsList.tsx +1 -0
- package/src/pages/BusinessesListing.tsx +1 -1
- package/src/pages/Checkout.tsx +1 -1
- package/src/pages/Sessions.tsx +22 -0
- package/src/types/index.tsx +1 -9
- package/src/utils/index.tsx +68 -1
- package/themes/business/index.tsx +2 -0
- package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +56 -8
- package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +5 -0
- 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 +2 -1
- package/themes/business/src/components/OrderDetails/Delivery.tsx +19 -12
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +150 -89
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +91 -17
- package/themes/business/src/components/OrderDetails/styles.tsx +7 -0
- 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 +54 -49
- package/themes/business/src/components/PreviousOrders/index.tsx +82 -23
- package/themes/business/src/types/index.tsx +2 -1
- 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 +48 -21
- package/themes/kiosk/src/components/Cart/index.tsx +98 -24
- package/themes/kiosk/src/components/Cart/styles.tsx +6 -0
- 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 +6 -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 +136 -41
- package/themes/kiosk/src/components/OrderDetails/styles.tsx +5 -0
- 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 -125
- 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/kiosk/src/types/index.d.ts +2 -0
- package/themes/original/index.tsx +179 -0
- package/themes/original/src/components/AddressForm/index.tsx +15 -10
- package/themes/original/src/components/AddressList/index.tsx +56 -18
- package/themes/original/src/components/AppleLogin/index.tsx +117 -78
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +96 -45
- package/themes/original/src/components/BusinessBasicInformation/styles.tsx +28 -1
- package/themes/original/src/components/BusinessController/index.tsx +52 -22
- package/themes/original/src/components/BusinessController/styles.tsx +22 -0
- package/themes/original/src/components/BusinessFeaturedController/index.tsx +20 -1
- package/themes/original/src/components/BusinessFeaturedController/styles.tsx +23 -0
- package/themes/original/src/components/BusinessListingSearch/index.tsx +4 -0
- 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 +29 -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/BusinessTypeFilter/index.tsx +1 -2
- package/themes/original/src/components/BusinessesListing/index.tsx +49 -58
- package/themes/original/src/components/Cart/index.tsx +58 -21
- package/themes/original/src/components/CartContent/index.tsx +2 -2
- package/themes/original/src/components/Checkout/index.tsx +57 -33
- 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/Help/index.tsx +21 -4
- 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/LastOrders/index.tsx +12 -1
- package/themes/original/src/components/LoginForm/index.tsx +73 -2
- package/themes/original/src/components/LoginForm/styles.tsx +6 -1
- package/themes/original/src/components/MessageListing/index.tsx +10 -1
- package/themes/original/src/components/Messages/index.tsx +49 -44
- 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 +119 -127
- 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 +35 -2
- package/themes/original/src/components/OrderTypeSelector/index.tsx +4 -2
- package/themes/original/src/components/OrdersOption/index.tsx +25 -33
- package/themes/original/src/components/OrdersOption/styles.tsx +0 -6
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +10 -4
- package/themes/original/src/components/PaymentOptionWallet/styles.tsx +1 -1
- package/themes/original/src/components/PaymentOptions/index.tsx +9 -19
- 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 +40 -35
- package/themes/original/src/components/ProductForm/styles.tsx +2 -2
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +5 -3
- package/themes/original/src/components/Promotions/index.tsx +250 -0
- package/themes/original/src/components/Promotions/styles.tsx +60 -0
- 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/Sessions/index.tsx +160 -0
- package/themes/original/src/components/Sessions/styles.tsx +15 -0
- package/themes/original/src/components/SingleProductCard/index.tsx +47 -21
- package/themes/original/src/components/SingleProductCard/styles.tsx +28 -1
- 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 +87 -71
- package/themes/original/src/components/UserDetails/index.tsx +4 -95
- package/themes/original/src/components/UserFormDetails/index.tsx +32 -31
- package/themes/original/src/components/UserProfile/index.tsx +70 -20
- package/themes/original/src/components/UserProfileForm/index.tsx +28 -24
- 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/Wallets/index.tsx +75 -8
- package/themes/original/src/components/Wallets/styles.tsx +21 -0
- 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 +79 -25
- 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 +6 -6
- 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.17-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>
|
|
@@ -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 && (
|
|
@@ -493,7 +514,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
493
514
|
</Table>
|
|
494
515
|
)}
|
|
495
516
|
{
|
|
496
|
-
order?.taxes?.length === 0 && order?.tax_type === 2 && (
|
|
517
|
+
order?.taxes?.length === 0 && order?.tax_type === 2 && order?.summary?.tax > 0 && (
|
|
497
518
|
<Table>
|
|
498
519
|
<OText>
|
|
499
520
|
{t('TAX', 'Tax')} {`(${verifyDecimals(order?.tax, parseNumber)}%)`}
|
|
@@ -503,7 +524,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
503
524
|
)
|
|
504
525
|
}
|
|
505
526
|
{
|
|
506
|
-
order?.fees?.length === 0 && (
|
|
527
|
+
order?.fees?.length === 0 && order?.summary?.service_fee > 0 && (
|
|
507
528
|
<Table>
|
|
508
529
|
<OText>
|
|
509
530
|
{t('SERVICE_FEE', 'Service fee')}
|
|
@@ -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>
|
|
@@ -5,147 +5,146 @@ import WebView from 'react-native-webview';
|
|
|
5
5
|
import { ActivityIndicator } from 'react-native-paper';
|
|
6
6
|
|
|
7
7
|
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
ToastType,
|
|
9
|
+
useToast,
|
|
10
|
+
useApi,
|
|
11
|
+
useLanguage,
|
|
12
|
+
useConfig
|
|
13
13
|
} from 'ordering-components/native';
|
|
14
14
|
|
|
15
15
|
import { OText } from '../shared';
|
|
16
16
|
|
|
17
17
|
interface PaymentOptionsWebViewParams {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
18
|
+
onNavigationRedirect?: Function,
|
|
19
|
+
uri?: any,
|
|
20
|
+
user?: any,
|
|
21
|
+
token?: any,
|
|
22
|
+
cart?: any,
|
|
23
|
+
currency?: any,
|
|
24
|
+
webviewPaymethod?: any,
|
|
25
|
+
setShowGateway?: any,
|
|
26
|
+
setOpenOrderCreating?: any,
|
|
27
|
+
locationId?: any
|
|
28
28
|
}
|
|
29
29
|
export const PaymentOptionsWebView = (props: PaymentOptionsWebViewParams) => {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
30
|
+
const {
|
|
31
|
+
onNavigationRedirect,
|
|
32
|
+
uri,
|
|
33
|
+
user,
|
|
34
|
+
token,
|
|
35
|
+
cart,
|
|
36
|
+
currency,
|
|
37
|
+
webviewPaymethod,
|
|
38
|
+
setShowGateway,
|
|
39
|
+
setOpenOrderCreating,
|
|
40
|
+
locationId
|
|
41
|
+
} = props
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
const webviewRef = useRef<any>(null)
|
|
44
|
+
const [, { showToast }] = useToast();
|
|
45
|
+
const [ordering] = useApi()
|
|
46
|
+
const [{ configs }] = useConfig();
|
|
47
|
+
const [, t] = useLanguage();
|
|
48
48
|
|
|
49
|
+
|
|
50
|
+
const [progClr, setProgClr] = useState('#424242');
|
|
51
|
+
const [prog, setProg] = useState(true);
|
|
49
52
|
|
|
50
|
-
|
|
51
|
-
const [prog, setProg] = useState(true);
|
|
52
|
-
|
|
53
|
-
const handleCloseWebview = () => {
|
|
53
|
+
const handleCloseWebview = () => {
|
|
54
54
|
setProg(true);
|
|
55
55
|
setShowGateway({ open: false, closedByUser: true })
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
const onMessage = (e: any) => {
|
|
59
|
+
if (e?.nativeEvent?.data && e?.nativeEvent?.data !== 'undefined') {
|
|
60
|
+
let payment = JSON.parse(e.nativeEvent.data);
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
if (payment === 'api error') {
|
|
63
|
+
setShowGateway({ closedByUser: true, open: false })
|
|
64
|
+
setProg(true);
|
|
65
|
+
}
|
|
66
66
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
67
|
+
if (payment) {
|
|
68
|
+
if (payment.error) {
|
|
69
|
+
showToast(ToastType.Error, payment.result)
|
|
70
|
+
setOpenOrderCreating && setOpenOrderCreating(false)
|
|
71
|
+
} else if (payment?.result?.order?.uuid) {
|
|
72
|
+
showToast(ToastType.Success, t('ORDER_PLACED_SUCCESSfULLY', 'The order was placed successfully'))
|
|
73
|
+
onNavigationRedirect && onNavigationRedirect('OrderDetails', { orderId: payment?.result?.order?.uuid, isFromCheckout: true})
|
|
74
|
+
}
|
|
75
|
+
setProg(true);
|
|
76
|
+
setShowGateway({ closedByUser: false, open: false })
|
|
77
|
+
}
|
|
74
78
|
}
|
|
75
|
-
|
|
76
|
-
setShowGateway({ closedByUser: false, open: false })
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
79
|
+
}
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
return (
|
|
82
82
|
<View style={{ zIndex: 9999, height: '100%', width: '100%', position: 'absolute', backgroundColor: 'white' }}>
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
83
|
+
<Icon
|
|
84
|
+
name="x"
|
|
85
|
+
size={35}
|
|
86
|
+
style={{ backgroundColor: 'white', paddingTop: 30, paddingLeft: 10 }}
|
|
87
|
+
onPress={handleCloseWebview}
|
|
88
|
+
/>
|
|
89
|
+
<OText
|
|
90
|
+
style={{
|
|
91
|
+
textAlign: 'center',
|
|
92
|
+
fontSize: 16,
|
|
93
|
+
fontWeight: 'bold',
|
|
94
|
+
color: '#00457C',
|
|
95
|
+
marginBottom: 5,
|
|
96
|
+
marginTop: 10
|
|
97
|
+
}}>
|
|
98
|
+
{webviewPaymethod?.gateway === 'paypal' ? (t('PAYPAL_GATEWAY', 'PayPal GateWay')) : (t('SQUARE_PAYMENT', 'Square payment'))}
|
|
99
|
+
</OText>
|
|
100
|
+
<View style={{ padding: 20, opacity: prog ? 1 : 0, backgroundColor: 'white' }}>
|
|
101
|
+
<ActivityIndicator size={24} color={progClr} />
|
|
102
|
+
</View>
|
|
103
|
+
<WebView
|
|
104
|
+
source={{ uri: uri }}
|
|
105
|
+
onMessage={onMessage}
|
|
106
|
+
ref={webviewRef}
|
|
107
|
+
javaScriptEnabled={true}
|
|
108
|
+
javaScriptEnabledAndroid={true}
|
|
109
|
+
cacheEnabled={false}
|
|
110
|
+
cacheMode='LOAD_NO_CACHE'
|
|
111
|
+
style={{ flex: 1 }}
|
|
112
|
+
onShouldStartLoadWithRequest={() => true}
|
|
113
|
+
onLoadStart={() => {
|
|
114
|
+
setProg(true);
|
|
115
|
+
setProgClr('#424242');
|
|
116
|
+
}}
|
|
117
|
+
onLoadProgress={() => {
|
|
118
|
+
setProg(true);
|
|
119
|
+
setProgClr('#00457C');
|
|
120
|
+
}}
|
|
121
|
+
onLoad={() => {
|
|
122
|
+
setProg(true);
|
|
123
|
+
setProgClr('#00457C');
|
|
124
|
+
}}
|
|
125
|
+
onLoadEnd={(e) => {
|
|
126
|
+
const messageParams = locationId ? { locationId } : {}
|
|
127
|
+
const message = {
|
|
128
|
+
action: 'init',
|
|
129
|
+
data: {
|
|
130
|
+
urlPlace: `${ordering.root}/carts/${cart?.uuid}/place`,
|
|
131
|
+
urlConfirm: `${ordering.root}/carts/${cart?.uuid}/confirm`,
|
|
132
|
+
payData: {
|
|
133
|
+
paymethod_id: webviewPaymethod?.id,
|
|
134
|
+
amount: cart?.balance ?? cart?.total,
|
|
135
|
+
delivery_zone_id: cart?.delivery_zone_id,
|
|
136
|
+
user_id: user?.id,
|
|
137
|
+
user_name: user?.name
|
|
138
|
+
},
|
|
139
|
+
currency: configs?.stripe_currency?.value || currency,
|
|
140
|
+
userToken: token,
|
|
141
|
+
clientId: webviewPaymethod?.credentials?.client_id,
|
|
142
|
+
...messageParams
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
setProg(false);
|
|
146
|
+
webviewRef?.current?.postMessage?.(JSON.stringify(message))
|
|
147
|
+
}}
|
|
148
|
+
/>
|
|
149
149
|
</View>
|
|
150
|
-
|
|
151
|
-
}
|
|
150
|
+
)}
|