ordering-ui-react-native 0.17.73 → 0.17.74-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 +8 -7
- package/src/DeliveryApp.tsx +43 -1
- package/src/components/BusinessInformation/index.tsx +10 -9
- package/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/OrderCreating/index.tsx +1 -21
- package/src/components/PaymentOptionsWebView/index.tsx +29 -8
- package/src/components/PhoneInputNumber/index.tsx +6 -2
- package/src/components/StripeMethodForm/index.tsx +136 -102
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/components/shared/OToast.tsx +3 -2
- package/src/types/index.tsx +5 -0
- package/src/utils/index.tsx +5 -0
- package/themes/business/index.tsx +2 -0
- package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +28 -25
- package/themes/business/src/components/BusinessController/index.tsx +0 -1
- package/themes/business/src/components/Chat/index.tsx +149 -118
- package/themes/business/src/components/DriverMap/index.tsx +17 -6
- package/themes/business/src/components/DriverSchedule/index.tsx +45 -8
- package/themes/business/src/components/GoogleMap/index.tsx +58 -57
- package/themes/business/src/components/LoginForm/Otp/index.tsx +31 -3
- package/themes/business/src/components/LoginForm/index.tsx +15 -22
- package/themes/business/src/components/MapView/index.tsx +10 -10
- package/themes/business/src/components/MessagesOption/index.tsx +20 -93
- package/themes/business/src/components/NewOrderNotification/index.tsx +37 -21
- package/themes/business/src/components/NotFoundSource/index.tsx +2 -2
- package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
- package/themes/business/src/components/OrderDetails/Delivery.tsx +191 -6
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +103 -39
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +61 -60
- package/themes/business/src/components/OrderDetailsLogistic/index.tsx +195 -0
- package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
- package/themes/business/src/components/OrderMessage/index.tsx +19 -18
- package/themes/business/src/components/OrderSummary/index.tsx +114 -123
- package/themes/business/src/components/OrdersOption/index.tsx +17 -15
- package/themes/business/src/components/PreviousMessages/FooterMessageComponent.tsx +103 -0
- package/themes/business/src/components/PreviousMessages/index.tsx +97 -55
- package/themes/business/src/components/PreviousOrders/OrderItem.tsx +17 -12
- package/themes/business/src/components/PreviousOrders/OrderList.tsx +88 -0
- package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +1 -1
- package/themes/business/src/components/PreviousOrders/index.tsx +139 -174
- package/themes/business/src/components/ProductItemAccordion/index.tsx +27 -3
- package/themes/business/src/components/ReviewCustomer/index.tsx +18 -13
- package/themes/business/src/components/StoresList/index.tsx +3 -4
- package/themes/business/src/components/UserProfileForm/index.tsx +14 -15
- package/themes/business/src/components/shared/OLink.tsx +11 -3
- package/themes/business/src/components/shared/OModal.tsx +16 -9
- package/themes/business/src/components/shared/OText.tsx +6 -1
- package/themes/business/src/types/index.tsx +25 -10
- package/themes/business/src/utils/index.tsx +29 -2
- 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/Checkout/index.tsx +6 -0
- package/themes/kiosk/src/components/Intro/index.tsx +16 -1
- package/themes/kiosk/src/components/LoginForm/index.tsx +7 -9
- 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/OrderTypeCardSelector/index.tsx +8 -10
- package/themes/kiosk/src/components/PhoneInputNumber/index.tsx +2 -2
- package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
- package/themes/original/index.tsx +1 -1
- package/themes/original/src/components/AddressDetails/index.tsx +19 -3
- package/themes/original/src/components/AddressForm/index.tsx +61 -39
- package/themes/original/src/components/AddressList/index.tsx +25 -24
- package/themes/original/src/components/AddressList/styles.tsx +4 -2
- package/themes/original/src/components/AnalyticsSegment/index.tsx +193 -10
- package/themes/original/src/components/AppleLogin/index.tsx +4 -4
- package/themes/original/src/components/AppleLogin/styles.tsx +3 -1
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +153 -96
- package/themes/original/src/components/BusinessBasicInformation/styles.tsx +10 -12
- package/themes/original/src/components/BusinessController/index.tsx +80 -66
- package/themes/original/src/components/BusinessController/styles.tsx +12 -5
- package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
- package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
- package/themes/original/src/components/BusinessInformation/index.tsx +139 -85
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +15 -20
- package/themes/original/src/components/BusinessListingSearch/index.tsx +349 -339
- package/themes/original/src/components/BusinessListingSearch/styles.tsx +0 -18
- package/themes/original/src/components/BusinessPreorder/index.tsx +103 -19
- package/themes/original/src/components/BusinessProductsCategories/index.tsx +1 -2
- package/themes/original/src/components/BusinessProductsList/index.tsx +15 -7
- package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
- package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +1 -1
- package/themes/original/src/components/BusinessProductsListing/index.tsx +684 -557
- package/themes/original/src/components/BusinessProductsListing/styles.tsx +2 -2
- package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
- package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +69 -38
- package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +0 -1
- package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
- package/themes/original/src/components/Cart/index.tsx +76 -79
- package/themes/original/src/components/CartContent/index.tsx +117 -20
- package/themes/original/src/components/CartContent/styles.tsx +17 -7
- package/themes/original/src/components/Checkout/index.tsx +274 -54
- package/themes/original/src/components/CitiesControl/index.tsx +1 -1
- package/themes/original/src/components/CouponControl/index.tsx +10 -3
- package/themes/original/src/components/DriverTips/index.tsx +52 -34
- package/themes/original/src/components/FacebookLogin/styles.tsx +3 -1
- package/themes/original/src/components/Favorite/index.tsx +2 -6
- package/themes/original/src/components/FavoriteList/index.tsx +1 -35
- package/themes/original/src/components/FloatingButton/index.tsx +10 -13
- package/themes/original/src/components/GPSButton/index.tsx +6 -4
- package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +7 -3
- package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +2 -0
- package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +19 -6
- package/themes/original/src/components/GoogleLogin/styles.tsx +1 -1
- package/themes/original/src/components/GoogleMap/index.tsx +60 -5
- package/themes/original/src/components/Help/index.tsx +2 -2
- package/themes/original/src/components/HelpAccountAndPayment/index.tsx +10 -31
- package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +5 -3
- package/themes/original/src/components/HelpGuide/index.tsx +6 -6
- package/themes/original/src/components/HelpGuide/styles.tsx +6 -0
- package/themes/original/src/components/HelpOrder/index.tsx +6 -15
- package/themes/original/src/components/HelpOrder/styles.tsx +8 -1
- package/themes/original/src/components/Home/index.tsx +13 -4
- package/themes/original/src/components/LastOrder/index.tsx +1 -34
- package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -25
- package/themes/original/src/components/LoginForm/index.tsx +64 -34
- package/themes/original/src/components/LottieAnimation/index.tsx +88 -63
- package/themes/original/src/components/MessageListing/index.tsx +16 -42
- package/themes/original/src/components/Messages/index.tsx +14 -7
- package/themes/original/src/components/MomentOption/index.tsx +193 -90
- package/themes/original/src/components/MomentSelector/index.tsx +1 -1
- package/themes/original/src/components/MultiCart/index.tsx +41 -54
- package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +162 -50
- package/themes/original/src/components/MultiCheckout/index.tsx +329 -100
- package/themes/original/src/components/MultiCheckout/styles.tsx +3 -1
- package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +37 -224
- package/themes/original/src/components/MultiOrdersDetails/index.tsx +54 -21
- package/themes/original/src/components/MultiOrdersDetails/styles.tsx +1 -1
- package/themes/original/src/components/MyOrders/index.tsx +40 -29
- package/themes/original/src/components/NavBar/index.tsx +20 -17
- package/themes/original/src/components/NotFoundSource/index.tsx +14 -10
- package/themes/original/src/components/Notifications/index.tsx +42 -52
- package/themes/original/src/components/Notifications/styles.tsx +6 -3
- package/themes/original/src/components/OrderDetails/OrderEta.tsx +76 -0
- package/themes/original/src/components/OrderDetails/OrderHistory.tsx +21 -5
- package/themes/original/src/components/OrderDetails/index.tsx +28 -233
- package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
- package/themes/original/src/components/OrderItAgain/index.tsx +3 -1
- package/themes/original/src/components/OrderProgress/index.tsx +30 -56
- package/themes/original/src/components/OrderSummary/index.tsx +83 -57
- package/themes/original/src/components/OrderTypeSelector/index.tsx +2 -1
- package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +14 -14
- package/themes/original/src/components/OrdersOption/index.tsx +67 -85
- package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
- package/themes/original/src/components/PageBanner/index.tsx +98 -38
- package/themes/original/src/components/PageBanner/styles.tsx +0 -10
- package/themes/original/src/components/PaymentOptionCard/index.tsx +180 -0
- package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
- package/themes/original/src/components/PaymentOptions/index.tsx +77 -34
- package/themes/original/src/components/PhoneInputNumber/index.tsx +18 -4
- package/themes/original/src/components/ProductForm/index.tsx +104 -29
- package/themes/original/src/components/ProductForm/styles.tsx +5 -5
- package/themes/original/src/components/ProductItemAccordion/index.tsx +8 -6
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +20 -18
- package/themes/original/src/components/ProductOptionSubOption/styles.tsx +5 -9
- package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
- package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -50
- package/themes/original/src/components/ProfessionalProfile/index.tsx +36 -7
- package/themes/original/src/components/Promotions/index.tsx +2 -2
- package/themes/original/src/components/Promotions/styles.tsx +3 -1
- package/themes/original/src/components/ReviewProducts/index.tsx +16 -7
- package/themes/original/src/components/ScheduleAccordion/index.tsx +3 -3
- package/themes/original/src/components/ServiceForm/index.tsx +63 -20
- package/themes/original/src/components/Sessions/index.tsx +11 -8
- package/themes/original/src/components/Sessions/styles.tsx +5 -0
- package/themes/original/src/components/SignupForm/index.tsx +43 -27
- package/themes/original/src/components/SingleOrderCard/index.tsx +102 -63
- package/themes/original/src/components/SingleOrderCard/styles.tsx +1 -1
- package/themes/original/src/components/SingleProductCard/index.tsx +72 -31
- package/themes/original/src/components/SingleProductCard/styles.tsx +20 -4
- package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
- package/themes/original/src/components/StripeCardsList/index.tsx +49 -5
- package/themes/original/src/components/StripeElementsForm/index.tsx +48 -34
- package/themes/original/src/components/StripeElementsForm/naked.tsx +12 -1
- package/themes/original/src/components/UpsellingProducts/index.tsx +238 -224
- package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
- package/themes/original/src/components/UserDetails/index.tsx +3 -1
- package/themes/original/src/components/UserFormDetails/index.tsx +76 -7
- package/themes/original/src/components/UserFormDetails/styles.tsx +1 -1
- package/themes/original/src/components/UserProfile/index.tsx +88 -79
- package/themes/original/src/components/UserProfileForm/index.tsx +17 -21
- package/themes/original/src/components/UserProfileForm/styles.tsx +7 -0
- package/themes/original/src/components/UserVerification/index.tsx +55 -50
- package/themes/original/src/components/WalletTransactionItem/index.tsx +2 -2
- package/themes/original/src/components/WalletTransactions/index.tsx +3 -3
- package/themes/original/src/components/Wallets/index.tsx +56 -33
- package/themes/original/src/components/Wallets/styles.tsx +3 -4
- package/themes/original/src/components/shared/OButton.tsx +6 -2
- package/themes/original/src/components/shared/OInput.tsx +6 -1
- package/themes/original/src/components/shared/OModal.tsx +3 -3
- package/themes/original/src/types/index.tsx +38 -10
- package/themes/original/src/utils/index.tsx +273 -1
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
- package/src/navigators/BottomNavigator.tsx +0 -117
- package/src/navigators/CheckoutNavigator.tsx +0 -66
- package/src/navigators/HomeNavigator.tsx +0 -202
- package/src/navigators/NavigationRef.tsx +0 -7
- package/src/navigators/RootNavigator.tsx +0 -269
- package/src/pages/Account.tsx +0 -34
- package/src/pages/AddressForm.tsx +0 -62
- package/src/pages/AddressList.tsx +0 -24
- package/src/pages/BusinessProductsList.tsx +0 -81
- package/src/pages/BusinessesListing.tsx +0 -43
- package/src/pages/CartList.tsx +0 -49
- package/src/pages/Checkout.tsx +0 -101
- package/src/pages/ForgotPassword.tsx +0 -24
- package/src/pages/Help.tsx +0 -23
- package/src/pages/HelpAccountAndPayment.tsx +0 -23
- package/src/pages/HelpGuide.tsx +0 -23
- package/src/pages/HelpOrder.tsx +0 -23
- package/src/pages/Home.tsx +0 -36
- package/src/pages/IntroductoryTutorial.tsx +0 -170
- package/src/pages/Login.tsx +0 -47
- package/src/pages/MomentOption.tsx +0 -30
- package/src/pages/MultiCheckout.tsx +0 -31
- package/src/pages/MultiOrdersDetails.tsx +0 -27
- package/src/pages/MyOrders.tsx +0 -40
- package/src/pages/NetworkError.tsx +0 -24
- package/src/pages/NotFound.tsx +0 -22
- package/src/pages/OrderDetails.tsx +0 -25
- package/src/pages/ProductDetails.tsx +0 -55
- package/src/pages/Profile.tsx +0 -36
- package/src/pages/ReviewDriver.tsx +0 -30
- package/src/pages/ReviewOrder.tsx +0 -32
- package/src/pages/ReviewProducts.tsx +0 -30
- package/src/pages/Sessions.tsx +0 -22
- package/src/pages/Signup.tsx +0 -53
- package/src/pages/SpinnerLoader.tsx +0 -10
- package/src/pages/Splash.tsx +0 -21
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import React, { useState, useEffect } from 'react';
|
|
2
|
-
import { View, StyleSheet, TouchableOpacity, Platform, I18nManager,
|
|
1
|
+
import React, { useState, useEffect, useCallback } from 'react';
|
|
2
|
+
import { View, StyleSheet, TouchableOpacity, Platform, I18nManager, ScrollView } from 'react-native';
|
|
3
3
|
import { initStripe, useConfirmPayment } from '@stripe/stripe-react-native';
|
|
4
4
|
import Picker from 'react-native-country-picker-modal';
|
|
5
5
|
import MaterialIcons from 'react-native-vector-icons/MaterialIcons'
|
|
6
|
+
import ReactNativeHapticFeedback from "react-native-haptic-feedback";
|
|
6
7
|
import {
|
|
7
8
|
Checkout as CheckoutController,
|
|
8
9
|
useOrder,
|
|
@@ -14,9 +15,10 @@ import {
|
|
|
14
15
|
useConfig,
|
|
15
16
|
useToast,
|
|
16
17
|
ToastType,
|
|
18
|
+
useEvent
|
|
17
19
|
} from 'ordering-components/native';
|
|
18
20
|
import { useTheme } from 'styled-components/native';
|
|
19
|
-
import { OText, OIcon, OModal } from '../shared';
|
|
21
|
+
import { OText, OIcon, OModal, OButton } from '../shared';
|
|
20
22
|
|
|
21
23
|
import { AddressDetails } from '../AddressDetails';
|
|
22
24
|
import { PaymentOptions } from '../PaymentOptions';
|
|
@@ -25,6 +27,8 @@ import { NotFoundSource } from '../NotFoundSource';
|
|
|
25
27
|
import { UserDetails } from '../UserDetails';
|
|
26
28
|
import { PaymentOptionWallet } from '../PaymentOptionWallet';
|
|
27
29
|
import { PlaceSpot } from '../PlaceSpot'
|
|
30
|
+
import { SignupForm } from '../SignupForm'
|
|
31
|
+
import { LoginForm } from '../LoginForm'
|
|
28
32
|
|
|
29
33
|
import {
|
|
30
34
|
ChContainer,
|
|
@@ -52,6 +56,8 @@ import { OrderSummary } from '../OrderSummary';
|
|
|
52
56
|
import { getTypesText } from '../../utils';
|
|
53
57
|
import { CartStoresListing } from '../CartStoresListing';
|
|
54
58
|
import { PaymentOptionsWebView } from '../../../../../src/components/PaymentOptionsWebView';
|
|
59
|
+
import { DeviceOrientationMethods } from '../../../../../src/hooks/DeviceOrientation'
|
|
60
|
+
const { useDeviceOrientation } = DeviceOrientationMethods
|
|
55
61
|
|
|
56
62
|
const mapConfigs = {
|
|
57
63
|
mapZoom: 16,
|
|
@@ -78,6 +84,7 @@ const CheckoutUI = (props: any) => {
|
|
|
78
84
|
placing,
|
|
79
85
|
cartState,
|
|
80
86
|
cartUuid,
|
|
87
|
+
loyaltyPlansState,
|
|
81
88
|
businessDetails,
|
|
82
89
|
paymethodSelected,
|
|
83
90
|
handlePaymethodChange,
|
|
@@ -88,7 +95,8 @@ const CheckoutUI = (props: any) => {
|
|
|
88
95
|
handleChangeDeliveryOption,
|
|
89
96
|
currency,
|
|
90
97
|
merchantId,
|
|
91
|
-
setPlaceSpotNumber
|
|
98
|
+
setPlaceSpotNumber,
|
|
99
|
+
maxDate
|
|
92
100
|
} = props
|
|
93
101
|
|
|
94
102
|
const theme = useTheme();
|
|
@@ -128,12 +136,17 @@ const CheckoutUI = (props: any) => {
|
|
|
128
136
|
|
|
129
137
|
const [, { showToast }] = useToast();
|
|
130
138
|
const [, t] = useLanguage();
|
|
131
|
-
const [{ user, token }] = useSession();
|
|
139
|
+
const [{ user, token }, { login }] = useSession();
|
|
132
140
|
const [ordering] = useApi()
|
|
133
141
|
const [{ configs }] = useConfig();
|
|
134
142
|
const [{ parsePrice, parseDate }] = useUtils();
|
|
135
143
|
const [{ options, carts, loading }, { confirmCart }] = useOrder();
|
|
136
144
|
const [validationFields] = useValidationFields();
|
|
145
|
+
const [events] = useEvent()
|
|
146
|
+
const [orientationState] = useDeviceOrientation();
|
|
147
|
+
const [isReadMore, setIsReadMore] = useState(false)
|
|
148
|
+
const [lengthMore, setLengthMore] = useState(false)
|
|
149
|
+
const WIDTH_SCREEN = orientationState?.dimensions?.width
|
|
137
150
|
|
|
138
151
|
const [errorCash, setErrorCash] = useState(false);
|
|
139
152
|
const [userErrors, setUserErrors] = useState<any>([]);
|
|
@@ -145,7 +158,12 @@ const CheckoutUI = (props: any) => {
|
|
|
145
158
|
const [webviewPaymethod, setWebviewPaymethod] = useState<any>(null)
|
|
146
159
|
const [isOpen, setIsOpen] = useState(false)
|
|
147
160
|
const [requiredFields, setRequiredFields] = useState<any>([])
|
|
148
|
-
|
|
161
|
+
const [openModal, setOpenModal] = useState({ login: false, signup: false })
|
|
162
|
+
const [allowedGuest, setAllowedGuest] = useState(false)
|
|
163
|
+
const [placeByMethodPay, setPlaceByMethodPay] = useState(false)
|
|
164
|
+
const [methodPaySupported, setMethodPaySupported] = useState({ enabled: false, message: null, loading: true })
|
|
165
|
+
const [cardList, setCardList] = useState<any>({ cards: [], loading: false, error: null })
|
|
166
|
+
const cardsMethods = ['credomatic']
|
|
149
167
|
const placeSpotTypes = [3, 4, 5]
|
|
150
168
|
const placeSpotsEnabled = placeSpotTypes.includes(options?.type)
|
|
151
169
|
const isGiftCardCart = !cart?.business_id
|
|
@@ -154,7 +172,15 @@ const CheckoutUI = (props: any) => {
|
|
|
154
172
|
const isWalletCreditPointsEnabled = businessConfigs.find((config: any) => config.key === 'wallet_credit_point_enabled')?.value === '1'
|
|
155
173
|
const isWalletEnabled = configs?.cash_wallet?.value && configs?.wallet_enabled?.value === '1' && (isWalletCashEnabled || isWalletCreditPointsEnabled)
|
|
156
174
|
const isBusinessChangeEnabled = configs?.cart_change_business_validation?.value === '1'
|
|
157
|
-
const isChewLayout = theme?.
|
|
175
|
+
const isChewLayout = theme?.header?.components?.layout?.type?.toLowerCase() === 'chew'
|
|
176
|
+
const hideBusinessAddress = theme?.checkout?.components?.business?.components?.address?.hidden
|
|
177
|
+
const hideBusinessDetails = theme?.checkout?.components?.business?.hidden
|
|
178
|
+
const hideBusinessMap = theme?.checkout?.components?.business?.components?.map?.hidden
|
|
179
|
+
const hideCustomerDetails = theme?.checkout?.components?.customer?.hidden
|
|
180
|
+
|
|
181
|
+
const creditPointPlan = loyaltyPlansState?.result?.find((loyal: any) => loyal.type === 'credit_point')
|
|
182
|
+
const creditPointPlanOnBusiness = creditPointPlan?.businesses?.find((b: any) => b.business_id === cart?.business_id && b.accumulates)
|
|
183
|
+
const methodsPay = ['google_pay', 'apple_pay']
|
|
158
184
|
|
|
159
185
|
const isPreOrder = configs?.preorder_status_enabled?.value === '1'
|
|
160
186
|
const subtotalWithTaxes = cart?.taxes?.reduce((acc: any, item: any) => {
|
|
@@ -162,12 +188,18 @@ const CheckoutUI = (props: any) => {
|
|
|
162
188
|
return acc = acc + item?.summary?.tax
|
|
163
189
|
return acc = acc
|
|
164
190
|
}, cart?.subtotal)
|
|
191
|
+
|
|
192
|
+
const validateCommentsCartField = validationFields?.fields?.checkout?.comments?.enabled && validationFields?.fields?.checkout?.comments?.required && (cart?.comment === null || cart?.comment?.trim().length === 0)
|
|
193
|
+
|
|
165
194
|
const isDisabledButtonPlace = loading || !cart?.valid || (!paymethodSelected && cart?.balance > 0) ||
|
|
166
195
|
placing || errorCash || subtotalWithTaxes < cart?.minimum ||
|
|
196
|
+
(cardsMethods.includes(paymethodSelected?.gateway) && cardList?.cards?.length === 0) ||
|
|
167
197
|
(options.type === 1 &&
|
|
168
198
|
validationFields?.fields?.checkout?.driver_tip?.enabled &&
|
|
169
199
|
validationFields?.fields?.checkout?.driver_tip?.required &&
|
|
170
|
-
(Number(cart?.driver_tip) <= 0))
|
|
200
|
+
(Number(cart?.driver_tip) <= 0)) ||
|
|
201
|
+
(validateCommentsCartField)
|
|
202
|
+
|| (methodsPay.includes(paymethodSelected?.gateway) && (!methodPaySupported.enabled || methodPaySupported.loading))
|
|
171
203
|
|
|
172
204
|
const driverTipsOptions = typeof configs?.driver_tip_options?.value === 'string'
|
|
173
205
|
? JSON.parse(configs?.driver_tip_options?.value) || []
|
|
@@ -177,6 +209,9 @@ const CheckoutUI = (props: any) => {
|
|
|
177
209
|
|
|
178
210
|
const cartsWithProducts = carts && Object.values(carts).filter((cart: any) => cart.products.length) || null
|
|
179
211
|
|
|
212
|
+
const isSandboxCredomatic = configs?.credomatic_integration_sandbox?.value === '1'
|
|
213
|
+
const credomaticKeyId = isSandboxCredomatic ? configs?.credomatic_integration_public_sandbox_key?.value : configs?.credomatic_integration_public_production_key?.value
|
|
214
|
+
const credomaticUrl = `https://integrations.ordering.co/credomatic/front/auth_mobile.html?title=${t('CREDOMATIC_PAYMENT', 'Credomatic payment')}&body=${t('CREDOMATIC_PROCESSING', 'Processing transaction')}`
|
|
180
215
|
const deliveryOptions = instructionsOptions?.result && instructionsOptions?.result?.filter((option: any) => option?.enabled)?.map((option: any) => {
|
|
181
216
|
return {
|
|
182
217
|
value: option?.id, key: option?.id, label: t(option?.name.toUpperCase().replace(/\s/g, '_'), option?.name)
|
|
@@ -189,9 +224,30 @@ const CheckoutUI = (props: any) => {
|
|
|
189
224
|
}
|
|
190
225
|
}
|
|
191
226
|
|
|
227
|
+
const vibrateApp = (impact?: string) => {
|
|
228
|
+
const options = {
|
|
229
|
+
enableVibrateFallback: true,
|
|
230
|
+
ignoreAndroidSystemSettings: false
|
|
231
|
+
};
|
|
232
|
+
ReactNativeHapticFeedback.trigger(impact || "impactLight", options);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
const handleSuccessSignup = (user: any) => {
|
|
236
|
+
login({
|
|
237
|
+
user,
|
|
238
|
+
token: user?.session?.access_token
|
|
239
|
+
})
|
|
240
|
+
setOpenModal({ ...openModal, signup: false })
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
const handleSuccessLogin = (user: any) => {
|
|
244
|
+
if (user) setOpenModal({ ...openModal, login: false })
|
|
245
|
+
}
|
|
246
|
+
|
|
192
247
|
const handlePlaceOrder = (confirmPayment: any, forcePlace: boolean = false) => {
|
|
193
|
-
if (!userErrors.length && !requiredFields?.length || forcePlace) {
|
|
194
|
-
|
|
248
|
+
if (!userErrors.length && (!requiredFields?.length || allowedGuest) || forcePlace) {
|
|
249
|
+
vibrateApp()
|
|
250
|
+
handlerClickPlaceOrder && handlerClickPlaceOrder(null, { isNative: true }, confirmPayment)
|
|
195
251
|
return
|
|
196
252
|
}
|
|
197
253
|
if (requiredFields?.length) {
|
|
@@ -206,6 +262,11 @@ const CheckoutUI = (props: any) => {
|
|
|
206
262
|
setIsUserDetailsEdit(true)
|
|
207
263
|
}
|
|
208
264
|
|
|
265
|
+
const handlePlaceOrderAsGuest = () => {
|
|
266
|
+
setIsOpen(false)
|
|
267
|
+
handlerClickPlaceOrder && handlerClickPlaceOrder()
|
|
268
|
+
}
|
|
269
|
+
|
|
209
270
|
const handlePaymentMethodClick = (paymethod: any) => {
|
|
210
271
|
setShowGateway({ closedByUser: false, open: true })
|
|
211
272
|
setWebviewPaymethod(paymethod)
|
|
@@ -224,7 +285,7 @@ const CheckoutUI = (props: any) => {
|
|
|
224
285
|
const checkValidationFields = () => {
|
|
225
286
|
setUserErrors([])
|
|
226
287
|
const errors = []
|
|
227
|
-
const notFields = ['coupon', 'driver_tip', 'mobile_phone', 'address', 'zipcode', 'address_notes']
|
|
288
|
+
const notFields = ['coupon', 'driver_tip', 'mobile_phone', 'address', 'zipcode', 'address_notes', 'comments']
|
|
228
289
|
const _requiredFields: any = []
|
|
229
290
|
|
|
230
291
|
Object.values(validationFields?.fields?.checkout).map((field: any) => {
|
|
@@ -272,7 +333,7 @@ const CheckoutUI = (props: any) => {
|
|
|
272
333
|
useEffect(() => {
|
|
273
334
|
if (cart?.products?.length === 0) {
|
|
274
335
|
if (cart?.business?.slug) {
|
|
275
|
-
onNavigationRedirect('Business', { store: cart?.business?.slug, header: null, logo: null })
|
|
336
|
+
onNavigationRedirect('Business', { store: cart?.business?.slug, header: null, logo: null, fromMulti: props.fromMulti })
|
|
276
337
|
} else {
|
|
277
338
|
onNavigationRedirect('Wallets')
|
|
278
339
|
}
|
|
@@ -298,6 +359,24 @@ const CheckoutUI = (props: any) => {
|
|
|
298
359
|
)
|
|
299
360
|
}
|
|
300
361
|
|
|
362
|
+
useEffect(() => {
|
|
363
|
+
cart && events.emit('checkout_started', cart)
|
|
364
|
+
}, [])
|
|
365
|
+
|
|
366
|
+
useEffect(() => {
|
|
367
|
+
if (cart?.paymethod_data?.gateway === 'credomatic') {
|
|
368
|
+
if (cart?.paymethod_data?.status === 2) {
|
|
369
|
+
setShowGateway({ ...showGateway, open: true })
|
|
370
|
+
} else if (cart?.paymethod_data?.gateway === 'credomatic' && cart?.paymethod_data?.status === 4) {
|
|
371
|
+
setShowGateway({ ...showGateway, open: false })
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}, [cart?.paymethod_data])
|
|
375
|
+
|
|
376
|
+
const onTextLayout = useCallback((e: any) => {
|
|
377
|
+
setLengthMore((e.nativeEvent.lines.length == 3 && e.nativeEvent.lines[2].width > WIDTH_SCREEN * .76) || e.nativeEvent.lines.length > 3)
|
|
378
|
+
}, [])
|
|
379
|
+
|
|
301
380
|
return (
|
|
302
381
|
<>
|
|
303
382
|
<Container noPadding>
|
|
@@ -305,11 +384,12 @@ const CheckoutUI = (props: any) => {
|
|
|
305
384
|
<NavBar
|
|
306
385
|
title={t('CHECKOUT', 'Checkout')}
|
|
307
386
|
titleAlign={'center'}
|
|
308
|
-
onActionLeft={() =>
|
|
387
|
+
onActionLeft={() => onNavigationRedirect('BottomTab', { screen: 'Cart' }, !props.fromMulti)}
|
|
309
388
|
showCall={false}
|
|
310
|
-
btnStyle={{ paddingLeft: 0 }}
|
|
389
|
+
btnStyle={{ paddingLeft: 0, paddingTop: Platform.OS == 'ios' ? 0 : 2 }}
|
|
311
390
|
titleWrapStyle={{ paddingHorizontal: 0 }}
|
|
312
391
|
titleStyle={{ marginRight: 0, marginLeft: 0 }}
|
|
392
|
+
style={{ marginTop: 20 }}
|
|
313
393
|
/>
|
|
314
394
|
</View>
|
|
315
395
|
<ChContainer style={styles.pagePadding}>
|
|
@@ -352,7 +432,7 @@ const CheckoutUI = (props: any) => {
|
|
|
352
432
|
<View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginTop: 18, marginHorizontal: -40 }} />
|
|
353
433
|
</ChSection>
|
|
354
434
|
|
|
355
|
-
{!isGiftCardCart && (
|
|
435
|
+
{!isGiftCardCart && !hideBusinessDetails && (
|
|
356
436
|
<ChSection>
|
|
357
437
|
<ChBusinessDetails>
|
|
358
438
|
{
|
|
@@ -383,9 +463,30 @@ const CheckoutUI = (props: any) => {
|
|
|
383
463
|
<OText size={12} lineHeight={18} weight={'400'}>
|
|
384
464
|
{businessDetails?.business?.cellphone}
|
|
385
465
|
</OText>
|
|
386
|
-
|
|
387
|
-
{
|
|
388
|
-
|
|
466
|
+
{!hideBusinessAddress && (
|
|
467
|
+
<OText size={12} lineHeight={18} weight={'400'}>
|
|
468
|
+
{businessDetails?.business?.address}
|
|
469
|
+
</OText>
|
|
470
|
+
)}
|
|
471
|
+
{businessDetails?.business?.address_notes && (
|
|
472
|
+
<>
|
|
473
|
+
<OText
|
|
474
|
+
size={12}
|
|
475
|
+
lineHeight={18}
|
|
476
|
+
numberOfLines={isReadMore ? 20 : 3}
|
|
477
|
+
onTextLayout={onTextLayout}
|
|
478
|
+
>
|
|
479
|
+
{businessDetails?.business?.address_notes}
|
|
480
|
+
</OText>
|
|
481
|
+
{lengthMore && (
|
|
482
|
+
<TouchableOpacity
|
|
483
|
+
onPress={() => setIsReadMore(!isReadMore)}
|
|
484
|
+
>
|
|
485
|
+
<OText size={12} color={theme.colors.primary}>{isReadMore ? t('SHOW_LESS', 'Show less') : t('READ_MORE', 'Read more')}</OText>
|
|
486
|
+
</TouchableOpacity>
|
|
487
|
+
)}
|
|
488
|
+
</>
|
|
489
|
+
)}
|
|
389
490
|
</View>
|
|
390
491
|
</>
|
|
391
492
|
)}
|
|
@@ -401,33 +502,63 @@ const CheckoutUI = (props: any) => {
|
|
|
401
502
|
<View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginHorizontal: -40 }} />
|
|
402
503
|
</ChSection>
|
|
403
504
|
)}
|
|
505
|
+
{!hideCustomerDetails && (
|
|
404
506
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
507
|
+
<ChSection>
|
|
508
|
+
<ChUserDetails>
|
|
509
|
+
{cartState.loading ? (
|
|
510
|
+
<Placeholder Animation={Fade}>
|
|
511
|
+
<PlaceholderLine height={20} />
|
|
512
|
+
<PlaceholderLine height={12} />
|
|
513
|
+
<PlaceholderLine height={12} />
|
|
514
|
+
<PlaceholderLine height={12} style={{ marginBottom: 20 }} />
|
|
515
|
+
</Placeholder>
|
|
516
|
+
) : (
|
|
517
|
+
(user?.guest_id && !allowedGuest) ? (
|
|
518
|
+
<View>
|
|
519
|
+
<HeaderTitle text={t('CUSTOMER_DETAILS', 'Customer details')} />
|
|
520
|
+
<OButton
|
|
521
|
+
text={t('SIGN_UP', 'Sign up')}
|
|
522
|
+
textStyle={{ color: theme.colors.white }}
|
|
523
|
+
style={{ borderRadius: 7.6, marginTop: 20 }}
|
|
524
|
+
onClick={() => setOpenModal({ ...openModal, signup: true })}
|
|
525
|
+
/>
|
|
526
|
+
<OButton
|
|
527
|
+
text={t('LOGIN', 'Login')}
|
|
528
|
+
textStyle={{ color: theme.colors.primary }}
|
|
529
|
+
bgColor={theme.colors.white}
|
|
530
|
+
borderColor={theme.colors.primary}
|
|
531
|
+
style={{ borderRadius: 7.6, marginTop: 20 }}
|
|
532
|
+
onClick={() => setOpenModal({ ...openModal, login: true })}
|
|
533
|
+
/>
|
|
534
|
+
<OButton
|
|
535
|
+
text={t('CONTINUE_AS_GUEST', 'Continue as guest')}
|
|
536
|
+
textStyle={{ color: theme.colors.black }}
|
|
537
|
+
bgColor={theme.colors.white}
|
|
538
|
+
borderColor={theme.colors.black}
|
|
539
|
+
style={{ borderRadius: 7.6, marginTop: 20 }}
|
|
540
|
+
onClick={() => setAllowedGuest(true)}
|
|
541
|
+
/>
|
|
542
|
+
</View>
|
|
543
|
+
) : (
|
|
544
|
+
<UserDetails
|
|
545
|
+
isUserDetailsEdit={isUserDetailsEdit}
|
|
546
|
+
HeaderTitle={<HeaderTitle text={t('CUSTOMER_DETAILS', 'Customer Details')} mb={0} />}
|
|
547
|
+
cartStatus={cart?.status}
|
|
548
|
+
businessId={cart?.business_id}
|
|
549
|
+
useValidationFields
|
|
550
|
+
useDefualtSessionManager
|
|
551
|
+
useSessionUser
|
|
552
|
+
isCheckout
|
|
553
|
+
phoneUpdate={phoneUpdate}
|
|
554
|
+
togglePhoneUpdate={togglePhoneUpdate}
|
|
555
|
+
/>
|
|
556
|
+
)
|
|
557
|
+
)}
|
|
558
|
+
</ChUserDetails>
|
|
559
|
+
<View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginHorizontal: -40 }} />
|
|
560
|
+
</ChSection>
|
|
561
|
+
)}
|
|
431
562
|
|
|
432
563
|
{options?.type === 1 && !isGiftCardCart && (
|
|
433
564
|
<DeliveryOptionsContainer>
|
|
@@ -470,7 +601,7 @@ const CheckoutUI = (props: any) => {
|
|
|
470
601
|
data: deliveryOptions || [],
|
|
471
602
|
renderItem: ({ item }: any) => (
|
|
472
603
|
<TouchableOpacity
|
|
473
|
-
onPress={() => changeDeliveryOption(item.value)}
|
|
604
|
+
onPress={() => !!cart?.uuid && changeDeliveryOption(item.value)}
|
|
474
605
|
disabled={
|
|
475
606
|
deliveryOptionSelected === item.value
|
|
476
607
|
}
|
|
@@ -508,7 +639,7 @@ const CheckoutUI = (props: any) => {
|
|
|
508
639
|
</ChSection>
|
|
509
640
|
)}
|
|
510
641
|
|
|
511
|
-
{!isGiftCardCart && (
|
|
642
|
+
{!isGiftCardCart && !hideBusinessMap && (
|
|
512
643
|
<ChSection>
|
|
513
644
|
<ChAddress>
|
|
514
645
|
{(businessDetails?.loading || cartState.loading) ? (
|
|
@@ -519,7 +650,7 @@ const CheckoutUI = (props: any) => {
|
|
|
519
650
|
) : (
|
|
520
651
|
<AddressDetails
|
|
521
652
|
navigation={navigation}
|
|
522
|
-
location={
|
|
653
|
+
location={options?.address?.location}
|
|
523
654
|
businessLogo={businessDetails?.business?.logo}
|
|
524
655
|
isCartPending={cart?.status === 2}
|
|
525
656
|
uuid={cartUuid}
|
|
@@ -548,13 +679,14 @@ const CheckoutUI = (props: any) => {
|
|
|
548
679
|
<DriverTips
|
|
549
680
|
uuid={cartUuid}
|
|
550
681
|
businessId={cart?.business_id}
|
|
551
|
-
driverTipsOptions={driverTipsOptions}
|
|
552
|
-
isFixedPrice={parseInt(configs?.driver_tip_type?.value, 10) === 1
|
|
682
|
+
driverTipsOptions={!driverTipsOptions.includes(0) ? [0, ...driverTipsOptions] : driverTipsOptions}
|
|
683
|
+
isFixedPrice={parseInt(configs?.driver_tip_type?.value, 10) === 1}
|
|
553
684
|
isDriverTipUseCustom={!!parseInt(configs?.driver_tip_use_custom?.value, 10)}
|
|
554
|
-
driverTip={parseInt(configs?.driver_tip_type?.value, 10) === 1
|
|
685
|
+
driverTip={parseInt(configs?.driver_tip_type?.value, 10) === 1
|
|
555
686
|
? cart?.driver_tip
|
|
556
687
|
: cart?.driver_tip_rate}
|
|
557
688
|
useOrderContext
|
|
689
|
+
cart={cart}
|
|
558
690
|
/>
|
|
559
691
|
</ChDriverTips>
|
|
560
692
|
</ChSection>
|
|
@@ -577,7 +709,7 @@ const CheckoutUI = (props: any) => {
|
|
|
577
709
|
cart={cart}
|
|
578
710
|
isDisabled={cart?.status === 2}
|
|
579
711
|
businessId={!isGiftCardCart ? businessDetails?.business?.id : -1}
|
|
580
|
-
|
|
712
|
+
isLoading={!isGiftCardCart ? businessDetails.loading : false}
|
|
581
713
|
paymethods={businessDetails?.business?.paymethods}
|
|
582
714
|
onPaymentChange={handlePaymethodChange}
|
|
583
715
|
errorCash={errorCash}
|
|
@@ -587,6 +719,12 @@ const CheckoutUI = (props: any) => {
|
|
|
587
719
|
handlePaymentMethodClickCustom={handlePaymentMethodClick}
|
|
588
720
|
handlePlaceOrder={handlePlaceOrder}
|
|
589
721
|
merchantId={merchantId}
|
|
722
|
+
setMethodPaySupported={setMethodPaySupported}
|
|
723
|
+
methodPaySupported={methodPaySupported}
|
|
724
|
+
placeByMethodPay={placeByMethodPay}
|
|
725
|
+
setPlaceByMethodPay={setPlaceByMethodPay}
|
|
726
|
+
cardList={cardList}
|
|
727
|
+
setCardList={setCardList}
|
|
590
728
|
/>
|
|
591
729
|
</ChPaymethods>
|
|
592
730
|
</ChSection>
|
|
@@ -596,6 +734,7 @@ const CheckoutUI = (props: any) => {
|
|
|
596
734
|
<WalletPaymentOptionContainer>
|
|
597
735
|
<PaymentOptionWallet
|
|
598
736
|
cart={cart}
|
|
737
|
+
loyaltyPlansState={loyaltyPlansState}
|
|
599
738
|
businessId={cart?.business_id}
|
|
600
739
|
businessConfigs={businessDetails?.business?.configs}
|
|
601
740
|
/>
|
|
@@ -665,6 +804,12 @@ const CheckoutUI = (props: any) => {
|
|
|
665
804
|
isCartPending={cart?.status === 2}
|
|
666
805
|
onNavigationRedirect={onNavigationRedirect}
|
|
667
806
|
placeSpotTypes={placeSpotTypes}
|
|
807
|
+
businessConfigs={businessConfigs}
|
|
808
|
+
maxDate={maxDate}
|
|
809
|
+
loyaltyRewardRate={
|
|
810
|
+
creditPointPlanOnBusiness?.accumulation_rate ??
|
|
811
|
+
(!!creditPointPlanOnBusiness && creditPointPlan?.accumulation_rate) ?? 0
|
|
812
|
+
}
|
|
668
813
|
/>
|
|
669
814
|
</>
|
|
670
815
|
)}
|
|
@@ -674,7 +819,7 @@ const CheckoutUI = (props: any) => {
|
|
|
674
819
|
|
|
675
820
|
{!cartState.loading && cart && (
|
|
676
821
|
<View>
|
|
677
|
-
<ChErrors style={{ marginBottom: 10 }}>
|
|
822
|
+
<ChErrors style={{ marginBottom: Platform.OS === 'ios' ? 35 : 10 }}>
|
|
678
823
|
{!cart?.valid_address && cart?.status !== 2 && (
|
|
679
824
|
<OText
|
|
680
825
|
color={theme.colors.error}
|
|
@@ -701,6 +846,14 @@ const CheckoutUI = (props: any) => {
|
|
|
701
846
|
{t('WARNING_INVALID_PRODUCTS_CHECKOUT', 'To continue with your checkout, please remove from your cart the products that are not available.')}
|
|
702
847
|
</OText>
|
|
703
848
|
)}
|
|
849
|
+
{cart?.valid_preorder !== undefined && !cart?.valid_preorder && (
|
|
850
|
+
<OText
|
|
851
|
+
color={theme.colors.error}
|
|
852
|
+
size={12}
|
|
853
|
+
>
|
|
854
|
+
{t('INVALID_CART_MOMENT', 'Selected schedule time is invalid, please select a schedule into the business schedule interval.')}
|
|
855
|
+
</OText>
|
|
856
|
+
)}
|
|
704
857
|
{options.type === 1 &&
|
|
705
858
|
validationFields?.fields?.checkout?.driver_tip?.enabled &&
|
|
706
859
|
validationFields?.fields?.checkout?.driver_tip?.required &&
|
|
@@ -712,6 +865,15 @@ const CheckoutUI = (props: any) => {
|
|
|
712
865
|
{t('WARNING_INVALID_DRIVER_TIP', 'Driver Tip is required.')}
|
|
713
866
|
</OText>
|
|
714
867
|
)}
|
|
868
|
+
|
|
869
|
+
{validateCommentsCartField && (
|
|
870
|
+
<OText
|
|
871
|
+
color={theme.colors.error}
|
|
872
|
+
size={12}
|
|
873
|
+
>
|
|
874
|
+
{t('WARNING_INVALID_CART_COMMENTS', 'Cart comments is required.')}
|
|
875
|
+
</OText>
|
|
876
|
+
)}
|
|
715
877
|
</ChErrors>
|
|
716
878
|
</View>
|
|
717
879
|
)}
|
|
@@ -744,18 +906,52 @@ const CheckoutUI = (props: any) => {
|
|
|
744
906
|
togglePhoneUpdate={togglePhoneUpdate}
|
|
745
907
|
requiredFields={requiredFields}
|
|
746
908
|
hideUpdateButton
|
|
909
|
+
handlePlaceOrderAsGuest={handlePlaceOrderAsGuest}
|
|
747
910
|
onClose={() => {
|
|
748
911
|
setIsOpen(false)
|
|
749
912
|
handlePlaceOrder(null, true)
|
|
750
913
|
}}
|
|
914
|
+
setIsOpen={setIsOpen}
|
|
751
915
|
/>
|
|
752
916
|
</View>
|
|
753
917
|
</OModal>
|
|
918
|
+
<OModal
|
|
919
|
+
open={openModal.signup}
|
|
920
|
+
onClose={() => setOpenModal({ ...openModal, signup: false })}
|
|
921
|
+
>
|
|
922
|
+
<ScrollView style={{ paddingHorizontal: 20, width: '100%' }}>
|
|
923
|
+
<SignupForm
|
|
924
|
+
handleSuccessSignup={handleSuccessSignup}
|
|
925
|
+
isGuest
|
|
926
|
+
signupButtonText={t('SIGNUP', 'Signup')}
|
|
927
|
+
useSignupByEmail
|
|
928
|
+
useChekoutFileds
|
|
929
|
+
/>
|
|
930
|
+
</ScrollView>
|
|
931
|
+
</OModal>
|
|
932
|
+
<OModal
|
|
933
|
+
open={openModal.login}
|
|
934
|
+
onClose={() => setOpenModal({ ...openModal, login: false })}
|
|
935
|
+
>
|
|
936
|
+
<ScrollView style={{ paddingHorizontal: 20, width: '100%' }}>
|
|
937
|
+
<LoginForm
|
|
938
|
+
handleSuccessLogin={handleSuccessLogin}
|
|
939
|
+
isGuest
|
|
940
|
+
loginButtonText={t('LOGIN', 'Login')}
|
|
941
|
+
loginButtonBackground={theme.colors.primary}
|
|
942
|
+
/>
|
|
943
|
+
</ScrollView>
|
|
944
|
+
</OModal>
|
|
754
945
|
</ChContainer>
|
|
755
946
|
</Container>
|
|
756
947
|
{!cartState.loading && cart && cart?.status !== 2 && (
|
|
757
948
|
<FloatingButton
|
|
758
|
-
handleClick={
|
|
949
|
+
handleClick={
|
|
950
|
+
isDisabledButtonPlace
|
|
951
|
+
? () => vibrateApp()
|
|
952
|
+
: methodsPay.includes(paymethodSelected?.gateway)
|
|
953
|
+
? () => setPlaceByMethodPay(true)
|
|
954
|
+
: () => handlePlaceOrder(null)}
|
|
759
955
|
isSecondaryBtn={isDisabledButtonPlace}
|
|
760
956
|
disabled={isDisabledButtonPlace}
|
|
761
957
|
btnText={subtotalWithTaxes >= cart?.minimum
|
|
@@ -798,6 +994,29 @@ const CheckoutUI = (props: any) => {
|
|
|
798
994
|
locationId={'L1NGAY5M6KJRX'}
|
|
799
995
|
/>
|
|
800
996
|
)}
|
|
997
|
+
{cart?.paymethod_data?.gateway === 'credomatic' && cart?.paymethod_data?.status === 2 && showGateway.open && (
|
|
998
|
+
<PaymentOptionsWebView
|
|
999
|
+
title={t('CREDOMATIC_PAYMENT', 'Credomatic payment')}
|
|
1000
|
+
onNavigationRedirect={onNavigationRedirect}
|
|
1001
|
+
uri={credomaticUrl}
|
|
1002
|
+
user={user}
|
|
1003
|
+
cart={cart}
|
|
1004
|
+
additionalParams={{
|
|
1005
|
+
type: 'auth',
|
|
1006
|
+
key_id: credomaticKeyId,
|
|
1007
|
+
hash: cart?.paymethod_data?.result?.hash,
|
|
1008
|
+
time: cart?.paymethod_data?.result?.time,
|
|
1009
|
+
amount: cart?.total,
|
|
1010
|
+
orderid: cart?.uuid,
|
|
1011
|
+
ccnumber: cardList?.cards?.[0]?.number,
|
|
1012
|
+
ccexp: cardList?.cards?.[0]?.expiryString,
|
|
1013
|
+
cvv: cardList?.cards?.[0]?.cvc,
|
|
1014
|
+
redirect: credomaticUrl
|
|
1015
|
+
}}
|
|
1016
|
+
webviewPaymethod={webviewPaymethod}
|
|
1017
|
+
setShowGateway={setShowGateway}
|
|
1018
|
+
/>
|
|
1019
|
+
)}
|
|
801
1020
|
</>
|
|
802
1021
|
)
|
|
803
1022
|
}
|
|
@@ -824,7 +1043,8 @@ export const Checkout = (props: any) => {
|
|
|
824
1043
|
const getOrder = async (cartId: any) => {
|
|
825
1044
|
try {
|
|
826
1045
|
let result: any = {}
|
|
827
|
-
const
|
|
1046
|
+
const cartsWithProducts = orderState?.carts && (Object.values(orderState?.carts)?.filter(cart => cart?.products && cart?.products?.length) || null)
|
|
1047
|
+
const cart = cartsWithProducts?.find((cart: any) => cart.uuid === cartId)
|
|
828
1048
|
if (cart) {
|
|
829
1049
|
result = { ...cart }
|
|
830
1050
|
} else {
|
|
@@ -47,7 +47,7 @@ export const CitiesControl = (props: any) => {
|
|
|
47
47
|
return (
|
|
48
48
|
<Container height={height - top - bottom - 60 - (isKeyboardShow ? 250 : 0)}>
|
|
49
49
|
<View>
|
|
50
|
-
{cities?.map((city: any) => (
|
|
50
|
+
{cities?.map((city: any) => city?.enabled && (
|
|
51
51
|
<CityElement
|
|
52
52
|
key={city?.id}
|
|
53
53
|
activeOpacity={1}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useEffect } from 'react';
|
|
2
2
|
import { StyleSheet, Alert, Text } from 'react-native';
|
|
3
|
-
import { CouponControl as CouponController, useLanguage } from 'ordering-components/native';
|
|
3
|
+
import { CouponControl as CouponController, useLanguage, useEvent } from 'ordering-components/native';
|
|
4
4
|
import { useTheme } from 'styled-components/native';
|
|
5
5
|
import {
|
|
6
6
|
CContainer,
|
|
@@ -18,11 +18,13 @@ const CouponControlUI = (props: any) => {
|
|
|
18
18
|
handleRemoveCouponClick,
|
|
19
19
|
onChangeInputCoupon,
|
|
20
20
|
confirm,
|
|
21
|
-
setConfirm
|
|
21
|
+
setConfirm,
|
|
22
|
+
cart
|
|
22
23
|
} = props
|
|
23
24
|
|
|
24
25
|
const [, t] = useLanguage()
|
|
25
26
|
const theme = useTheme();
|
|
27
|
+
const [events] = useEvent()
|
|
26
28
|
|
|
27
29
|
const styles = StyleSheet.create({
|
|
28
30
|
inputsStyle: {
|
|
@@ -45,6 +47,11 @@ const CouponControlUI = (props: any) => {
|
|
|
45
47
|
setConfirm({ ...confirm, open: false, error: false })
|
|
46
48
|
}
|
|
47
49
|
|
|
50
|
+
const onButtonApplyClick = () => {
|
|
51
|
+
events.emit('coupon_entered', { ...cart, coupon: couponInput })
|
|
52
|
+
handleButtonApplyClick()
|
|
53
|
+
}
|
|
54
|
+
|
|
48
55
|
useEffect(() => {
|
|
49
56
|
if (confirm.content) {
|
|
50
57
|
Alert.alert(
|
|
@@ -94,7 +101,7 @@ const CouponControlUI = (props: any) => {
|
|
|
94
101
|
inputStyle={{ fontSize: 12 }}
|
|
95
102
|
/>
|
|
96
103
|
<OButton
|
|
97
|
-
onClick={() =>
|
|
104
|
+
onClick={() => onButtonApplyClick()}
|
|
98
105
|
bgColor={theme.colors.primary}
|
|
99
106
|
borderColor={theme.colors.primary}
|
|
100
107
|
textStyle={{ color: 'white', fontSize: 12 }}
|