ordering-ui-react-native 0.14.91 → 0.14.92-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 -3
- package/src/DeliveryApp.tsx +34 -2
- package/src/assets/images/no-network.png +0 -0
- package/src/components/BusinessTypeFilter/index.tsx +9 -2
- package/src/components/BusinessTypeFilter/styles.tsx +1 -1
- package/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/Cart/index.tsx +1 -1
- package/src/components/Checkout/index.tsx +0 -1
- package/src/components/Home/index.tsx +3 -5
- package/src/components/LanguageSelector/index.tsx +65 -97
- package/src/components/LanguageSelector/styles.tsx +4 -17
- package/src/components/Messages/index.tsx +38 -30
- package/src/components/MomentOption/index.tsx +3 -1
- package/src/components/OrderDetails/index.tsx +26 -5
- package/src/components/PaymentOptions/index.tsx +7 -16
- package/src/components/PaymentOptionsWebView/index.tsx +123 -124
- package/src/components/ProductForm/index.tsx +1 -1
- package/src/components/ProductForm/styles.tsx +1 -0
- package/src/components/StripeElementsForm/index.tsx +27 -48
- package/src/components/UserProfileForm/index.tsx +35 -1
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/config.json +0 -2
- package/src/pages/Checkout.tsx +1 -1
- package/src/providers/AlertProvider.tsx +4 -1
- package/src/theme.json +2 -1
- package/src/types/index.tsx +2 -9
- package/src/utils/index.tsx +2 -1
- package/themes/business/index.tsx +4 -0
- package/themes/business/src/components/Chat/index.tsx +32 -31
- package/themes/business/src/components/NetworkError/index.tsx +61 -0
- package/themes/business/src/components/NetworkError/styles.tsx +11 -0
- package/themes/business/src/components/OrderDetails/Business.tsx +1 -0
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +85 -17
- package/themes/business/src/components/OrdersListManager/index.tsx +871 -0
- package/themes/business/src/components/OrdersListManager/styles.tsx +123 -0
- package/themes/business/src/components/OrdersListManager/utils.tsx +216 -0
- package/themes/business/src/components/OrdersOption/index.tsx +18 -68
- package/themes/business/src/components/OrdersOption/styles.tsx +2 -5
- package/themes/business/src/components/PreviousOrders/index.tsx +80 -23
- package/themes/business/src/types/index.tsx +4 -0
- 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/index.tsx +2 -0
- package/themes/kiosk/src/components/BusinessController/index.tsx +27 -6
- package/themes/kiosk/src/components/BusinessController/styles.tsx +1 -1
- package/themes/kiosk/src/components/BusinessProductsListing/index.tsx +51 -24
- package/themes/kiosk/src/components/Cart/index.tsx +1 -1
- package/themes/kiosk/src/components/CartBottomSheet/index.tsx +1 -1
- package/themes/kiosk/src/components/CartBottomSheet/styles.tsx +1 -1
- package/themes/kiosk/src/components/CartContent/index.tsx +13 -3
- package/themes/kiosk/src/components/CartItem/index.tsx +20 -8
- package/themes/kiosk/src/components/CategoriesMenu/index.tsx +7 -5
- package/themes/kiosk/src/components/CustomerName/index.tsx +89 -88
- package/themes/kiosk/src/components/Intro/index.tsx +13 -13
- package/themes/kiosk/src/components/LanguageSelector/index.tsx +12 -8
- package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
- package/themes/kiosk/src/components/NetworkError/index.tsx +60 -0
- package/themes/kiosk/src/components/NetworkError/styles.tsx +11 -0
- package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
- package/themes/kiosk/src/components/OrderDetails/index.tsx +2 -2
- package/themes/kiosk/src/components/OrderSummary/index.tsx +1 -1
- package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +10 -12
- package/themes/kiosk/src/components/ProductForm/index.tsx +172 -124
- package/themes/kiosk/src/components/ProductForm/styles.tsx +1 -1
- package/themes/kiosk/src/components/ProductOption/index.tsx +1 -0
- package/themes/kiosk/src/components/ProductOption/styles.tsx +1 -0
- package/themes/kiosk/src/components/UpsellingProducts/index.tsx +48 -34
- package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
- package/themes/kiosk/src/components/shared/OCard.tsx +112 -78
- package/themes/kiosk/src/types/index.d.ts +4 -0
- package/themes/original/index.tsx +36 -6
- package/themes/original/src/components/AddressForm/index.tsx +15 -10
- package/themes/original/src/components/AddressList/index.tsx +27 -1
- package/themes/original/src/components/AnalyticsSegment/index.tsx +127 -0
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +75 -40
- package/themes/original/src/components/BusinessController/index.tsx +5 -4
- package/themes/original/src/components/BusinessMenuList/index.tsx +4 -2
- package/themes/original/src/components/BusinessPreorder/index.tsx +142 -121
- package/themes/original/src/components/BusinessProductsCategories/index.tsx +7 -5
- package/themes/original/src/components/BusinessProductsList/index.tsx +51 -7
- package/themes/original/src/components/BusinessProductsListing/index.tsx +20 -15
- package/themes/original/src/components/BusinessReviews/index.tsx +4 -3
- package/themes/original/src/components/BusinessesListing/index.tsx +23 -22
- package/themes/original/src/components/Cart/index.tsx +42 -9
- package/themes/original/src/components/CartContent/index.tsx +2 -2
- package/themes/original/src/components/Checkout/index.tsx +54 -30
- package/themes/original/src/components/Checkout/styles.tsx +7 -0
- package/themes/original/src/components/CouponControl/index.tsx +1 -0
- package/themes/original/src/components/DriverTips/index.tsx +1 -1
- package/themes/original/src/components/ForgotPasswordForm/index.tsx +8 -12
- package/themes/original/src/components/HighestRatedBusinesses/index.tsx +9 -2
- package/themes/original/src/components/LoginForm/index.tsx +83 -68
- package/themes/original/src/components/Messages/index.tsx +24 -21
- package/themes/original/src/components/Messages/styles.tsx +1 -3
- package/themes/original/src/components/MomentOption/index.tsx +127 -152
- package/themes/original/src/components/MomentOption/styles.tsx +42 -18
- package/themes/original/src/components/NetworkError/index.tsx +61 -0
- package/themes/original/src/components/NetworkError/styles.tsx +11 -0
- package/themes/original/src/components/OrderDetails/index.tsx +103 -124
- package/themes/original/src/components/OrderDetails/styles.tsx +3 -1
- package/themes/original/src/components/OrderProgress/index.tsx +2 -3
- package/themes/original/src/components/OrderSummary/index.tsx +34 -1
- package/themes/original/src/components/OrdersOption/index.tsx +16 -40
- package/themes/original/src/components/OrdersOption/styles.tsx +0 -5
- package/themes/original/src/components/PaymentOptions/index.tsx +24 -25
- package/themes/original/src/components/PhoneInputNumber/index.tsx +15 -8
- package/themes/original/src/components/PlaceSpot/index.tsx +114 -0
- package/themes/original/src/components/PlaceSpot/styles.tsx +11 -0
- package/themes/original/src/components/PreviousOrders/index.tsx +4 -0
- package/themes/original/src/components/ProductForm/index.tsx +154 -105
- package/themes/original/src/components/ProductForm/styles.tsx +5 -3
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +6 -1
- package/themes/original/src/components/SignupForm/index.tsx +173 -154
- package/themes/original/src/components/SingleProductCard/index.tsx +6 -13
- package/themes/original/src/components/SingleProductCard/styles.tsx +1 -1
- package/themes/original/src/components/StripeElementsForm/index.tsx +55 -72
- package/themes/original/src/components/UpsellingProducts/index.tsx +6 -6
- package/themes/original/src/components/UserDetails/index.tsx +4 -95
- package/themes/original/src/components/UserFormDetails/index.tsx +2 -14
- package/themes/original/src/components/UserProfile/index.tsx +16 -9
- package/themes/original/src/components/UserProfileForm/index.tsx +16 -8
- package/themes/original/src/components/VerifyPhone/index.tsx +10 -7
- package/themes/original/src/components/VerifyPhone/styles.tsx +2 -1
- package/themes/original/src/components/shared/HeaderTitle.tsx +20 -0
- package/themes/original/src/components/shared/index.tsx +2 -0
- package/themes/original/src/types/index.tsx +18 -8
- package/themes/single-business/src/components/OrderTypeSelector/index.tsx +5 -5
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/StripeMethodForm/index.tsx +0 -163
|
@@ -3,17 +3,14 @@ import { TouchableOpacity, View } from 'react-native';
|
|
|
3
3
|
import MaterialIcon from 'react-native-vector-icons/MaterialCommunityIcons';
|
|
4
4
|
|
|
5
5
|
import { UDContainer, UDHeader, UDForm, UDInfo, EditBtn } from './styles';
|
|
6
|
+
|
|
6
7
|
import {
|
|
7
8
|
UserFormDetails as UserFormController,
|
|
8
9
|
useLanguage,
|
|
9
10
|
useSession,
|
|
10
|
-
ToastType,
|
|
11
|
-
useToast
|
|
12
11
|
} from 'ordering-components/native';
|
|
13
12
|
import { useTheme } from 'styled-components/native';
|
|
14
|
-
import { OIcon, OText
|
|
15
|
-
import { VerifyPhone } from '../VerifyPhone';
|
|
16
|
-
import Spinner from 'react-native-loading-spinner-overlay';
|
|
13
|
+
import { OIcon, OText } from '../shared';
|
|
17
14
|
|
|
18
15
|
import { UserFormDetailsUI } from '../UserFormDetails';
|
|
19
16
|
import { Fade, Placeholder, PlaceholderLine } from 'rn-placeholder';
|
|
@@ -29,33 +26,15 @@ const UserDetailsUI = (props: any) => {
|
|
|
29
26
|
isUserDetailsEdit,
|
|
30
27
|
phoneUpdate,
|
|
31
28
|
togglePhoneUpdate,
|
|
32
|
-
isCheckout
|
|
33
|
-
checkPhoneCodeState,
|
|
34
|
-
handleSendVerifyCode,
|
|
35
|
-
handleCheckPhoneCode,
|
|
36
|
-
verifyPhoneState,
|
|
37
|
-
isVerifiedPhone,
|
|
38
|
-
setCheckPhoneCodeState
|
|
29
|
+
isCheckout
|
|
39
30
|
} = props
|
|
40
31
|
|
|
41
32
|
const theme = useTheme();
|
|
42
33
|
|
|
43
34
|
const [, t] = useLanguage()
|
|
44
35
|
const [{ user }] = useSession()
|
|
45
|
-
const [, { showToast }] = useToast();
|
|
46
|
-
|
|
47
36
|
const userData = props.userData || (!formState.result.error && formState.result?.result) || user
|
|
48
37
|
|
|
49
|
-
const [isModalVisible, setIsModalVisible] = useState(false);
|
|
50
|
-
const [willVerifyOtpState, setWillVerifyOtpState] = useState(false);
|
|
51
|
-
const [phoneInputData, setPhoneInputData] = useState({
|
|
52
|
-
error: '',
|
|
53
|
-
phone: {
|
|
54
|
-
country_phone_code: null,
|
|
55
|
-
cellphone: null,
|
|
56
|
-
},
|
|
57
|
-
});
|
|
58
|
-
|
|
59
38
|
|
|
60
39
|
useEffect(() => {
|
|
61
40
|
if (isUserDetailsEdit) {
|
|
@@ -76,54 +55,6 @@ const UserDetailsUI = (props: any) => {
|
|
|
76
55
|
}
|
|
77
56
|
}, [user?.country_phone_code])
|
|
78
57
|
|
|
79
|
-
const handleVerifyCodeClick = () => {
|
|
80
|
-
if (formState?.changes?.cellphone && formState?.changes?.country_phone_code) {
|
|
81
|
-
const { cellphone, country_phone_code: countryPhoneCode } = formState?.changes
|
|
82
|
-
|
|
83
|
-
setPhoneInputData({
|
|
84
|
-
error: '',
|
|
85
|
-
phone: {
|
|
86
|
-
country_phone_code: countryPhoneCode,
|
|
87
|
-
cellphone: cellphone,
|
|
88
|
-
},
|
|
89
|
-
});
|
|
90
|
-
handleSendVerifyCode({
|
|
91
|
-
cellphone: cellphone,
|
|
92
|
-
country_phone_code: countryPhoneCode
|
|
93
|
-
})
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
useEffect(() => {
|
|
98
|
-
if (willVerifyOtpState) handleVerifyCodeClick()
|
|
99
|
-
}, [willVerifyOtpState])
|
|
100
|
-
|
|
101
|
-
useEffect(() => {
|
|
102
|
-
if (verifyPhoneState && !verifyPhoneState?.loading) {
|
|
103
|
-
if (verifyPhoneState.result?.error) {
|
|
104
|
-
const message = typeof verifyPhoneState?.result?.result === 'string'
|
|
105
|
-
? verifyPhoneState?.result?.result
|
|
106
|
-
: verifyPhoneState?.result?.result[0]
|
|
107
|
-
verifyPhoneState.result?.result && showToast(
|
|
108
|
-
ToastType.Error,
|
|
109
|
-
message
|
|
110
|
-
)
|
|
111
|
-
setWillVerifyOtpState(false)
|
|
112
|
-
return
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
const okResult = verifyPhoneState.result?.result === 'OK'
|
|
116
|
-
if (okResult) {
|
|
117
|
-
!isModalVisible && setIsModalVisible(true)
|
|
118
|
-
setWillVerifyOtpState(false)
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}, [verifyPhoneState])
|
|
122
|
-
|
|
123
|
-
useEffect(() => {
|
|
124
|
-
if (isVerifiedPhone) setIsModalVisible(false)
|
|
125
|
-
}, [isVerifiedPhone])
|
|
126
|
-
|
|
127
58
|
return (
|
|
128
59
|
<>
|
|
129
60
|
{(validationFields.loading || formState.loading) && (
|
|
@@ -186,32 +117,10 @@ const UserDetailsUI = (props: any) => {
|
|
|
186
117
|
)}
|
|
187
118
|
</UDInfo>
|
|
188
119
|
) : (
|
|
189
|
-
<UserFormDetailsUI
|
|
190
|
-
{...props}
|
|
191
|
-
phoneUpdate={phoneUpdate}
|
|
192
|
-
togglePhoneUpdate={togglePhoneUpdate}
|
|
193
|
-
isCheckout={isCheckout}
|
|
194
|
-
setWillVerifyOtpState={setWillVerifyOtpState}
|
|
195
|
-
/>
|
|
120
|
+
<UserFormDetailsUI {...props} phoneUpdate={phoneUpdate} togglePhoneUpdate={togglePhoneUpdate} isCheckout={isCheckout} />
|
|
196
121
|
)}
|
|
197
122
|
</UDContainer>
|
|
198
123
|
)}
|
|
199
|
-
<OModal
|
|
200
|
-
open={isModalVisible}
|
|
201
|
-
onClose={() => setIsModalVisible(false)}
|
|
202
|
-
entireModal
|
|
203
|
-
>
|
|
204
|
-
<VerifyPhone
|
|
205
|
-
phone={phoneInputData.phone}
|
|
206
|
-
verifyPhoneState={verifyPhoneState}
|
|
207
|
-
checkPhoneCodeState={checkPhoneCodeState}
|
|
208
|
-
handleCheckPhoneCode={handleCheckPhoneCode}
|
|
209
|
-
setCheckPhoneCodeState={setCheckPhoneCodeState}
|
|
210
|
-
handleVerifyCodeClick={handleVerifyCodeClick}
|
|
211
|
-
onClose={() => setIsModalVisible(false)}
|
|
212
|
-
/>
|
|
213
|
-
</OModal>
|
|
214
|
-
<Spinner visible={verifyPhoneState?.loading} />
|
|
215
124
|
</>
|
|
216
125
|
)
|
|
217
126
|
}
|
|
@@ -25,8 +25,6 @@ export const UserFormDetailsUI = (props: any) => {
|
|
|
25
25
|
handleButtonUpdateClick,
|
|
26
26
|
phoneUpdate,
|
|
27
27
|
hideUpdateButton,
|
|
28
|
-
setWillVerifyOtpState,
|
|
29
|
-
isVerifiedPhone,
|
|
30
28
|
handleChangePromotions
|
|
31
29
|
} = props;
|
|
32
30
|
|
|
@@ -141,8 +139,8 @@ export const UserFormDetailsUI = (props: any) => {
|
|
|
141
139
|
if (
|
|
142
140
|
formState.changes?.cellphone === null &&
|
|
143
141
|
((validationFields?.fields?.checkout?.cellphone?.enabled &&
|
|
144
|
-
|
|
145
|
-
|
|
142
|
+
validationFields?.fields?.checkout?.cellphone?.required) ||
|
|
143
|
+
configs?.verification_phone_required?.value === '1')
|
|
146
144
|
) {
|
|
147
145
|
showToast(
|
|
148
146
|
ToastType.Error,
|
|
@@ -153,9 +151,6 @@ export const UserFormDetailsUI = (props: any) => {
|
|
|
153
151
|
);
|
|
154
152
|
return;
|
|
155
153
|
}
|
|
156
|
-
if (formState?.changes?.cellphone && !isVerifiedPhone) {
|
|
157
|
-
showToast(ToastType.Error, t('VERIFY_ERROR_PHONE_NUMBER', 'The Phone Number field is not verified'))
|
|
158
|
-
}
|
|
159
154
|
let changes = null;
|
|
160
155
|
if (user?.cellphone && !userPhoneNumber) {
|
|
161
156
|
changes = {
|
|
@@ -216,13 +211,6 @@ export const UserFormDetailsUI = (props: any) => {
|
|
|
216
211
|
}
|
|
217
212
|
}
|
|
218
213
|
}, [user, isEdit]);
|
|
219
|
-
|
|
220
|
-
useEffect(() => {
|
|
221
|
-
if (!phoneInputData.error && phoneInputData?.phone?.country_phone_code && phoneInputData?.phone?.cellphone) {
|
|
222
|
-
setWillVerifyOtpState(true)
|
|
223
|
-
}
|
|
224
|
-
}, [phoneInputData])
|
|
225
|
-
|
|
226
214
|
return (
|
|
227
215
|
<>
|
|
228
216
|
<UDForm>
|
|
@@ -16,6 +16,7 @@ import { LogoutButton } from '../LogoutButton'
|
|
|
16
16
|
import { LanguageSelector } from '../LanguageSelector'
|
|
17
17
|
import MessageCircle from 'react-native-vector-icons/AntDesign'
|
|
18
18
|
import Ionicons from 'react-native-vector-icons/Ionicons'
|
|
19
|
+
import FastImage from 'react-native-fast-image'
|
|
19
20
|
|
|
20
21
|
import {
|
|
21
22
|
OIcon,
|
|
@@ -135,18 +136,24 @@ const ProfileListUI = (props: ProfileParams) => {
|
|
|
135
136
|
}
|
|
136
137
|
|
|
137
138
|
return (
|
|
138
|
-
<View style={{ flex: 1, height: height - top - bottom - 62 }}>
|
|
139
|
-
<OText size={24} style={{ marginTop: 15, paddingHorizontal: 40 }}>
|
|
139
|
+
<View style={{ flex: 1, height: height - top - bottom - 62, paddingTop: 20 }}>
|
|
140
|
+
{/* <OText size={24} style={{ marginTop: 15, paddingHorizontal: 40 }}>
|
|
140
141
|
{t('PROFILE', 'Profile')}
|
|
141
|
-
</OText>
|
|
142
|
+
</OText> */}
|
|
142
143
|
<CenterView style={styles.pagePadding}>
|
|
143
144
|
<View style={styles.photo}>
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
145
|
+
{user?.photo ? (
|
|
146
|
+
<FastImage
|
|
147
|
+
style={{ height: 60, width: 60, borderRadius: 8 }}
|
|
148
|
+
source={{
|
|
149
|
+
uri: user?.photo,
|
|
150
|
+
priority: FastImage.priority.normal,
|
|
151
|
+
}}
|
|
152
|
+
resizeMode={FastImage.resizeMode.cover}
|
|
153
|
+
/>
|
|
154
|
+
) : (
|
|
155
|
+
<Ionicons name='person-outline' size={50} style={{ marginRight: 10 }} />
|
|
156
|
+
)}
|
|
150
157
|
</View>
|
|
151
158
|
<View style={{ flexBasis: '70%' }}>
|
|
152
159
|
<OText size={20} lineHeight={30} weight={Platform.OS === 'ios' ? '500' : 'bold'} color={theme.colors.textNormal}>{user?.name} {user?.lastname}</OText>
|
|
@@ -20,6 +20,8 @@ import { CenterView } from './styles';
|
|
|
20
20
|
import NavBar from '../NavBar';
|
|
21
21
|
import { Container } from '../../layouts/Container';
|
|
22
22
|
import { VerifyPhone } from '../VerifyPhone'
|
|
23
|
+
import Ionicons from 'react-native-vector-icons/Ionicons'
|
|
24
|
+
import FastImage from 'react-native-fast-image'
|
|
23
25
|
|
|
24
26
|
const ProfileUI = (props: ProfileParams) => {
|
|
25
27
|
const {
|
|
@@ -286,18 +288,24 @@ const ProfileUI = (props: ProfileParams) => {
|
|
|
286
288
|
/>
|
|
287
289
|
<CenterView style={styles.pagePadding}>
|
|
288
290
|
<View style={styles.photo}>
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
291
|
+
{user?.photo ? (
|
|
292
|
+
<FastImage
|
|
293
|
+
style={{ height: 60, width: 80, borderRadius: 8 }}
|
|
294
|
+
source={{
|
|
295
|
+
uri: user?.photo,
|
|
296
|
+
priority: FastImage.priority.normal,
|
|
297
|
+
}}
|
|
298
|
+
resizeMode={FastImage.resizeMode.cover}
|
|
299
|
+
/>
|
|
300
|
+
) : (
|
|
301
|
+
<Ionicons name='person-outline' size={50} />
|
|
302
|
+
)}
|
|
295
303
|
</View>
|
|
296
304
|
<OIconButton
|
|
297
305
|
icon={theme.images.general.camera}
|
|
298
306
|
borderColor={theme.colors.clear}
|
|
299
|
-
iconStyle={{ width:
|
|
300
|
-
style={{ maxWidth: 40, position: 'absolute', bottom: -2, alignSelf: 'center' }}
|
|
307
|
+
iconStyle={{ width: 20, height: 20 }}
|
|
308
|
+
style={{ maxWidth: 40, position: 'absolute', bottom: -2, alignSelf: 'center', backgroundColor: '#000', opacity: 0.5 }}
|
|
301
309
|
onClick={() => handleImagePicker()}
|
|
302
310
|
/>
|
|
303
311
|
</CenterView>
|
|
@@ -37,8 +37,8 @@ export const VerifyPhone = (props: any) => {
|
|
|
37
37
|
height: 75,
|
|
38
38
|
marginBottom: 25,
|
|
39
39
|
borderWidth: 1,
|
|
40
|
-
borderColor: theme.colors.
|
|
41
|
-
borderRadius:
|
|
40
|
+
borderColor: theme.colors.disabled,
|
|
41
|
+
borderRadius: 20,
|
|
42
42
|
textAlign: 'center',
|
|
43
43
|
fontSize: 40
|
|
44
44
|
}
|
|
@@ -131,11 +131,11 @@ export const VerifyPhone = (props: any) => {
|
|
|
131
131
|
|
|
132
132
|
return (
|
|
133
133
|
<Container>
|
|
134
|
-
<OText size={
|
|
135
|
-
{t('
|
|
134
|
+
<OText size={30} style={{ textAlign: 'left' }}>
|
|
135
|
+
{t('VERIFY_PHONE', 'Verify Phone')}
|
|
136
136
|
</OText>
|
|
137
137
|
{lastNumbers && (
|
|
138
|
-
<OText size={
|
|
138
|
+
<OText size={20} color={theme.colors.disabled}>
|
|
139
139
|
{`${t('MESSAGE_ENTER_VERIFY_CODE', 'Please, enter the verification code we sent to your mobile ending with')} **${lastNumbers}`}
|
|
140
140
|
</OText>
|
|
141
141
|
)}
|
|
@@ -174,7 +174,7 @@ export const VerifyPhone = (props: any) => {
|
|
|
174
174
|
).result?.result)?.map((e: any, i: number) => (
|
|
175
175
|
<OText
|
|
176
176
|
key={i}
|
|
177
|
-
size={
|
|
177
|
+
size={20}
|
|
178
178
|
color={theme.colors.error}
|
|
179
179
|
>
|
|
180
180
|
{`* ${t(getTraduction(e))}`}
|
|
@@ -183,9 +183,12 @@ export const VerifyPhone = (props: any) => {
|
|
|
183
183
|
</ErrorSection>
|
|
184
184
|
)}
|
|
185
185
|
<ResendSection>
|
|
186
|
+
<OText size={16} style={{ marginRight: 5 }}>
|
|
187
|
+
{t('ARE_YOU_NOT_SEEING_THE_CODE', 'Are you not seeing the code?')}
|
|
188
|
+
</OText>
|
|
186
189
|
<Pressable onPress={() => handleSendCodeAgain()}>
|
|
187
190
|
<OText size={16} color={theme.colors.primary}>
|
|
188
|
-
{t('
|
|
191
|
+
{t('SEND_AGAIN', 'Send Again')}
|
|
189
192
|
</OText>
|
|
190
193
|
</Pressable>
|
|
191
194
|
</ResendSection>
|
|
@@ -19,12 +19,13 @@ export const CountDownContainer = styled.View`
|
|
|
19
19
|
export const ResendSection = styled.View`
|
|
20
20
|
display: flex;
|
|
21
21
|
flex-direction: row;
|
|
22
|
+
justify-content: center;
|
|
22
23
|
margin-bottom: 30px;
|
|
23
24
|
`
|
|
24
25
|
|
|
25
26
|
export const WrappCountdown = styled.View`
|
|
26
27
|
padding-top: 20px;
|
|
27
|
-
padding-bottom:
|
|
28
|
+
padding-bottom: 20px;
|
|
28
29
|
`
|
|
29
30
|
|
|
30
31
|
export const InputsSection = styled.View`
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import OText from './OText';
|
|
3
|
+
|
|
4
|
+
const HeaderTitle = (props: any) => {
|
|
5
|
+
const { text, style } = props
|
|
6
|
+
return (
|
|
7
|
+
<OText
|
|
8
|
+
size={24}
|
|
9
|
+
style={style ?? {
|
|
10
|
+
marginTop: 30,
|
|
11
|
+
paddingHorizontal: 40,
|
|
12
|
+
textTransform: 'capitalize'
|
|
13
|
+
}}
|
|
14
|
+
>
|
|
15
|
+
{text}
|
|
16
|
+
</OText>
|
|
17
|
+
)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export default HeaderTitle
|
|
@@ -11,6 +11,7 @@ import OKeyButton from './OKeyButton'
|
|
|
11
11
|
import OModal from './OModal'
|
|
12
12
|
import OAlert from './OAlert'
|
|
13
13
|
import OBottomPopup from './OBottomPopup'
|
|
14
|
+
import HeaderTitle from './HeaderTitle'
|
|
14
15
|
|
|
15
16
|
export {
|
|
16
17
|
OText,
|
|
@@ -26,4 +27,5 @@ export {
|
|
|
26
27
|
OAlert,
|
|
27
28
|
OModal,
|
|
28
29
|
OBottomPopup,
|
|
30
|
+
HeaderTitle
|
|
29
31
|
}
|
|
@@ -31,12 +31,6 @@ export interface ProfileParams {
|
|
|
31
31
|
validationFields?: any;
|
|
32
32
|
showField?: any;
|
|
33
33
|
isRequiredField?: any;
|
|
34
|
-
handleSendVerifyCode?: any;
|
|
35
|
-
handleCheckPhoneCode?: any;
|
|
36
|
-
checkPhoneCodeState?: any;
|
|
37
|
-
verifyPhoneState?: any;
|
|
38
|
-
setCheckPhoneCodeState?: any;
|
|
39
|
-
isVerifiedPhone?: any;
|
|
40
34
|
}
|
|
41
35
|
|
|
42
36
|
export interface AddressListParams {
|
|
@@ -115,6 +109,7 @@ export interface PhoneInputParams {
|
|
|
115
109
|
noDropIcon?: boolean;
|
|
116
110
|
flagStyle?: any;
|
|
117
111
|
isDisabled?: any;
|
|
112
|
+
isStartValidation?: any;
|
|
118
113
|
}
|
|
119
114
|
|
|
120
115
|
export interface LanguageSelectorParams {
|
|
@@ -143,6 +138,8 @@ export interface HighestRatedBusinessesParams {
|
|
|
143
138
|
businessesList: { businesses: Array<any>, loading: boolean, error: null | string };
|
|
144
139
|
onBusinessClick?: void;
|
|
145
140
|
navigation? :any;
|
|
141
|
+
isLoading?: boolean;
|
|
142
|
+
getBusinesses: (newFetch : boolean) => void
|
|
146
143
|
}
|
|
147
144
|
export interface BusinessTypeFilterParams {
|
|
148
145
|
businessTypes?: Array<any>;
|
|
@@ -189,6 +186,7 @@ export interface BusinessBasicInformationParams {
|
|
|
189
186
|
isBusinessInfoShow?: boolean;
|
|
190
187
|
header?: any;
|
|
191
188
|
logo?: any;
|
|
189
|
+
isPreOrder?: boolean;
|
|
192
190
|
}
|
|
193
191
|
export interface BusinessProductsCategoriesParams {
|
|
194
192
|
categories: Array<any>;
|
|
@@ -210,7 +208,7 @@ export interface BusinessProductsListParams {
|
|
|
210
208
|
errors?: any;
|
|
211
209
|
businessId?: number;
|
|
212
210
|
category?: any;
|
|
213
|
-
categories
|
|
211
|
+
categories?: Array<any>;
|
|
214
212
|
categoryState?: any;
|
|
215
213
|
onProductClick?: any;
|
|
216
214
|
handleSearchRedirect?: () => {};
|
|
@@ -376,7 +374,7 @@ export interface MessagesParams {
|
|
|
376
374
|
handleSend?: () => {},
|
|
377
375
|
setImage?: (image: string | null) => {},
|
|
378
376
|
setMessage?: (comment: string) => {},
|
|
379
|
-
setMessages?: () => {},
|
|
377
|
+
setMessages?: (image: any | null) => {},
|
|
380
378
|
readMessages?: () => {},
|
|
381
379
|
onClose?: () => void,
|
|
382
380
|
isMeesageListing?: boolean,
|
|
@@ -520,3 +518,15 @@ export interface MessageListingParams {
|
|
|
520
518
|
navigation: any;
|
|
521
519
|
franchiseId?: any;
|
|
522
520
|
}
|
|
521
|
+
export interface NoNetworkParams {
|
|
522
|
+
image?: any,
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
export interface PlaceSpotParams {
|
|
526
|
+
isOpenPlaceSpot?: boolean,
|
|
527
|
+
cart?: any ,
|
|
528
|
+
placesState?: any,
|
|
529
|
+
handleChangePlace?: any,
|
|
530
|
+
getPlacesList?: any,
|
|
531
|
+
setOpenPlaceModal?: any
|
|
532
|
+
}
|
|
@@ -97,27 +97,27 @@ export const OrderTypeSelector = (props: any) => {
|
|
|
97
97
|
{
|
|
98
98
|
value: 1,
|
|
99
99
|
content: t('DELIVERY', 'Delivery'),
|
|
100
|
-
description: t('ORDERTYPE_DESCRIPTION_DELIVERY', '
|
|
100
|
+
description: t('ORDERTYPE_DESCRIPTION_DELIVERY', 'Delivery description')
|
|
101
101
|
},
|
|
102
102
|
{
|
|
103
103
|
value: 2,
|
|
104
104
|
content: t('PICKUP', 'Pickup'),
|
|
105
|
-
description: t('ORDERTYPE_DESCRIPTION_PICKUP', '
|
|
105
|
+
description: t('ORDERTYPE_DESCRIPTION_PICKUP', 'Pickup description')
|
|
106
106
|
},
|
|
107
107
|
{
|
|
108
108
|
value: 3,
|
|
109
109
|
content: t('EAT_IN', 'Eat in'),
|
|
110
|
-
description: t('ORDERTYPE_DESCRIPTION_EATIN', '
|
|
110
|
+
description: t('ORDERTYPE_DESCRIPTION_EATIN', 'Eat in description')
|
|
111
111
|
},
|
|
112
112
|
{
|
|
113
113
|
value: 4,
|
|
114
114
|
content: t('CURBSIDE', 'Curbside'),
|
|
115
|
-
description: t('ORDERTYPE_DESCRIPTION_CURBSIDE', '
|
|
115
|
+
description: t('ORDERTYPE_DESCRIPTION_CURBSIDE', 'Curbside description')
|
|
116
116
|
},
|
|
117
117
|
{
|
|
118
118
|
value: 5,
|
|
119
119
|
content: t('DRIVE_THRU', 'Drive thru'),
|
|
120
|
-
description: t('ORDERTYPE_DESCRIPTION_DRIVETHRU', '
|
|
120
|
+
description: t('ORDERTYPE_DESCRIPTION_DRIVETHRU', 'Drive Thru description')
|
|
121
121
|
}
|
|
122
122
|
]
|
|
123
123
|
}
|
|
@@ -144,7 +144,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
144
144
|
{isFarAway && (
|
|
145
145
|
<FarAwayMessage style={styles.farAwayMsg}>
|
|
146
146
|
<Ionicons name='md-warning-outline' style={styles.iconStyle} />
|
|
147
|
-
<OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', '
|
|
147
|
+
<OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'Your are far from this address')}</OText>
|
|
148
148
|
</FarAwayMessage>
|
|
149
149
|
)}
|
|
150
150
|
<View style={styles.wrapperOrderOptions}>
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
import React, { useState, useEffect } from 'react'
|
|
2
|
-
import { useLanguage } from 'ordering-components/native'
|
|
3
|
-
import { GooglePayButton, useGooglePay, ApplePayButton, useApplePay } from '@stripe/stripe-react-native'
|
|
4
|
-
import { OButton } from '../shared';
|
|
5
|
-
import { Platform, View } from 'react-native';
|
|
6
|
-
import { StripeMethodFormParams } from '../../types';
|
|
7
|
-
|
|
8
|
-
export const StripeMethodForm = (props: StripeMethodFormParams) => {
|
|
9
|
-
const {
|
|
10
|
-
cart,
|
|
11
|
-
handleSource,
|
|
12
|
-
onCancel,
|
|
13
|
-
setErrors,
|
|
14
|
-
paymethod,
|
|
15
|
-
devMode
|
|
16
|
-
} = props
|
|
17
|
-
const { initGooglePay, createGooglePayPaymentMethod, loading } = useGooglePay();
|
|
18
|
-
const { presentApplePay, isApplePaySupported } = useApplePay();
|
|
19
|
-
const [initialized, setInitialized] = useState(false);
|
|
20
|
-
const [, t] = useLanguage()
|
|
21
|
-
|
|
22
|
-
useEffect(() => {
|
|
23
|
-
if (paymethod !== 'google_pay') return
|
|
24
|
-
if (Platform.OS === 'ios') {
|
|
25
|
-
setErrors(t('GOOGLE_PAY_NOT_SUPPORTED', 'Google pay not supported'))
|
|
26
|
-
return
|
|
27
|
-
}
|
|
28
|
-
const initialize = async () => {
|
|
29
|
-
try {
|
|
30
|
-
const { error } = await initGooglePay({
|
|
31
|
-
testEnv: devMode,
|
|
32
|
-
merchantName: 'Widget Store',
|
|
33
|
-
countryCode: 'US',
|
|
34
|
-
billingAddressConfig: {
|
|
35
|
-
format: 'FULL',
|
|
36
|
-
isPhoneNumberRequired: true,
|
|
37
|
-
isRequired: false,
|
|
38
|
-
},
|
|
39
|
-
existingPaymentMethodRequired: false,
|
|
40
|
-
isEmailRequired: true,
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
if (error) {
|
|
44
|
-
setErrors(error.code + ' - ' + error.message);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
setInitialized(true);
|
|
48
|
-
} catch (err: any) {
|
|
49
|
-
setErrors('Catch ' + err?.message)
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
initialize();
|
|
53
|
-
}, [initGooglePay]);
|
|
54
|
-
|
|
55
|
-
useEffect(() => {
|
|
56
|
-
if (paymethod !== 'apple_pay') return
|
|
57
|
-
if (Platform.OS === 'android') {
|
|
58
|
-
setErrors(t('APPLE_PAY_NOT_SUPPORTED', 'Apple pay not supported'))
|
|
59
|
-
return
|
|
60
|
-
}
|
|
61
|
-
}, [])
|
|
62
|
-
|
|
63
|
-
const createPaymentMethod = async () => {
|
|
64
|
-
|
|
65
|
-
const { error, paymentMethod } = await createGooglePayPaymentMethod({
|
|
66
|
-
amount: cart?.balance ?? cart?.total,
|
|
67
|
-
currencyCode: 'USD',
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
if (error) {
|
|
71
|
-
setErrors(error.code + ' - ' + error.message);
|
|
72
|
-
return;
|
|
73
|
-
} else if (paymentMethod) {
|
|
74
|
-
handleSource({
|
|
75
|
-
...paymentMethod?.Card,
|
|
76
|
-
id: paymentMethod.id,
|
|
77
|
-
type: paymentMethod.type,
|
|
78
|
-
source_id: paymentMethod?.id,
|
|
79
|
-
card: {
|
|
80
|
-
brand: paymentMethod.Card.brand,
|
|
81
|
-
last4: paymentMethod.Card.last4
|
|
82
|
-
}
|
|
83
|
-
})
|
|
84
|
-
onCancel()
|
|
85
|
-
}
|
|
86
|
-
setInitialized(false);
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
const pay = async () => {
|
|
90
|
-
if (!isApplePaySupported) {
|
|
91
|
-
setErrors(t('APPLE_PAY_NOT_SUPPORTED', 'Apple pay not supported'))
|
|
92
|
-
return
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
const { error, paymentMethod } = await presentApplePay({
|
|
96
|
-
cartItems: cart?.products?.map((product: any) => ({ label: product?.name, amount: product?.price?.toString?.() })),
|
|
97
|
-
country: 'US',
|
|
98
|
-
currency: 'USD',
|
|
99
|
-
shippingMethods: [
|
|
100
|
-
{
|
|
101
|
-
amount: cart?.balance?.toString() ?? cart?.total?.toString?.(),
|
|
102
|
-
identifier: 'DPS',
|
|
103
|
-
label: 'Courier',
|
|
104
|
-
detail: 'Delivery',
|
|
105
|
-
type: 'final',
|
|
106
|
-
},
|
|
107
|
-
],
|
|
108
|
-
|
|
109
|
-
requiredShippingAddressFields: ['emailAddress', 'phoneNumber'],
|
|
110
|
-
requiredBillingContactFields: ['phoneNumber', 'name'],
|
|
111
|
-
});
|
|
112
|
-
if (error) {
|
|
113
|
-
setErrors(error.code + ' - ' + error.message);
|
|
114
|
-
} else if (paymentMethod) {
|
|
115
|
-
handleSource({
|
|
116
|
-
...paymentMethod?.Card,
|
|
117
|
-
id: paymentMethod.id,
|
|
118
|
-
type: paymentMethod.type,
|
|
119
|
-
source_id: paymentMethod?.id,
|
|
120
|
-
card: {
|
|
121
|
-
brand: paymentMethod.Card.brand,
|
|
122
|
-
last4: paymentMethod.Card.last4
|
|
123
|
-
}
|
|
124
|
-
})
|
|
125
|
-
onCancel()
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
return (
|
|
130
|
-
<>
|
|
131
|
-
{paymethod === 'google_pay' ? (
|
|
132
|
-
<View>
|
|
133
|
-
{!loading && initialized && (
|
|
134
|
-
<OButton
|
|
135
|
-
textStyle={{
|
|
136
|
-
color: '#fff'
|
|
137
|
-
}}
|
|
138
|
-
imgRightSrc={null}
|
|
139
|
-
onClick={createPaymentMethod}
|
|
140
|
-
isDisabled={!initialized}
|
|
141
|
-
text={t('PAY_WITH_GOOGLE_PAY', 'Pay with Google Pay')}
|
|
142
|
-
/>
|
|
143
|
-
)}
|
|
144
|
-
</View>
|
|
145
|
-
) : (
|
|
146
|
-
<View>
|
|
147
|
-
{isApplePaySupported && (
|
|
148
|
-
<ApplePayButton
|
|
149
|
-
onPress={pay}
|
|
150
|
-
type="plain"
|
|
151
|
-
buttonStyle="black"
|
|
152
|
-
borderRadius={4}
|
|
153
|
-
style={{
|
|
154
|
-
width: '100%',
|
|
155
|
-
height: 50,
|
|
156
|
-
}}
|
|
157
|
-
/>
|
|
158
|
-
)}
|
|
159
|
-
</View>
|
|
160
|
-
)}
|
|
161
|
-
</>
|
|
162
|
-
)
|
|
163
|
-
}
|