ordering-ui-react-native 0.17.92 → 0.17.93-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 +0 -20
- 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 +36 -26
- package/themes/business/src/components/BusinessController/index.tsx +0 -1
- package/themes/business/src/components/Chat/index.tsx +163 -123
- 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/FloatingButton/index.tsx +34 -31
- package/themes/business/src/components/GoogleMap/index.tsx +58 -57
- package/themes/business/src/components/LoginForm/index.tsx +5 -2
- package/themes/business/src/components/MapView/index.tsx +14 -10
- package/themes/business/src/components/MessagesOption/index.tsx +20 -93
- package/themes/business/src/components/NewOrderNotification/index.tsx +123 -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 +202 -12
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +84 -37
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +87 -66
- package/themes/business/src/components/OrderDetailsLogistic/index.tsx +200 -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 +22 -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 +93 -0
- package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +1 -1
- package/themes/business/src/components/PreviousOrders/index.tsx +198 -221
- package/themes/business/src/components/ProductItemAccordion/index.tsx +7 -1
- 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/OModal.tsx +16 -9
- package/themes/business/src/types/index.tsx +24 -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 -5
- 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 +35 -17
- package/themes/original/src/components/AddressList/index.tsx +5 -8
- 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 +72 -36
- package/themes/original/src/components/BusinessBasicInformation/styles.tsx +10 -12
- package/themes/original/src/components/BusinessController/index.tsx +35 -44
- 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 +346 -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 +664 -556
- package/themes/original/src/components/BusinessProductsListing/styles.tsx +2 -3
- package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
- package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListFooter.tsx +69 -0
- package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListHeader.tsx +406 -0
- package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListing.tsx +76 -0
- package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +37 -404
- package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
- package/themes/original/src/components/Cart/index.tsx +55 -55
- package/themes/original/src/components/CartContent/index.tsx +103 -59
- package/themes/original/src/components/CartContent/styles.tsx +6 -6
- package/themes/original/src/components/Checkout/index.tsx +276 -32
- 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 +12 -4
- package/themes/original/src/components/FacebookLogin/styles.tsx +3 -1
- package/themes/original/src/components/Favorite/index.tsx +1 -5
- package/themes/original/src/components/GPSButton/index.tsx +6 -4
- package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +8 -3
- package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +42 -5
- package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +2 -0
- package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +86 -10
- package/themes/original/src/components/GoogleLogin/styles.tsx +1 -1
- package/themes/original/src/components/GoogleMap/index.tsx +63 -7
- package/themes/original/src/components/Home/index.tsx +13 -4
- package/themes/original/src/components/LastOrder/index.tsx +2 -1
- package/themes/original/src/components/LastOrders/index.tsx +2 -1
- 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 +9 -2
- package/themes/original/src/components/Messages/index.tsx +15 -4
- package/themes/original/src/components/MomentOption/index.tsx +193 -92
- package/themes/original/src/components/MomentSelector/index.tsx +1 -1
- package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +161 -49
- package/themes/original/src/components/MultiCheckout/index.tsx +373 -69
- package/themes/original/src/components/MultiCheckout/styles.tsx +3 -1
- package/themes/original/src/components/MultiOrdersDetails/index.tsx +1 -1
- package/themes/original/src/components/MyOrders/index.tsx +12 -1
- package/themes/original/src/components/NavBar/index.tsx +20 -13
- package/themes/original/src/components/NotFoundSource/index.tsx +14 -10
- 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 +50 -38
- 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 +34 -25
- package/themes/original/src/components/OrderSummary/index.tsx +83 -57
- package/themes/original/src/components/OrderTypeSelector/index.tsx +5 -6
- package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +13 -13
- package/themes/original/src/components/OrdersOption/index.tsx +43 -20
- package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
- package/themes/original/src/components/PageBanner/index.tsx +65 -29
- package/themes/original/src/components/PageBanner/styles.tsx +0 -3
- package/themes/original/src/components/PaymentOptionCard/index.tsx +180 -0
- package/themes/original/src/components/PaymentOptionStripe/styles.tsx +3 -0
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
- package/themes/original/src/components/PaymentOptions/index.tsx +100 -34
- package/themes/original/src/components/PhoneInputNumber/index.tsx +18 -4
- package/themes/original/src/components/ProductForm/index.tsx +86 -30
- 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 +49 -20
- package/themes/original/src/components/ProductOptionSubOption/styles.tsx +10 -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/SignupForm/index.tsx +43 -27
- package/themes/original/src/components/SingleOrderCard/index.tsx +44 -20
- package/themes/original/src/components/SingleOrderCard/styles.tsx +1 -1
- package/themes/original/src/components/SingleProductCard/index.tsx +13 -10
- package/themes/original/src/components/SingleProductCard/styles.tsx +8 -3
- package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
- package/themes/original/src/components/StripeCardsList/index.tsx +61 -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 +5 -10
- 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 +7 -25
- package/themes/original/src/components/UserProfileForm/index.tsx +30 -31
- 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 +51 -61
- package/themes/original/src/components/Wallets/styles.tsx +2 -4
- package/themes/original/src/components/shared/OButton.tsx +3 -3
- package/themes/original/src/components/shared/OInput.tsx +4 -5
- package/themes/original/src/components/shared/OModal.tsx +3 -3
- package/themes/original/src/types/index.tsx +37 -10
- package/themes/original/src/utils/index.tsx +185 -13
- 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,21 +1,21 @@
|
|
|
1
1
|
import React, { useState } from 'react'
|
|
2
|
-
import { ScrollView, TouchableOpacity, View, StyleSheet
|
|
3
|
-
import {
|
|
2
|
+
import { ScrollView, TouchableOpacity, View, StyleSheet } from 'react-native'
|
|
3
|
+
import { useLanguage } from 'ordering-components/native'
|
|
4
4
|
import { useTheme } from 'styled-components/native'
|
|
5
|
-
import
|
|
6
|
-
import { OIcon, OText, OModal } from '../shared'
|
|
5
|
+
import { OText, OModal } from '../shared'
|
|
7
6
|
import { ProfessionalProfile } from '../ProfessionalProfile'
|
|
8
7
|
import { ProfessionalFilterParams } from '../../types'
|
|
8
|
+
import { SingleProfessionalCard } from './SingleProfessionalCard'
|
|
9
9
|
|
|
10
10
|
export const ProfessionalFilter = (props: ProfessionalFilterParams) => {
|
|
11
11
|
const {
|
|
12
12
|
professionals,
|
|
13
13
|
professionalSelected,
|
|
14
|
-
handleChangeProfessionalSelected
|
|
14
|
+
handleChangeProfessionalSelected,
|
|
15
|
+
handleUpdateProfessionals
|
|
15
16
|
} = props
|
|
16
17
|
|
|
17
18
|
const theme = useTheme()
|
|
18
|
-
const [{ optimizeImage }] = useUtils()
|
|
19
19
|
const [, t] = useLanguage()
|
|
20
20
|
const [open, setOpen] = useState(false)
|
|
21
21
|
const [currentProfessional, setCurrentProfessional] = useState(null)
|
|
@@ -30,6 +30,11 @@ export const ProfessionalFilter = (props: ProfessionalFilterParams) => {
|
|
|
30
30
|
setOpen(false)
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
const onUpdateProfessionals = (id, changes) => {
|
|
34
|
+
const updatedProfessional = professionals.find(professional => professional.id === id)
|
|
35
|
+
handleUpdateProfessionals({ ...updatedProfessional, ...changes })
|
|
36
|
+
}
|
|
37
|
+
|
|
33
38
|
const styles = StyleSheet.create({
|
|
34
39
|
professionalItem: {
|
|
35
40
|
flexDirection: 'row',
|
|
@@ -39,12 +44,7 @@ export const ProfessionalFilter = (props: ProfessionalFilterParams) => {
|
|
|
39
44
|
borderWidth: 1,
|
|
40
45
|
marginRight: 12,
|
|
41
46
|
minHeight: 64
|
|
42
|
-
}
|
|
43
|
-
photoStyle: {
|
|
44
|
-
width: 42,
|
|
45
|
-
height: 42,
|
|
46
|
-
borderRadius: 7.6
|
|
47
|
-
}
|
|
47
|
+
}
|
|
48
48
|
})
|
|
49
49
|
|
|
50
50
|
return (
|
|
@@ -73,44 +73,14 @@ export const ProfessionalFilter = (props: ProfessionalFilterParams) => {
|
|
|
73
73
|
</OText>
|
|
74
74
|
</View>
|
|
75
75
|
</TouchableOpacity>
|
|
76
|
-
{professionals.map((professional: any
|
|
77
|
-
<
|
|
78
|
-
key={
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
borderColor: (professional?.id === professionalSelected?.id)
|
|
85
|
-
? theme.colors.primary
|
|
86
|
-
: theme.colors.border
|
|
87
|
-
}}
|
|
88
|
-
>
|
|
89
|
-
{professional?.photo ? (
|
|
90
|
-
<FastImage
|
|
91
|
-
style={styles.photoStyle}
|
|
92
|
-
source={{
|
|
93
|
-
uri: optimizeImage(professional?.photo, 'h_250,c_limit'),
|
|
94
|
-
priority: FastImage.priority.normal,
|
|
95
|
-
}}
|
|
96
|
-
resizeMode={FastImage.resizeMode.cover}
|
|
97
|
-
/>
|
|
98
|
-
) : (
|
|
99
|
-
<OIcon
|
|
100
|
-
src={theme?.images?.general?.user}
|
|
101
|
-
cover={false}
|
|
102
|
-
style={styles.photoStyle}
|
|
103
|
-
/>
|
|
104
|
-
)}
|
|
105
|
-
<OText
|
|
106
|
-
size={12}
|
|
107
|
-
style={{ marginLeft: 12 }}
|
|
108
|
-
weight={'400'}
|
|
109
|
-
>
|
|
110
|
-
{professional?.name} {professional?.lastname}
|
|
111
|
-
</OText>
|
|
112
|
-
</View>
|
|
113
|
-
</TouchableOpacity>
|
|
76
|
+
{professionals.map((professional: any) => (
|
|
77
|
+
<SingleProfessionalCard
|
|
78
|
+
key={professional.id}
|
|
79
|
+
professional={professional}
|
|
80
|
+
active={professional?.id === professionalSelected?.id}
|
|
81
|
+
handleProfessionalClick={handleOpenProfile}
|
|
82
|
+
handleUpdateProfessionals={onUpdateProfessionals}
|
|
83
|
+
/>
|
|
114
84
|
))}
|
|
115
85
|
</ScrollView>
|
|
116
86
|
<OModal
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useState, useEffect, useRef } from 'react'
|
|
2
|
-
import { StyleSheet, Platform, View, Dimensions } from 'react-native'
|
|
2
|
+
import { StyleSheet, Platform, View, Dimensions, Text } from 'react-native'
|
|
3
3
|
import { useUtils, useLanguage, useConfig } from 'ordering-components/native'
|
|
4
4
|
import { useTheme } from 'styled-components/native'
|
|
5
5
|
import CalendarPicker from 'react-native-calendar-picker'
|
|
@@ -60,7 +60,12 @@ export const ProfessionalProfile = (props: ProfessionalProfileParams) => {
|
|
|
60
60
|
},
|
|
61
61
|
photoStyle: {
|
|
62
62
|
alignSelf: 'center'
|
|
63
|
-
}
|
|
63
|
+
},
|
|
64
|
+
dropDownRow: {
|
|
65
|
+
color: theme.colors.primary,
|
|
66
|
+
fontSize: 14,
|
|
67
|
+
marginHorizontal: 0
|
|
68
|
+
},
|
|
64
69
|
})
|
|
65
70
|
|
|
66
71
|
const onDateChange = (date: any) => {
|
|
@@ -92,6 +97,28 @@ export const ProfessionalProfile = (props: ProfessionalProfileParams) => {
|
|
|
92
97
|
setIsEnabled(menu?.schedule?.[day]?.enabled || false)
|
|
93
98
|
}
|
|
94
99
|
|
|
100
|
+
const getMomentTime = (time) => {
|
|
101
|
+
const _moment = moment(`${moment(selectDate).format('YYYY-MM-DD')} ${time}`, 'YYYY-MM-DD HH:mm').toDate()
|
|
102
|
+
return _moment
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const isBusyTime = (professional, selectedMoment) => {
|
|
106
|
+
if (!selectedMoment) return false
|
|
107
|
+
const startDay = moment(selectedMoment).utc().format('d')
|
|
108
|
+
const isStartScheduleEnabled = professional?.schedule?.[startDay]?.enabled
|
|
109
|
+
if (!isStartScheduleEnabled) return true
|
|
110
|
+
|
|
111
|
+
if (professional?.busy_times?.length === 0) return false
|
|
112
|
+
|
|
113
|
+
const busyTimes = professional?.busy_times
|
|
114
|
+
|
|
115
|
+
const valid = busyTimes.some(item => {
|
|
116
|
+
return (moment.utc(item?.start).local().valueOf() <= moment(selectedMoment).valueOf() &&
|
|
117
|
+
moment(selectedMoment).valueOf() < moment.utc(item?.end).local().valueOf())
|
|
118
|
+
})
|
|
119
|
+
return valid
|
|
120
|
+
}
|
|
121
|
+
|
|
95
122
|
const getTimes = (curdate: any, menu: any) => {
|
|
96
123
|
validateSelectedDate(curdate, menu)
|
|
97
124
|
const date = new Date()
|
|
@@ -147,7 +174,7 @@ export const ProfessionalProfile = (props: ProfessionalProfileParams) => {
|
|
|
147
174
|
}
|
|
148
175
|
|
|
149
176
|
useEffect(() => {
|
|
150
|
-
if (selectDate === null) return
|
|
177
|
+
if (selectDate === null || !professional?.schedule) return
|
|
151
178
|
const _times = getTimes(selectDate, professional)
|
|
152
179
|
setTimeList(_times)
|
|
153
180
|
}, [selectDate, professional])
|
|
@@ -238,10 +265,12 @@ export const ProfessionalProfile = (props: ProfessionalProfileParams) => {
|
|
|
238
265
|
paddingTop: 8,
|
|
239
266
|
paddingHorizontal: 12
|
|
240
267
|
}}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
268
|
+
renderCustomizedRowChild={(item, index) => {
|
|
269
|
+
return (
|
|
270
|
+
<Text style={[styles.dropDownRow, { color: isBusyTime(professional, getMomentTime(item.value)) ? theme.colors.lightGray : theme.colors.primary } ]}>
|
|
271
|
+
{item.text}
|
|
272
|
+
</Text>
|
|
273
|
+
)
|
|
245
274
|
}}
|
|
246
275
|
renderDropdownIcon={() => dropDownIcon()}
|
|
247
276
|
dropdownOverlayColor='transparent'
|
|
@@ -143,7 +143,7 @@ const PromotionsUI = (props: PromotionParams) => {
|
|
|
143
143
|
<WrapperSingleOffer key={offer.id}>
|
|
144
144
|
<SingleOfferContainer>
|
|
145
145
|
<FastImage
|
|
146
|
-
style={{ height: 80, width: 80, aspectRatio:
|
|
146
|
+
style={{ height: 80, width: 80, aspectRatio: 1, borderRadius: 8 }}
|
|
147
147
|
source={typeof offer?.image !== 'number' ? {
|
|
148
148
|
uri: optimizeImage(offer?.image, 'h_1024,c_limit'),
|
|
149
149
|
priority: FastImage.priority.normal,
|
|
@@ -212,7 +212,7 @@ const PromotionsUI = (props: PromotionParams) => {
|
|
|
212
212
|
</OText>
|
|
213
213
|
<ScrollView
|
|
214
214
|
showsVerticalScrollIndicator={false}
|
|
215
|
-
style={{ height: '
|
|
215
|
+
style={{ height: '68%' }}
|
|
216
216
|
>
|
|
217
217
|
{offerSelected?.businesses?.map((business: any) => {
|
|
218
218
|
return (
|
|
@@ -9,6 +9,7 @@ export const PromotionsContainer = styled.View`
|
|
|
9
9
|
export const WrapperSingleOffer = styled.View`
|
|
10
10
|
flex-direction: column;
|
|
11
11
|
width: 100%;
|
|
12
|
+
margin-bottom: 30px;
|
|
12
13
|
`
|
|
13
14
|
|
|
14
15
|
export const SingleOfferContainer = styled.View`
|
|
@@ -16,11 +17,12 @@ export const SingleOfferContainer = styled.View`
|
|
|
16
17
|
width: 100%;
|
|
17
18
|
justify-content: space-between;
|
|
18
19
|
align-items: center;
|
|
19
|
-
margin-bottom:
|
|
20
|
+
margin-bottom: 10px;
|
|
20
21
|
`
|
|
21
22
|
|
|
22
23
|
export const OfferInformation = styled.View`
|
|
23
24
|
justify-content: space-between;
|
|
25
|
+
min-width: 70%;
|
|
24
26
|
max-width: 70%;
|
|
25
27
|
`
|
|
26
28
|
|
|
@@ -74,13 +74,22 @@ const ReviewProductsUI = (props: ReviewProductParams) => {
|
|
|
74
74
|
titleWrapStyle={{ paddingHorizontal: 0 }}
|
|
75
75
|
titleStyle={{ marginRight: 0, marginLeft: 0 }}
|
|
76
76
|
/>
|
|
77
|
-
{order?.products
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
77
|
+
{order?.products && order.products.length > 0 && order?.products.map(productsOrder => (
|
|
78
|
+
productsOrder?.length ? productsOrder?.map((product: any, i: any) => !product?.deleted ?
|
|
79
|
+
<SingleProductReview
|
|
80
|
+
key={i}
|
|
81
|
+
product={product}
|
|
82
|
+
formState={formState}
|
|
83
|
+
handleChangeFormState={handleChangeFormState}
|
|
84
|
+
/> : null
|
|
85
|
+
) : (!productsOrder?.deleted ? (
|
|
86
|
+
<SingleProductReview
|
|
87
|
+
product={productsOrder}
|
|
88
|
+
formState={formState}
|
|
89
|
+
handleChangeFormState={handleChangeFormState}
|
|
90
|
+
/>
|
|
91
|
+
) : null
|
|
92
|
+
)
|
|
84
93
|
))}
|
|
85
94
|
</ReviewProductsContainer>
|
|
86
95
|
|
|
@@ -13,7 +13,7 @@ import { OIcon, OText } from '../shared';
|
|
|
13
13
|
export const ScheduleAccordion = (props: any) => {
|
|
14
14
|
|
|
15
15
|
const {
|
|
16
|
-
|
|
16
|
+
timeFormated,
|
|
17
17
|
schedule,
|
|
18
18
|
weekIndex
|
|
19
19
|
} = props
|
|
@@ -52,9 +52,9 @@ export const ScheduleAccordion = (props: any) => {
|
|
|
52
52
|
{schedule?.lapses?.map((lapse: any) => (
|
|
53
53
|
schedule?.enabled ?
|
|
54
54
|
<OText mBottom={16}>
|
|
55
|
-
{
|
|
55
|
+
{timeFormated(lapse.open) +
|
|
56
56
|
' - ' +
|
|
57
|
-
|
|
57
|
+
timeFormated(lapse.close)}
|
|
58
58
|
</OText>
|
|
59
59
|
:
|
|
60
60
|
<OText color={theme.colors.red} mBottom={16}>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useState, useEffect, useRef } from 'react'
|
|
2
2
|
import { useTheme } from 'styled-components/native'
|
|
3
|
-
import { Platform, View, StyleSheet, Dimensions, ScrollView, TouchableOpacity } from 'react-native'
|
|
3
|
+
import { Platform, View, StyleSheet, Dimensions, ScrollView, TouchableOpacity, Text } from 'react-native'
|
|
4
4
|
import { OText, OButton, OModal, OIcon } from '../shared'
|
|
5
5
|
import FastImage from 'react-native-fast-image'
|
|
6
6
|
import IconAntDesign from 'react-native-vector-icons/AntDesign'
|
|
@@ -11,6 +11,8 @@ import FeatherIcon from 'react-native-vector-icons/Feather';
|
|
|
11
11
|
import { useSafeAreaInsets } from 'react-native-safe-area-context'
|
|
12
12
|
import { ServiceFormParams } from '../../types'
|
|
13
13
|
import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder';
|
|
14
|
+
import uuid from 'react-native-uuid';
|
|
15
|
+
import { orderTypeList } from '../../utils'
|
|
14
16
|
|
|
15
17
|
import {
|
|
16
18
|
ProductForm as ProductFormController,
|
|
@@ -45,7 +47,9 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
45
47
|
maxProductQuantity,
|
|
46
48
|
onClose,
|
|
47
49
|
professionalListState,
|
|
48
|
-
isCartProduct
|
|
50
|
+
isCartProduct,
|
|
51
|
+
actionStatus,
|
|
52
|
+
handleCreateGuestUser
|
|
49
53
|
} = props
|
|
50
54
|
|
|
51
55
|
const theme = useTheme()
|
|
@@ -65,6 +69,9 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
65
69
|
const [isOpen, setIsOpen] = useState(false)
|
|
66
70
|
const [currentProfessional, setCurrentProfessional] = useState<any>(null)
|
|
67
71
|
|
|
72
|
+
const guestCheckoutEnabled = configs?.guest_checkout_enabled?.value === '1'
|
|
73
|
+
const orderTypeEnabled = !orderTypeList[orderState?.options?.type - 1] || configs?.allowed_order_types_guest_checkout?.value?.includes(orderTypeList[orderState?.options?.type - 1])
|
|
74
|
+
|
|
68
75
|
const dropdownRef = useRef<any>(null)
|
|
69
76
|
|
|
70
77
|
const styles = StyleSheet.create({
|
|
@@ -103,23 +110,41 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
103
110
|
height: 40,
|
|
104
111
|
marginBottom: 30
|
|
105
112
|
},
|
|
113
|
+
dropDownRow: {
|
|
114
|
+
color: theme.colors.primary,
|
|
115
|
+
fontSize: 14,
|
|
116
|
+
marginHorizontal: 0
|
|
117
|
+
},
|
|
106
118
|
professionalList: {
|
|
107
119
|
paddingHorizontal: 40,
|
|
108
|
-
paddingVertical: 30
|
|
120
|
+
paddingVertical: 30,
|
|
109
121
|
}
|
|
110
122
|
})
|
|
111
123
|
|
|
112
|
-
const
|
|
113
|
-
|
|
124
|
+
const getMomentTime = (time) => {
|
|
125
|
+
const _moment = moment(`${moment(selectDate).format('YYYY-MM-DD')} ${time}`, 'YYYY-MM-DD HH:mm').toDate()
|
|
126
|
+
return _moment
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const isBusyTime = (professional, selectedMoment) => {
|
|
130
|
+
if (!selectedMoment) return false
|
|
131
|
+
const startDay = moment(selectedMoment).utc().format('d')
|
|
132
|
+
const isStartScheduleEnabled = professional?.schedule?.[startDay]?.enabled
|
|
114
133
|
const duration = product?.duration ?? 0
|
|
134
|
+
const endDay = moment(selectedMoment).add(duration - 1, 'minutes').utc().format('d')
|
|
135
|
+
const isEndScheduleEnabled = professional?.schedule?.[endDay]?.enabled
|
|
136
|
+
if (!isStartScheduleEnabled || !isEndScheduleEnabled) return true
|
|
137
|
+
|
|
138
|
+
if (professional?.busy_times?.length === 0) return false
|
|
139
|
+
|
|
115
140
|
const busyTimes = isCartProduct
|
|
116
|
-
? professional?.busy_times.filter(
|
|
141
|
+
? professional?.busy_times.filter(item => !(item.start === productCart?.calendar_event?.start && item.end === productCart?.calendar_event?.end))
|
|
117
142
|
: [...professional?.busy_times]
|
|
118
|
-
const valid = busyTimes.some(
|
|
119
|
-
return (moment.utc(item?.start).local().valueOf() <= moment(
|
|
120
|
-
moment(
|
|
121
|
-
(moment.utc(item?.start).local().valueOf()
|
|
122
|
-
moment(
|
|
143
|
+
const valid = busyTimes.some(item => {
|
|
144
|
+
return (moment.utc(item?.start).local().valueOf() <= moment(selectedMoment).valueOf() &&
|
|
145
|
+
moment(selectedMoment).valueOf() < moment.utc(item?.end).local().valueOf()) ||
|
|
146
|
+
(moment.utc(item?.start).local().valueOf() < moment(selectedMoment).add(duration, 'minutes').valueOf() &&
|
|
147
|
+
moment(selectedMoment).add(duration, 'minutes').valueOf() < moment.utc(item?.end).local().valueOf())
|
|
123
148
|
})
|
|
124
149
|
return valid
|
|
125
150
|
}
|
|
@@ -140,6 +165,11 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
140
165
|
)
|
|
141
166
|
}
|
|
142
167
|
|
|
168
|
+
const handleUpdateGuest = () => {
|
|
169
|
+
const guestToken = uuid.v4()
|
|
170
|
+
if (guestToken) handleCreateGuestUser({ guest_token: guestToken })
|
|
171
|
+
}
|
|
172
|
+
|
|
143
173
|
const customDayHeaderStylesCallback = () => {
|
|
144
174
|
return {
|
|
145
175
|
textStyle: {
|
|
@@ -371,9 +401,9 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
371
401
|
size={12}
|
|
372
402
|
weight={'400'}
|
|
373
403
|
lineHeight={17}
|
|
374
|
-
color={isBusyTime(currentProfessional) ? theme.colors.danger5 : theme.colors.success500}
|
|
404
|
+
color={isBusyTime(currentProfessional, dateSelected) ? theme.colors.danger5 : theme.colors.success500}
|
|
375
405
|
>
|
|
376
|
-
{isBusyTime(currentProfessional)
|
|
406
|
+
{isBusyTime(currentProfessional, dateSelected)
|
|
377
407
|
? t('BUSY_ON_SELECTED_TIME', 'Busy on selected time')
|
|
378
408
|
: t('AVAILABLE', 'Available')
|
|
379
409
|
}
|
|
@@ -453,10 +483,12 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
453
483
|
paddingTop: 8,
|
|
454
484
|
paddingHorizontal: 12
|
|
455
485
|
}}
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
486
|
+
renderCustomizedRowChild={(item, index) => {
|
|
487
|
+
return (
|
|
488
|
+
<Text style={[styles.dropDownRow, { color: isBusyTime(currentProfessional, getMomentTime(item.value)) ? theme.colors.lightGray : theme.colors.primary } ]}>
|
|
489
|
+
{item.text}
|
|
490
|
+
</Text>
|
|
491
|
+
)
|
|
460
492
|
}}
|
|
461
493
|
renderDropdownIcon={() => dropDownIcon()}
|
|
462
494
|
dropdownOverlayColor='transparent'
|
|
@@ -529,7 +561,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
529
561
|
? t('SOLD_OUT', 'Sold out')
|
|
530
562
|
: t('BOOK', 'Book'))}
|
|
531
563
|
style={styles.buttonStyle}
|
|
532
|
-
isDisabled={isSoldOut || maxProductQuantity <= 0 || !currentProfessional?.id || !dateSelected || isBusyTime(currentProfessional)}
|
|
564
|
+
isDisabled={isSoldOut || maxProductQuantity <= 0 || !currentProfessional?.id || !dateSelected || isBusyTime(currentProfessional, dateSelected)}
|
|
533
565
|
textStyle={{ fontSize: 14, color: theme.colors.white }}
|
|
534
566
|
/>
|
|
535
567
|
)}
|
|
@@ -563,6 +595,17 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
563
595
|
}}
|
|
564
596
|
/>
|
|
565
597
|
)}
|
|
598
|
+
{!auth && guestCheckoutEnabled && orderTypeEnabled && (
|
|
599
|
+
<TouchableOpacity style={{ marginTop: 10 }} onPress={handleUpdateGuest}>
|
|
600
|
+
{actionStatus?.loading ? (
|
|
601
|
+
<Placeholder Animation={Fade}>
|
|
602
|
+
<PlaceholderLine width={60} height={20} />
|
|
603
|
+
</Placeholder>
|
|
604
|
+
) : (
|
|
605
|
+
<OText color={theme.colors.primary} size={13}>{t('AS_GUEST_USER', 'As guest user')}</OText>
|
|
606
|
+
)}
|
|
607
|
+
</TouchableOpacity>
|
|
608
|
+
)}
|
|
566
609
|
</ButtonWrapper>
|
|
567
610
|
</Container>
|
|
568
611
|
)}
|
|
@@ -616,9 +659,9 @@ const ServiceFormUI = (props: ServiceFormParams) => {
|
|
|
616
659
|
size={12}
|
|
617
660
|
weight={'400'}
|
|
618
661
|
lineHeight={17}
|
|
619
|
-
color={isBusyTime(professional) ? theme.colors.danger5 : theme.colors.success500}
|
|
662
|
+
color={isBusyTime(professional, dateSelected) ? theme.colors.danger5 : theme.colors.success500}
|
|
620
663
|
>
|
|
621
|
-
{isBusyTime(professional)
|
|
664
|
+
{isBusyTime(professional, dateSelected)
|
|
622
665
|
? t('BUSY_ON_SELECTED_TIME', 'Busy on selected time')
|
|
623
666
|
: t('AVAILABLE', 'Available')
|
|
624
667
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useEffect, useRef, useState } from 'react';
|
|
2
|
-
import { View, Pressable, StyleSheet, Linking, Platform, TouchableOpacity
|
|
2
|
+
import { View, Pressable, StyleSheet, Linking, Platform, TouchableOpacity } from 'react-native';
|
|
3
3
|
import { useForm, Controller } from 'react-hook-form';
|
|
4
4
|
import Spinner from 'react-native-loading-spinner-overlay';
|
|
5
5
|
import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
|
|
@@ -8,6 +8,7 @@ import { PhoneInputNumber } from '../PhoneInputNumber';
|
|
|
8
8
|
import { FacebookLogin } from '../FacebookLogin';
|
|
9
9
|
import Recaptcha from 'react-native-recaptcha-that-works'
|
|
10
10
|
import ReCaptcha from '@fatnlazycat/react-native-recaptcha-v3'
|
|
11
|
+
import ReactNativeHapticFeedback from "react-native-haptic-feedback";
|
|
11
12
|
|
|
12
13
|
import {
|
|
13
14
|
SignupForm as SignUpController,
|
|
@@ -83,7 +84,8 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
83
84
|
signUpTab,
|
|
84
85
|
useSignUpFullDetails,
|
|
85
86
|
useSignUpOtpEmail,
|
|
86
|
-
useSignUpOtpCellphone
|
|
87
|
+
useSignUpOtpCellphone,
|
|
88
|
+
isGuest
|
|
87
89
|
} = props;
|
|
88
90
|
|
|
89
91
|
const theme = useTheme();
|
|
@@ -163,6 +165,14 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
163
165
|
})
|
|
164
166
|
}
|
|
165
167
|
|
|
168
|
+
const vibrateApp = (impact?: string) => {
|
|
169
|
+
const options = {
|
|
170
|
+
enableVibrateFallback: true,
|
|
171
|
+
ignoreAndroidSystemSettings: false
|
|
172
|
+
};
|
|
173
|
+
ReactNativeHapticFeedback.trigger(impact || "impactLight", options);
|
|
174
|
+
}
|
|
175
|
+
|
|
166
176
|
const handleRefs = (ref: any, code: string) => {
|
|
167
177
|
switch (code) {
|
|
168
178
|
case 'name': {
|
|
@@ -245,7 +255,7 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
245
255
|
const onSubmit = (values?: any) => {
|
|
246
256
|
if (phoneInputData.error && signUpTab !== 'otpEmail') {
|
|
247
257
|
showToast(ToastType.Error, phoneInputData.error);
|
|
248
|
-
|
|
258
|
+
vibrateApp()
|
|
249
259
|
return;
|
|
250
260
|
}
|
|
251
261
|
if (
|
|
@@ -263,7 +273,7 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
263
273
|
'The field Mobile phone is required.',
|
|
264
274
|
),
|
|
265
275
|
);
|
|
266
|
-
|
|
276
|
+
vibrateApp()
|
|
267
277
|
return;
|
|
268
278
|
}
|
|
269
279
|
if (signUpTab === 'otpEmail' || signUpTab === 'otpCellphone') {
|
|
@@ -322,7 +332,7 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
322
332
|
};
|
|
323
333
|
|
|
324
334
|
const handleChangeInputEmail = (value: string, onChange: any) => {
|
|
325
|
-
onChange(value.toLowerCase().replace(/[&,()%";:ç?<>{}\\[\]\s]/g, ''));
|
|
335
|
+
onChange(value.toLowerCase().trim().replace(/[&,()%";:ç?<>{}\\[\]\s]/g, ''));
|
|
326
336
|
};
|
|
327
337
|
|
|
328
338
|
const handleOpenTermsUrl = async (url: any) => {
|
|
@@ -332,7 +342,7 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
332
342
|
await Linking.openURL(url);
|
|
333
343
|
} else {
|
|
334
344
|
showToast(ToastType.Error, t('VALIDATION_ERROR_ACTIVE_URL', 'The _attribute_ is not a valid URL.').replace('_attribute_', t('URL', 'URL')))
|
|
335
|
-
|
|
345
|
+
vibrateApp()
|
|
336
346
|
}
|
|
337
347
|
}
|
|
338
348
|
|
|
@@ -340,12 +350,12 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
340
350
|
setRecaptchaVerified(false)
|
|
341
351
|
if (!recaptchaConfig?.siteKey) {
|
|
342
352
|
showToast(ToastType.Error, t('NO_RECAPTCHA_SITE_KEY', 'The config doesn\'t have recaptcha site key'));
|
|
343
|
-
|
|
353
|
+
vibrateApp()
|
|
344
354
|
return
|
|
345
355
|
}
|
|
346
356
|
if (!recaptchaConfig?.baseUrl) {
|
|
347
357
|
showToast(ToastType.Error, t('NO_RECAPTCHA_BASE_URL', 'The config doesn\'t have recaptcha base url'));
|
|
348
|
-
|
|
358
|
+
vibrateApp()
|
|
349
359
|
return
|
|
350
360
|
}
|
|
351
361
|
recaptchaRef.current.open()
|
|
@@ -389,11 +399,13 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
389
399
|
baseUrl: configs?.security_recaptcha_base_url?.value || null
|
|
390
400
|
})
|
|
391
401
|
showToast(ToastType.Info, t('TRY_AGAIN', 'Please try again'))
|
|
392
|
-
|
|
402
|
+
vibrateApp()
|
|
393
403
|
return
|
|
394
404
|
}
|
|
395
|
-
formState.result?.result &&
|
|
396
|
-
|
|
405
|
+
formState.result?.result && formState.result?.result[0]?.includes("_") ?
|
|
406
|
+
showToast(ToastType.Error, t(`${formState.result?.result[0]}`, 'Phone number already used')) :
|
|
407
|
+
showToast(ToastType.Error, formState.result?.result[0])
|
|
408
|
+
formState.result?.result && vibrateApp()
|
|
397
409
|
setIsLoadingVerifyModal(false);
|
|
398
410
|
}
|
|
399
411
|
}, [formState]);
|
|
@@ -401,7 +413,7 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
401
413
|
useEffect(() => {
|
|
402
414
|
if (Object.keys(errors).length > 0) {
|
|
403
415
|
setIsLoadingVerifyModal(false);
|
|
404
|
-
|
|
416
|
+
vibrateApp()
|
|
405
417
|
}
|
|
406
418
|
}, [errors])
|
|
407
419
|
|
|
@@ -430,7 +442,7 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
430
442
|
? verifyPhoneState?.result?.result
|
|
431
443
|
: verifyPhoneState?.result?.result[0];
|
|
432
444
|
verifyPhoneState.result?.result && showToast(ToastType.Error, message);
|
|
433
|
-
verifyPhoneState.result?.result &&
|
|
445
|
+
verifyPhoneState.result?.result && vibrateApp()
|
|
434
446
|
setIsLoadingVerifyModal(false);
|
|
435
447
|
return;
|
|
436
448
|
}
|
|
@@ -465,15 +477,19 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
465
477
|
|
|
466
478
|
return (
|
|
467
479
|
<View>
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
480
|
+
{isGuest ? (
|
|
481
|
+
<OText style={{ textAlign: 'center', marginBottom: 10 }} size={18}>{t('SIGNUP', 'Signup')}</OText>
|
|
482
|
+
) : (
|
|
483
|
+
<NavBar
|
|
484
|
+
title={t('SIGNUP', 'Signup')}
|
|
485
|
+
titleAlign={'center'}
|
|
486
|
+
onActionLeft={() => navigation?.canGoBack() && navigation.goBack()}
|
|
487
|
+
showCall={false}
|
|
488
|
+
btnStyle={{ paddingLeft: 0 }}
|
|
489
|
+
titleWrapStyle={{ paddingHorizontal: 0 }}
|
|
490
|
+
titleStyle={{ marginLeft: 0, marginRight: 0 }}
|
|
491
|
+
/>
|
|
492
|
+
)}
|
|
477
493
|
<FormSide>
|
|
478
494
|
{((Number(useSignUpFullDetails) + Number(useSignUpOtpEmail) + Number(useSignUpOtpCellphone)) > 1) && (
|
|
479
495
|
<SignupWith>
|
|
@@ -586,7 +602,7 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
586
602
|
control={control}
|
|
587
603
|
render={({ onChange, value }: any) => (
|
|
588
604
|
<OInput
|
|
589
|
-
placeholder={t(field.name)}
|
|
605
|
+
placeholder={t(field.name?.replace(/\s/g, '_')?.toUpperCase(), field.name)}
|
|
590
606
|
style={style.inputStyle}
|
|
591
607
|
icon={
|
|
592
608
|
field.code === 'email'
|
|
@@ -893,7 +909,7 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
893
909
|
</View>
|
|
894
910
|
)
|
|
895
911
|
}
|
|
896
|
-
{configs && Object.keys(configs).length > 0 && (
|
|
912
|
+
{configs && Object.keys(configs).length > 0 && !isGuest && (
|
|
897
913
|
(((configs?.facebook_login?.value === 'true' || configs?.facebook_login?.value === '1') && configs?.facebook_id?.value && facebookLoginEnabled) ||
|
|
898
914
|
((configs?.google_login_client_id?.value !== '' && configs?.google_login_client_id?.value !== null) && googleLoginEnabled) ||
|
|
899
915
|
((configs?.apple_login_client_id?.value !== '' && configs?.apple_login_client_id?.value !== null) && appleLoginEnabled)) &&
|
|
@@ -925,7 +941,7 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
925
941
|
(
|
|
926
942
|
<FacebookLogin
|
|
927
943
|
notificationState={notificationState}
|
|
928
|
-
handleErrors={(err: any) => { showToast(ToastType.Error, err),
|
|
944
|
+
handleErrors={(err: any) => { showToast(ToastType.Error, err), vibrateApp() }}
|
|
929
945
|
handleLoading={(val: boolean) => setIsFBLoading(val)}
|
|
930
946
|
handleSuccessFacebookLogin={handleSuccessFacebook}
|
|
931
947
|
/>
|
|
@@ -934,7 +950,7 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
934
950
|
<GoogleLogin
|
|
935
951
|
notificationState={notificationState}
|
|
936
952
|
webClientId={configs?.google_login_client_id?.value}
|
|
937
|
-
handleErrors={(err: any) => { showToast(ToastType.Error, err),
|
|
953
|
+
handleErrors={(err: any) => { showToast(ToastType.Error, err), vibrateApp() }}
|
|
938
954
|
handleLoading={(val: boolean) => setIsFBLoading(val)}
|
|
939
955
|
handleSuccessGoogleLogin={handleSuccessFacebook}
|
|
940
956
|
/>
|
|
@@ -942,7 +958,7 @@ const SignupFormUI = (props: SignupParams) => {
|
|
|
942
958
|
{(configs?.apple_login_client_id?.value !== '' && configs?.apple_login_client_id?.value !== null) && appleLoginEnabled && (
|
|
943
959
|
<AppleLogin
|
|
944
960
|
notificationState={notificationState}
|
|
945
|
-
handleErrors={(err: any) => { showToast(ToastType.Error, err),
|
|
961
|
+
handleErrors={(err: any) => { showToast(ToastType.Error, err), vibrateApp() }}
|
|
946
962
|
handleLoading={(val: boolean) => setIsFBLoading(val)}
|
|
947
963
|
handleSuccessAppleLogin={handleSuccessFacebook}
|
|
948
964
|
/>
|