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.
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/Home/index.tsx +3 -5
  8. package/src/components/LanguageSelector/index.tsx +66 -97
  9. package/src/components/LanguageSelector/styles.tsx +4 -17
  10. package/src/components/Messages/index.tsx +38 -30
  11. package/src/components/MomentOption/index.tsx +3 -1
  12. package/src/components/OrderDetails/index.tsx +25 -4
  13. package/src/components/PaymentOptions/index.tsx +9 -16
  14. package/src/components/PaymentOptionsWebView/index.tsx +123 -124
  15. package/src/components/ProductForm/index.tsx +1 -1
  16. package/src/components/ProductForm/styles.tsx +1 -0
  17. package/src/components/StripeElementsForm/index.tsx +27 -48
  18. package/src/components/UserProfileForm/index.tsx +35 -1
  19. package/src/components/VerifyPhone/styles.tsx +1 -2
  20. package/src/config.json +0 -2
  21. package/src/pages/Checkout.tsx +1 -1
  22. package/src/types/index.tsx +2 -9
  23. package/src/utils/index.tsx +2 -1
  24. package/themes/business/index.tsx +2 -0
  25. package/themes/business/src/components/Chat/index.tsx +32 -31
  26. package/themes/business/src/components/Home/index.tsx +128 -55
  27. package/themes/business/src/components/Home/styles.tsx +8 -1
  28. package/themes/business/src/components/NewOrderNotification/index.tsx +59 -98
  29. package/themes/business/src/components/OrderDetails/Business.tsx +1 -0
  30. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +27 -0
  31. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +85 -17
  32. package/themes/business/src/components/OrdersListManager/index.tsx +874 -0
  33. package/themes/business/src/components/OrdersListManager/styles.tsx +123 -0
  34. package/themes/business/src/components/OrdersListManager/utils.tsx +216 -0
  35. package/themes/business/src/components/OrdersOption/index.tsx +70 -116
  36. package/themes/business/src/components/OrdersOption/styles.tsx +2 -5
  37. package/themes/business/src/components/PreviousOrders/index.tsx +82 -23
  38. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  39. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  40. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  41. package/themes/kiosk/src/components/BusinessController/index.tsx +27 -6
  42. package/themes/kiosk/src/components/BusinessController/styles.tsx +1 -1
  43. package/themes/kiosk/src/components/BusinessProductsListing/index.tsx +51 -24
  44. package/themes/kiosk/src/components/Cart/index.tsx +1 -1
  45. package/themes/kiosk/src/components/CartBottomSheet/index.tsx +1 -1
  46. package/themes/kiosk/src/components/CartBottomSheet/styles.tsx +1 -1
  47. package/themes/kiosk/src/components/CartContent/index.tsx +13 -3
  48. package/themes/kiosk/src/components/CartItem/index.tsx +20 -8
  49. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +7 -5
  50. package/themes/kiosk/src/components/CustomerName/index.tsx +89 -88
  51. package/themes/kiosk/src/components/Intro/index.tsx +13 -13
  52. package/themes/kiosk/src/components/LanguageSelector/index.tsx +12 -8
  53. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  54. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  55. package/themes/kiosk/src/components/OrderDetails/index.tsx +2 -2
  56. package/themes/kiosk/src/components/OrderSummary/index.tsx +1 -1
  57. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +10 -12
  58. package/themes/kiosk/src/components/ProductForm/index.tsx +174 -126
  59. package/themes/kiosk/src/components/ProductForm/styles.tsx +1 -1
  60. package/themes/kiosk/src/components/ProductOption/index.tsx +1 -0
  61. package/themes/kiosk/src/components/ProductOption/styles.tsx +1 -0
  62. package/themes/kiosk/src/components/UpsellingProducts/index.tsx +48 -34
  63. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  64. package/themes/kiosk/src/components/shared/OCard.tsx +112 -78
  65. package/themes/original/index.tsx +177 -0
  66. package/themes/original/src/components/AddressForm/index.tsx +15 -10
  67. package/themes/original/src/components/AddressList/index.tsx +28 -2
  68. package/themes/original/src/components/AppleLogin/index.tsx +119 -78
  69. package/themes/original/src/components/BusinessBasicInformation/index.tsx +95 -44
  70. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +28 -1
  71. package/themes/original/src/components/BusinessController/index.tsx +32 -21
  72. package/themes/original/src/components/BusinessListingSearch/index.tsx +7 -3
  73. package/themes/original/src/components/BusinessMenuList/index.tsx +11 -4
  74. package/themes/original/src/components/BusinessPreorder/index.tsx +141 -121
  75. package/themes/original/src/components/BusinessProductsCategories/index.tsx +7 -5
  76. package/themes/original/src/components/BusinessProductsList/index.tsx +6 -3
  77. package/themes/original/src/components/BusinessProductsListing/index.tsx +18 -28
  78. package/themes/original/src/components/BusinessReviews/index.tsx +4 -25
  79. package/themes/original/src/components/BusinessesListing/index.tsx +40 -53
  80. package/themes/original/src/components/Cart/index.tsx +40 -9
  81. package/themes/original/src/components/CartContent/index.tsx +2 -2
  82. package/themes/original/src/components/Checkout/index.tsx +47 -31
  83. package/themes/original/src/components/Checkout/styles.tsx +7 -0
  84. package/themes/original/src/components/CouponControl/index.tsx +1 -0
  85. package/themes/original/src/components/DriverTips/index.tsx +1 -1
  86. package/themes/original/src/components/ForgotPasswordForm/index.tsx +8 -12
  87. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +97 -89
  88. package/themes/original/src/components/Home/index.tsx +1 -1
  89. package/themes/original/src/components/LoginForm/index.tsx +156 -70
  90. package/themes/original/src/components/LoginForm/styles.tsx +6 -1
  91. package/themes/original/src/components/Messages/index.tsx +52 -45
  92. package/themes/original/src/components/Messages/styles.tsx +1 -3
  93. package/themes/original/src/components/MomentOption/index.tsx +10 -1
  94. package/themes/original/src/components/MomentOption/styles.tsx +1 -1
  95. package/themes/original/src/components/OrderDetails/index.tsx +104 -126
  96. package/themes/original/src/components/OrderDetails/styles.tsx +3 -1
  97. package/themes/original/src/components/OrderProgress/index.tsx +4 -4
  98. package/themes/original/src/components/OrderProgress/styles.tsx +1 -0
  99. package/themes/original/src/components/OrderSummary/index.tsx +34 -1
  100. package/themes/original/src/components/OrdersOption/index.tsx +15 -46
  101. package/themes/original/src/components/OrdersOption/styles.tsx +0 -6
  102. package/themes/original/src/components/PaymentOptionWallet/index.tsx +6 -2
  103. package/themes/original/src/components/PaymentOptions/index.tsx +24 -25
  104. package/themes/original/src/components/PhoneInputNumber/index.tsx +15 -8
  105. package/themes/original/src/components/PlaceSpot/index.tsx +114 -0
  106. package/themes/original/src/components/PlaceSpot/styles.tsx +11 -0
  107. package/themes/original/src/components/PreviousOrders/index.tsx +19 -13
  108. package/themes/original/src/components/ProductForm/index.tsx +31 -20
  109. package/themes/original/src/components/ProductForm/styles.tsx +2 -2
  110. package/themes/original/src/components/ReviewOrder/index.tsx +10 -9
  111. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  112. package/themes/original/src/components/SignupForm/index.tsx +173 -154
  113. package/themes/original/src/components/StripeElementsForm/index.tsx +55 -72
  114. package/themes/original/src/components/TaxInformation/index.tsx +17 -7
  115. package/themes/original/src/components/UpsellingProducts/index.tsx +6 -6
  116. package/themes/original/src/components/UserDetails/index.tsx +4 -95
  117. package/themes/original/src/components/UserFormDetails/index.tsx +2 -14
  118. package/themes/original/src/components/UserProfile/index.tsx +16 -16
  119. package/themes/original/src/components/UserProfileForm/index.tsx +8 -6
  120. package/themes/original/src/components/VerifyPhone/index.tsx +10 -7
  121. package/themes/original/src/components/VerifyPhone/styles.tsx +2 -1
  122. package/themes/original/src/components/shared/HeaderTitle.tsx +21 -0
  123. package/themes/original/src/components/shared/index.tsx +2 -0
  124. package/themes/original/src/config/constants.tsx +6 -6
  125. package/themes/original/src/types/index.tsx +62 -23
  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
@@ -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? :any;
151
+ navigation?: any;
146
152
  isLoading?: boolean;
147
- getBusinesses: (newFetch : boolean) => void
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
- getNextProducts?: () => {};
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
- setSelectedCategoryId?: any
212
- setCategoryClicked?: any
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
- businessesSearchList: any,
533
- onBusinessClick: any,
534
- handleChangeTermValue: (term: string) => void,
535
- termValue: string,
536
- paginationProps: any,
537
- handleSearchbusinessAndProducts: (newFetch?: boolean) => void,
538
- handleChangeFilters: (prop : string, value : any) => void,
539
- filters: any,
540
- businessTypes: Array<number>,
541
- setFilters: (filters: any) => void,
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('MY_SAVED_PLACES', 'My saved places')}
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', 'Lorem ipsum dolor sit amet, consectetur.')
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', 'Lorem ipsum dolor sit amet, consectetur.')
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', 'Lorem ipsum dolor sit amet, consectetur.')
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', 'Lorem ipsum dolor sit amet, consectetur.')
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', 'Lorem ipsum dolor sit amet, consectetur.')
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('MY_SAVED_PLACES', 'My saved places')}</OText>
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', 'You are far from this address')}</OText>
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
- }