ordering-ui-react-native 0.8.3 → 0.8.7
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 +2 -1
- package/src/components/OrdersOption/index.tsx +1 -12
- package/src/navigators/HomeNavigator.tsx +27 -2
- package/src/pages/Checkout.tsx +3 -3
- package/src/types/react-native-background-timer/index.d.ts +1 -0
- package/themes/business/index.tsx +6 -0
- package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +167 -240
- package/themes/business/src/components/Chat/index.tsx +68 -54
- package/themes/business/src/components/DriverMap/index.tsx +86 -116
- package/themes/business/src/components/GoogleMap/index.tsx +43 -39
- package/themes/business/src/components/MessagesOption/index.tsx +73 -59
- package/themes/business/src/components/MessagesOption/styles.tsx +1 -1
- package/themes/business/src/components/OrderDetails/index.tsx +104 -92
- package/themes/business/src/components/OrderDetails/styles.tsx +6 -2
- package/themes/business/src/components/OrderDetailsDelivery/index.tsx +816 -0
- package/themes/business/src/components/OrderDetailsDelivery/styles.tsx +144 -0
- package/themes/business/src/components/OrderMessage/index.tsx +122 -23
- package/themes/business/src/components/OrdersOption/index.tsx +52 -66
- package/themes/business/src/components/PreviousMessages/index.tsx +2 -2
- package/themes/business/src/components/PreviousOrders/index.tsx +5 -5
- package/themes/business/src/components/ProductItemAccordion/index.tsx +5 -1
- package/themes/business/src/components/StoresList/index.tsx +51 -49
- package/themes/business/src/components/UserFormDetails/index.tsx +2 -1
- package/themes/business/src/components/UserProfileForm/index.tsx +18 -30
- package/themes/business/src/components/UserProfileForm/styles.tsx +0 -2
- package/themes/business/src/components/shared/OInput.tsx +3 -2
- package/themes/business/src/hooks/useLocation.tsx +7 -3
- package/themes/business/src/layouts/SafeAreaContainer.tsx +43 -0
- package/themes/business/src/types/index.tsx +8 -0
- package/themes/doordash/index.tsx +4 -4
- package/themes/doordash/src/components/LoginForm/index.tsx +2 -5
- package/themes/doordash/src/components/SingleProductCard/index.tsx +1 -1
- package/themes/doordash/src/components/SocialShare/index.tsx +34 -5
- package/themes/doordash/src/components/shared/OModal.tsx +1 -6
- package/themes/instacart/src/components/AddressForm/index.tsx +2 -60
- package/themes/instacart/src/components/AddressList/index.tsx +6 -3
- package/themes/instacart/src/components/Home/index.tsx +39 -14
- package/themes/instacart/src/components/Home/styles.tsx +7 -0
- package/themes/instacart/src/components/LoginForm/index.tsx +3 -3
- package/themes/instacart/src/components/LoginForm/styles.tsx +1 -3
- package/themes/instacart/src/components/LogoutButton/index.tsx +7 -6
- package/themes/instacart/src/components/SocialShare/index.tsx +56 -19
- package/themes/instacart/src/components/SocialShare/styles.ts +0 -8
- package/themes/instacart/src/components/UserProfileForm/index.tsx +1 -1
- package/themes/instacart/src/components/shared/OIcon.tsx +2 -1
- package/themes/instacart/src/layouts/Container.tsx +1 -1
- package/themes/instacart/src/types/index.tsx +12 -12
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useEffect, useState, useRef } from 'react'
|
|
2
|
-
import { StyleSheet, View, TouchableOpacity, Keyboard, TouchableWithoutFeedback
|
|
2
|
+
import { StyleSheet, View, TouchableOpacity, Keyboard, TouchableWithoutFeedback } from 'react-native'
|
|
3
3
|
import { AddressForm as AddressFormController, useLanguage, useConfig, useSession, useOrder, ToastType, useToast } from 'ordering-components/native'
|
|
4
4
|
import { GooglePlacesAutocomplete } from 'react-native-google-places-autocomplete';
|
|
5
5
|
import Spinner from 'react-native-loading-spinner-overlay';
|
|
@@ -13,14 +13,6 @@ import { AddressFormParams } from '../../types'
|
|
|
13
13
|
import { getTraduction } from '../../utils'
|
|
14
14
|
import { GoogleMap } from '../GoogleMap'
|
|
15
15
|
import NavBar from '../NavBar'
|
|
16
|
-
import Geolocation from '@react-native-community/geolocation';
|
|
17
|
-
|
|
18
|
-
import {
|
|
19
|
-
PERMISSIONS,
|
|
20
|
-
PermissionStatus,
|
|
21
|
-
request,
|
|
22
|
-
openSettings,
|
|
23
|
-
} from 'react-native-permissions';
|
|
24
16
|
|
|
25
17
|
import {
|
|
26
18
|
AddressFormContainer,
|
|
@@ -132,49 +124,8 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
132
124
|
const continueAsGuest = () => navigation.navigate('BusinessList')
|
|
133
125
|
const goToBack = () => navigation?.canGoBack() && navigation.goBack()
|
|
134
126
|
|
|
135
|
-
const requestLocationPermission = async () => {
|
|
136
|
-
let permissionStatus: PermissionStatus;
|
|
137
|
-
if (Platform.OS === 'ios') {
|
|
138
|
-
permissionStatus = await request(PERMISSIONS.IOS.LOCATION_WHEN_IN_USE);
|
|
139
|
-
} else {
|
|
140
|
-
permissionStatus = await request(
|
|
141
|
-
PERMISSIONS.ANDROID.ACCESS_FINE_LOCATION,
|
|
142
|
-
);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
if (permissionStatus === 'denied') {
|
|
146
|
-
openSettings();
|
|
147
|
-
}
|
|
148
|
-
getOneTimeLocation();
|
|
149
|
-
};
|
|
150
|
-
|
|
151
|
-
const getOneTimeLocation = () => {
|
|
152
|
-
Geolocation.getCurrentPosition( (position) => {
|
|
153
|
-
getAddressFormatted({
|
|
154
|
-
latitude: position.coords.latitude,
|
|
155
|
-
longitude: position.coords.longitude
|
|
156
|
-
})
|
|
157
|
-
},(error) => {
|
|
158
|
-
console.log(error.message);
|
|
159
|
-
},
|
|
160
|
-
{
|
|
161
|
-
enableHighAccuracy: false,
|
|
162
|
-
timeout: 30000,
|
|
163
|
-
maximumAge: 1000
|
|
164
|
-
});
|
|
165
|
-
};
|
|
166
|
-
|
|
167
127
|
const getAddressFormatted = (address: any) => {
|
|
168
128
|
const data: any = { address: null, error: null }
|
|
169
|
-
const isObjet = typeof address === 'object';
|
|
170
|
-
const filterAddressInfo = [
|
|
171
|
-
{ tag: 'street_number', isShort: true },
|
|
172
|
-
{ tag: 'route', isShort: true },
|
|
173
|
-
{ tag: 'locality', isShort: true },
|
|
174
|
-
{ tag: 'administrative_area_level_1', isShort: false },
|
|
175
|
-
{ tag: 'country', isShort: false },
|
|
176
|
-
]
|
|
177
|
-
let addressValue: any = [];
|
|
178
129
|
Geocoder.init(googleMapsApiKey);
|
|
179
130
|
Geocoder.from(address)
|
|
180
131
|
.then((json: any) => {
|
|
@@ -182,18 +133,11 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
182
133
|
let postalCode = null
|
|
183
134
|
for (const component of json.results?.[0].address_components) {
|
|
184
135
|
const addressType = component.types?.[0]
|
|
185
|
-
if (typeof address === 'object') {
|
|
186
|
-
for (const filterProps of filterAddressInfo) {
|
|
187
|
-
if(filterProps.tag.includes(addressType)) {
|
|
188
|
-
addressValue.push(filterProps.isShort ? component.short_name : component.long_name)
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
136
|
if (addressType === 'postal_code') {
|
|
193
137
|
postalCode = component.short_name
|
|
138
|
+
break
|
|
194
139
|
}
|
|
195
140
|
}
|
|
196
|
-
isObjet ? address = addressValue.join(', ') : address
|
|
197
141
|
data.address = {
|
|
198
142
|
address,
|
|
199
143
|
location: json.results[0].geometry.location,
|
|
@@ -533,9 +477,7 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
533
477
|
/>
|
|
534
478
|
{((!isInputFocused && curInpVal.length > 0) || (curInpVal.length == 0)) && (
|
|
535
479
|
<View style={{ position: 'absolute', zIndex: 100, top: 10, end: 10 }}>
|
|
536
|
-
<TouchableOpacity onPress={requestLocationPermission}>
|
|
537
480
|
<OIcon src={theme.images.general.pin_line} width={16} color={theme.colors.primary} />
|
|
538
|
-
</TouchableOpacity>
|
|
539
481
|
</View>
|
|
540
482
|
)}
|
|
541
483
|
</AutocompleteInput>
|
|
@@ -156,17 +156,20 @@ const AddressListUI = (props: AddressListParams) => {
|
|
|
156
156
|
<Container>
|
|
157
157
|
{(!addressList.loading || (isFromProductsList || isFromBusinesses || isFromProfile)) && (
|
|
158
158
|
<AddressListContainer>
|
|
159
|
+
{isFromProfile && (
|
|
160
|
+
<OText size={16} mBottom={20} weight={'600'}>{t('SAVED_PLACES', 'My saved places')}</OText>
|
|
161
|
+
)}
|
|
159
162
|
{
|
|
160
163
|
route &&
|
|
161
164
|
(
|
|
162
165
|
route?.params?.isFromBusinesses ||
|
|
163
166
|
route?.params?.isFromCheckout ||
|
|
164
|
-
route?.params?.isFromProductsList
|
|
165
|
-
route?.params?.isFromProfile
|
|
167
|
+
route?.params?.isFromProductsList
|
|
166
168
|
) &&
|
|
169
|
+
!isFromProfile &&
|
|
167
170
|
(
|
|
168
171
|
<NavBar
|
|
169
|
-
title={
|
|
172
|
+
title={t('ADDRESS_LIST', 'Address List')}
|
|
170
173
|
titleAlign={'center'}
|
|
171
174
|
onActionLeft={() => goToBack()}
|
|
172
175
|
showCall={false}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import React, { useEffect, useRef, useState } from 'react';
|
|
2
2
|
import { useLanguage, useOrder, useApi, useSession, useUtils } from 'ordering-components/native';
|
|
3
3
|
import { useTheme } from 'styled-components/native';
|
|
4
|
-
import { StyleSheet, View, Dimensions, TextStyle, Animated, PanResponder } from 'react-native';
|
|
4
|
+
import { StyleSheet, View, Dimensions, TextStyle, Animated, PanResponder, KeyboardAvoidingView, Platform } from 'react-native';
|
|
5
5
|
import { OBottomPopup, OButton, OIcon, OText } from '../shared';
|
|
6
|
-
import { LogoWrapper, Slogan } from './styles';
|
|
6
|
+
import { BottomPopup, LogoWrapper, Slogan } from './styles';
|
|
7
7
|
import { LanguageSelector } from '../LanguageSelector'
|
|
8
8
|
import { TouchableOpacity } from 'react-native-gesture-handler';
|
|
9
9
|
import { _setStoreData, _removeStoreData } from '../../providers/StoreUtil';
|
|
10
10
|
import { ScrollView } from 'react-native-gesture-handler';
|
|
11
11
|
import { LoginForm } from '../LoginForm';
|
|
12
12
|
import { SignupForm } from '../SignupForm';
|
|
13
|
+
import Modal from 'react-native-modal';
|
|
13
14
|
|
|
14
15
|
const windowHeight = Dimensions.get('window').height
|
|
15
16
|
|
|
@@ -212,20 +213,40 @@ export const Home = (props: any) => {
|
|
|
212
213
|
</View>
|
|
213
214
|
|
|
214
215
|
|
|
215
|
-
<
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
216
|
+
<Modal
|
|
217
|
+
isVisible={openLogin}
|
|
218
|
+
coverScreen={false}
|
|
219
|
+
onModalHide={handleLoginPage}
|
|
220
|
+
onSwipeComplete={handleLoginPage}
|
|
221
|
+
onBackdropPress={handleLoginPage}
|
|
222
|
+
style={styles.bottomModalStyle}
|
|
219
223
|
>
|
|
220
|
-
<
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
224
|
+
<BottomPopup>
|
|
225
|
+
<KeyboardAvoidingView behavior={Platform.OS == 'ios' ? 'padding' : 'height'} style={{flex: 0, justifyContent: 'flex-end'}}>
|
|
226
|
+
<ScrollView style={{backgroundColor: 'white', overflow: 'visible'}} showsVerticalScrollIndicator={false}>
|
|
227
|
+
<OText size={20} lineHeight={30} weight={'600'} mBottom={20}>{t('LOGIN', 'Login')}</OText>
|
|
228
|
+
<LoginForm {...loginProps} />
|
|
229
|
+
</ScrollView>
|
|
230
|
+
</KeyboardAvoidingView>
|
|
231
|
+
</BottomPopup>
|
|
232
|
+
</Modal>
|
|
233
|
+
<Modal
|
|
234
|
+
isVisible={openSignUp}
|
|
235
|
+
coverScreen={false}
|
|
236
|
+
onModalHide={handleSignUpPage}
|
|
237
|
+
onSwipeComplete={handleSignUpPage}
|
|
238
|
+
onBackdropPress={handleSignUpPage}
|
|
239
|
+
style={styles.bottomModalStyle}
|
|
226
240
|
>
|
|
227
|
-
<
|
|
228
|
-
|
|
241
|
+
<BottomPopup>
|
|
242
|
+
<KeyboardAvoidingView behavior={Platform.OS == 'ios' ? 'padding' : 'height'} style={{flex: 0, justifyContent: 'flex-end'}}>
|
|
243
|
+
<ScrollView style={{backgroundColor: 'transparent', overflow: 'visible'}} showsVerticalScrollIndicator={false}>
|
|
244
|
+
<OText size={20} lineHeight={30} weight={'600'} mBottom={20}>{t('SIGN_UP', 'Sign up')}</OText>
|
|
245
|
+
<SignupForm {...signupProps} />
|
|
246
|
+
</ScrollView>
|
|
247
|
+
</KeyboardAvoidingView>
|
|
248
|
+
</BottomPopup>
|
|
249
|
+
</Modal>
|
|
229
250
|
</>
|
|
230
251
|
);
|
|
231
252
|
};
|
|
@@ -288,4 +309,8 @@ const styles = StyleSheet.create({
|
|
|
288
309
|
borderTopLeftRadius: 12,
|
|
289
310
|
paddingHorizontal: 40
|
|
290
311
|
},
|
|
312
|
+
bottomModalStyle: {
|
|
313
|
+
justifyContent: 'flex-end',
|
|
314
|
+
margin: 0
|
|
315
|
+
}
|
|
291
316
|
});
|
|
@@ -16,3 +16,10 @@ export const Slogan = styled.View`
|
|
|
16
16
|
align-items: center;
|
|
17
17
|
margin-bottom: 10px;
|
|
18
18
|
`;
|
|
19
|
+
|
|
20
|
+
export const BottomPopup = styled.View`
|
|
21
|
+
padding: 40px 40px 0;
|
|
22
|
+
background-color: white;
|
|
23
|
+
border-top-right-radius: 10px;
|
|
24
|
+
border-top-left-radius: 10px;
|
|
25
|
+
`;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useEffect, useState, useRef } from 'react';
|
|
2
|
-
import { Pressable, StyleSheet, View, Keyboard, Animated } from 'react-native';
|
|
2
|
+
import { Pressable, StyleSheet, View, Keyboard, Animated, Platform } 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'
|
|
@@ -257,7 +257,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
257
257
|
{(useLoginByCellphone || useLoginByEmail) && (
|
|
258
258
|
<FormInput>
|
|
259
259
|
{useLoginByEmail && loginTab === 'email' && (
|
|
260
|
-
<View style={loginStyle.inputWrap}>
|
|
260
|
+
<View style={{...loginStyle.inputWrap, marginBottom: Platform.OS == 'android' ? 18 : 0}}>
|
|
261
261
|
<Controller
|
|
262
262
|
control={control}
|
|
263
263
|
render={({ onChange, value }: any) => (
|
|
@@ -408,7 +408,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
408
408
|
{t('MOBILE_FRONT_ALREADY_DONT_HAVE_AN_ACCOUNT', 'Don\'t have an account?')}
|
|
409
409
|
</OText>
|
|
410
410
|
<Pressable onPress={() => onHandleOpenSignup()}>
|
|
411
|
-
<OText style={{ ...theme.labels.normal,
|
|
411
|
+
<OText style={{ ...theme.labels.normal, marginLeft: 5, fontWeight: '600' }} color={theme.colors.primary}>
|
|
412
412
|
{registerButtonText}
|
|
413
413
|
</OText>
|
|
414
414
|
</Pressable>
|
|
@@ -7,11 +7,11 @@ import { OIcon, OText } from '../shared';
|
|
|
7
7
|
import { useTheme } from 'styled-components/native';
|
|
8
8
|
|
|
9
9
|
const LogoutButtonUI = (props: any) => {
|
|
10
|
-
const { handleLogoutClick, formState } = props
|
|
10
|
+
const { handleLogoutClick, formState, showText, iconStyle } = props
|
|
11
11
|
|
|
12
12
|
const theme = useTheme();
|
|
13
13
|
const [, { showToast }] = useToast();
|
|
14
|
-
const [, t] = useLanguage()
|
|
14
|
+
const [, t] = useLanguage()
|
|
15
15
|
|
|
16
16
|
const handleClick = async () => {
|
|
17
17
|
const data = await _retrieveStoreData('notification_state');
|
|
@@ -35,15 +35,16 @@ const LogoutButtonUI = (props: any) => {
|
|
|
35
35
|
return (
|
|
36
36
|
<TouchableOpacity
|
|
37
37
|
onPress={() => handleClick()}
|
|
38
|
-
style={{
|
|
38
|
+
style={{flexDirection: 'row', marginHorizontal: 2}}
|
|
39
39
|
>
|
|
40
40
|
<OIcon
|
|
41
41
|
src={theme.images.general.menulogout}
|
|
42
|
-
width={
|
|
43
|
-
height={
|
|
42
|
+
width={28}
|
|
43
|
+
height={28}
|
|
44
44
|
color={theme.colors.disabledContrast}
|
|
45
|
+
style={iconStyle}
|
|
45
46
|
/>
|
|
46
|
-
<OText
|
|
47
|
+
{showText && <OText mLeft={12} mRight={12}>{t('LOGOUT', 'LogOut')}</OText>}
|
|
47
48
|
</TouchableOpacity>
|
|
48
49
|
)
|
|
49
50
|
}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
2
|
-
import { ImageSourcePropType, Platform } from 'react-native';
|
|
1
|
+
import React, { useState, useEffect } from 'react';
|
|
2
|
+
import { ImageSourcePropType, ImageStyle, Platform, StyleSheet } from 'react-native';
|
|
3
3
|
import Share from 'react-native-share';
|
|
4
|
-
import { OIcon
|
|
5
|
-
import { FavItem, FavMenu
|
|
4
|
+
import { OIcon } from '../shared';
|
|
5
|
+
import { FavItem, FavMenu } from './styles';
|
|
6
6
|
import { useTheme } from 'styled-components/native';
|
|
7
7
|
import { TouchableOpacity } from 'react-native-gesture-handler';
|
|
8
|
+
import { ToastType, useToast } from 'ordering-components/native';
|
|
8
9
|
|
|
9
10
|
interface SSFTypes {
|
|
10
11
|
icon?: ImageSourcePropType,
|
|
11
12
|
mode?: 'dropdown' | 'sheets',
|
|
12
13
|
data?: {url?: string, image?: string, msg?: string},
|
|
14
|
+
style?: ImageStyle
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
const SAppName = {
|
|
@@ -23,9 +25,10 @@ const SAppName = {
|
|
|
23
25
|
};
|
|
24
26
|
|
|
25
27
|
const SocialShareFav = (props: SSFTypes) => {
|
|
26
|
-
const { icon, mode, data } = props;
|
|
28
|
+
const { icon, mode, data, style } = props;
|
|
27
29
|
|
|
28
30
|
const theme = useTheme();
|
|
31
|
+
const [, { showToast }] = useToast();
|
|
29
32
|
|
|
30
33
|
const SApps: Array<any> = [
|
|
31
34
|
{
|
|
@@ -73,44 +76,68 @@ const SocialShareFav = (props: SSFTypes) => {
|
|
|
73
76
|
];
|
|
74
77
|
|
|
75
78
|
const [showMenu, setShowMenu] = useState(false);
|
|
79
|
+
const [result, setResult] = useState<{success: boolean, message: string}>({success: true, message: ''});
|
|
80
|
+
|
|
81
|
+
const getErrorString = (error: any, defaultValue?: any) => {
|
|
82
|
+
let e = defaultValue || 'Something went wrong. Please try again';
|
|
83
|
+
if (typeof error === 'string') {
|
|
84
|
+
e = error;
|
|
85
|
+
} else if (error && error.message) {
|
|
86
|
+
e = error.message;
|
|
87
|
+
} else if (error && error.props) {
|
|
88
|
+
e = error.props;
|
|
89
|
+
}
|
|
90
|
+
return e;
|
|
91
|
+
}
|
|
76
92
|
|
|
77
93
|
const onShare = async (social: any) => {
|
|
78
94
|
const options = {
|
|
79
|
-
title: 'Share
|
|
80
|
-
message:
|
|
81
|
-
url:
|
|
95
|
+
title: 'Share via',
|
|
96
|
+
message: 'Awesome Restaurant!, Please enjoy your meal ;)',
|
|
97
|
+
url: 'https://www.ordering.co',
|
|
82
98
|
social: social,
|
|
83
|
-
whatsAppNumber: "
|
|
99
|
+
whatsAppNumber: "8615640383320", // country code + phone number
|
|
84
100
|
// filename: 'test' , // only for base64 file in Android
|
|
85
101
|
}
|
|
86
|
-
|
|
102
|
+
setShowMenu(false);
|
|
103
|
+
try {
|
|
104
|
+
const shareResult = await Share.shareSingle(options);
|
|
105
|
+
setResult({success: shareResult.success, message: shareResult.message});
|
|
106
|
+
} catch (error) {
|
|
107
|
+
setResult({success: false, message: 'error: '.concat(getErrorString(error, `Wrong ${social} configuration!`))});
|
|
108
|
+
}
|
|
87
109
|
}
|
|
88
110
|
|
|
89
111
|
const onOpenMenu = () => {
|
|
90
112
|
setShowMenu(!showMenu);
|
|
91
113
|
}
|
|
92
114
|
|
|
115
|
+
useEffect(() => {
|
|
116
|
+
if (result.message.length < 3) return;
|
|
117
|
+
if (result.success) {
|
|
118
|
+
showToast(ToastType.Success, result.message);
|
|
119
|
+
} else {
|
|
120
|
+
showToast(ToastType.Error, result.message);
|
|
121
|
+
}
|
|
122
|
+
}, [result])
|
|
123
|
+
|
|
93
124
|
return (
|
|
94
125
|
<>
|
|
95
126
|
<FavItem onPress={onOpenMenu}>
|
|
96
|
-
<OIcon src={icon}
|
|
127
|
+
<OIcon src={icon} style={style} />
|
|
97
128
|
</FavItem>
|
|
98
129
|
{showMenu &&
|
|
99
130
|
<FavMenu>
|
|
100
131
|
{SApps.map(({name, social, icon, color}) =>
|
|
101
132
|
<React.Fragment key={name}>
|
|
102
133
|
{name === SAppName.LINKEDIN ? Platform.OS === 'android' ?
|
|
103
|
-
<
|
|
104
|
-
<
|
|
105
|
-
|
|
106
|
-
</TouchableOpacity>
|
|
107
|
-
</FavMenuItem>
|
|
134
|
+
<TouchableOpacity key={name} style={favStyles.itemBtn} onPress={() => onShare(social)}>
|
|
135
|
+
<OIcon src={icon} color={color} />
|
|
136
|
+
</TouchableOpacity>
|
|
108
137
|
: null :
|
|
109
|
-
|
|
110
|
-
<TouchableOpacity key={name} onPress={() => onShare(social)}>
|
|
138
|
+
<TouchableOpacity key={name} style={favStyles.itemBtn} onPress={() => onShare(social)}>
|
|
111
139
|
<OIcon src={icon} color={color} />
|
|
112
140
|
</TouchableOpacity>
|
|
113
|
-
</FavMenuItem>
|
|
114
141
|
}
|
|
115
142
|
</React.Fragment>
|
|
116
143
|
)}
|
|
@@ -120,4 +147,14 @@ const SocialShareFav = (props: SSFTypes) => {
|
|
|
120
147
|
)
|
|
121
148
|
}
|
|
122
149
|
|
|
150
|
+
const favStyles = StyleSheet.create({
|
|
151
|
+
itemBtn: {
|
|
152
|
+
borderRadius: 7.6,
|
|
153
|
+
marginBottom: 4,
|
|
154
|
+
justifyContent: 'center',
|
|
155
|
+
alignItems: 'center',
|
|
156
|
+
backgroundColor: 'white'
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
|
|
123
160
|
export default SocialShareFav;
|
|
@@ -99,7 +99,7 @@ export const UserProfileForm = (props: ProfileParams) => {
|
|
|
99
99
|
<Ionicons name='globe-outline' style={styles.iconStyle} />
|
|
100
100
|
<LanguageSelector />
|
|
101
101
|
</LanguageContainer>
|
|
102
|
-
<LogoutButton />
|
|
102
|
+
<LogoutButton iconStyle={{width: 20, height: 20}} showText />
|
|
103
103
|
</View>
|
|
104
104
|
</Container>
|
|
105
105
|
);
|
|
@@ -52,7 +52,8 @@ OImage.defaultProps = {
|
|
|
52
52
|
|
|
53
53
|
const areEqual=(prevProps: { src?: any; color?: string; }, nextProps: { src?: any; color?: string; })=>{
|
|
54
54
|
// return false prevProps.text & nextProps.text are not equal.
|
|
55
|
-
|
|
55
|
+
console.log('PreviewColor: '+prevProps.color, 'NextColor: '+nextProps.color);
|
|
56
|
+
return prevProps.color === nextProps.color && prevProps.src === nextProps.src
|
|
56
57
|
// else all are equal, no re-render
|
|
57
58
|
return true
|
|
58
59
|
}
|
|
@@ -20,7 +20,7 @@ export const Container = (props: any) => {
|
|
|
20
20
|
{props.children}
|
|
21
21
|
</View>
|
|
22
22
|
) : (
|
|
23
|
-
<ContainerStyled keyboardShouldPersistTaps='handled' style={{ padding: props.nopadding ? 0 :
|
|
23
|
+
<ContainerStyled keyboardShouldPersistTaps='handled' {...props} style={{ padding: props.nopadding ? 0 : 40, paddingTop: 0 }}>
|
|
24
24
|
{props.children}
|
|
25
25
|
</ContainerStyled>
|
|
26
26
|
)}
|
|
@@ -408,26 +408,26 @@ export interface AccountParams {
|
|
|
408
408
|
toggleIsEdit?: any;
|
|
409
409
|
validationFields?: any;
|
|
410
410
|
handleButtonUpdateClick?: any;
|
|
411
|
-
|
|
411
|
+
}
|
|
412
412
|
|
|
413
|
-
|
|
413
|
+
export interface HelpParams {
|
|
414
414
|
navigation: any;
|
|
415
|
-
|
|
415
|
+
}
|
|
416
416
|
|
|
417
|
-
|
|
417
|
+
export interface LastOrdersParams {
|
|
418
418
|
orderList?: any,
|
|
419
419
|
onRedirect?: any,
|
|
420
|
-
|
|
420
|
+
}
|
|
421
421
|
|
|
422
|
-
|
|
422
|
+
export interface HelpOrderParams {
|
|
423
423
|
navigation: any;
|
|
424
|
-
|
|
424
|
+
}
|
|
425
425
|
|
|
426
|
-
|
|
426
|
+
export interface HelpGuideParams {
|
|
427
427
|
navigation: any;
|
|
428
|
-
|
|
428
|
+
}
|
|
429
429
|
|
|
430
|
-
|
|
430
|
+
export interface HelpAccountAndPaymentParams {
|
|
431
431
|
navigation: any;
|
|
432
|
-
|
|
433
|
-
|
|
432
|
+
}
|
|
433
|
+
|