ordering-ui-react-native 0.17.75 → 0.17.76-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 +128 -96
- 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 +102 -40
- 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 +20 -22
- 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 +9 -2
- 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 +11 -6
- 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 +81 -68
- 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 +140 -85
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +15 -20
- package/themes/original/src/components/BusinessListingSearch/index.tsx +348 -340
- 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 -559
- package/themes/original/src/components/BusinessProductsListing/styles.tsx +1 -1
- 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 +112 -19
- package/themes/original/src/components/CartContent/styles.tsx +16 -6
- package/themes/original/src/components/Checkout/index.tsx +281 -55
- 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/HelpGuide/index.tsx +2 -2
- package/themes/original/src/components/HelpGuide/styles.tsx +1 -0
- 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 +37 -24
- package/themes/original/src/components/NavBar/index.tsx +20 -12
- package/themes/original/src/components/NotFoundSource/index.tsx +14 -10
- package/themes/original/src/components/Notifications/styles.tsx +1 -5
- 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 +101 -34
- package/themes/original/src/components/ProductForm/styles.tsx +3 -3
- 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 +78 -9
- package/themes/original/src/components/UserFormDetails/styles.tsx +1 -1
- package/themes/original/src/components/UserProfile/index.tsx +87 -76
- package/themes/original/src/components/UserProfileForm/index.tsx +10 -3
- package/themes/original/src/components/UserProfileForm/styles.tsx +1 -1
- 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 +39 -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,13 @@ 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, isGuest: 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']
|
|
167
|
+
const stripePaymethods: any = ['stripe', 'stripe_direct', 'stripe_connect', 'stripe_redirect']
|
|
149
168
|
const placeSpotTypes = [3, 4, 5]
|
|
150
169
|
const placeSpotsEnabled = placeSpotTypes.includes(options?.type)
|
|
151
170
|
const isGiftCardCart = !cart?.business_id
|
|
@@ -154,7 +173,15 @@ const CheckoutUI = (props: any) => {
|
|
|
154
173
|
const isWalletCreditPointsEnabled = businessConfigs.find((config: any) => config.key === 'wallet_credit_point_enabled')?.value === '1'
|
|
155
174
|
const isWalletEnabled = configs?.cash_wallet?.value && configs?.wallet_enabled?.value === '1' && (isWalletCashEnabled || isWalletCreditPointsEnabled)
|
|
156
175
|
const isBusinessChangeEnabled = configs?.cart_change_business_validation?.value === '1'
|
|
157
|
-
const isChewLayout = theme?.header?.components?.layout?.type === 'chew'
|
|
176
|
+
const isChewLayout = theme?.header?.components?.layout?.type?.toLowerCase() === 'chew'
|
|
177
|
+
const hideBusinessAddress = theme?.checkout?.components?.business?.components?.address?.hidden
|
|
178
|
+
const hideBusinessDetails = theme?.checkout?.components?.business?.hidden
|
|
179
|
+
const hideBusinessMap = theme?.checkout?.components?.business?.components?.map?.hidden
|
|
180
|
+
const hideCustomerDetails = theme?.checkout?.components?.customer?.hidden
|
|
181
|
+
|
|
182
|
+
const creditPointPlan = loyaltyPlansState?.result?.find((loyal: any) => loyal.type === 'credit_point')
|
|
183
|
+
const creditPointPlanOnBusiness = creditPointPlan?.businesses?.find((b: any) => b.business_id === cart?.business_id && b.accumulates)
|
|
184
|
+
const methodsPay = ['google_pay', 'apple_pay']
|
|
158
185
|
|
|
159
186
|
const isPreOrder = configs?.preorder_status_enabled?.value === '1'
|
|
160
187
|
const subtotalWithTaxes = cart?.taxes?.reduce((acc: any, item: any) => {
|
|
@@ -162,12 +189,18 @@ const CheckoutUI = (props: any) => {
|
|
|
162
189
|
return acc = acc + item?.summary?.tax
|
|
163
190
|
return acc = acc
|
|
164
191
|
}, cart?.subtotal)
|
|
192
|
+
|
|
193
|
+
const validateCommentsCartField = validationFields?.fields?.checkout?.comments?.enabled && validationFields?.fields?.checkout?.comments?.required && (cart?.comment === null || cart?.comment?.trim().length === 0)
|
|
194
|
+
|
|
165
195
|
const isDisabledButtonPlace = loading || !cart?.valid || (!paymethodSelected && cart?.balance > 0) ||
|
|
166
196
|
placing || errorCash || subtotalWithTaxes < cart?.minimum ||
|
|
197
|
+
(cardsMethods.includes(paymethodSelected?.gateway) && cardList?.cards?.length === 0) ||
|
|
167
198
|
(options.type === 1 &&
|
|
168
199
|
validationFields?.fields?.checkout?.driver_tip?.enabled &&
|
|
169
200
|
validationFields?.fields?.checkout?.driver_tip?.required &&
|
|
170
|
-
(Number(cart?.driver_tip) <= 0))
|
|
201
|
+
(Number(cart?.driver_tip) <= 0)) ||
|
|
202
|
+
(validateCommentsCartField)
|
|
203
|
+
|| (methodsPay.includes(paymethodSelected?.gateway) && (!methodPaySupported.enabled || methodPaySupported.loading))
|
|
171
204
|
|
|
172
205
|
const driverTipsOptions = typeof configs?.driver_tip_options?.value === 'string'
|
|
173
206
|
? JSON.parse(configs?.driver_tip_options?.value) || []
|
|
@@ -177,6 +210,9 @@ const CheckoutUI = (props: any) => {
|
|
|
177
210
|
|
|
178
211
|
const cartsWithProducts = carts && Object.values(carts).filter((cart: any) => cart.products.length) || null
|
|
179
212
|
|
|
213
|
+
const isSandboxCredomatic = configs?.credomatic_integration_sandbox?.value === '1'
|
|
214
|
+
const credomaticKeyId = isSandboxCredomatic ? configs?.credomatic_integration_public_sandbox_key?.value : configs?.credomatic_integration_public_production_key?.value
|
|
215
|
+
const credomaticUrl = `https://integrations.ordering.co/credomatic/front/auth_mobile.html?title=${t('CREDOMATIC_PAYMENT', 'Credomatic payment')}&body=${t('CREDOMATIC_PROCESSING', 'Processing transaction')}`
|
|
180
216
|
const deliveryOptions = instructionsOptions?.result && instructionsOptions?.result?.filter((option: any) => option?.enabled)?.map((option: any) => {
|
|
181
217
|
return {
|
|
182
218
|
value: option?.id, key: option?.id, label: t(option?.name.toUpperCase().replace(/\s/g, '_'), option?.name)
|
|
@@ -189,10 +225,36 @@ const CheckoutUI = (props: any) => {
|
|
|
189
225
|
}
|
|
190
226
|
}
|
|
191
227
|
|
|
228
|
+
const vibrateApp = (impact?: string) => {
|
|
229
|
+
const options = {
|
|
230
|
+
enableVibrateFallback: true,
|
|
231
|
+
ignoreAndroidSystemSettings: false
|
|
232
|
+
};
|
|
233
|
+
ReactNativeHapticFeedback.trigger(impact || "impactLight", options);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
const handleSuccessSignup = (user: any) => {
|
|
237
|
+
login({
|
|
238
|
+
user,
|
|
239
|
+
token: user?.session?.access_token
|
|
240
|
+
})
|
|
241
|
+
openModal?.isGuest && handlePlaceOrderAsGuest()
|
|
242
|
+
setOpenModal({ ...openModal, signup: false, isGuest: false })
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
const handleSuccessLogin = (user: any) => {
|
|
246
|
+
if (user) setOpenModal({ ...openModal, login: false })
|
|
247
|
+
}
|
|
248
|
+
|
|
192
249
|
const handlePlaceOrder = (confirmPayment: any, forcePlace: boolean = false) => {
|
|
193
|
-
if (
|
|
194
|
-
|
|
195
|
-
|
|
250
|
+
if (stripePaymethods.includes(paymethodSelected?.gateway) && user?.guest_id) {
|
|
251
|
+
setOpenModal({ ...openModal, signup: true, isGuest: true })
|
|
252
|
+
return
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
if (!userErrors.length && (!requiredFields?.length || allowedGuest) || forcePlace) {
|
|
256
|
+
vibrateApp()
|
|
257
|
+
handlerClickPlaceOrder && handlerClickPlaceOrder(null, { isNative: true }, confirmPayment)
|
|
196
258
|
return
|
|
197
259
|
}
|
|
198
260
|
if (requiredFields?.length) {
|
|
@@ -207,6 +269,11 @@ const CheckoutUI = (props: any) => {
|
|
|
207
269
|
setIsUserDetailsEdit(true)
|
|
208
270
|
}
|
|
209
271
|
|
|
272
|
+
const handlePlaceOrderAsGuest = () => {
|
|
273
|
+
setIsOpen(false)
|
|
274
|
+
handlerClickPlaceOrder && handlerClickPlaceOrder()
|
|
275
|
+
}
|
|
276
|
+
|
|
210
277
|
const handlePaymentMethodClick = (paymethod: any) => {
|
|
211
278
|
setShowGateway({ closedByUser: false, open: true })
|
|
212
279
|
setWebviewPaymethod(paymethod)
|
|
@@ -225,7 +292,7 @@ const CheckoutUI = (props: any) => {
|
|
|
225
292
|
const checkValidationFields = () => {
|
|
226
293
|
setUserErrors([])
|
|
227
294
|
const errors = []
|
|
228
|
-
const notFields = ['coupon', 'driver_tip', 'mobile_phone', 'address', 'zipcode', 'address_notes']
|
|
295
|
+
const notFields = ['coupon', 'driver_tip', 'mobile_phone', 'address', 'zipcode', 'address_notes', 'comments']
|
|
229
296
|
const _requiredFields: any = []
|
|
230
297
|
|
|
231
298
|
Object.values(validationFields?.fields?.checkout).map((field: any) => {
|
|
@@ -273,7 +340,7 @@ const CheckoutUI = (props: any) => {
|
|
|
273
340
|
useEffect(() => {
|
|
274
341
|
if (cart?.products?.length === 0) {
|
|
275
342
|
if (cart?.business?.slug) {
|
|
276
|
-
onNavigationRedirect('Business', { store: cart?.business?.slug, header: null, logo: null })
|
|
343
|
+
onNavigationRedirect('Business', { store: cart?.business?.slug, header: null, logo: null, fromMulti: props.fromMulti })
|
|
277
344
|
} else {
|
|
278
345
|
onNavigationRedirect('Wallets')
|
|
279
346
|
}
|
|
@@ -299,6 +366,24 @@ const CheckoutUI = (props: any) => {
|
|
|
299
366
|
)
|
|
300
367
|
}
|
|
301
368
|
|
|
369
|
+
useEffect(() => {
|
|
370
|
+
cart && events.emit('checkout_started', cart)
|
|
371
|
+
}, [])
|
|
372
|
+
|
|
373
|
+
useEffect(() => {
|
|
374
|
+
if (cart?.paymethod_data?.gateway === 'credomatic') {
|
|
375
|
+
if (cart?.paymethod_data?.status === 2) {
|
|
376
|
+
setShowGateway({ ...showGateway, open: true })
|
|
377
|
+
} else if (cart?.paymethod_data?.gateway === 'credomatic' && cart?.paymethod_data?.status === 4) {
|
|
378
|
+
setShowGateway({ ...showGateway, open: false })
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
}, [cart?.paymethod_data])
|
|
382
|
+
|
|
383
|
+
const onTextLayout = useCallback((e: any) => {
|
|
384
|
+
setLengthMore((e.nativeEvent.lines.length == 3 && e.nativeEvent.lines[2].width > WIDTH_SCREEN * .76) || e.nativeEvent.lines.length > 3)
|
|
385
|
+
}, [])
|
|
386
|
+
|
|
302
387
|
return (
|
|
303
388
|
<>
|
|
304
389
|
<Container noPadding>
|
|
@@ -306,11 +391,12 @@ const CheckoutUI = (props: any) => {
|
|
|
306
391
|
<NavBar
|
|
307
392
|
title={t('CHECKOUT', 'Checkout')}
|
|
308
393
|
titleAlign={'center'}
|
|
309
|
-
onActionLeft={() =>
|
|
394
|
+
onActionLeft={() => onNavigationRedirect('BottomTab', { screen: 'Cart' }, !props.fromMulti)}
|
|
310
395
|
showCall={false}
|
|
311
|
-
btnStyle={{ paddingLeft: 0 }}
|
|
396
|
+
btnStyle={{ paddingLeft: 0, paddingTop: Platform.OS == 'ios' ? 0 : 2 }}
|
|
312
397
|
titleWrapStyle={{ paddingHorizontal: 0 }}
|
|
313
398
|
titleStyle={{ marginRight: 0, marginLeft: 0 }}
|
|
399
|
+
style={{ marginTop: 20 }}
|
|
314
400
|
/>
|
|
315
401
|
</View>
|
|
316
402
|
<ChContainer style={styles.pagePadding}>
|
|
@@ -353,7 +439,7 @@ const CheckoutUI = (props: any) => {
|
|
|
353
439
|
<View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginTop: 18, marginHorizontal: -40 }} />
|
|
354
440
|
</ChSection>
|
|
355
441
|
|
|
356
|
-
{!isGiftCardCart && (
|
|
442
|
+
{!isGiftCardCart && !hideBusinessDetails && (
|
|
357
443
|
<ChSection>
|
|
358
444
|
<ChBusinessDetails>
|
|
359
445
|
{
|
|
@@ -384,9 +470,30 @@ const CheckoutUI = (props: any) => {
|
|
|
384
470
|
<OText size={12} lineHeight={18} weight={'400'}>
|
|
385
471
|
{businessDetails?.business?.cellphone}
|
|
386
472
|
</OText>
|
|
387
|
-
|
|
388
|
-
{
|
|
389
|
-
|
|
473
|
+
{!hideBusinessAddress && (
|
|
474
|
+
<OText size={12} lineHeight={18} weight={'400'}>
|
|
475
|
+
{businessDetails?.business?.address}
|
|
476
|
+
</OText>
|
|
477
|
+
)}
|
|
478
|
+
{businessDetails?.business?.address_notes && (
|
|
479
|
+
<>
|
|
480
|
+
<OText
|
|
481
|
+
size={12}
|
|
482
|
+
lineHeight={18}
|
|
483
|
+
numberOfLines={isReadMore ? 20 : 3}
|
|
484
|
+
onTextLayout={onTextLayout}
|
|
485
|
+
>
|
|
486
|
+
{businessDetails?.business?.address_notes}
|
|
487
|
+
</OText>
|
|
488
|
+
{lengthMore && (
|
|
489
|
+
<TouchableOpacity
|
|
490
|
+
onPress={() => setIsReadMore(!isReadMore)}
|
|
491
|
+
>
|
|
492
|
+
<OText size={12} color={theme.colors.primary}>{isReadMore ? t('SHOW_LESS', 'Show less') : t('READ_MORE', 'Read more')}</OText>
|
|
493
|
+
</TouchableOpacity>
|
|
494
|
+
)}
|
|
495
|
+
</>
|
|
496
|
+
)}
|
|
390
497
|
</View>
|
|
391
498
|
</>
|
|
392
499
|
)}
|
|
@@ -402,33 +509,63 @@ const CheckoutUI = (props: any) => {
|
|
|
402
509
|
<View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginHorizontal: -40 }} />
|
|
403
510
|
</ChSection>
|
|
404
511
|
)}
|
|
512
|
+
{!hideCustomerDetails && (
|
|
405
513
|
|
|
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
|
-
|
|
431
|
-
|
|
514
|
+
<ChSection>
|
|
515
|
+
<ChUserDetails>
|
|
516
|
+
{cartState.loading ? (
|
|
517
|
+
<Placeholder Animation={Fade}>
|
|
518
|
+
<PlaceholderLine height={20} />
|
|
519
|
+
<PlaceholderLine height={12} />
|
|
520
|
+
<PlaceholderLine height={12} />
|
|
521
|
+
<PlaceholderLine height={12} style={{ marginBottom: 20 }} />
|
|
522
|
+
</Placeholder>
|
|
523
|
+
) : (
|
|
524
|
+
(user?.guest_id && !allowedGuest) ? (
|
|
525
|
+
<View>
|
|
526
|
+
<HeaderTitle text={t('CUSTOMER_DETAILS', 'Customer details')} />
|
|
527
|
+
<OButton
|
|
528
|
+
text={t('SIGN_UP', 'Sign up')}
|
|
529
|
+
textStyle={{ color: theme.colors.white }}
|
|
530
|
+
style={{ borderRadius: 7.6, marginTop: 20 }}
|
|
531
|
+
onClick={() => setOpenModal({ ...openModal, signup: true })}
|
|
532
|
+
/>
|
|
533
|
+
<OButton
|
|
534
|
+
text={t('LOGIN', 'Login')}
|
|
535
|
+
textStyle={{ color: theme.colors.primary }}
|
|
536
|
+
bgColor={theme.colors.white}
|
|
537
|
+
borderColor={theme.colors.primary}
|
|
538
|
+
style={{ borderRadius: 7.6, marginTop: 20 }}
|
|
539
|
+
onClick={() => setOpenModal({ ...openModal, login: true })}
|
|
540
|
+
/>
|
|
541
|
+
<OButton
|
|
542
|
+
text={t('CONTINUE_AS_GUEST', 'Continue as guest')}
|
|
543
|
+
textStyle={{ color: theme.colors.black }}
|
|
544
|
+
bgColor={theme.colors.white}
|
|
545
|
+
borderColor={theme.colors.black}
|
|
546
|
+
style={{ borderRadius: 7.6, marginTop: 20 }}
|
|
547
|
+
onClick={() => setAllowedGuest(true)}
|
|
548
|
+
/>
|
|
549
|
+
</View>
|
|
550
|
+
) : (
|
|
551
|
+
<UserDetails
|
|
552
|
+
isUserDetailsEdit={isUserDetailsEdit}
|
|
553
|
+
HeaderTitle={<HeaderTitle text={t('CUSTOMER_DETAILS', 'Customer Details')} mb={0} />}
|
|
554
|
+
cartStatus={cart?.status}
|
|
555
|
+
businessId={cart?.business_id}
|
|
556
|
+
useValidationFields
|
|
557
|
+
useDefualtSessionManager
|
|
558
|
+
useSessionUser
|
|
559
|
+
isCheckout
|
|
560
|
+
phoneUpdate={phoneUpdate}
|
|
561
|
+
togglePhoneUpdate={togglePhoneUpdate}
|
|
562
|
+
/>
|
|
563
|
+
)
|
|
564
|
+
)}
|
|
565
|
+
</ChUserDetails>
|
|
566
|
+
<View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginHorizontal: -40 }} />
|
|
567
|
+
</ChSection>
|
|
568
|
+
)}
|
|
432
569
|
|
|
433
570
|
{options?.type === 1 && !isGiftCardCart && (
|
|
434
571
|
<DeliveryOptionsContainer>
|
|
@@ -471,7 +608,7 @@ const CheckoutUI = (props: any) => {
|
|
|
471
608
|
data: deliveryOptions || [],
|
|
472
609
|
renderItem: ({ item }: any) => (
|
|
473
610
|
<TouchableOpacity
|
|
474
|
-
onPress={() => changeDeliveryOption(item.value)}
|
|
611
|
+
onPress={() => !!cart?.uuid && changeDeliveryOption(item.value)}
|
|
475
612
|
disabled={
|
|
476
613
|
deliveryOptionSelected === item.value
|
|
477
614
|
}
|
|
@@ -509,7 +646,7 @@ const CheckoutUI = (props: any) => {
|
|
|
509
646
|
</ChSection>
|
|
510
647
|
)}
|
|
511
648
|
|
|
512
|
-
{!isGiftCardCart && (
|
|
649
|
+
{!isGiftCardCart && !hideBusinessMap && (
|
|
513
650
|
<ChSection>
|
|
514
651
|
<ChAddress>
|
|
515
652
|
{(businessDetails?.loading || cartState.loading) ? (
|
|
@@ -520,7 +657,7 @@ const CheckoutUI = (props: any) => {
|
|
|
520
657
|
) : (
|
|
521
658
|
<AddressDetails
|
|
522
659
|
navigation={navigation}
|
|
523
|
-
location={
|
|
660
|
+
location={options?.address?.location}
|
|
524
661
|
businessLogo={businessDetails?.business?.logo}
|
|
525
662
|
isCartPending={cart?.status === 2}
|
|
526
663
|
uuid={cartUuid}
|
|
@@ -549,13 +686,14 @@ const CheckoutUI = (props: any) => {
|
|
|
549
686
|
<DriverTips
|
|
550
687
|
uuid={cartUuid}
|
|
551
688
|
businessId={cart?.business_id}
|
|
552
|
-
driverTipsOptions={driverTipsOptions}
|
|
553
|
-
isFixedPrice={parseInt(configs?.driver_tip_type?.value, 10) === 1
|
|
689
|
+
driverTipsOptions={!driverTipsOptions.includes(0) ? [0, ...driverTipsOptions] : driverTipsOptions}
|
|
690
|
+
isFixedPrice={parseInt(configs?.driver_tip_type?.value, 10) === 1}
|
|
554
691
|
isDriverTipUseCustom={!!parseInt(configs?.driver_tip_use_custom?.value, 10)}
|
|
555
|
-
driverTip={parseInt(configs?.driver_tip_type?.value, 10) === 1
|
|
692
|
+
driverTip={parseInt(configs?.driver_tip_type?.value, 10) === 1
|
|
556
693
|
? cart?.driver_tip
|
|
557
694
|
: cart?.driver_tip_rate}
|
|
558
695
|
useOrderContext
|
|
696
|
+
cart={cart}
|
|
559
697
|
/>
|
|
560
698
|
</ChDriverTips>
|
|
561
699
|
</ChSection>
|
|
@@ -578,7 +716,7 @@ const CheckoutUI = (props: any) => {
|
|
|
578
716
|
cart={cart}
|
|
579
717
|
isDisabled={cart?.status === 2}
|
|
580
718
|
businessId={!isGiftCardCart ? businessDetails?.business?.id : -1}
|
|
581
|
-
|
|
719
|
+
isLoading={!isGiftCardCart ? businessDetails.loading : false}
|
|
582
720
|
paymethods={businessDetails?.business?.paymethods}
|
|
583
721
|
onPaymentChange={handlePaymethodChange}
|
|
584
722
|
errorCash={errorCash}
|
|
@@ -588,6 +726,12 @@ const CheckoutUI = (props: any) => {
|
|
|
588
726
|
handlePaymentMethodClickCustom={handlePaymentMethodClick}
|
|
589
727
|
handlePlaceOrder={handlePlaceOrder}
|
|
590
728
|
merchantId={merchantId}
|
|
729
|
+
setMethodPaySupported={setMethodPaySupported}
|
|
730
|
+
methodPaySupported={methodPaySupported}
|
|
731
|
+
placeByMethodPay={placeByMethodPay}
|
|
732
|
+
setPlaceByMethodPay={setPlaceByMethodPay}
|
|
733
|
+
cardList={cardList}
|
|
734
|
+
setCardList={setCardList}
|
|
591
735
|
/>
|
|
592
736
|
</ChPaymethods>
|
|
593
737
|
</ChSection>
|
|
@@ -597,6 +741,7 @@ const CheckoutUI = (props: any) => {
|
|
|
597
741
|
<WalletPaymentOptionContainer>
|
|
598
742
|
<PaymentOptionWallet
|
|
599
743
|
cart={cart}
|
|
744
|
+
loyaltyPlansState={loyaltyPlansState}
|
|
600
745
|
businessId={cart?.business_id}
|
|
601
746
|
businessConfigs={businessDetails?.business?.configs}
|
|
602
747
|
/>
|
|
@@ -666,6 +811,12 @@ const CheckoutUI = (props: any) => {
|
|
|
666
811
|
isCartPending={cart?.status === 2}
|
|
667
812
|
onNavigationRedirect={onNavigationRedirect}
|
|
668
813
|
placeSpotTypes={placeSpotTypes}
|
|
814
|
+
businessConfigs={businessConfigs}
|
|
815
|
+
maxDate={maxDate}
|
|
816
|
+
loyaltyRewardRate={
|
|
817
|
+
creditPointPlanOnBusiness?.accumulation_rate ??
|
|
818
|
+
(!!creditPointPlanOnBusiness && creditPointPlan?.accumulation_rate) ?? 0
|
|
819
|
+
}
|
|
669
820
|
/>
|
|
670
821
|
</>
|
|
671
822
|
)}
|
|
@@ -675,7 +826,7 @@ const CheckoutUI = (props: any) => {
|
|
|
675
826
|
|
|
676
827
|
{!cartState.loading && cart && (
|
|
677
828
|
<View>
|
|
678
|
-
<ChErrors style={{ marginBottom: 10 }}>
|
|
829
|
+
<ChErrors style={{ marginBottom: Platform.OS === 'ios' ? 35 : 10 }}>
|
|
679
830
|
{!cart?.valid_address && cart?.status !== 2 && (
|
|
680
831
|
<OText
|
|
681
832
|
color={theme.colors.error}
|
|
@@ -702,6 +853,14 @@ const CheckoutUI = (props: any) => {
|
|
|
702
853
|
{t('WARNING_INVALID_PRODUCTS_CHECKOUT', 'To continue with your checkout, please remove from your cart the products that are not available.')}
|
|
703
854
|
</OText>
|
|
704
855
|
)}
|
|
856
|
+
{cart?.valid_preorder !== undefined && !cart?.valid_preorder && (
|
|
857
|
+
<OText
|
|
858
|
+
color={theme.colors.error}
|
|
859
|
+
size={12}
|
|
860
|
+
>
|
|
861
|
+
{t('INVALID_CART_MOMENT', 'Selected schedule time is invalid, please select a schedule into the business schedule interval.')}
|
|
862
|
+
</OText>
|
|
863
|
+
)}
|
|
705
864
|
{options.type === 1 &&
|
|
706
865
|
validationFields?.fields?.checkout?.driver_tip?.enabled &&
|
|
707
866
|
validationFields?.fields?.checkout?.driver_tip?.required &&
|
|
@@ -713,6 +872,15 @@ const CheckoutUI = (props: any) => {
|
|
|
713
872
|
{t('WARNING_INVALID_DRIVER_TIP', 'Driver Tip is required.')}
|
|
714
873
|
</OText>
|
|
715
874
|
)}
|
|
875
|
+
|
|
876
|
+
{validateCommentsCartField && (
|
|
877
|
+
<OText
|
|
878
|
+
color={theme.colors.error}
|
|
879
|
+
size={12}
|
|
880
|
+
>
|
|
881
|
+
{t('WARNING_INVALID_CART_COMMENTS', 'Cart comments is required.')}
|
|
882
|
+
</OText>
|
|
883
|
+
)}
|
|
716
884
|
</ChErrors>
|
|
717
885
|
</View>
|
|
718
886
|
)}
|
|
@@ -745,18 +913,52 @@ const CheckoutUI = (props: any) => {
|
|
|
745
913
|
togglePhoneUpdate={togglePhoneUpdate}
|
|
746
914
|
requiredFields={requiredFields}
|
|
747
915
|
hideUpdateButton
|
|
916
|
+
handlePlaceOrderAsGuest={handlePlaceOrderAsGuest}
|
|
748
917
|
onClose={() => {
|
|
749
918
|
setIsOpen(false)
|
|
750
919
|
handlePlaceOrder(null, true)
|
|
751
920
|
}}
|
|
921
|
+
setIsOpen={setIsOpen}
|
|
752
922
|
/>
|
|
753
923
|
</View>
|
|
754
924
|
</OModal>
|
|
925
|
+
<OModal
|
|
926
|
+
open={openModal.signup}
|
|
927
|
+
onClose={() => setOpenModal({ ...openModal, signup: false, isGuest: false })}
|
|
928
|
+
>
|
|
929
|
+
<ScrollView style={{ paddingHorizontal: 20, width: '100%' }}>
|
|
930
|
+
<SignupForm
|
|
931
|
+
handleSuccessSignup={handleSuccessSignup}
|
|
932
|
+
isGuest
|
|
933
|
+
signupButtonText={t('SIGNUP', 'Signup')}
|
|
934
|
+
useSignupByEmail
|
|
935
|
+
useChekoutFileds
|
|
936
|
+
/>
|
|
937
|
+
</ScrollView>
|
|
938
|
+
</OModal>
|
|
939
|
+
<OModal
|
|
940
|
+
open={openModal.login}
|
|
941
|
+
onClose={() => setOpenModal({ ...openModal, login: false })}
|
|
942
|
+
>
|
|
943
|
+
<ScrollView style={{ paddingHorizontal: 20, width: '100%' }}>
|
|
944
|
+
<LoginForm
|
|
945
|
+
handleSuccessLogin={handleSuccessLogin}
|
|
946
|
+
isGuest
|
|
947
|
+
loginButtonText={t('LOGIN', 'Login')}
|
|
948
|
+
loginButtonBackground={theme.colors.primary}
|
|
949
|
+
/>
|
|
950
|
+
</ScrollView>
|
|
951
|
+
</OModal>
|
|
755
952
|
</ChContainer>
|
|
756
953
|
</Container>
|
|
757
954
|
{!cartState.loading && cart && cart?.status !== 2 && (
|
|
758
955
|
<FloatingButton
|
|
759
|
-
handleClick={
|
|
956
|
+
handleClick={
|
|
957
|
+
isDisabledButtonPlace
|
|
958
|
+
? () => vibrateApp()
|
|
959
|
+
: methodsPay.includes(paymethodSelected?.gateway)
|
|
960
|
+
? () => setPlaceByMethodPay(true)
|
|
961
|
+
: () => handlePlaceOrder(null)}
|
|
760
962
|
isSecondaryBtn={isDisabledButtonPlace}
|
|
761
963
|
disabled={isDisabledButtonPlace}
|
|
762
964
|
btnText={subtotalWithTaxes >= cart?.minimum
|
|
@@ -799,6 +1001,29 @@ const CheckoutUI = (props: any) => {
|
|
|
799
1001
|
locationId={'L1NGAY5M6KJRX'}
|
|
800
1002
|
/>
|
|
801
1003
|
)}
|
|
1004
|
+
{cart?.paymethod_data?.gateway === 'credomatic' && cart?.paymethod_data?.status === 2 && showGateway.open && (
|
|
1005
|
+
<PaymentOptionsWebView
|
|
1006
|
+
title={t('CREDOMATIC_PAYMENT', 'Credomatic payment')}
|
|
1007
|
+
onNavigationRedirect={onNavigationRedirect}
|
|
1008
|
+
uri={credomaticUrl}
|
|
1009
|
+
user={user}
|
|
1010
|
+
cart={cart}
|
|
1011
|
+
additionalParams={{
|
|
1012
|
+
type: 'auth',
|
|
1013
|
+
key_id: credomaticKeyId,
|
|
1014
|
+
hash: cart?.paymethod_data?.result?.hash,
|
|
1015
|
+
time: cart?.paymethod_data?.result?.time,
|
|
1016
|
+
amount: cart?.total,
|
|
1017
|
+
orderid: cart?.uuid,
|
|
1018
|
+
ccnumber: cardList?.cards?.[0]?.number,
|
|
1019
|
+
ccexp: cardList?.cards?.[0]?.expiryString,
|
|
1020
|
+
cvv: cardList?.cards?.[0]?.cvc,
|
|
1021
|
+
redirect: credomaticUrl
|
|
1022
|
+
}}
|
|
1023
|
+
webviewPaymethod={webviewPaymethod}
|
|
1024
|
+
setShowGateway={setShowGateway}
|
|
1025
|
+
/>
|
|
1026
|
+
)}
|
|
802
1027
|
</>
|
|
803
1028
|
)
|
|
804
1029
|
}
|
|
@@ -825,7 +1050,8 @@ export const Checkout = (props: any) => {
|
|
|
825
1050
|
const getOrder = async (cartId: any) => {
|
|
826
1051
|
try {
|
|
827
1052
|
let result: any = {}
|
|
828
|
-
const
|
|
1053
|
+
const cartsWithProducts = orderState?.carts && (Object.values(orderState?.carts)?.filter(cart => cart?.products && cart?.products?.length) || null)
|
|
1054
|
+
const cart = cartsWithProducts?.find((cart: any) => cart.uuid === cartId)
|
|
829
1055
|
if (cart) {
|
|
830
1056
|
result = { ...cart }
|
|
831
1057
|
} 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 }}
|