ordering-ui-react-native 0.22.43 → 0.22.44-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 +6 -8
- package/src/DeliveryApp.tsx +1 -1
- package/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/Checkout/index.tsx +40 -39
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/context/OfflineActions/index.tsx +236 -0
- package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
- package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
- package/themes/business/src/components/BusinessController/index.tsx +8 -3
- package/themes/business/src/components/BusinessProductList/index.tsx +3 -2
- package/themes/business/src/components/Chat/index.tsx +15 -3
- package/themes/business/src/components/DriverMap/index.tsx +44 -33
- package/themes/business/src/components/FloatingButton/index.tsx +3 -2
- package/themes/business/src/components/LanguageSelector/index.tsx +1 -1
- package/themes/business/src/components/LoginForm/index.tsx +123 -98
- package/themes/business/src/components/LogoutButton/index.tsx +14 -5
- package/themes/business/src/components/MapView/index.tsx +42 -22
- package/themes/business/src/components/NewOrderNotification/index.tsx +38 -19
- package/themes/business/src/components/OrderDetails/Business.tsx +34 -16
- package/themes/business/src/components/OrderDetails/Delivery.tsx +134 -53
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +155 -45
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +51 -28
- package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
- package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +17 -16
- package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
- package/themes/business/src/components/OrderSummary/index.tsx +6 -4
- package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
- package/themes/business/src/components/OrdersOption/index.tsx +332 -231
- package/themes/business/src/components/OrdersOption/styles.tsx +14 -0
- package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
- package/themes/business/src/components/PreviousOrders/OrderItem.tsx +29 -18
- package/themes/business/src/components/PreviousOrders/index.tsx +74 -66
- package/themes/business/src/components/PreviousOrders/styles.tsx +2 -1
- package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
- package/themes/business/src/components/PrinterEdition/index.tsx +143 -75
- package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
- package/themes/business/src/components/PrinterSettings/index.tsx +1 -1
- package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
- package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
- package/themes/business/src/components/StoresList/index.tsx +2 -2
- package/themes/business/src/components/UserProfileForm/index.tsx +48 -10
- package/themes/business/src/components/UserProfileForm/styles.tsx +7 -0
- package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
- package/themes/business/src/components/shared/OTextarea.tsx +8 -9
- package/themes/business/src/config/currency.tsx +1010 -0
- package/themes/business/src/hooks/useLocation.tsx +16 -12
- package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
- package/themes/business/src/types/index.tsx +22 -7
- package/themes/business/src/utils/index.tsx +28 -3
- 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 +9 -5
- package/themes/kiosk/src/components/CustomerName/index.tsx +1 -1
- 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/PaymentOptions/index.tsx +121 -57
- package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
- package/themes/original/index.tsx +9 -1
- package/themes/original/src/components/AddressForm/index.tsx +25 -17
- package/themes/original/src/components/AddressList/index.tsx +8 -7
- package/themes/original/src/components/AppleLogin/index.tsx +4 -4
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +1 -1
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +14 -6
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +103 -92
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +8 -6
- package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
- package/themes/original/src/components/BusinessPreorder/index.tsx +46 -28
- package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +73 -70
- package/themes/original/src/components/BusinessProductsList/index.tsx +6 -7
- package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
- package/themes/original/src/components/BusinessProductsListing/index.tsx +10 -6
- package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
- package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
- package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
- package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
- package/themes/original/src/components/Cart/index.tsx +49 -15
- package/themes/original/src/components/CartContent/index.tsx +2 -4
- package/themes/original/src/components/Checkout/index.tsx +127 -79
- package/themes/original/src/components/CitiesControl/index.tsx +0 -3
- package/themes/original/src/components/CouponControl/index.tsx +1 -3
- package/themes/original/src/components/DriverTips/index.tsx +1 -3
- package/themes/original/src/components/Favorite/index.tsx +1 -5
- package/themes/original/src/components/FavoriteList/index.tsx +0 -1
- package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -7
- package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +15 -17
- package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +3 -7
- package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +24 -32
- package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +7 -9
- package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +11 -12
- package/themes/original/src/components/GoogleMap/index.tsx +39 -18
- package/themes/original/src/components/Help/index.tsx +2 -0
- package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
- package/themes/original/src/components/Home/index.tsx +35 -19
- package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
- package/themes/original/src/components/LoginForm/index.tsx +13 -10
- package/themes/original/src/components/MessageListing/index.tsx +2 -1
- package/themes/original/src/components/Messages/index.tsx +20 -13
- package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
- package/themes/original/src/components/MomentOption/index.tsx +80 -52
- package/themes/original/src/components/MomentSelector/index.tsx +5 -2
- package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -4
- package/themes/original/src/components/MultiCheckout/index.tsx +55 -27
- package/themes/original/src/components/MultiOrdersDetails/index.tsx +1 -0
- package/themes/original/src/components/MyOrders/index.tsx +2 -2
- package/themes/original/src/components/NavBar/index.tsx +7 -4
- package/themes/original/src/components/NetworkError/index.tsx +0 -5
- package/themes/original/src/components/NotFoundSource/index.tsx +0 -3
- package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
- package/themes/original/src/components/OrderDetails/OrderHistory.tsx +16 -11
- package/themes/original/src/components/OrderDetails/index.tsx +44 -21
- package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
- package/themes/original/src/components/OrderProgress/index.tsx +4 -3
- package/themes/original/src/components/OrderSummary/index.tsx +32 -11
- package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -6
- package/themes/original/src/components/OrdersOption/index.tsx +3 -6
- package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
- package/themes/original/src/components/PaymentOptions/index.tsx +462 -461
- package/themes/original/src/components/PhoneInputNumber/index.tsx +92 -7
- package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
- package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
- package/themes/original/src/components/ProductForm/ActionButton.tsx +7 -12
- package/themes/original/src/components/ProductForm/index.tsx +107 -102
- package/themes/original/src/components/ProductItemAccordion/index.tsx +30 -38
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
- package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
- package/themes/original/src/components/Promotions/index.tsx +2 -2
- package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
- package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
- package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
- package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
- package/themes/original/src/components/ServiceForm/index.tsx +52 -54
- package/themes/original/src/components/Sessions/index.tsx +3 -3
- package/themes/original/src/components/SignupForm/index.tsx +44 -32
- package/themes/original/src/components/SingleOrderCard/index.tsx +6 -4
- package/themes/original/src/components/SingleProductCard/index.tsx +5 -5
- package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
- package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
- package/themes/original/src/components/StripeCardsList/index.tsx +16 -3
- package/themes/original/src/components/StripeElementsForm/index.tsx +8 -4
- package/themes/original/src/components/StripeElementsForm/naked.tsx +1 -1
- package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
- package/themes/original/src/components/TaxInformation/index.tsx +3 -2
- package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +8 -5
- package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
- package/themes/original/src/components/UserDetails/index.tsx +17 -16
- package/themes/original/src/components/UserFormDetails/index.tsx +115 -75
- package/themes/original/src/components/UserProfile/index.tsx +9 -1
- package/themes/original/src/components/UserVerification/index.tsx +18 -5
- package/themes/original/src/components/Wallets/index.tsx +6 -3
- package/themes/original/src/components/WebsocketStatus/index.tsx +1 -4
- package/themes/original/src/components/shared/OAlert.tsx +2 -1
- package/themes/original/src/components/shared/OButton.tsx +5 -4
- package/themes/original/src/components/shared/OInput.tsx +4 -8
- package/themes/original/src/components/shared/OModal.tsx +7 -2
- package/themes/original/src/types/index.tsx +12 -4
- package/themes/original/src/utils/index.tsx +29 -0
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useState, useEffect, useCallback, useRef } from 'react';
|
|
1
|
+
import React, { useState, useEffect, useCallback, useRef, useMemo } from 'react';
|
|
2
2
|
import { View, StyleSheet, TouchableOpacity, Platform, I18nManager, ScrollView, Keyboard, BackHandler, SafeAreaView } from 'react-native';
|
|
3
3
|
import { initStripe, useConfirmPayment } from '@stripe/stripe-react-native';
|
|
4
4
|
import NativeStripeSdk from '@stripe/stripe-react-native/src/NativeStripeSdk'
|
|
@@ -7,7 +7,7 @@ import MaterialIcons from 'react-native-vector-icons/MaterialIcons'
|
|
|
7
7
|
import IconAntDesign from 'react-native-vector-icons/AntDesign';
|
|
8
8
|
import { useIsFocused } from '@react-navigation/native';
|
|
9
9
|
|
|
10
|
-
import ReactNativeHapticFeedback from "react-native-haptic-feedback";
|
|
10
|
+
import ReactNativeHapticFeedback, { HapticFeedbackTypes } from "react-native-haptic-feedback";
|
|
11
11
|
import {
|
|
12
12
|
Checkout as CheckoutController,
|
|
13
13
|
useOrder,
|
|
@@ -15,7 +15,6 @@ import {
|
|
|
15
15
|
useApi,
|
|
16
16
|
useLanguage,
|
|
17
17
|
useUtils,
|
|
18
|
-
useValidationFields,
|
|
19
18
|
useConfig,
|
|
20
19
|
useToast,
|
|
21
20
|
ToastType,
|
|
@@ -103,7 +102,8 @@ const CheckoutUI = (props: any) => {
|
|
|
103
102
|
setPlaceSpotNumber,
|
|
104
103
|
maxDate,
|
|
105
104
|
androidAppId,
|
|
106
|
-
urlscheme
|
|
105
|
+
urlscheme,
|
|
106
|
+
checkoutFieldsState
|
|
107
107
|
} = props
|
|
108
108
|
|
|
109
109
|
const theme = useTheme();
|
|
@@ -145,12 +145,11 @@ const CheckoutUI = (props: any) => {
|
|
|
145
145
|
|
|
146
146
|
const [, { showToast }] = useToast();
|
|
147
147
|
const [, t] = useLanguage();
|
|
148
|
-
const [{ user, token }, { login }] = useSession();
|
|
148
|
+
const [{ user, token, loading: userLoading }, { login }] = useSession();
|
|
149
149
|
const [ordering] = useApi()
|
|
150
150
|
const [{ configs }] = useConfig();
|
|
151
151
|
const [{ parsePrice, parseDate }] = useUtils();
|
|
152
152
|
const [{ options, carts, loading }, { confirmCart }] = useOrder();
|
|
153
|
-
const [validationFields] = useValidationFields();
|
|
154
153
|
const [events] = useEvent()
|
|
155
154
|
const [orientationState] = useDeviceOrientation();
|
|
156
155
|
const [isReadMore, setIsReadMore] = useState(false)
|
|
@@ -167,6 +166,7 @@ const CheckoutUI = (props: any) => {
|
|
|
167
166
|
const [webviewPaymethod, setWebviewPaymethod] = useState<any>(null)
|
|
168
167
|
const [isOpen, setIsOpen] = useState(false)
|
|
169
168
|
const [requiredFields, setRequiredFields] = useState<any>([])
|
|
169
|
+
const [orderTypeValidationFields, setOrderTypeValidationFields] = useState<any>([])
|
|
170
170
|
const [openModal, setOpenModal] = useState({ login: false, signup: false, isGuest: false })
|
|
171
171
|
const [allowedGuest, setAllowedGuest] = useState(false)
|
|
172
172
|
const [placeByMethodPay, setPlaceByMethodPay] = useState(false)
|
|
@@ -175,9 +175,20 @@ const CheckoutUI = (props: any) => {
|
|
|
175
175
|
const [showTitle, setShowTitle] = useState(false)
|
|
176
176
|
const [cardList, setCardList] = useState<any>({ cards: [], loading: false, error: null })
|
|
177
177
|
const [isGiftCardCart, setIsGiftCardCart] = useState(!cart?.business_id)
|
|
178
|
+
const [userHasCards, setUserHasCards] = useState(false)
|
|
178
179
|
const containerRef = useRef<any>()
|
|
179
180
|
const cardsMethods = ['credomatic']
|
|
180
|
-
const stripePaymethods: any = ['stripe', '
|
|
181
|
+
const stripePaymethods: any = ['stripe', 'stripe_connect', 'stripe_redirect']
|
|
182
|
+
const cardsPaymethods: any = ['stripe', 'stripe_connect']
|
|
183
|
+
|
|
184
|
+
const notFields = ['coupon', 'driver_tip', 'mobile_phone', 'address', 'zipcode', 'address_notes', 'comments']
|
|
185
|
+
|
|
186
|
+
const checkoutFields = useMemo(() => checkoutFieldsState?.fields?.filter((field: any) => field.order_type_id === options?.type), [checkoutFieldsState, options])
|
|
187
|
+
const guestCheckoutDriveTip = useMemo(() => checkoutFields?.find((field: any) => field.order_type_id === 1 && field?.validation_field?.code === 'driver_tip'), [JSON.stringify(checkoutFields), options])
|
|
188
|
+
const guestCheckoutComment = useMemo(() => checkoutFields?.find((field: any) => field.order_type_id === options?.type && field?.validation_field?.code === 'comments'), [JSON.stringify(checkoutFields), options])
|
|
189
|
+
const guestCheckoutCoupon = useMemo(() => checkoutFields?.find((field: any) => field.order_type_id === options?.type && field?.validation_field?.code === 'coupon'), [JSON.stringify(checkoutFields), options])
|
|
190
|
+
const guestCheckoutZipcode = useMemo(() => checkoutFields?.find((field: any) => field.order_type_id === options?.type && field?.validation_field?.code === 'zipcode'), [JSON.stringify(checkoutFields), options])
|
|
191
|
+
|
|
181
192
|
const placeSpotTypes = [3, 4, 5]
|
|
182
193
|
const placeSpotsEnabled = placeSpotTypes.includes(options?.type)
|
|
183
194
|
const businessConfigs = businessDetails?.business?.configs ?? []
|
|
@@ -195,6 +206,7 @@ const CheckoutUI = (props: any) => {
|
|
|
195
206
|
const creditPointPlanOnBusiness = creditPointPlan?.businesses?.find((b: any) => b.business_id === cart?.business_id && b.accumulates)
|
|
196
207
|
const methodsPay = ['google_pay', 'apple_pay']
|
|
197
208
|
|
|
209
|
+
const commentDelayTime = 1500
|
|
198
210
|
const isPreOrder = configs?.preorder_status_enabled?.value === '1'
|
|
199
211
|
const subtotalWithTaxes = cart?.taxes?.reduce((acc: any, item: any) => {
|
|
200
212
|
if (item?.type === 1)
|
|
@@ -202,27 +214,28 @@ const CheckoutUI = (props: any) => {
|
|
|
202
214
|
return acc = acc
|
|
203
215
|
}, cart?.subtotal)
|
|
204
216
|
|
|
205
|
-
const validateCommentsCartField =
|
|
206
|
-
const
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
!paymethodSelected?.data?.card?.zipcode &&
|
|
210
|
-
paymethodSelected?.gateway === 'stripe'
|
|
217
|
+
const validateCommentsCartField = (guestCheckoutComment?.enabled && (user?.guest_id ? guestCheckoutComment?.required_with_guest : guestCheckoutComment?.required)) && (cart?.comment === null || cart?.comment?.trim().length === 0)
|
|
218
|
+
const validateDriverTipField = options.type === 1 && (guestCheckoutDriveTip?.enabled && (user?.guest_id ? guestCheckoutDriveTip?.required_with_guest : guestCheckoutDriveTip?.required)) && (Number(cart?.driver_tip) <= 0)
|
|
219
|
+
const validateCouponField = (guestCheckoutCoupon?.enabled && (user?.guest_id ? guestCheckoutCoupon?.required_with_guest : guestCheckoutCoupon?.required)) && !cart?.offers?.some((offer: any) => offer?.type === 2)
|
|
220
|
+
const validateZipcodeCard = (guestCheckoutZipcode?.enabled && (user?.guest_id ? guestCheckoutZipcode?.required_with_guest : guestCheckoutZipcode?.required)) && paymethodSelected?.gateway === 'stripe' && paymethodSelected?.data?.card && !paymethodSelected?.data?.card?.zipcode
|
|
211
221
|
|
|
212
222
|
const isDisabledButtonPlace = loading || !cart?.valid || (!paymethodSelected && cart?.balance > 0) ||
|
|
213
223
|
placing || errorCash || subtotalWithTaxes < cart?.minimum ||
|
|
214
224
|
(cardsMethods.includes(paymethodSelected?.gateway) && cardList?.cards?.length === 0) ||
|
|
215
|
-
(options.type === 1 && !isGiftCardCart &&
|
|
216
|
-
validationFields?.fields?.checkout?.driver_tip?.enabled &&
|
|
217
|
-
validationFields?.fields?.checkout?.driver_tip?.required &&
|
|
218
|
-
(Number(cart?.driver_tip) <= 0)) ||
|
|
219
225
|
(validateCommentsCartField) ||
|
|
220
|
-
(
|
|
221
|
-
|
|
226
|
+
(validateDriverTipField && !isGiftCardCart) ||
|
|
227
|
+
(validateZipcodeCard) ||
|
|
228
|
+
(methodsPay.includes(paymethodSelected?.gateway) && (!methodPaySupported.enabled || methodPaySupported.loading)) ||
|
|
229
|
+
validateCommentsCartField ||
|
|
230
|
+
validateDriverTipField ||
|
|
231
|
+
validateCouponField ||
|
|
232
|
+
validateZipcodeCard ||
|
|
233
|
+
(!userHasCards && cardsPaymethods.includes(paymethodSelected?.gateway))
|
|
222
234
|
|
|
223
235
|
const driverTipsOptions = typeof configs?.driver_tip_options?.value === 'string'
|
|
224
236
|
? JSON.parse(configs?.driver_tip_options?.value) || []
|
|
225
237
|
: configs?.driver_tip_options?.value || []
|
|
238
|
+
const driverTipsField = !cartState.loading && cart && cart?.business_id && options.type === 1 && cart?.status !== 2 && (guestCheckoutDriveTip?.enabled) && driverTipsOptions.length > 0
|
|
226
239
|
|
|
227
240
|
const configTypes = configs?.order_types_allowed?.value.split('|').map((value: any) => Number(value)) || []
|
|
228
241
|
|
|
@@ -243,7 +256,7 @@ const CheckoutUI = (props: any) => {
|
|
|
243
256
|
}
|
|
244
257
|
}
|
|
245
258
|
|
|
246
|
-
const vibrateApp = (impact?:
|
|
259
|
+
const vibrateApp = (impact?: HapticFeedbackTypes) => {
|
|
247
260
|
const options = {
|
|
248
261
|
enableVibrateFallback: true,
|
|
249
262
|
ignoreAndroidSystemSettings: false
|
|
@@ -251,12 +264,11 @@ const CheckoutUI = (props: any) => {
|
|
|
251
264
|
ReactNativeHapticFeedback.trigger(impact || "impactLight", options);
|
|
252
265
|
}
|
|
253
266
|
|
|
254
|
-
const handleSuccessSignup = (user: any) => {
|
|
255
|
-
login({
|
|
267
|
+
const handleSuccessSignup = async (user: any) => {
|
|
268
|
+
await login({
|
|
256
269
|
user,
|
|
257
270
|
token: user?.session?.access_token
|
|
258
271
|
})
|
|
259
|
-
openModal?.isGuest && handlePlaceOrderAsGuest()
|
|
260
272
|
setOpenModal({ ...openModal, signup: false, isGuest: false })
|
|
261
273
|
}
|
|
262
274
|
|
|
@@ -270,7 +282,7 @@ const CheckoutUI = (props: any) => {
|
|
|
270
282
|
return
|
|
271
283
|
}
|
|
272
284
|
|
|
273
|
-
if (!userErrors.length && (!requiredFields?.length
|
|
285
|
+
if (!userErrors.length && (!requiredFields?.length) || forcePlace) {
|
|
274
286
|
vibrateApp()
|
|
275
287
|
handlerClickPlaceOrder && handlerClickPlaceOrder(null, { isNative: true }, confirmPayment, NativeStripeSdk?.dismissPlatformPay)
|
|
276
288
|
return
|
|
@@ -309,35 +321,65 @@ const CheckoutUI = (props: any) => {
|
|
|
309
321
|
|
|
310
322
|
const checkValidationFields = () => {
|
|
311
323
|
setUserErrors([])
|
|
312
|
-
const errors = []
|
|
313
|
-
const
|
|
314
|
-
const _requiredFields:
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
324
|
+
const errors: Array<string> = []
|
|
325
|
+
const userSelected = user
|
|
326
|
+
const _requiredFields: Array<string> = []
|
|
327
|
+
Object.values(checkoutFieldsState?.fields).map((field: any) => {
|
|
328
|
+
if (options?.type === field?.order_type_id &&
|
|
329
|
+
field?.enabled &&
|
|
330
|
+
field?.required &&
|
|
331
|
+
!notFields.includes(field?.validation_field?.code)
|
|
332
|
+
) {
|
|
333
|
+
if (userSelected && !userSelected[field?.validation_field?.code]) {
|
|
334
|
+
_requiredFields.push(field?.validation_field?.code)
|
|
320
335
|
}
|
|
321
336
|
}
|
|
322
337
|
})
|
|
323
|
-
|
|
338
|
+
const mobilePhoneField: any = Object.values(checkoutFieldsState?.fields)?.find((field: any) => field?.order_type_id === options?.type && field?.validation_field?.code === 'mobile_phone')
|
|
324
339
|
if (
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
340
|
+
userSelected &&
|
|
341
|
+
!userSelected?.cellphone &&
|
|
342
|
+
((mobilePhoneField?.enabled &&
|
|
343
|
+
mobilePhoneField?.required) ||
|
|
328
344
|
configs?.verification_phone_required?.value === '1')
|
|
329
345
|
) {
|
|
330
346
|
_requiredFields.push('cellphone')
|
|
331
347
|
}
|
|
332
348
|
setRequiredFields(_requiredFields)
|
|
333
349
|
|
|
334
|
-
if (phoneUpdate) {
|
|
335
|
-
errors.push(t('NECESSARY_UPDATE_COUNTRY_PHONE_CODE', 'It is necessary to update your phone number'))
|
|
336
|
-
}
|
|
337
|
-
|
|
338
350
|
setUserErrors(errors)
|
|
339
351
|
}
|
|
340
352
|
|
|
353
|
+
const checkGuestValidationFields = () => {
|
|
354
|
+
const userSelected = user
|
|
355
|
+
const _requiredFields = checkoutFieldsState?.fields
|
|
356
|
+
.filter((field: any) => (field?.order_type_id === options?.type) && field?.enabled && field?.required_with_guest &&
|
|
357
|
+
!notFields.includes(field?.validation_field?.code) &&
|
|
358
|
+
field?.validation_field?.code !== 'email' &&
|
|
359
|
+
userSelected && !userSelected[field?.validation_field?.code])
|
|
360
|
+
const requiredFieldsCode = _requiredFields.map((item: any) => item?.validation_field?.code)
|
|
361
|
+
const guestCheckoutCellPhone = checkoutFieldsState?.fields?.find((field: any) => field.order_type_id === options?.type && field?.validation_field?.code === 'mobile_phone')
|
|
362
|
+
const guestCheckoutEmail = checkoutFieldsState?.fields?.find((field: any) => field.order_type_id === options?.type && field?.validation_field?.code === 'email')
|
|
363
|
+
if (
|
|
364
|
+
userSelected &&
|
|
365
|
+
!userSelected?.guest_cellphone &&
|
|
366
|
+
((guestCheckoutCellPhone?.enabled &&
|
|
367
|
+
guestCheckoutCellPhone?.required_with_guest) ||
|
|
368
|
+
configs?.verification_phone_required?.value === '1')
|
|
369
|
+
) {
|
|
370
|
+
requiredFieldsCode.push('cellphone')
|
|
371
|
+
}
|
|
372
|
+
if (
|
|
373
|
+
userSelected &&
|
|
374
|
+
!userSelected?.guest_email &&
|
|
375
|
+
guestCheckoutEmail?.enabled &&
|
|
376
|
+
guestCheckoutEmail?.required_with_guest
|
|
377
|
+
) {
|
|
378
|
+
requiredFieldsCode.push('email')
|
|
379
|
+
}
|
|
380
|
+
setRequiredFields(requiredFieldsCode)
|
|
381
|
+
}
|
|
382
|
+
|
|
341
383
|
const togglePhoneUpdate = (val: boolean) => {
|
|
342
384
|
setPhoneUpdate(val)
|
|
343
385
|
}
|
|
@@ -346,11 +388,20 @@ const CheckoutUI = (props: any) => {
|
|
|
346
388
|
setShowTitle(contentOffset.y > 30)
|
|
347
389
|
}
|
|
348
390
|
|
|
391
|
+
const handleRedirect = () => {
|
|
392
|
+
props.fromProductsList
|
|
393
|
+
? navigation?.goBack()
|
|
394
|
+
: onNavigationRedirect('BottomTab', { screen: 'Cart' }, !props.fromMulti)
|
|
395
|
+
}
|
|
396
|
+
|
|
349
397
|
useEffect(() => {
|
|
350
|
-
if (
|
|
398
|
+
if (checkoutFieldsState?.loading || userLoading) return
|
|
399
|
+
if (user?.guest_id) {
|
|
400
|
+
checkGuestValidationFields()
|
|
401
|
+
} else {
|
|
351
402
|
checkValidationFields()
|
|
352
403
|
}
|
|
353
|
-
}, [
|
|
404
|
+
}, [checkoutFieldsState, user, options?.type])
|
|
354
405
|
|
|
355
406
|
useEffect(() => {
|
|
356
407
|
if (errors) {
|
|
@@ -360,12 +411,14 @@ const CheckoutUI = (props: any) => {
|
|
|
360
411
|
}, [errors])
|
|
361
412
|
|
|
362
413
|
useEffect(() => {
|
|
363
|
-
if (cart?.products?.length === 0)
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
414
|
+
if (cart?.products?.length === 0 || !userLoading) return
|
|
415
|
+
if (cart?.business_id !== null) {
|
|
416
|
+
onNavigationRedirect('Business', { store: cart?.business?.slug, header: null, logo: null, fromMulti: props.fromMulti })
|
|
417
|
+
return
|
|
418
|
+
}
|
|
419
|
+
if (isGiftCardCart) {
|
|
420
|
+
onNavigationRedirect('Wallets')
|
|
421
|
+
return
|
|
369
422
|
}
|
|
370
423
|
}, [cart?.products?.length])
|
|
371
424
|
|
|
@@ -427,15 +480,6 @@ const CheckoutUI = (props: any) => {
|
|
|
427
480
|
}
|
|
428
481
|
}, [cartState?.error, cartState?.cart, cartState?.loading, isFocused])
|
|
429
482
|
|
|
430
|
-
useEffect(() => {
|
|
431
|
-
const keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', () => {
|
|
432
|
-
containerRef?.current?.scrollToEnd && containerRef.current.scrollToEnd({ animated: true })
|
|
433
|
-
})
|
|
434
|
-
return () => {
|
|
435
|
-
keyboardDidShowListener.remove()
|
|
436
|
-
}
|
|
437
|
-
}, [])
|
|
438
|
-
|
|
439
483
|
useEffect(() => {
|
|
440
484
|
const onBackFunction = () => {
|
|
441
485
|
if (webviewPaymethod?.gateway === 'paypal' && showGateway.open) {
|
|
@@ -456,7 +500,7 @@ const CheckoutUI = (props: any) => {
|
|
|
456
500
|
<SafeAreaView style={{ backgroundColor: theme.colors.backgroundPage }}>
|
|
457
501
|
<View style={styles.wrapperNavbar}>
|
|
458
502
|
<TopHeader>
|
|
459
|
-
<TopActions onPress={() =>
|
|
503
|
+
<TopActions onPress={() => handleRedirect()}>
|
|
460
504
|
<IconAntDesign
|
|
461
505
|
name='arrowleft'
|
|
462
506
|
size={26}
|
|
@@ -482,7 +526,7 @@ const CheckoutUI = (props: any) => {
|
|
|
482
526
|
hideArrowLeft
|
|
483
527
|
title={t('CHECKOUT', 'Checkout')}
|
|
484
528
|
titleAlign={'center'}
|
|
485
|
-
onActionLeft={() =>
|
|
529
|
+
onActionLeft={() => handleRedirect()}
|
|
486
530
|
showCall={false}
|
|
487
531
|
btnStyle={{ paddingLeft: 0, paddingTop: Platform.OS == 'ios' ? 0 : 2 }}
|
|
488
532
|
titleWrapStyle={{ paddingHorizontal: 0 }}
|
|
@@ -619,17 +663,11 @@ const CheckoutUI = (props: any) => {
|
|
|
619
663
|
<HeaderTitle text={t('CUSTOMER_DETAILS', 'Customer details')} />
|
|
620
664
|
<OButton
|
|
621
665
|
text={t('SIGN_UP', 'Sign up')}
|
|
622
|
-
textStyle={{ color: theme.colors.white }}
|
|
623
|
-
bgColor={theme.colors.primary}
|
|
624
|
-
borderColor={theme.colors.primary}
|
|
625
666
|
style={{ borderRadius: 7.6, marginTop: 20 }}
|
|
626
667
|
onClick={() => setOpenModal({ ...openModal, signup: true })}
|
|
627
668
|
/>
|
|
628
669
|
<OButton
|
|
629
670
|
text={t('LOGIN', 'Login')}
|
|
630
|
-
textStyle={{ color: theme.colors.white }}
|
|
631
|
-
bgColor={theme.colors.primary}
|
|
632
|
-
borderColor={theme.colors.primary}
|
|
633
671
|
style={{ borderRadius: 7.6, marginTop: 20 }}
|
|
634
672
|
onClick={() => setOpenModal({ ...openModal, login: true })}
|
|
635
673
|
/>
|
|
@@ -654,6 +692,9 @@ const CheckoutUI = (props: any) => {
|
|
|
654
692
|
isCheckout
|
|
655
693
|
phoneUpdate={phoneUpdate}
|
|
656
694
|
togglePhoneUpdate={togglePhoneUpdate}
|
|
695
|
+
isOrderTypeValidationField
|
|
696
|
+
requiredFields={requiredFields}
|
|
697
|
+
checkoutFields={checkoutFields}
|
|
657
698
|
/>
|
|
658
699
|
)
|
|
659
700
|
)}
|
|
@@ -751,6 +792,7 @@ const CheckoutUI = (props: any) => {
|
|
|
751
792
|
</Placeholder>
|
|
752
793
|
) : (
|
|
753
794
|
<AddressDetails
|
|
795
|
+
cart={cart}
|
|
754
796
|
navigation={navigation}
|
|
755
797
|
location={options?.address?.location}
|
|
756
798
|
businessLogo={businessDetails?.business?.logo}
|
|
@@ -766,14 +808,7 @@ const CheckoutUI = (props: any) => {
|
|
|
766
808
|
</ChSection>
|
|
767
809
|
)}
|
|
768
810
|
|
|
769
|
-
{
|
|
770
|
-
cart &&
|
|
771
|
-
cart?.valid &&
|
|
772
|
-
options.type === 1 &&
|
|
773
|
-
cart?.status !== 2 &&
|
|
774
|
-
validationFields?.fields?.checkout?.driver_tip?.enabled &&
|
|
775
|
-
driverTipsOptions && driverTipsOptions?.length > 0 &&
|
|
776
|
-
cart?.business_id &&
|
|
811
|
+
{driverTipsField &&
|
|
777
812
|
(
|
|
778
813
|
<ChSection>
|
|
779
814
|
<ChDriverTips>
|
|
@@ -833,6 +868,7 @@ const CheckoutUI = (props: any) => {
|
|
|
833
868
|
openUserModal={setIsOpen}
|
|
834
869
|
paymethodClicked={paymethodClicked}
|
|
835
870
|
setPaymethodClicked={setPaymethodClicked}
|
|
871
|
+
setUserHasCards={setUserHasCards}
|
|
836
872
|
/>
|
|
837
873
|
</ChPaymethods>
|
|
838
874
|
</ChSection>
|
|
@@ -911,6 +947,7 @@ const CheckoutUI = (props: any) => {
|
|
|
911
947
|
cart={cart}
|
|
912
948
|
isCartPending={cart?.status === 2}
|
|
913
949
|
onNavigationRedirect={onNavigationRedirect}
|
|
950
|
+
commentDelayTime={commentDelayTime}
|
|
914
951
|
placeSpotTypes={placeSpotTypes}
|
|
915
952
|
businessConfigs={businessConfigs}
|
|
916
953
|
maxDate={maxDate}
|
|
@@ -918,6 +955,8 @@ const CheckoutUI = (props: any) => {
|
|
|
918
955
|
creditPointPlanOnBusiness?.accumulation_rate ??
|
|
919
956
|
(!!creditPointPlanOnBusiness && creditPointPlan?.accumulation_rate) ?? 0
|
|
920
957
|
}
|
|
958
|
+
hideCommentsByValidationCheckout={!guestCheckoutComment?.enabled}
|
|
959
|
+
hideCouponByValidationCheckout={!guestCheckoutCoupon?.enabled}
|
|
921
960
|
/>
|
|
922
961
|
</>
|
|
923
962
|
)}
|
|
@@ -964,10 +1003,8 @@ const CheckoutUI = (props: any) => {
|
|
|
964
1003
|
{t('INVALID_CART_MOMENT', 'Selected schedule time is invalid, please select a schedule into the business schedule interval.')}
|
|
965
1004
|
</OText>
|
|
966
1005
|
)}
|
|
967
|
-
{
|
|
968
|
-
|
|
969
|
-
validationFields?.fields?.checkout?.driver_tip?.required &&
|
|
970
|
-
(Number(cart?.driver_tip) <= 0) && (
|
|
1006
|
+
{validateDriverTipField && !isGiftCardCart &&
|
|
1007
|
+
(
|
|
971
1008
|
<OText
|
|
972
1009
|
color={theme.colors.error}
|
|
973
1010
|
size={12}
|
|
@@ -975,7 +1012,6 @@ const CheckoutUI = (props: any) => {
|
|
|
975
1012
|
{t('WARNING_INVALID_DRIVER_TIP', 'Driver Tip is required.')}
|
|
976
1013
|
</OText>
|
|
977
1014
|
)}
|
|
978
|
-
|
|
979
1015
|
{validateCommentsCartField && (
|
|
980
1016
|
<OText
|
|
981
1017
|
color={theme.colors.error}
|
|
@@ -993,6 +1029,15 @@ const CheckoutUI = (props: any) => {
|
|
|
993
1029
|
{t('WARNING_CARD_ZIPCODE_REQUIRED', 'Your card selected has not zipcode')}
|
|
994
1030
|
</OText>
|
|
995
1031
|
)}
|
|
1032
|
+
{validateCouponField &&
|
|
1033
|
+
(
|
|
1034
|
+
<OText
|
|
1035
|
+
color={theme.colors.error}
|
|
1036
|
+
size={12}
|
|
1037
|
+
>
|
|
1038
|
+
{t('WARNING_INVALID_COUPON_FIELD', 'Coupon is required.')}
|
|
1039
|
+
</OText>
|
|
1040
|
+
)}
|
|
996
1041
|
</ChErrors>
|
|
997
1042
|
</View>
|
|
998
1043
|
)}
|
|
@@ -1010,20 +1055,23 @@ const CheckoutUI = (props: any) => {
|
|
|
1010
1055
|
<OModal
|
|
1011
1056
|
open={isOpen}
|
|
1012
1057
|
onClose={() => setIsOpen(false)}
|
|
1058
|
+
showToastInsideModal
|
|
1013
1059
|
>
|
|
1014
1060
|
<View style={styles.detailWrapper}>
|
|
1015
1061
|
<UserDetails
|
|
1016
1062
|
isUserDetailsEdit
|
|
1017
1063
|
cartStatus={cart?.status}
|
|
1018
1064
|
businessId={cart?.business_id}
|
|
1019
|
-
useValidationFields
|
|
1020
1065
|
useDefualtSessionManager
|
|
1021
1066
|
useSessionUser
|
|
1022
1067
|
isCheckout
|
|
1023
1068
|
isEdit
|
|
1024
1069
|
phoneUpdate={phoneUpdate}
|
|
1025
1070
|
togglePhoneUpdate={togglePhoneUpdate}
|
|
1071
|
+
isOrderTypeValidationField
|
|
1026
1072
|
requiredFields={requiredFields}
|
|
1073
|
+
checkoutFields={checkoutFields}
|
|
1074
|
+
isCheckoutPlace
|
|
1027
1075
|
hideUpdateButton
|
|
1028
1076
|
handlePlaceOrderAsGuest={handlePlaceOrderAsGuest}
|
|
1029
1077
|
onClose={() => {
|
|
@@ -69,10 +69,7 @@ export const CitiesControl = (props: any) => {
|
|
|
69
69
|
</View>
|
|
70
70
|
<OButton
|
|
71
71
|
text={t('CONTINUE', 'Continue')}
|
|
72
|
-
bgColor={theme.colors.primary}
|
|
73
|
-
borderColor={theme.colors.primary}
|
|
74
72
|
style={styles.btnStyle}
|
|
75
|
-
textStyle={{ color: 'white' }}
|
|
76
73
|
onClick={() => handleClick()}
|
|
77
74
|
/>
|
|
78
75
|
</Container>
|
|
@@ -102,9 +102,7 @@ const CouponControlUI = (props: any) => {
|
|
|
102
102
|
/>
|
|
103
103
|
<OButton
|
|
104
104
|
onClick={() => onButtonApplyClick()}
|
|
105
|
-
|
|
106
|
-
borderColor={theme.colors.primary}
|
|
107
|
-
textStyle={{ color: 'white', fontSize: 12 }}
|
|
105
|
+
textStyle={{ fontSize: 12 }}
|
|
108
106
|
imgRightSrc={null}
|
|
109
107
|
text={t('APPLY', 'Apply')}
|
|
110
108
|
isDisabled={!couponInput}
|
|
@@ -125,9 +125,7 @@ const DriverTipsUI = (props: any) => {
|
|
|
125
125
|
/>
|
|
126
126
|
<OButton
|
|
127
127
|
text={t('APPLY_TIP', 'Apply Tip')}
|
|
128
|
-
|
|
129
|
-
borderColor={theme.colors.primary}
|
|
130
|
-
textStyle={{ color: 'white', fontSize: 14 }}
|
|
128
|
+
textStyle={{ fontSize: 14 }}
|
|
131
129
|
imgRightSrc={null}
|
|
132
130
|
style={{ borderRadius: 5, height: 44 }}
|
|
133
131
|
isDisabled={parseFloat(value || '0') < 0 || parseFloat(value || '0') === driverTip || value === ''}
|
|
@@ -14,8 +14,7 @@ import {
|
|
|
14
14
|
|
|
15
15
|
export const Favorite = (props: any) => {
|
|
16
16
|
const {
|
|
17
|
-
navigation
|
|
18
|
-
franchiseId
|
|
17
|
+
navigation
|
|
19
18
|
} = props
|
|
20
19
|
const [, t] = useLanguage()
|
|
21
20
|
const theme = useTheme()
|
|
@@ -72,7 +71,6 @@ export const Favorite = (props: any) => {
|
|
|
72
71
|
originalURL='business'
|
|
73
72
|
location={`${orderState.options?.address?.location?.lat},${orderState.options?.address?.location?.lng}`}
|
|
74
73
|
propsToFetch={['id', 'name', 'header', 'logo', 'location', 'address', 'ribbon', 'timezone', 'schedule', 'open', 'delivery_price', 'distance', 'delivery_time', 'pickup_time', 'reviews', 'featured', 'offers', 'food', 'laundry', 'alcohol', 'groceries', 'slug']}
|
|
75
|
-
franchiseId={franchiseId}
|
|
76
74
|
/>
|
|
77
75
|
)}
|
|
78
76
|
{tabSelected === 'products' && (
|
|
@@ -81,7 +79,6 @@ export const Favorite = (props: any) => {
|
|
|
81
79
|
originalURL='products'
|
|
82
80
|
onNavigationRedirect={onRedirect}
|
|
83
81
|
isProduct
|
|
84
|
-
franchiseId={franchiseId}
|
|
85
82
|
/>
|
|
86
83
|
)}
|
|
87
84
|
{tabSelected === 'orders' && (
|
|
@@ -90,7 +87,6 @@ export const Favorite = (props: any) => {
|
|
|
90
87
|
favoriteURL='favorite_orders'
|
|
91
88
|
originalURL='orders'
|
|
92
89
|
isOrder
|
|
93
|
-
franchiseId={franchiseId}
|
|
94
90
|
/>
|
|
95
91
|
)}
|
|
96
92
|
</Container>
|
|
@@ -270,7 +270,6 @@ const FavoriteListUI = (props: FavoriteParams) => {
|
|
|
270
270
|
onClick={() => getFavoriteList(pagination?.currentPage + 1)}
|
|
271
271
|
text={t('LOAD_MORE_ITEMS', 'Load more items')}
|
|
272
272
|
imgRightSrc={null}
|
|
273
|
-
textStyle={{ color: theme.colors.white }}
|
|
274
273
|
style={{ borderRadius: 7.6, shadowOpacity: 0, marginTop: 20 }}
|
|
275
274
|
/>
|
|
276
275
|
</WrappButton>
|
|
@@ -64,7 +64,7 @@ const ForgotPasswordUI = (props: any) => {
|
|
|
64
64
|
handleReCaptcha(null)
|
|
65
65
|
if (reCaptchaValue) return
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
if (!recaptchaConfig?.siteKey) {
|
|
68
68
|
showToast(ToastType.Error, t('NO_RECAPTCHA_SITE_KEY', 'The config doesn\'t have recaptcha site key'));
|
|
69
69
|
return
|
|
70
70
|
}
|
|
@@ -73,7 +73,7 @@ const ForgotPasswordUI = (props: any) => {
|
|
|
73
73
|
return
|
|
74
74
|
}
|
|
75
75
|
recaptchaRef.current.open()
|
|
76
|
-
|
|
76
|
+
}
|
|
77
77
|
|
|
78
78
|
const onRecaptchaVerify = (token: any) => {
|
|
79
79
|
setRecaptchaVerified(true)
|
|
@@ -92,8 +92,8 @@ const ForgotPasswordUI = (props: any) => {
|
|
|
92
92
|
formState.result?.result && showToast(
|
|
93
93
|
ToastType.Error,
|
|
94
94
|
typeof formState.result?.result === 'string'
|
|
95
|
-
|
|
96
|
-
|
|
95
|
+
? formState.result?.result
|
|
96
|
+
: formState.result?.result[0]
|
|
97
97
|
)
|
|
98
98
|
return
|
|
99
99
|
}
|
|
@@ -208,9 +208,7 @@ const ForgotPasswordUI = (props: any) => {
|
|
|
208
208
|
|
|
209
209
|
<OButton
|
|
210
210
|
text={emailSent && !formState.result?.error ? t('LINK_SEND_FORGOT_PASSWORD', 'Link Sent') : t('FRONT_RECOVER_PASSWORD', 'Recover Password')}
|
|
211
|
-
|
|
212
|
-
bgColor={emailSent && !formState.result?.error ? theme.colors.disabled : theme.colors.primary}
|
|
213
|
-
borderColor={emailSent && !formState.result?.error ? theme.colors.disabled : theme.colors.primary}
|
|
211
|
+
isDisabled={formState.loading || emailSent && !formState.result?.error}
|
|
214
212
|
isLoading={formState.loading}
|
|
215
213
|
imgRightSrc={null}
|
|
216
214
|
onClick={emailSent && !formState.result?.error ? () => { } : handleSubmit(onSubmit)}
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
Container
|
|
13
13
|
} from './styles'
|
|
14
14
|
|
|
15
|
-
export const GiftCardUI =
|
|
15
|
+
export const GiftCardUI = React.memo((props: any) => {
|
|
16
16
|
const {
|
|
17
17
|
navigation
|
|
18
18
|
} = props
|
|
@@ -57,9 +57,7 @@ export const GiftCardUI = React.memo((props: any) => {
|
|
|
57
57
|
<OButton
|
|
58
58
|
onClick={() => setOpenModal('purchase')}
|
|
59
59
|
text={t('PURCHASE', 'Purchase')}
|
|
60
|
-
|
|
61
|
-
borderColor={theme.colors.primary}
|
|
62
|
-
textStyle={{ color: 'white', fontSize: 13 }}
|
|
60
|
+
textStyle={{ fontSize: 13 }}
|
|
63
61
|
imgRightSrc={null}
|
|
64
62
|
style={{ ...style.btnStyle, marginRight: 14 }}
|
|
65
63
|
/>
|
|
@@ -76,26 +74,26 @@ export const GiftCardUI = React.memo((props: any) => {
|
|
|
76
74
|
</View>
|
|
77
75
|
|
|
78
76
|
<OModal
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
open={openModal === 'purchase'}
|
|
78
|
+
onClose={() => setOpenModal(null)}
|
|
79
|
+
entireModal
|
|
82
80
|
customClose
|
|
83
|
-
|
|
84
|
-
|
|
81
|
+
>
|
|
82
|
+
<PurchaseGiftCard
|
|
85
83
|
handleCustomGoToCheckout={handleCustomGoToCheckout}
|
|
86
84
|
onClose={() => setOpenModal(null)}
|
|
87
85
|
/>
|
|
88
|
-
|
|
86
|
+
</OModal>
|
|
89
87
|
<OModal
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
88
|
+
open={openModal === 'redeem'}
|
|
89
|
+
onClose={() => setOpenModal(null)}
|
|
90
|
+
entireModal
|
|
93
91
|
customClose
|
|
94
|
-
|
|
95
|
-
|
|
92
|
+
>
|
|
93
|
+
<RedeemGiftCard
|
|
96
94
|
onClose={() => setOpenModal(null)}
|
|
97
95
|
/>
|
|
98
|
-
|
|
96
|
+
</OModal>
|
|
99
97
|
</Container>
|
|
100
98
|
)
|
|
101
|
-
})
|
|
99
|
+
})
|
|
@@ -58,12 +58,10 @@ const PurchaseGiftCardUI = (props: any) => {
|
|
|
58
58
|
borderWidth: 0,
|
|
59
59
|
width: 26,
|
|
60
60
|
height: 26,
|
|
61
|
-
backgroundColor: '#FFF',
|
|
62
|
-
borderColor: '#FFF',
|
|
63
|
-
shadowColor: '#FFF',
|
|
64
61
|
paddingLeft: 0,
|
|
65
62
|
paddingRight: 0,
|
|
66
63
|
}}
|
|
64
|
+
useArrow
|
|
67
65
|
onClick={onClose}
|
|
68
66
|
icon={AntDesignIcon}
|
|
69
67
|
iconProps={{
|
|
@@ -113,9 +111,7 @@ const PurchaseGiftCardUI = (props: any) => {
|
|
|
113
111
|
<OButton
|
|
114
112
|
onClick={() => handleAccept()}
|
|
115
113
|
text={t('ACCEPT', 'Accept')}
|
|
116
|
-
|
|
117
|
-
borderColor={theme.colors.primary}
|
|
118
|
-
textStyle={{ color: 'white', fontSize: 13 }}
|
|
114
|
+
textStyle={{ fontSize: 13 }}
|
|
119
115
|
imgRightSrc={null}
|
|
120
116
|
style={style.btnStyle}
|
|
121
117
|
isDisabled={!selectedProduct}
|
|
@@ -130,4 +126,4 @@ export const PurchaseGiftCard = (props: any) => {
|
|
|
130
126
|
UIComponent: PurchaseGiftCardUI
|
|
131
127
|
}
|
|
132
128
|
return <PurchaseGiftCardController {...purchaseGiftCardProps} />
|
|
133
|
-
}
|
|
129
|
+
}
|