ordering-ui-react-native 0.15.7 → 0.15.8-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/Home/index.tsx +3 -5
- package/src/components/LanguageSelector/index.tsx +66 -97
- package/src/components/LanguageSelector/styles.tsx +4 -17
- 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/UserProfileForm/index.tsx +35 -1
- 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 +2 -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 +6 -3
- package/themes/original/src/components/BusinessProductsListing/index.tsx +18 -28
- 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 +62 -23
- 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
|
@@ -17,6 +17,8 @@ export interface LoginParams {
|
|
|
17
17
|
handleSendVerifyCode?: any;
|
|
18
18
|
handleCheckPhoneCode?: any;
|
|
19
19
|
notificationState?: any;
|
|
20
|
+
handleReCaptcha?: any;
|
|
21
|
+
enableReCaptcha?: any;
|
|
20
22
|
}
|
|
21
23
|
export interface ProfileParams {
|
|
22
24
|
navigation?: any;
|
|
@@ -100,6 +102,8 @@ export interface SignupParams {
|
|
|
100
102
|
handleCheckPhoneCode?: any;
|
|
101
103
|
notificationState?: any;
|
|
102
104
|
handleChangePromotions: () => void;
|
|
105
|
+
enableReCaptcha?: boolean;
|
|
106
|
+
handleReCaptcha?: () => void;
|
|
103
107
|
}
|
|
104
108
|
|
|
105
109
|
export interface PhoneInputParams {
|
|
@@ -115,6 +119,8 @@ export interface PhoneInputParams {
|
|
|
115
119
|
noDropIcon?: boolean;
|
|
116
120
|
flagStyle?: any;
|
|
117
121
|
isDisabled?: any;
|
|
122
|
+
isStartValidation?: any;
|
|
123
|
+
changeCountry?: any;
|
|
118
124
|
}
|
|
119
125
|
|
|
120
126
|
export interface LanguageSelectorParams {
|
|
@@ -142,9 +148,9 @@ export interface BusinessesListingParams {
|
|
|
142
148
|
export interface HighestRatedBusinessesParams {
|
|
143
149
|
businessesList: { businesses: Array<any>, loading: boolean, error: null | string };
|
|
144
150
|
onBusinessClick?: void;
|
|
145
|
-
navigation
|
|
151
|
+
navigation?: any;
|
|
146
152
|
isLoading?: boolean;
|
|
147
|
-
getBusinesses: (newFetch
|
|
153
|
+
getBusinesses: (newFetch: boolean) => void
|
|
148
154
|
}
|
|
149
155
|
export interface BusinessTypeFilterParams {
|
|
150
156
|
businessTypes?: Array<any>;
|
|
@@ -165,7 +171,15 @@ export interface BusinessControllerParams {
|
|
|
165
171
|
businessWillCloseSoonMinutes?: number
|
|
166
172
|
isBusinessClose?: number,
|
|
167
173
|
navigation?: any,
|
|
168
|
-
style?: ViewStyle
|
|
174
|
+
style?: ViewStyle,
|
|
175
|
+
businessHeader?: string,
|
|
176
|
+
businessFeatured?: boolean,
|
|
177
|
+
businessLogo?: string,
|
|
178
|
+
businessReviews?: any,
|
|
179
|
+
businessDeliveryPrice?: number,
|
|
180
|
+
businessDeliveryTime?: string,
|
|
181
|
+
businessPickupTime?: string,
|
|
182
|
+
businessDistance?: number
|
|
169
183
|
}
|
|
170
184
|
export interface BusinessProductsListingParams {
|
|
171
185
|
navigation?: any;
|
|
@@ -181,7 +195,7 @@ export interface BusinessProductsListingParams {
|
|
|
181
195
|
header?: any;
|
|
182
196
|
logo?: any;
|
|
183
197
|
productModal?: any;
|
|
184
|
-
|
|
198
|
+
getNextProducts?: () => {};
|
|
185
199
|
handleChangeCategory: (value: any) => {};
|
|
186
200
|
setProductLogin?: () => {};
|
|
187
201
|
updateProductModal?: (value: any) => {};
|
|
@@ -208,8 +222,8 @@ export interface BusinessProductsCategoriesParams {
|
|
|
208
222
|
categoriesLayout?: any;
|
|
209
223
|
selectedCategoryId?: any;
|
|
210
224
|
lazyLoadProductsRecommended?: any;
|
|
211
|
-
|
|
212
|
-
|
|
225
|
+
setSelectedCategoryId?: any
|
|
226
|
+
setCategoryClicked?: any
|
|
213
227
|
}
|
|
214
228
|
export interface BusinessProductsListParams {
|
|
215
229
|
errors?: any;
|
|
@@ -227,7 +241,11 @@ export interface BusinessProductsListParams {
|
|
|
227
241
|
handleCancelSearch?: () => void,
|
|
228
242
|
categoriesLayout?: any,
|
|
229
243
|
setCategoriesLayout?: any,
|
|
230
|
-
currentCart?: any
|
|
244
|
+
currentCart?: any,
|
|
245
|
+
setSubcategoriesSelected?: any,
|
|
246
|
+
subcategoriesSelected?: any,
|
|
247
|
+
onClickCategory?: any,
|
|
248
|
+
lazyLoadProductsRecommended?: boolean
|
|
231
249
|
}
|
|
232
250
|
export interface SingleProductCardParams {
|
|
233
251
|
businessId: any,
|
|
@@ -320,7 +338,10 @@ export interface OrderDetailsParams {
|
|
|
320
338
|
isFromCheckout?: boolean,
|
|
321
339
|
driverLocation?: any,
|
|
322
340
|
isFromRoot?: any,
|
|
323
|
-
goToBusinessList?: boolean
|
|
341
|
+
goToBusinessList?: boolean,
|
|
342
|
+
onNavigationRedirect?: any,
|
|
343
|
+
reorderState?: any,
|
|
344
|
+
handleReorder?: any,
|
|
324
345
|
}
|
|
325
346
|
export interface ProductItemAccordionParams {
|
|
326
347
|
key?: any;
|
|
@@ -354,7 +375,7 @@ export interface ReviewProductParams {
|
|
|
354
375
|
formState?: any,
|
|
355
376
|
handleChangeFormState?: any,
|
|
356
377
|
handleSendProductReview?: any
|
|
357
|
-
|
|
378
|
+
}
|
|
358
379
|
export interface SingleProductReviewParams {
|
|
359
380
|
product: any,
|
|
360
381
|
formState?: any,
|
|
@@ -382,7 +403,7 @@ export interface MessagesParams {
|
|
|
382
403
|
handleSend?: () => {},
|
|
383
404
|
setImage?: (image: string | null) => {},
|
|
384
405
|
setMessage?: (comment: string) => {},
|
|
385
|
-
setMessages?: () => {},
|
|
406
|
+
setMessages?: (image: any | null) => {},
|
|
386
407
|
readMessages?: () => {},
|
|
387
408
|
onClose?: () => void,
|
|
388
409
|
isMeesageListing?: boolean,
|
|
@@ -521,27 +542,45 @@ export interface HelpGuideParams {
|
|
|
521
542
|
export interface HelpAccountAndPaymentParams {
|
|
522
543
|
navigation: any;
|
|
523
544
|
}
|
|
524
|
-
|
|
545
|
+
|
|
525
546
|
export interface MessageListingParams {
|
|
526
547
|
navigation: any;
|
|
527
548
|
franchiseId?: any;
|
|
528
549
|
}
|
|
529
550
|
|
|
530
|
-
export interface BusinessSearchParams {
|
|
551
|
+
export interface BusinessSearchParams {
|
|
531
552
|
navigation: any,
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
553
|
+
businessesSearchList: any,
|
|
554
|
+
onBusinessClick: any,
|
|
555
|
+
handleChangeTermValue: (term: string) => void,
|
|
556
|
+
termValue: string,
|
|
557
|
+
paginationProps: any,
|
|
558
|
+
handleSearchbusinessAndProducts: (newFetch?: boolean) => void,
|
|
559
|
+
handleChangeFilters: (prop: string, value: any) => void,
|
|
560
|
+
filters: any,
|
|
561
|
+
businessTypes: Array<number>,
|
|
562
|
+
setFilters: (filters: any) => void,
|
|
542
563
|
lazySearch?: boolean
|
|
543
564
|
}
|
|
544
|
-
|
|
565
|
+
|
|
545
566
|
export interface NoNetworkParams {
|
|
546
567
|
image?: any,
|
|
547
568
|
}
|
|
569
|
+
|
|
570
|
+
export interface PlaceSpotParams {
|
|
571
|
+
isOpenPlaceSpot?: boolean,
|
|
572
|
+
cart?: any,
|
|
573
|
+
placesState?: any,
|
|
574
|
+
handleChangePlace?: any,
|
|
575
|
+
getPlacesList?: any,
|
|
576
|
+
setOpenPlaceModal?: any
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
export interface PromotionParams {
|
|
580
|
+
navigation: any,
|
|
581
|
+
offersState: any,
|
|
582
|
+
handleSearchValue: any,
|
|
583
|
+
searchValue: string,
|
|
584
|
+
offerSelected: any,
|
|
585
|
+
setOfferSelected: any,
|
|
586
|
+
}
|
|
@@ -140,7 +140,7 @@ const AddressListUI = (props: AddressListParams) => {
|
|
|
140
140
|
<AddressListContainer>
|
|
141
141
|
{isProfile && (
|
|
142
142
|
<NavBar
|
|
143
|
-
title={t('
|
|
143
|
+
title={t('SAVED_PLACES', 'My saved places')}
|
|
144
144
|
titleAlign={'center'}
|
|
145
145
|
onActionLeft={() => goToBack()}
|
|
146
146
|
showCall={false}
|
|
@@ -97,27 +97,27 @@ export const OrderTypeSelector = (props: any) => {
|
|
|
97
97
|
{
|
|
98
98
|
value: 1,
|
|
99
99
|
content: t('DELIVERY', 'Delivery'),
|
|
100
|
-
description: t('ORDERTYPE_DESCRIPTION_DELIVERY', '
|
|
100
|
+
description: t('ORDERTYPE_DESCRIPTION_DELIVERY', 'Delivery description')
|
|
101
101
|
},
|
|
102
102
|
{
|
|
103
103
|
value: 2,
|
|
104
104
|
content: t('PICKUP', 'Pickup'),
|
|
105
|
-
description: t('ORDERTYPE_DESCRIPTION_PICKUP', '
|
|
105
|
+
description: t('ORDERTYPE_DESCRIPTION_PICKUP', 'Pickup description')
|
|
106
106
|
},
|
|
107
107
|
{
|
|
108
108
|
value: 3,
|
|
109
109
|
content: t('EAT_IN', 'Eat in'),
|
|
110
|
-
description: t('ORDERTYPE_DESCRIPTION_EATIN', '
|
|
110
|
+
description: t('ORDERTYPE_DESCRIPTION_EATIN', 'Eat in description')
|
|
111
111
|
},
|
|
112
112
|
{
|
|
113
113
|
value: 4,
|
|
114
114
|
content: t('CURBSIDE', 'Curbside'),
|
|
115
|
-
description: t('ORDERTYPE_DESCRIPTION_CURBSIDE', '
|
|
115
|
+
description: t('ORDERTYPE_DESCRIPTION_CURBSIDE', 'Curbside description')
|
|
116
116
|
},
|
|
117
117
|
{
|
|
118
118
|
value: 5,
|
|
119
119
|
content: t('DRIVE_THRU', 'Drive thru'),
|
|
120
|
-
description: t('ORDERTYPE_DESCRIPTION_DRIVETHRU', '
|
|
120
|
+
description: t('ORDERTYPE_DESCRIPTION_DRIVETHRU', 'Drive Thru description')
|
|
121
121
|
}
|
|
122
122
|
]
|
|
123
123
|
}
|
|
@@ -154,7 +154,7 @@ const ProfileListUI = (props: ProfileParams) => {
|
|
|
154
154
|
<Actions>
|
|
155
155
|
<ListItem onPress={() => onRedirect('AddressList', { isFromProfile: true, isGoBack: true })} activeOpacity={0.7}>
|
|
156
156
|
<OIcon src={theme.images.general.pin} width={16} color={theme.colors.textNormal} style={{ marginEnd: 14 }} />
|
|
157
|
-
<OText size={14} lineHeight={24} weight={'400'} color={theme.colors.textNormal}>{t('
|
|
157
|
+
<OText size={14} lineHeight={24} weight={'400'} color={theme.colors.textNormal}>{t('SAVED_PLACES', 'My saved places')}</OText>
|
|
158
158
|
</ListItem>
|
|
159
159
|
<ListItem onPress={() => navigation.navigate('Help', {})} activeOpacity={0.7}>
|
|
160
160
|
<OIcon src={theme.images.general.help} width={16} color={theme.colors.textNormal} style={{ marginEnd: 14 }} />
|
|
@@ -144,7 +144,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
144
144
|
{isFarAway && (
|
|
145
145
|
<FarAwayMessage style={styles.farAwayMsg}>
|
|
146
146
|
<Ionicons name='md-warning-outline' style={styles.iconStyle} />
|
|
147
|
-
<OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', '
|
|
147
|
+
<OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'Your are far from this address')}</OText>
|
|
148
148
|
</FarAwayMessage>
|
|
149
149
|
)}
|
|
150
150
|
<View style={styles.wrapperOrderOptions}>
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import React, { useState, useEffect } from 'react'
|
|
2
|
-
import { useLanguage } from 'ordering-components/native'
|
|
3
|
-
import { useGooglePay, ApplePayButton, useApplePay } from '@stripe/stripe-react-native'
|
|
4
|
-
import { OButton } from '../shared';
|
|
5
|
-
import { Platform, View } from 'react-native';
|
|
6
|
-
import { StripeMethodFormParams } from '../../types';
|
|
7
|
-
import Spinner from 'react-native-loading-spinner-overlay';
|
|
8
|
-
import { android_app_id } from '../../config.json'
|
|
9
|
-
export const StripeMethodForm = (props: StripeMethodFormParams) => {
|
|
10
|
-
const {
|
|
11
|
-
cart,
|
|
12
|
-
handleSource,
|
|
13
|
-
onCancel,
|
|
14
|
-
setErrors,
|
|
15
|
-
paymethod,
|
|
16
|
-
devMode
|
|
17
|
-
} = props
|
|
18
|
-
const { initGooglePay, createGooglePayPaymentMethod, loading } = useGooglePay();
|
|
19
|
-
const { presentApplePay, isApplePaySupported } = useApplePay();
|
|
20
|
-
const [initialized, setInitialized] = useState(false);
|
|
21
|
-
const [loadingGooglePayment, setLoadingGooglePayment] = useState(false)
|
|
22
|
-
const [, t] = useLanguage()
|
|
23
|
-
|
|
24
|
-
useEffect(() => {
|
|
25
|
-
if (paymethod !== 'google_pay' || !initGooglePay) return
|
|
26
|
-
if (Platform.OS === 'ios') {
|
|
27
|
-
setErrors(t('GOOGLE_PAY_NOT_SUPPORTED', 'Google pay not supported'))
|
|
28
|
-
return
|
|
29
|
-
}
|
|
30
|
-
const initialize = async () => {
|
|
31
|
-
try {
|
|
32
|
-
const { error } = await initGooglePay({
|
|
33
|
-
testEnv: devMode,
|
|
34
|
-
merchantName: android_app_id,
|
|
35
|
-
countryCode: 'US',
|
|
36
|
-
billingAddressConfig: {
|
|
37
|
-
format: 'FULL',
|
|
38
|
-
isPhoneNumberRequired: true,
|
|
39
|
-
isRequired: false,
|
|
40
|
-
},
|
|
41
|
-
existingPaymentMethodRequired: false,
|
|
42
|
-
isEmailRequired: true,
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
if (error) {
|
|
46
|
-
setErrors(error.code + ' - ' + error.message);
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
setInitialized(true);
|
|
50
|
-
} catch (err: any) {
|
|
51
|
-
setErrors('Catch ' + err?.message)
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
initialize();
|
|
55
|
-
}, [initGooglePay]);
|
|
56
|
-
|
|
57
|
-
useEffect(() => {
|
|
58
|
-
if (paymethod !== 'apple_pay') return
|
|
59
|
-
if (Platform.OS === 'android') {
|
|
60
|
-
setErrors(t('APPLE_PAY_NOT_SUPPORTED', 'Apple pay not supported'))
|
|
61
|
-
return
|
|
62
|
-
}
|
|
63
|
-
}, [])
|
|
64
|
-
|
|
65
|
-
const createPaymentMethod = async () => {
|
|
66
|
-
setLoadingGooglePayment(true)
|
|
67
|
-
const { error, paymentMethod } = await createGooglePayPaymentMethod({
|
|
68
|
-
amount: cart?.balance ?? cart?.total,
|
|
69
|
-
currencyCode: 'USD',
|
|
70
|
-
});
|
|
71
|
-
if (error) {
|
|
72
|
-
setErrors(error.code + ' - ' + error.message);
|
|
73
|
-
setLoadingGooglePayment(false)
|
|
74
|
-
return;
|
|
75
|
-
} else if (paymentMethod) {
|
|
76
|
-
handleSource({
|
|
77
|
-
...paymentMethod?.Card,
|
|
78
|
-
id: paymentMethod.id,
|
|
79
|
-
type: paymentMethod.type,
|
|
80
|
-
source_id: paymentMethod?.id,
|
|
81
|
-
card: {
|
|
82
|
-
brand: paymentMethod.Card.brand,
|
|
83
|
-
last4: paymentMethod.Card.last4
|
|
84
|
-
}
|
|
85
|
-
})
|
|
86
|
-
onCancel()
|
|
87
|
-
setLoadingGooglePayment(false)
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
const pay = async () => {
|
|
92
|
-
if (!isApplePaySupported) {
|
|
93
|
-
setErrors(t('APPLE_PAY_NOT_SUPPORTED', 'Apple pay not supported'))
|
|
94
|
-
return
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
const { error, paymentMethod } = await presentApplePay({
|
|
98
|
-
cartItems: cart?.products?.map((product: any) => ({ label: product?.name, amount: product?.price?.toString?.() })),
|
|
99
|
-
country: 'US',
|
|
100
|
-
currency: 'USD',
|
|
101
|
-
shippingMethods: [
|
|
102
|
-
{
|
|
103
|
-
amount: cart?.balance?.toString() ?? cart?.total?.toString?.(),
|
|
104
|
-
identifier: 'DPS',
|
|
105
|
-
label: 'Courier',
|
|
106
|
-
detail: 'Delivery',
|
|
107
|
-
type: 'final',
|
|
108
|
-
},
|
|
109
|
-
],
|
|
110
|
-
|
|
111
|
-
requiredShippingAddressFields: ['emailAddress', 'phoneNumber'],
|
|
112
|
-
requiredBillingContactFields: ['phoneNumber', 'name'],
|
|
113
|
-
});
|
|
114
|
-
if (error) {
|
|
115
|
-
setErrors(error.code + ' - ' + error.message);
|
|
116
|
-
} else if (paymentMethod) {
|
|
117
|
-
handleSource({
|
|
118
|
-
...paymentMethod?.Card,
|
|
119
|
-
id: paymentMethod.id,
|
|
120
|
-
type: paymentMethod.type,
|
|
121
|
-
source_id: paymentMethod?.id,
|
|
122
|
-
card: {
|
|
123
|
-
brand: paymentMethod.Card.brand,
|
|
124
|
-
last4: paymentMethod.Card.last4
|
|
125
|
-
}
|
|
126
|
-
})
|
|
127
|
-
onCancel()
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
return (
|
|
132
|
-
<>
|
|
133
|
-
{paymethod === 'google_pay' ? (
|
|
134
|
-
<View>
|
|
135
|
-
<OButton
|
|
136
|
-
textStyle={{
|
|
137
|
-
color: '#fff'
|
|
138
|
-
}}
|
|
139
|
-
imgRightSrc={null}
|
|
140
|
-
onClick={createPaymentMethod}
|
|
141
|
-
isDisabled={loading || !initialized}
|
|
142
|
-
text={t('PAY_WITH_GOOGLE_PAY', 'Pay with Google Pay')}
|
|
143
|
-
isLoading={loading || !initialized}
|
|
144
|
-
style={{ marginTop: 20 }}
|
|
145
|
-
/>
|
|
146
|
-
</View>
|
|
147
|
-
) : (
|
|
148
|
-
<View>
|
|
149
|
-
{isApplePaySupported && (
|
|
150
|
-
<ApplePayButton
|
|
151
|
-
onPress={pay}
|
|
152
|
-
type="plain"
|
|
153
|
-
buttonStyle="black"
|
|
154
|
-
borderRadius={4}
|
|
155
|
-
style={{
|
|
156
|
-
width: '100%',
|
|
157
|
-
height: 50,
|
|
158
|
-
}}
|
|
159
|
-
/>
|
|
160
|
-
)}
|
|
161
|
-
</View>
|
|
162
|
-
)}
|
|
163
|
-
<Spinner
|
|
164
|
-
visible={loadingGooglePayment}
|
|
165
|
-
/>
|
|
166
|
-
</>
|
|
167
|
-
)
|
|
168
|
-
}
|