ordering-ui-react-native 0.17.72 → 0.17.73-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 -24
- 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 +186 -114
- package/themes/business/src/components/PreviousOrders/styles.tsx +1 -1
- 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 +77 -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 +355 -123
- 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/GiftCardUI/index.tsx +96 -0
- package/themes/original/src/components/GiftCard/GiftCardUI/styles.tsx +5 -0
- package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +100 -0
- package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +8 -0
- package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +191 -0
- package/themes/original/src/components/GiftCard/RedeemGiftCard/styles.tsx +8 -0
- package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +165 -0
- package/themes/original/src/components/GiftCard/SendGiftCard/styles.tsx +9 -0
- 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 +191 -363
- 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 +88 -59
- 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 +78 -35
- 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 +12 -9
- 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 +66 -30
- 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 +40 -11
- package/themes/original/src/utils/index.tsx +273 -1
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import { useLanguage } from 'ordering-components/native'
|
|
3
3
|
import { HelpOrderParams } from '../../types'
|
|
4
|
-
import { OText,
|
|
4
|
+
import { OText, OIcon } from '../shared'
|
|
5
5
|
import { useTheme } from 'styled-components/native'
|
|
6
|
-
import { StyleSheet
|
|
6
|
+
import { StyleSheet } from 'react-native'
|
|
7
7
|
import { WebView } from 'react-native-webview'
|
|
8
|
-
import AntDesignIcon from 'react-native-vector-icons/AntDesign'
|
|
9
8
|
import NavBar from '../NavBar'
|
|
10
9
|
|
|
11
10
|
import {
|
|
12
|
-
Content
|
|
11
|
+
Content,
|
|
12
|
+
Container
|
|
13
13
|
} from './styles'
|
|
14
14
|
|
|
15
15
|
export const HelpOrder = (props: HelpOrderParams) => {
|
|
@@ -20,15 +20,6 @@ export const HelpOrder = (props: HelpOrderParams) => {
|
|
|
20
20
|
const theme = useTheme()
|
|
21
21
|
|
|
22
22
|
const styles = StyleSheet.create({
|
|
23
|
-
btnBackArrow: {
|
|
24
|
-
borderWidth: 0,
|
|
25
|
-
backgroundColor: theme.colors.white,
|
|
26
|
-
borderColor: theme.colors.white,
|
|
27
|
-
shadowColor: theme.colors.white,
|
|
28
|
-
display: 'flex',
|
|
29
|
-
justifyContent: 'flex-start',
|
|
30
|
-
paddingLeft: 0,
|
|
31
|
-
},
|
|
32
23
|
imageStyle: {
|
|
33
24
|
width: '100%',
|
|
34
25
|
height: 120
|
|
@@ -42,7 +33,7 @@ export const HelpOrder = (props: HelpOrderParams) => {
|
|
|
42
33
|
const goToBack = () => navigation?.canGoBack() && navigation.goBack()
|
|
43
34
|
|
|
44
35
|
return (
|
|
45
|
-
|
|
36
|
+
<Container>
|
|
46
37
|
<NavBar
|
|
47
38
|
title={t('HELP_WITH_ORDER', 'Help with an order')}
|
|
48
39
|
onActionLeft={goToBack}
|
|
@@ -75,6 +66,6 @@ export const HelpOrder = (props: HelpOrderParams) => {
|
|
|
75
66
|
style={styles.videoStyle}
|
|
76
67
|
/>
|
|
77
68
|
</Content>
|
|
78
|
-
|
|
69
|
+
</Container>
|
|
79
70
|
)
|
|
80
71
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { useLanguage, useOrder } from 'ordering-components/native';
|
|
1
|
+
import React, { useEffect } from 'react';
|
|
2
|
+
import { useLanguage, useOrder, useConfig } from 'ordering-components/native';
|
|
3
3
|
import { useTheme } from 'styled-components/native';
|
|
4
4
|
import { StyleSheet, View } from 'react-native';
|
|
5
5
|
import { OButton, OIcon, OText } from '../shared';
|
|
@@ -8,12 +8,21 @@ import { TouchableOpacity } from 'react-native-gesture-handler';
|
|
|
8
8
|
import { useWindowDimensions, Platform } from 'react-native';
|
|
9
9
|
|
|
10
10
|
export const Home = (props: any) => {
|
|
11
|
-
const { onNavigationRedirect } = props;
|
|
11
|
+
const { onNavigationRedirect, businessSlug } = props;
|
|
12
12
|
const { width, height } = useWindowDimensions();
|
|
13
13
|
const [, t] = useLanguage();
|
|
14
14
|
const [orderState] = useOrder();
|
|
15
|
+
const [{ configs }] = useConfig()
|
|
15
16
|
|
|
16
17
|
const theme = useTheme();
|
|
18
|
+
const unaddressedTypes = configs?.unaddressed_order_types_allowed?.value.split('|').map((value: any) => Number(value)) || []
|
|
19
|
+
const isAllowUnaddressOrderType = unaddressedTypes.includes(orderState?.options?.type)
|
|
20
|
+
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
if (isAllowUnaddressOrderType) {
|
|
23
|
+
onNavigationRedirect(!!businessSlug ? 'Business' : 'BusinessList')
|
|
24
|
+
}
|
|
25
|
+
}, [isAllowUnaddressOrderType])
|
|
17
26
|
|
|
18
27
|
return (
|
|
19
28
|
<View style={styles.container}>
|
|
@@ -60,7 +69,7 @@ export const Home = (props: any) => {
|
|
|
60
69
|
style={{ ...styles.textLink, marginTop: 12 }}
|
|
61
70
|
onPress={() =>
|
|
62
71
|
orderState?.options?.address?.address
|
|
63
|
-
? onNavigationRedirect('BusinessList', { isGuestUser: true })
|
|
72
|
+
? onNavigationRedirect(!!businessSlug ? 'Business' : 'BusinessList', { isGuestUser: true })
|
|
64
73
|
: onNavigationRedirect('AddressForm', { isGuestUser: true })
|
|
65
74
|
}>
|
|
66
75
|
<OText weight="normal" size={18} color={theme.colors.white}>
|
|
@@ -6,6 +6,7 @@ import { NotFoundSource } from '../NotFoundSource'
|
|
|
6
6
|
|
|
7
7
|
import { ItemWrap } from './styles'
|
|
8
8
|
import { OrdersOptionParams } from '../../types'
|
|
9
|
+
import { getOrderStatus } from '../../utils'
|
|
9
10
|
|
|
10
11
|
import {
|
|
11
12
|
Placeholder,
|
|
@@ -67,40 +68,6 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
|
|
|
67
68
|
return moment(dateStr).format('MMMM DD,YYYY - hh:mm a');
|
|
68
69
|
}
|
|
69
70
|
|
|
70
|
-
const getOrderStatus = (s: string) => {
|
|
71
|
-
const status = parseInt(s)
|
|
72
|
-
const orderStatus = [
|
|
73
|
-
{ key: 0, value: t('PENDING', 'Pending') },
|
|
74
|
-
{ key: 1, value: t('COMPLETED', 'Completed') },
|
|
75
|
-
{ key: 2, value: t('REJECTED', 'Rejected') },
|
|
76
|
-
{ key: 3, value: t('DRIVER_IN_BUSINESS', 'Driver in business') },
|
|
77
|
-
{ key: 4, value: t('PREPARATION_COMPLETED', 'Preparation Completed') },
|
|
78
|
-
{ key: 5, value: t('REJECTED_BY_BUSINESS', 'Rejected by business') },
|
|
79
|
-
{ key: 6, value: t('REJECTED_BY_DRIVER', 'Rejected by Driver') },
|
|
80
|
-
{ key: 7, value: t('ACCEPTED_BY_BUSINESS', 'Accepted by business') },
|
|
81
|
-
{ key: 8, value: t('ACCEPTED_BY_DRIVER', 'Accepted by driver') },
|
|
82
|
-
{ key: 9, value: t('PICK_UP_COMPLETED_BY_DRIVER', 'Pick up completed by driver') },
|
|
83
|
-
{ key: 10, value: t('PICK_UP_FAILED_BY_DRIVER', 'Pick up Failed by driver') },
|
|
84
|
-
{ key: 11, value: t('DELIVERY_COMPLETED_BY_DRIVER', 'Delivery completed by driver') },
|
|
85
|
-
{ key: 12, value: t('DELIVERY_FAILED_BY_DRIVER', 'Delivery Failed by driver') },
|
|
86
|
-
{ key: 13, value: t('PREORDER', 'PreOrder') },
|
|
87
|
-
{ key: 14, value: t('ORDER_NOT_READY', 'Order not ready') },
|
|
88
|
-
{ key: 15, value: t('ORDER_PICKEDUP_COMPLETED_BY_CUSTOMER', 'Order picked up completed by customer') },
|
|
89
|
-
{ key: 16, value: t('CANCELLED_BY_CUSTOMER', 'Cancelled by customer') },
|
|
90
|
-
{ key: 17, value: t('ORDER_NOT_PICKEDUP_BY_CUSTOMER', 'Order not picked up by customer') },
|
|
91
|
-
{ key: 18, value: t('DRIVER_ALMOST_ARRIVED_TO_BUSINESS', 'Driver almost arrived to business') },
|
|
92
|
-
{ key: 19, value: t('DRIVER_ALMOST_ARRIVED_TO_CUSTOMER', 'Driver almost arrived to customer') },
|
|
93
|
-
{ key: 20, value: t('ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS', 'Customer almost arrived to business') },
|
|
94
|
-
{ key: 21, value: t('ORDER_CUSTOMER_ARRIVED_BUSINESS', 'Customer arrived to business') },
|
|
95
|
-
{ key: 22, value: t('ORDER_LOOKING_FOR_DRIVER', 'Looking for driver') },
|
|
96
|
-
{ key: 23, value: t('ORDER_DRIVER_ON_WAY', 'Driver on way') }
|
|
97
|
-
]
|
|
98
|
-
|
|
99
|
-
const objectStatus = orderStatus.find((o) => o.key === status)
|
|
100
|
-
|
|
101
|
-
return objectStatus && objectStatus
|
|
102
|
-
}
|
|
103
|
-
|
|
104
71
|
return (
|
|
105
72
|
<>
|
|
106
73
|
{/* {(orders.length > 0) && (
|
|
@@ -1,22 +1,27 @@
|
|
|
1
|
-
import React, { useEffect, useState } from 'react'
|
|
1
|
+
import React, { useEffect, useRef, useState } from 'react'
|
|
2
2
|
import { formatSeconds } from '../../../utils'
|
|
3
|
-
import { StyleSheet, TouchableOpacity } from 'react-native';
|
|
3
|
+
import { StyleSheet, TouchableOpacity, View, SafeAreaView } from 'react-native';
|
|
4
4
|
import { useCountdownTimer } from '../../../../../../src/hooks/useCountdownTimer';
|
|
5
5
|
import { useLanguage } from 'ordering-components/native';
|
|
6
6
|
import { OTPContainer } from './styles';
|
|
7
|
-
import { OText, OButton } from '../../shared';
|
|
8
|
-
import OtpInputs from 'react-native-otp-inputs';
|
|
7
|
+
import { OText, OButton, OIcon } from '../../shared';
|
|
8
|
+
import OtpInputs, { OtpInputsRef } from 'react-native-otp-inputs';
|
|
9
9
|
import { useTheme } from 'styled-components/native';
|
|
10
10
|
import { otpParams } from '../../../types'
|
|
11
|
+
import { ActivityIndicator } from 'react-native';
|
|
11
12
|
|
|
12
13
|
export const Otp = (props: otpParams) => {
|
|
13
14
|
const {
|
|
15
|
+
pinCount,
|
|
16
|
+
otpError,
|
|
17
|
+
setOtpError,
|
|
18
|
+
setAlertState,
|
|
14
19
|
willVerifyOtpState,
|
|
20
|
+
isCheckingCode,
|
|
21
|
+
setCheckingCode,
|
|
15
22
|
setWillVerifyOtpState,
|
|
16
|
-
onSubmit,
|
|
17
23
|
handleLoginOtp,
|
|
18
|
-
|
|
19
|
-
pinCount
|
|
24
|
+
onSubmit,
|
|
20
25
|
} = props
|
|
21
26
|
|
|
22
27
|
const theme = useTheme();
|
|
@@ -24,8 +29,7 @@ export const Otp = (props: otpParams) => {
|
|
|
24
29
|
const [otpLeftTime, _, resetOtpLeftTime]: any = useCountdownTimer(
|
|
25
30
|
600, willVerifyOtpState)
|
|
26
31
|
|
|
27
|
-
const
|
|
28
|
-
|
|
32
|
+
const inputRef = useRef<OtpInputsRef | any>(null)
|
|
29
33
|
|
|
30
34
|
const handleOnSubmit = () => {
|
|
31
35
|
setAlertState({
|
|
@@ -36,6 +40,21 @@ export const Otp = (props: otpParams) => {
|
|
|
36
40
|
onSubmit()
|
|
37
41
|
}
|
|
38
42
|
|
|
43
|
+
const handleChangeCode = (code : string) => {
|
|
44
|
+
if (code?.length === pinCount) {
|
|
45
|
+
setCheckingCode(true)
|
|
46
|
+
handleLoginOtp(code)
|
|
47
|
+
inputRef.current?.reset && inputRef.current.reset()
|
|
48
|
+
setTimeout(() => inputRef.current?.focus && inputRef.current.focus(), 100)
|
|
49
|
+
}
|
|
50
|
+
setOtpError(null)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const handleCloseOtp = () => {
|
|
54
|
+
setWillVerifyOtpState(false)
|
|
55
|
+
setOtpError(null)
|
|
56
|
+
}
|
|
57
|
+
|
|
39
58
|
useEffect(() => {
|
|
40
59
|
if (otpLeftTime === 0) {
|
|
41
60
|
setAlertState({
|
|
@@ -46,12 +65,6 @@ export const Otp = (props: otpParams) => {
|
|
|
46
65
|
}
|
|
47
66
|
}, [otpLeftTime])
|
|
48
67
|
|
|
49
|
-
useEffect(() => {
|
|
50
|
-
if (code?.length === (pinCount || 6)) {
|
|
51
|
-
handleLoginOtp(code)
|
|
52
|
-
}
|
|
53
|
-
}, [code])
|
|
54
|
-
|
|
55
68
|
const loginStyle = StyleSheet.create({
|
|
56
69
|
container: {
|
|
57
70
|
width: '100%',
|
|
@@ -73,28 +86,77 @@ export const Otp = (props: otpParams) => {
|
|
|
73
86
|
color: theme.colors.primary,
|
|
74
87
|
fontSize: 16
|
|
75
88
|
},
|
|
89
|
+
wrapperIcon: {
|
|
90
|
+
alignItems: 'center',
|
|
91
|
+
justifyContent: 'center',
|
|
92
|
+
paddingRight: 20
|
|
93
|
+
},
|
|
94
|
+
closeContainer: {
|
|
95
|
+
width: '100%',
|
|
96
|
+
flexDirection: 'row',
|
|
97
|
+
alignItems: 'center'
|
|
98
|
+
},
|
|
99
|
+
checkingCode: {
|
|
100
|
+
height: 50,
|
|
101
|
+
width: '100%',
|
|
102
|
+
marginVertical: 30,
|
|
103
|
+
justifyContent: 'center',
|
|
104
|
+
alignItems: 'center'
|
|
105
|
+
}
|
|
76
106
|
});
|
|
77
107
|
|
|
78
108
|
return (
|
|
79
|
-
|
|
109
|
+
<SafeAreaView style={{ flex: 1, backgroundColor: theme.colors.backgroundPage }}>
|
|
80
110
|
<OTPContainer>
|
|
111
|
+
<View
|
|
112
|
+
style={loginStyle.closeContainer}>
|
|
113
|
+
<TouchableOpacity onPress={() => handleCloseOtp()} style={loginStyle.wrapperIcon}>
|
|
114
|
+
<OIcon
|
|
115
|
+
src={theme.images.general.close}
|
|
116
|
+
width={22}
|
|
117
|
+
/>
|
|
118
|
+
</TouchableOpacity>
|
|
119
|
+
<OText size={22}>
|
|
120
|
+
{t('ENTER_VERIFICATION_CODE', 'Enter verification code')}
|
|
121
|
+
</OText>
|
|
122
|
+
</View>
|
|
81
123
|
<OText size={24}>
|
|
82
124
|
{formatSeconds(otpLeftTime)}
|
|
83
125
|
</OText>
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
126
|
+
{isCheckingCode && (
|
|
127
|
+
<View style={loginStyle.checkingCode}>
|
|
128
|
+
<OText size={18}>
|
|
129
|
+
<ActivityIndicator size="large" color={theme.colors.primary} />
|
|
130
|
+
</OText>
|
|
131
|
+
</View>
|
|
132
|
+
)}
|
|
133
|
+
{!isCheckingCode && (
|
|
134
|
+
<OtpInputs
|
|
135
|
+
ref={inputRef}
|
|
136
|
+
autofillFromClipboard={false}
|
|
137
|
+
numberOfInputs={pinCount}
|
|
138
|
+
style={loginStyle.container}
|
|
139
|
+
returnKeyType={'done'}
|
|
140
|
+
inputStyles={loginStyle.underlineStyleBase}
|
|
141
|
+
handleChange={handleChangeCode}
|
|
142
|
+
/>
|
|
143
|
+
)}
|
|
144
|
+
{!!otpError && (
|
|
145
|
+
<OText
|
|
146
|
+
color={theme?.colors?.error}
|
|
147
|
+
size={20}
|
|
148
|
+
mBottom={10}
|
|
149
|
+
>
|
|
150
|
+
{t(otpError, otpError)}
|
|
151
|
+
</OText>
|
|
152
|
+
)}
|
|
91
153
|
<TouchableOpacity onPress={() => handleOnSubmit()} disabled={otpLeftTime > 520}>
|
|
92
154
|
<OText size={16} mBottom={30} color={otpLeftTime > 520 ? theme.colors.disabled : theme.colors.primary}>
|
|
93
155
|
{t('RESEND_CODE', 'Resend code')}
|
|
94
156
|
</OText>
|
|
95
157
|
</TouchableOpacity>
|
|
96
158
|
<OButton
|
|
97
|
-
onClick={() =>
|
|
159
|
+
onClick={() => handleCloseOtp()}
|
|
98
160
|
bgColor={theme.colors.white}
|
|
99
161
|
borderColor={theme.colors.primary}
|
|
100
162
|
textStyle={{ color: theme.colors.primary }}
|
|
@@ -102,6 +164,10 @@ export const Otp = (props: otpParams) => {
|
|
|
102
164
|
text={t('CANCEL', 'Cancel')}
|
|
103
165
|
/>
|
|
104
166
|
</OTPContainer>
|
|
105
|
-
|
|
167
|
+
</SafeAreaView>
|
|
106
168
|
)
|
|
107
169
|
}
|
|
170
|
+
|
|
171
|
+
Otp.defaultProps = {
|
|
172
|
+
pinCount: 6
|
|
173
|
+
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import React, { useEffect, useState, useRef } from 'react';
|
|
2
|
-
import { StyleSheet, View, Keyboard,
|
|
2
|
+
import { StyleSheet, View, Keyboard, Modal } from 'react-native';
|
|
3
3
|
import Spinner from 'react-native-loading-spinner-overlay';
|
|
4
4
|
import { useForm, Controller } from 'react-hook-form';
|
|
5
5
|
import { PhoneInputNumber } from '../PhoneInputNumber';
|
|
6
6
|
import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
|
|
7
7
|
import Recaptcha from 'react-native-recaptcha-that-works'
|
|
8
8
|
import ReCaptcha from '@fatnlazycat/react-native-recaptcha-v3'
|
|
9
|
+
import ReactNativeHapticFeedback from "react-native-haptic-feedback";
|
|
9
10
|
|
|
10
11
|
import {
|
|
11
12
|
LoginForm as LoginFormController,
|
|
@@ -72,6 +73,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
72
73
|
generateOtpCode,
|
|
73
74
|
useLoginOtpEmail,
|
|
74
75
|
useLoginOtpCellphone,
|
|
76
|
+
isGuest
|
|
75
77
|
} = props;
|
|
76
78
|
|
|
77
79
|
const [, { showToast }] = useToast();
|
|
@@ -95,12 +97,15 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
95
97
|
const [recaptchaVerified, setRecaptchaVerified] = useState(false)
|
|
96
98
|
const [alertState, setAlertState] = useState({ open: false, title: '', content: [] })
|
|
97
99
|
const [tabLayouts, setTabLayouts] = useState<any>({})
|
|
100
|
+
const [otpError, setOtpError] = useState(null)
|
|
98
101
|
const tabsRef = useRef<any>(null)
|
|
99
102
|
const enabledPoweredByOrdering = configs?.powered_by_ordering_module?.value
|
|
100
103
|
const theme = useTheme();
|
|
101
104
|
const isOtpEmail = loginTab === 'otp' && otpType === 'email'
|
|
102
105
|
const isOtpCellphone = loginTab === 'otp' && otpType === 'cellphone'
|
|
103
106
|
|
|
107
|
+
const [isCheckingCode, setCheckingCode] = useState(false)
|
|
108
|
+
|
|
104
109
|
const googleLoginEnabled = configs?.google_login_enabled?.value === '1' || !configs?.google_login_enabled?.enabled
|
|
105
110
|
const facebookLoginEnabled = configs?.facebook_login_enabled?.value === '1' || !configs?.facebook_login_enabled?.enabled
|
|
106
111
|
const appleLoginEnabled = configs?.apple_login_enabled?.value === '1' || !configs?.apple_login_enabled?.enabled
|
|
@@ -160,12 +165,24 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
160
165
|
handleCategoryScroll(otpType ? `${val}_${otpType}` : val)
|
|
161
166
|
};
|
|
162
167
|
|
|
168
|
+
const vibrateApp = (impact?: string) => {
|
|
169
|
+
const options = {
|
|
170
|
+
enableVibrateFallback: true,
|
|
171
|
+
ignoreAndroidSystemSettings: false
|
|
172
|
+
};
|
|
173
|
+
ReactNativeHapticFeedback.trigger(impact || "impactLight", options);
|
|
174
|
+
}
|
|
175
|
+
|
|
163
176
|
const onSubmit = (values?: any) => {
|
|
164
177
|
Keyboard.dismiss();
|
|
165
178
|
if (loginTab === 'otp') {
|
|
166
179
|
if (phoneInputData.error && (loginTab !== 'otp' || (otpType === 'cellphone' && loginTab === 'otp'))) {
|
|
167
180
|
showToast(ToastType.Error, t('INVALID_PHONE_NUMBER', 'Invalid phone number'));
|
|
168
|
-
|
|
181
|
+
vibrateApp()
|
|
182
|
+
return
|
|
183
|
+
}
|
|
184
|
+
if (otpType === 'cellphone' && phoneInputData?.error && !phoneInputData?.phone?.cellphone) {
|
|
185
|
+
showToast(ToastType.Error, t('PHONE_NUMBER_REQUIRED', 'Phone number is required'));
|
|
169
186
|
return
|
|
170
187
|
}
|
|
171
188
|
if (loginTab === 'otp') {
|
|
@@ -178,7 +195,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
178
195
|
} else {
|
|
179
196
|
if (phoneInputData.error) {
|
|
180
197
|
showToast(ToastType.Error, phoneInputData.error);
|
|
181
|
-
|
|
198
|
+
vibrateApp()
|
|
182
199
|
return;
|
|
183
200
|
}
|
|
184
201
|
handleButtonLoginClick({
|
|
@@ -191,7 +208,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
191
208
|
const handleVerifyCodeClick = () => {
|
|
192
209
|
if (phoneInputData.error) {
|
|
193
210
|
showToast(ToastType.Error, phoneInputData.error);
|
|
194
|
-
|
|
211
|
+
vibrateApp()
|
|
195
212
|
return;
|
|
196
213
|
}
|
|
197
214
|
if (
|
|
@@ -206,7 +223,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
206
223
|
'The field Mobile phone is required.',
|
|
207
224
|
),
|
|
208
225
|
);
|
|
209
|
-
|
|
226
|
+
vibrateApp()
|
|
210
227
|
return;
|
|
211
228
|
}
|
|
212
229
|
handleSendVerifyCode && handleSendVerifyCode(phoneInputData.phone);
|
|
@@ -221,19 +238,19 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
221
238
|
};
|
|
222
239
|
|
|
223
240
|
const handleChangeInputEmail = (value: string, onChange: any) => {
|
|
224
|
-
onChange(value.toLowerCase().replace(/[&,()%";:ç?<>{}\\[\]\s]/g, ''));
|
|
241
|
+
onChange(value.toLowerCase().trim().replace(/[&,()%";:ç?<>{}\\[\]\s]/g, ''));
|
|
225
242
|
};
|
|
226
243
|
|
|
227
244
|
const handleOpenRecaptcha = () => {
|
|
228
245
|
setRecaptchaVerified(false)
|
|
229
246
|
if (!recaptchaConfig?.siteKey) {
|
|
230
247
|
showToast(ToastType.Error, t('NO_RECAPTCHA_SITE_KEY', 'The config doesn\'t have recaptcha site key'));
|
|
231
|
-
|
|
248
|
+
vibrateApp()
|
|
232
249
|
return
|
|
233
250
|
}
|
|
234
251
|
if (!recaptchaConfig?.baseUrl) {
|
|
235
252
|
showToast(ToastType.Error, t('NO_RECAPTCHA_BASE_URL', 'The config doesn\'t have recaptcha base url'));
|
|
236
|
-
|
|
253
|
+
vibrateApp()
|
|
237
254
|
return
|
|
238
255
|
}
|
|
239
256
|
|
|
@@ -250,9 +267,15 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
250
267
|
setOtpType(type)
|
|
251
268
|
}
|
|
252
269
|
|
|
253
|
-
const handleLoginOtp = (code: string) => {
|
|
254
|
-
|
|
255
|
-
|
|
270
|
+
const handleLoginOtp = async (code: string) => {
|
|
271
|
+
if (!code) return
|
|
272
|
+
const logged = await handleButtonLoginClick({ code })
|
|
273
|
+
setCheckingCode(false)
|
|
274
|
+
if (logged) {
|
|
275
|
+
setWillVerifyOtpState(false)
|
|
276
|
+
} else {
|
|
277
|
+
setOtpError(t('OTP_CODE_INCORRECT', 'Otp code incorrect'))
|
|
278
|
+
}
|
|
256
279
|
}
|
|
257
280
|
|
|
258
281
|
const closeAlert = () => {
|
|
@@ -310,7 +333,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
310
333
|
baseUrl: configs?.security_recaptcha_base_url?.value || null
|
|
311
334
|
})
|
|
312
335
|
showToast(ToastType.Info, t('TRY_AGAIN', 'Please try again'))
|
|
313
|
-
|
|
336
|
+
vibrateApp()
|
|
314
337
|
return
|
|
315
338
|
}
|
|
316
339
|
formState.result?.result &&
|
|
@@ -320,7 +343,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
320
343
|
? formState.result?.result
|
|
321
344
|
: formState.result?.result[0],
|
|
322
345
|
);
|
|
323
|
-
formState.result?.result &&
|
|
346
|
+
formState.result?.result && vibrateApp()
|
|
324
347
|
}
|
|
325
348
|
}, [formState]);
|
|
326
349
|
|
|
@@ -332,7 +355,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
332
355
|
? verifyPhoneState?.result?.result
|
|
333
356
|
: verifyPhoneState?.result?.result[0];
|
|
334
357
|
verifyPhoneState.result?.result && showToast(ToastType.Error, message);
|
|
335
|
-
verifyPhoneState.result?.result &&
|
|
358
|
+
verifyPhoneState.result?.result && vibrateApp();
|
|
336
359
|
setIsLoadingVerifyModal(false);
|
|
337
360
|
return;
|
|
338
361
|
}
|
|
@@ -373,20 +396,24 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
373
396
|
}, [checkPhoneCodeState])
|
|
374
397
|
|
|
375
398
|
useEffect(() => {
|
|
376
|
-
if (!!Object.values(errors)?.length)
|
|
399
|
+
if (!!Object.values(errors)?.length) vibrateApp()
|
|
377
400
|
}, [errors])
|
|
378
401
|
|
|
379
402
|
return (
|
|
380
403
|
<Container>
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
404
|
+
{isGuest ? (
|
|
405
|
+
<OText style={{ textAlign: 'center', marginBottom: 10 }} size={18}>{t('LOGIN', 'Login')}</OText>
|
|
406
|
+
) : (
|
|
407
|
+
<NavBar
|
|
408
|
+
title={t('LOGIN', 'Login')}
|
|
409
|
+
titleAlign={'center'}
|
|
410
|
+
onActionLeft={() => navigation?.canGoBack() && navigation.goBack()}
|
|
411
|
+
showCall={false}
|
|
412
|
+
btnStyle={{ paddingLeft: 0 }}
|
|
413
|
+
titleWrapStyle={{ paddingHorizontal: 0 }}
|
|
414
|
+
titleStyle={{ marginRight: 0, marginLeft: 0 }}
|
|
415
|
+
/>
|
|
416
|
+
)}
|
|
390
417
|
<FormSide>
|
|
391
418
|
{(Number(useLoginByEmail) + Number(useLoginByCellphone) + Number(useLoginOtpEmail) + Number(useLoginOtpCellphone) > 1) && (
|
|
392
419
|
<LoginWith>
|
|
@@ -733,7 +760,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
733
760
|
{configs && Object.keys(configs).length > 0 ? (
|
|
734
761
|
(((configs?.facebook_login?.value === 'true' || configs?.facebook_login?.value === '1') && configs?.facebook_id?.value && facebookLoginEnabled) ||
|
|
735
762
|
((configs?.google_login_client_id?.value !== '' && configs?.google_login_client_id?.value !== null) && googleLoginEnabled) ||
|
|
736
|
-
((configs?.apple_login_client_id?.value !== '' && configs?.apple_login_client_id?.value !== null) && appleLoginEnabled)) &&
|
|
763
|
+
((configs?.apple_login_client_id?.value !== '' && configs?.apple_login_client_id?.value !== null) && appleLoginEnabled)) && !isGuest &&
|
|
737
764
|
(
|
|
738
765
|
<>
|
|
739
766
|
<View
|
|
@@ -761,7 +788,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
761
788
|
facebookLoginEnabled && (
|
|
762
789
|
<FacebookLogin
|
|
763
790
|
notificationState={notificationState}
|
|
764
|
-
handleErrors={(err: any) => { showToast(ToastType.Error, err),
|
|
791
|
+
handleErrors={(err: any) => { showToast(ToastType.Error, err), vibrateApp() }}
|
|
765
792
|
handleLoading={(val: boolean) => setIsFBLoading(val)}
|
|
766
793
|
handleSuccessFacebookLogin={handleSuccessFacebook}
|
|
767
794
|
/>
|
|
@@ -770,7 +797,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
770
797
|
<GoogleLogin
|
|
771
798
|
notificationState={notificationState}
|
|
772
799
|
webClientId={configs?.google_login_client_id?.value}
|
|
773
|
-
handleErrors={(err: any) => { showToast(ToastType.Error, err),
|
|
800
|
+
handleErrors={(err: any) => { showToast(ToastType.Error, err), vibrateApp() }}
|
|
774
801
|
handleLoading={(val: boolean) => setIsFBLoading(val)}
|
|
775
802
|
handleSuccessGoogleLogin={handleSuccessFacebook}
|
|
776
803
|
/>
|
|
@@ -778,7 +805,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
778
805
|
{(configs?.apple_login_client_id?.value !== '' && configs?.google_login_client_id?.value !== null) && appleLoginEnabled && (
|
|
779
806
|
<AppleLogin
|
|
780
807
|
notificationState={notificationState}
|
|
781
|
-
handleErrors={(err: any) => { showToast(ToastType.Error, err),
|
|
808
|
+
handleErrors={(err: any) => { showToast(ToastType.Error, err), vibrateApp() }}
|
|
782
809
|
handleLoading={(val: boolean) => setIsFBLoading(val)}
|
|
783
810
|
handleSuccessAppleLogin={handleSuccessFacebook}
|
|
784
811
|
/>
|
|
@@ -824,20 +851,23 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
824
851
|
onClose={() => setIsModalVisible(false)}
|
|
825
852
|
/>
|
|
826
853
|
</OModal>
|
|
827
|
-
<
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
title={t('ENTER_VERIFICATION_CODE', 'Enter verification code')}
|
|
854
|
+
<Modal
|
|
855
|
+
visible={willVerifyOtpState}
|
|
856
|
+
onDismiss={() => setWillVerifyOtpState(false)}
|
|
857
|
+
animationType='slide'
|
|
832
858
|
>
|
|
833
859
|
<Otp
|
|
860
|
+
isCheckingCode={isCheckingCode}
|
|
861
|
+
setCheckingCode={setCheckingCode}
|
|
834
862
|
willVerifyOtpState={willVerifyOtpState}
|
|
863
|
+
otpError={otpError}
|
|
864
|
+
setOtpError={setOtpError}
|
|
835
865
|
setWillVerifyOtpState={setWillVerifyOtpState}
|
|
836
866
|
handleLoginOtp={handleLoginOtp}
|
|
837
867
|
onSubmit={onSubmit}
|
|
838
868
|
setAlertState={setAlertState}
|
|
839
869
|
/>
|
|
840
|
-
</
|
|
870
|
+
</Modal>
|
|
841
871
|
<Alert
|
|
842
872
|
open={alertState.open}
|
|
843
873
|
content={alertState.content}
|