ordering-ui-react-native 0.22.75 → 0.22.76-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 +5 -7
- package/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/Checkout/index.tsx +40 -39
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/context/OfflineActions/index.tsx +236 -0
- package/src/providers/AlertProvider.tsx +3 -1
- package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +5 -3
- package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
- package/themes/business/src/components/BusinessController/index.tsx +8 -3
- package/themes/business/src/components/BusinessProductList/index.tsx +3 -2
- package/themes/business/src/components/Chat/index.tsx +15 -3
- package/themes/business/src/components/DriverMap/index.tsx +44 -33
- package/themes/business/src/components/FloatingButton/index.tsx +3 -2
- package/themes/business/src/components/LanguageSelector/index.tsx +1 -1
- package/themes/business/src/components/LoginForm/index.tsx +123 -98
- package/themes/business/src/components/LogoutButton/index.tsx +13 -4
- package/themes/business/src/components/MapView/RenderMarker.tsx +146 -0
- package/themes/business/src/components/MapView/index.tsx +68 -142
- package/themes/business/src/components/NewOrderNotification/index.tsx +38 -54
- package/themes/business/src/components/OrderDetails/Business.tsx +56 -20
- package/themes/business/src/components/OrderDetails/Delivery.tsx +111 -42
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +146 -36
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +51 -28
- package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
- package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +17 -16
- package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
- package/themes/business/src/components/OrderSummary/index.tsx +271 -176
- package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
- package/themes/business/src/components/OrdersOption/index.tsx +207 -144
- package/themes/business/src/components/OrdersOption/styles.tsx +14 -0
- package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
- package/themes/business/src/components/PreviousOrders/OrderItem.tsx +20 -8
- package/themes/business/src/components/PreviousOrders/index.tsx +74 -66
- package/themes/business/src/components/PreviousOrders/styles.tsx +2 -1
- package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
- package/themes/business/src/components/PrinterEdition/index.tsx +143 -75
- package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
- package/themes/business/src/components/PrinterSettings/index.tsx +1 -1
- package/themes/business/src/components/ProductItemAccordion/index.tsx +15 -16
- package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
- package/themes/business/src/components/StoresList/index.tsx +2 -2
- package/themes/business/src/components/UserProfileForm/index.tsx +48 -10
- package/themes/business/src/components/UserProfileForm/styles.tsx +7 -0
- package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
- package/themes/business/src/config/currency.tsx +1010 -0
- package/themes/business/src/hooks/useLocation.tsx +16 -12
- package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
- package/themes/business/src/types/index.tsx +26 -4
- package/themes/business/src/utils/index.tsx +26 -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 +9 -5
- package/themes/kiosk/src/components/CustomerName/index.tsx +1 -1
- package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
- package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
- package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
- package/themes/kiosk/src/components/PaymentOptions/index.tsx +121 -57
- package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
- package/themes/original/index.tsx +223 -219
- package/themes/original/src/components/AddressForm/index.tsx +56 -17
- package/themes/original/src/components/AppleLogin/index.tsx +3 -4
- package/themes/original/src/components/BusinessController/index.tsx +4 -2
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +8 -3
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +102 -90
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +7 -3
- package/themes/original/src/components/BusinessListingSearch/index.tsx +8 -13
- package/themes/original/src/components/BusinessPreorder/index.tsx +30 -17
- package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +72 -69
- package/themes/original/src/components/BusinessProductsList/index.tsx +4 -5
- package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
- package/themes/original/src/components/BusinessProductsListing/index.tsx +5 -4
- package/themes/original/src/components/BusinessesListing/Layout/Appointment/styles.tsx +1 -0
- package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +2 -1
- package/themes/original/src/components/Cart/index.tsx +43 -12
- package/themes/original/src/components/Checkout/index.tsx +126 -98
- package/themes/original/src/components/FloatingButton/index.tsx +1 -1
- package/themes/original/src/components/GPSButton/index.tsx +2 -1
- package/themes/original/src/components/GoogleMap/index.tsx +3 -2
- package/themes/original/src/components/Help/functions.tsx +76 -0
- package/themes/original/src/components/Help/index.tsx +74 -29
- package/themes/original/src/components/Help/styles.tsx +4 -1
- package/themes/original/src/components/HelpOptions/index.tsx +53 -0
- package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
- package/themes/original/src/components/Home/index.tsx +36 -11
- package/themes/original/src/components/LastOrder/index.tsx +1 -1
- package/themes/original/src/components/LoginForm/index.tsx +11 -5
- package/themes/original/src/components/MessageListing/index.tsx +1 -1
- package/themes/original/src/components/Messages/index.tsx +562 -555
- package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
- package/themes/original/src/components/MomentOption/index.tsx +141 -61
- package/themes/original/src/components/MomentOption/styles.tsx +1 -1
- package/themes/original/src/components/MomentSelector/index.tsx +5 -2
- package/themes/original/src/components/MultiCheckout/index.tsx +78 -33
- package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +2 -2
- package/themes/original/src/components/MultiOrdersDetails/index.tsx +2 -2
- package/themes/original/src/components/NavBar/index.tsx +6 -2
- package/themes/original/src/components/NotFoundSource/index.tsx +40 -39
- package/themes/original/src/components/NotFoundSource/styles.tsx +18 -9
- package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
- package/themes/original/src/components/OrderDetails/OrderHistory.tsx +11 -4
- package/themes/original/src/components/OrderDetails/index.tsx +44 -20
- package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
- package/themes/original/src/components/OrderProgress/index.tsx +5 -4
- package/themes/original/src/components/OrderSummary/index.tsx +32 -11
- package/themes/original/src/components/OrderTypeSelector/index.tsx +120 -120
- package/themes/original/src/components/OrdersOption/index.tsx +325 -325
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +1 -0
- package/themes/original/src/components/PaymentOptions/index.tsx +471 -459
- package/themes/original/src/components/PhoneInputNumber/index.tsx +92 -7
- package/themes/original/src/components/ProductItemAccordion/index.tsx +28 -37
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +15 -14
- package/themes/original/src/components/ServiceForm/index.tsx +2 -2
- package/themes/original/src/components/SignupForm/index.tsx +40 -24
- package/themes/original/src/components/SingleOrderCard/index.tsx +8 -5
- package/themes/original/src/components/SingleProductCard/index.tsx +2 -1
- package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
- package/themes/original/src/components/StripeCardsList/index.tsx +7 -1
- package/themes/original/src/components/StripeElementsForm/index.tsx +2 -2
- package/themes/original/src/components/TaxInformation/index.tsx +3 -2
- package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +7 -2
- package/themes/original/src/components/UserDetails/index.tsx +17 -16
- package/themes/original/src/components/UserFormDetails/index.tsx +109 -67
- package/themes/original/src/components/UserVerification/index.tsx +18 -5
- package/themes/original/src/components/VerifyPhone/index.tsx +1 -1
- package/themes/original/src/components/shared/OInput.tsx +97 -97
- package/themes/original/src/components/shared/OModal.tsx +7 -2
- package/themes/original/src/providers/AlertProvider.tsx +1 -1
- package/themes/original/src/types/index.tsx +700 -695
- package/themes/original/src/utils/index.tsx +50 -34
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
- package/themes/original/src/components/HelpAccountAndPayment/index.tsx +0 -62
- package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +0 -12
- package/themes/original/src/components/HelpGuide/index.tsx +0 -68
- package/themes/original/src/components/HelpGuide/styles.tsx +0 -12
- package/themes/original/src/components/HelpOrder/index.tsx +0 -71
- package/themes/original/src/components/HelpOrder/styles.tsx +0 -13
|
@@ -1,24 +1,26 @@
|
|
|
1
1
|
import { useEffect, useState, useRef } from 'react';
|
|
2
2
|
import GeoLocation from 'react-native-geolocation-service';
|
|
3
3
|
import { Location } from '../types';
|
|
4
|
-
import {useApi, useSession, useLanguage} from 'ordering-components/native'
|
|
4
|
+
import { useApi, useSession, useLanguage } from 'ordering-components/native'
|
|
5
5
|
|
|
6
6
|
export const useLocation = () => {
|
|
7
|
-
const [,t] = useLanguage()
|
|
7
|
+
const [, t] = useLanguage()
|
|
8
8
|
const [ordering] = useApi()
|
|
9
|
-
const [{token, user}] = useSession()
|
|
9
|
+
const [{ token, user }] = useSession()
|
|
10
10
|
const [hasLocation, setHasLocation] = useState(false);
|
|
11
11
|
const [initialPosition, setInitialPosition] = useState<Location>({
|
|
12
12
|
longitude: 0,
|
|
13
13
|
latitude: 0,
|
|
14
14
|
speed: 0,
|
|
15
|
+
mocked: false
|
|
15
16
|
});
|
|
16
17
|
const [userLocation, setUserLocation] = useState<Location>({
|
|
17
18
|
longitude: 0,
|
|
18
19
|
latitude: 0,
|
|
19
20
|
speed: 0,
|
|
21
|
+
mocked: false
|
|
20
22
|
});
|
|
21
|
-
const [newLocation,setNewLocation] = useState<any>({ loading: false, error: null, newLocation: null })
|
|
23
|
+
const [newLocation, setNewLocation] = useState<any>({ loading: false, error: null, newLocation: null })
|
|
22
24
|
const [routeLines, setRoutesLines] = useState<Location[]>([]);
|
|
23
25
|
const isMounted = useRef(true);
|
|
24
26
|
|
|
@@ -37,7 +39,7 @@ export const useLocation = () => {
|
|
|
37
39
|
if (!isMounted.current) return;
|
|
38
40
|
setInitialPosition(location);
|
|
39
41
|
setUserLocation(location);
|
|
40
|
-
setRoutesLines(routes => [...routes, location]);
|
|
42
|
+
setRoutesLines((routes: any) => [...routes, location]);
|
|
41
43
|
setHasLocation(true);
|
|
42
44
|
})
|
|
43
45
|
.catch(err => console.log(err));
|
|
@@ -46,14 +48,15 @@ export const useLocation = () => {
|
|
|
46
48
|
const getCurrentLocation = (): Promise<Location> => {
|
|
47
49
|
return new Promise((resolve, reject) => {
|
|
48
50
|
GeoLocation.getCurrentPosition(
|
|
49
|
-
({ coords }) => {
|
|
51
|
+
({ coords, mocked }: any) => {
|
|
50
52
|
resolve({
|
|
51
53
|
latitude: typeof coords.latitude === 'number' && !Number.isNaN(coords.latitude) ? coords.latitude : 0,
|
|
52
54
|
longitude: typeof coords.longitude === 'number' && !Number.isNaN(coords.longitude) ? coords.longitude : 0,
|
|
53
55
|
speed: coords.speed,
|
|
56
|
+
mocked
|
|
54
57
|
});
|
|
55
58
|
},
|
|
56
|
-
err => reject({ err }),
|
|
59
|
+
(err: any) => reject({ err }),
|
|
57
60
|
{ enableHighAccuracy: true, timeout: 15000, maximumAge: 10000 },
|
|
58
61
|
);
|
|
59
62
|
});
|
|
@@ -61,18 +64,19 @@ export const useLocation = () => {
|
|
|
61
64
|
|
|
62
65
|
const followUserLocation = () => {
|
|
63
66
|
watchId.current = GeoLocation.watchPosition(
|
|
64
|
-
({ coords }) => {
|
|
67
|
+
({ coords, mocked }: any) => {
|
|
65
68
|
if (!isMounted.current) return;
|
|
66
69
|
if (typeof coords.latitude !== 'number' || typeof coords.longitude !== 'number') return
|
|
67
70
|
const location: Location = {
|
|
68
71
|
latitude: coords.latitude || 0,
|
|
69
72
|
longitude: coords.longitude || 0,
|
|
70
73
|
speed: coords.speed,
|
|
74
|
+
mocked
|
|
71
75
|
};
|
|
72
76
|
setUserLocation(location);
|
|
73
|
-
setRoutesLines(routes => [...routes, location]);
|
|
77
|
+
setRoutesLines((routes: any) => [...routes, location]);
|
|
74
78
|
},
|
|
75
|
-
err => console.log(err),
|
|
79
|
+
(err: any) => console.log(err),
|
|
76
80
|
{ enableHighAccuracy: true, distanceFilter: 3 },
|
|
77
81
|
);
|
|
78
82
|
};
|
|
@@ -83,14 +87,14 @@ export const useLocation = () => {
|
|
|
83
87
|
|
|
84
88
|
const updateDriverPosition = async (newLocation = {}) => {
|
|
85
89
|
try {
|
|
86
|
-
setNewLocation({...newLocation, loading: true})
|
|
90
|
+
setNewLocation({ ...newLocation, loading: true })
|
|
87
91
|
const { content: { error, result } } = await ordering.setAccessToken(token).users(user?.id).driverLocations().save(newLocation)
|
|
88
92
|
if (error) {
|
|
89
93
|
setNewLocation({ ...newLocation, loading: false, error: [result[0] || result || t('ERROR_UPDATING_POSITION', 'Error updating position')] })
|
|
90
94
|
} else {
|
|
91
95
|
setNewLocation({ ...newLocation, loading: false, newLocation: { ...newLocation, ...result } })
|
|
92
96
|
}
|
|
93
|
-
} catch (error
|
|
97
|
+
} catch (error: any) {
|
|
94
98
|
setNewLocation({ ...newLocation, loading: false, error: [error?.message || t('NETWORK_ERROR', 'Network Error')] })
|
|
95
99
|
}
|
|
96
100
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
1
|
+
import React, { useState, useEffect } from 'react';
|
|
2
2
|
import {
|
|
3
3
|
Dimensions,
|
|
4
4
|
Platform,
|
|
5
5
|
StatusBar,
|
|
6
|
-
StyleSheet,
|
|
7
6
|
View,
|
|
8
7
|
} from 'react-native';
|
|
9
|
-
import styled from 'styled-components/native';
|
|
8
|
+
import styled, { useTheme } from 'styled-components/native';
|
|
9
|
+
import { useNetInfo } from '@react-native-community/netinfo';
|
|
10
10
|
|
|
11
11
|
export const SafeAreaContainer = styled.SafeAreaView`
|
|
12
12
|
flex: 1;
|
|
@@ -14,6 +14,10 @@ export const SafeAreaContainer = styled.SafeAreaView`
|
|
|
14
14
|
`;
|
|
15
15
|
|
|
16
16
|
export const SafeAreaContainerLayout = (props: any) => {
|
|
17
|
+
const theme = useTheme();
|
|
18
|
+
const netInfo = useNetInfo()
|
|
19
|
+
|
|
20
|
+
const [statusColor, setStatusColor] = useState<string | null>(null)
|
|
17
21
|
const [orientation, setOrientation] = useState(
|
|
18
22
|
Dimensions.get('window').width < Dimensions.get('window').height
|
|
19
23
|
? 'Portrait'
|
|
@@ -28,22 +32,34 @@ export const SafeAreaContainerLayout = (props: any) => {
|
|
|
28
32
|
}
|
|
29
33
|
});
|
|
30
34
|
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (netInfo.isConnected === false) {
|
|
37
|
+
setStatusColor(theme.colors.danger500)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (netInfo.isConnected && statusColor) {
|
|
41
|
+
setStatusColor(theme.colors.success500)
|
|
42
|
+
setTimeout(() => {
|
|
43
|
+
setStatusColor(null)
|
|
44
|
+
}, 2000);
|
|
45
|
+
}
|
|
46
|
+
}, [netInfo.isConnected])
|
|
47
|
+
|
|
31
48
|
return (
|
|
32
|
-
|
|
33
|
-
<
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
</>
|
|
49
|
+
<SafeAreaContainer>
|
|
50
|
+
<View
|
|
51
|
+
style={{
|
|
52
|
+
paddingHorizontal: 30,
|
|
53
|
+
paddingTop: 0,
|
|
54
|
+
paddingBottom: 0,
|
|
55
|
+
flex: 1,
|
|
56
|
+
}}>
|
|
57
|
+
<StatusBar
|
|
58
|
+
barStyle={Platform.OS === 'ios' ? 'dark-content' : 'default'}
|
|
59
|
+
{...statusColor && ({ backgroundColor: statusColor })}
|
|
60
|
+
/>
|
|
61
|
+
{props.children}
|
|
62
|
+
</View>
|
|
63
|
+
</SafeAreaContainer>
|
|
48
64
|
);
|
|
49
65
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TextInputProps, ViewStyle } from 'react-native';
|
|
2
|
+
import { LatLng } from 'react-native-maps';
|
|
2
3
|
export interface LoginParams {
|
|
3
4
|
navigation?: any;
|
|
4
5
|
formState?: any;
|
|
@@ -29,7 +30,8 @@ export interface LoginParams {
|
|
|
29
30
|
generateOtpCode: (values?: any) => void,
|
|
30
31
|
useLoginOtpEmail?: boolean,
|
|
31
32
|
useLoginOtpCellphone?: boolean,
|
|
32
|
-
useLoginOtp?: boolean
|
|
33
|
+
useLoginOtp?: boolean,
|
|
34
|
+
validateDeveloperMode: boolean
|
|
33
35
|
}
|
|
34
36
|
export interface otpParams {
|
|
35
37
|
willVerifyOtpState: boolean,
|
|
@@ -43,6 +45,7 @@ export interface ProfileParams {
|
|
|
43
45
|
navigation?: any;
|
|
44
46
|
isEdit?: boolean;
|
|
45
47
|
formState?: any;
|
|
48
|
+
setRootState?: any;
|
|
46
49
|
userState?: any;
|
|
47
50
|
toggleIsEdit?: any;
|
|
48
51
|
cleanFormState?: any;
|
|
@@ -51,6 +54,7 @@ export interface ProfileParams {
|
|
|
51
54
|
handleChangeInput?: any;
|
|
52
55
|
handleButtonUpdateClick?: any;
|
|
53
56
|
handleToggleAvalaibleStatusDriver?: any;
|
|
57
|
+
handleRemoveAccount?: any;
|
|
54
58
|
onNavigationRedirect?: any;
|
|
55
59
|
handlechangeImage?: any;
|
|
56
60
|
validationFields?: any;
|
|
@@ -285,8 +289,8 @@ export interface OrdersOptionParams {
|
|
|
285
289
|
rememberOrderStatus?: any;
|
|
286
290
|
titleContent?: string;
|
|
287
291
|
customArray?: Array<any>;
|
|
288
|
-
loadMoreOrders?: () => {};
|
|
289
|
-
loadOrders?: ({ }: any) => {};
|
|
292
|
+
loadMoreOrders?: (options?: any) => {};
|
|
293
|
+
loadOrders?: ({ }: any, options?: any) => {};
|
|
290
294
|
messages?: any;
|
|
291
295
|
setMessages?: () => {};
|
|
292
296
|
loadMessages?: () => {};
|
|
@@ -325,6 +329,7 @@ export interface OrdersOptionParams {
|
|
|
325
329
|
isDriverApp?: boolean;
|
|
326
330
|
combineTabs?: boolean;
|
|
327
331
|
setCombineTabsState?: any;
|
|
332
|
+
ordersFiltered?: any
|
|
328
333
|
}
|
|
329
334
|
export interface ActiveOrdersParams {
|
|
330
335
|
orders?: any;
|
|
@@ -415,6 +420,8 @@ export interface OrderDetailsParams {
|
|
|
415
420
|
orderTitle?: any;
|
|
416
421
|
forceUpdate?: number;
|
|
417
422
|
getPermissions?: any
|
|
423
|
+
loadMessages?: any;
|
|
424
|
+
notificationApp?: string
|
|
418
425
|
}
|
|
419
426
|
export interface ProductItemAccordionParams {
|
|
420
427
|
isCartPending?: boolean;
|
|
@@ -450,6 +457,7 @@ export interface MessagesParams {
|
|
|
450
457
|
sendMessage?: any;
|
|
451
458
|
canRead?: any;
|
|
452
459
|
setCanRead?: any;
|
|
460
|
+
notificationApp?: string
|
|
453
461
|
handleSend?: () => {};
|
|
454
462
|
setImage?: (image: string | null) => {};
|
|
455
463
|
setMessage?: (comment: string) => {};
|
|
@@ -500,7 +508,8 @@ export interface FloatingButtonParams {
|
|
|
500
508
|
firstColorCustom?: string;
|
|
501
509
|
secondColorCustom?: string;
|
|
502
510
|
paddingBottomIos?: any;
|
|
503
|
-
isHideRejectButtons?: boolean
|
|
511
|
+
isHideRejectButtons?: boolean;
|
|
512
|
+
principalButtonColor?: string;
|
|
504
513
|
}
|
|
505
514
|
export interface MomentOptionParams {
|
|
506
515
|
navigation: any;
|
|
@@ -537,6 +546,7 @@ export interface Location {
|
|
|
537
546
|
latitude: number;
|
|
538
547
|
longitude: number;
|
|
539
548
|
speed: number;
|
|
549
|
+
mocked?: boolean;
|
|
540
550
|
}
|
|
541
551
|
|
|
542
552
|
export interface GoogleMapsParams {
|
|
@@ -609,6 +619,7 @@ export interface MapViewParams {
|
|
|
609
619
|
getBusinessLocations: () => void,
|
|
610
620
|
setDriverLocation: (location: any) => void,
|
|
611
621
|
isLoadingBusinessMarkers?: boolean,
|
|
622
|
+
isDeliveryApp: boolean,
|
|
612
623
|
markerGroups: Array<any>,
|
|
613
624
|
customerMarkerGroups: Array<any>,
|
|
614
625
|
alertState: { open: boolean, content: Array<string>, key?: string | null },
|
|
@@ -644,3 +655,14 @@ export interface SessionsParams {
|
|
|
644
655
|
handleDeleteSession: any,
|
|
645
656
|
handleDeleteAllSessions: any
|
|
646
657
|
}
|
|
658
|
+
|
|
659
|
+
export interface RenderMarkerParams {
|
|
660
|
+
key?: number,
|
|
661
|
+
marker: any,
|
|
662
|
+
customer?: boolean,
|
|
663
|
+
orderIds?: Array<number>
|
|
664
|
+
onNavigationRedirect?: any,
|
|
665
|
+
initialPosition?: LatLng,
|
|
666
|
+
locationSelected?: LatLng,
|
|
667
|
+
setLocationSelected ?: any
|
|
668
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import FontAwesome from 'react-native-vector-icons/FontAwesome';
|
|
3
3
|
import { CODES } from 'ordering-components/native';
|
|
4
|
+
import { CURRENCY } from '../config/currency'
|
|
4
5
|
|
|
5
6
|
export const flatArray = (arr: any) => [].concat(...arr);
|
|
6
7
|
|
|
@@ -158,11 +159,11 @@ export const findExitingCode = (countryCode: string) => {
|
|
|
158
159
|
* @param {*} parser function fallback when is decimal
|
|
159
160
|
* @returns string
|
|
160
161
|
*/
|
|
161
|
-
export const verifyDecimals = (value: number, parser: any) => {
|
|
162
|
+
export const verifyDecimals = (value: number, parser: any, options?: any) => {
|
|
162
163
|
if (value % 1 === 0) {
|
|
163
164
|
return value;
|
|
164
165
|
} else {
|
|
165
|
-
return parser(value);
|
|
166
|
+
return options ? parser(value, options) : parser(value);
|
|
166
167
|
}
|
|
167
168
|
};
|
|
168
169
|
|
|
@@ -344,6 +345,24 @@ export const getOrderStatus = (s: string, t: any) => {
|
|
|
344
345
|
value: t('ORDER_DRIVER_ON_WAY', 'Driver on way'),
|
|
345
346
|
slug: 'ORDER_DRIVER_ON_WAY',
|
|
346
347
|
percentage: 45
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
key: 24,
|
|
351
|
+
value: t('ORDER_DRIVER_WAITING_FOR_ORDER', 'Driver waiting for order'),
|
|
352
|
+
slug: 'ORDER_DRIVER_WAITING_FOR_ORDER',
|
|
353
|
+
percentage: 25
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
key: 25,
|
|
357
|
+
value: t('ORDER_ACCEPTED_BY_DRIVER_COMPANY', 'Accepted by driver company'),
|
|
358
|
+
slug: 'ORDER_ACCEPTED_BY_DRIVER_COMPANY',
|
|
359
|
+
percentage: 25
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
key: 26,
|
|
363
|
+
value: t('ORDER_DRIVER_ARRIVED_CUSTOMER', 'Driver arrived to customer'),
|
|
364
|
+
slug: 'ORDER_DRIVER_ARRIVED_CUSTOMER',
|
|
365
|
+
percentage: 80
|
|
347
366
|
}
|
|
348
367
|
];
|
|
349
368
|
|
|
@@ -402,3 +421,8 @@ export const calculateDistance = (
|
|
|
402
421
|
const distanceInKm = distance / 1000;
|
|
403
422
|
return distanceInKm;
|
|
404
423
|
};
|
|
424
|
+
|
|
425
|
+
export const getCurrenySymbol = (code : string) => {
|
|
426
|
+
return CURRENCY?.[code]?.symbol ?? code
|
|
427
|
+
}
|
|
428
|
+
|
|
@@ -197,7 +197,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
197
197
|
{isFarAway && (
|
|
198
198
|
<FarAwayMessage style={styles.farAwayMsg}>
|
|
199
199
|
<Ionicons name='md-warning-outline' style={styles.iconStyle} />
|
|
200
|
-
<OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', '
|
|
200
|
+
<OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'Your are far from this address')}</OText>
|
|
201
201
|
</FarAwayMessage>
|
|
202
202
|
)}
|
|
203
203
|
{!auth && (
|
|
@@ -410,8 +410,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
410
410
|
textInputProps={{
|
|
411
411
|
returnKeyType: 'next',
|
|
412
412
|
onSubmitEditing: () => inputRef?.current?.focus?.(),
|
|
413
|
-
style: { borderWidth: 0, fontSize: 12 }
|
|
414
|
-
maxLength: 10
|
|
413
|
+
style: { borderWidth: 0, fontSize: 12 }
|
|
415
414
|
}}
|
|
416
415
|
textWrapStyle={{ borderColor: theme.colors.clear, borderWidth: 0, height: 40, paddingStart: 0 }}
|
|
417
416
|
/>
|
|
@@ -155,7 +155,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
|
|
|
155
155
|
{isFarAway && (
|
|
156
156
|
<FarAwayMessage style={styles.farAwayMsg}>
|
|
157
157
|
<Ionicons name='md-warning-outline' style={styles.iconStyle} />
|
|
158
|
-
<OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', '
|
|
158
|
+
<OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'Your are far from this address')}</OText>
|
|
159
159
|
</FarAwayMessage>
|
|
160
160
|
)}
|
|
161
161
|
<View style={styles.wrapperOrderOptions}>
|
|
@@ -31,8 +31,7 @@ const CheckoutUI = (props: any) => {
|
|
|
31
31
|
paymethodSelected,
|
|
32
32
|
handlePaymethodChange,
|
|
33
33
|
handlerClickPlaceOrder,
|
|
34
|
-
onNavigationRedirect
|
|
35
|
-
isKiosk
|
|
34
|
+
onNavigationRedirect
|
|
36
35
|
} = props
|
|
37
36
|
|
|
38
37
|
const [errorCash, setErrorCash] = useState(false);
|
|
@@ -51,6 +50,12 @@ const CheckoutUI = (props: any) => {
|
|
|
51
50
|
}
|
|
52
51
|
}, [cart])
|
|
53
52
|
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
if (!cartState.loading && cart && !cart?.valid && cart?.status === 2) {
|
|
55
|
+
navigation?.canGoBack() && navigation.goBack()
|
|
56
|
+
}
|
|
57
|
+
}, [cart])
|
|
58
|
+
|
|
54
59
|
return (
|
|
55
60
|
<>
|
|
56
61
|
<PaymentOptions
|
|
@@ -69,7 +74,6 @@ const CheckoutUI = (props: any) => {
|
|
|
69
74
|
isLoading={cartState.loading || businessDetails.loading}
|
|
70
75
|
paymethods={businessDetails?.business?.paymethods}
|
|
71
76
|
setErrorCash={setErrorCash}
|
|
72
|
-
isKiosk={isKiosk}
|
|
73
77
|
/>
|
|
74
78
|
</>
|
|
75
79
|
)
|
|
@@ -86,7 +90,7 @@ export const Checkout = (props: any) => {
|
|
|
86
90
|
const [, { showToast }] = useToast();
|
|
87
91
|
const [{ token }] = useSession();
|
|
88
92
|
const [ordering] = useApi();
|
|
89
|
-
const [,
|
|
93
|
+
const [,{ confirmCart }] = useOrder();
|
|
90
94
|
|
|
91
95
|
const [cartState, setCartState] = useState<any>({ loading: true, error: [], cart: null });
|
|
92
96
|
|
|
@@ -111,7 +115,7 @@ export const Checkout = (props: any) => {
|
|
|
111
115
|
const confirmCartRes = await confirmCart(cartUuid)
|
|
112
116
|
if (confirmCartRes.error) {
|
|
113
117
|
showToast(ToastType.Error, confirmCartRes.error.message)
|
|
114
|
-
}
|
|
118
|
+
}getOrder
|
|
115
119
|
getOrder
|
|
116
120
|
if (confirmCartRes.result.order?.uuid) {
|
|
117
121
|
onNavigationRedirect('OrderDetails', { orderId: confirmCartRes.result.order.uuid, isFromCheckout: true })
|
|
@@ -81,7 +81,7 @@ const CustomerName = (props: Props): React.ReactElement => {
|
|
|
81
81
|
<OButton
|
|
82
82
|
text={t('SKIP', 'Skip')}
|
|
83
83
|
onClick={onSkip}
|
|
84
|
-
textStyle={{ color: theme.colors.primary, fontSize:
|
|
84
|
+
textStyle={{ color: theme.colors.primary, fontSize: 20 }}
|
|
85
85
|
parentStyle={{
|
|
86
86
|
height: orientationState?.orientation === PORTRAIT
|
|
87
87
|
? 50 : 100
|
|
@@ -4,6 +4,7 @@ import { OIcon, OButton, OText } from '../shared'
|
|
|
4
4
|
import { ImageStyle, TextStyle, View, Platform, TouchableOpacity } from 'react-native'
|
|
5
5
|
import { useConfig, useLanguage, useOrder } from 'ordering-components/native'
|
|
6
6
|
import { useTheme } from 'styled-components/native'
|
|
7
|
+
|
|
7
8
|
const Wrapper = styled.View`
|
|
8
9
|
background-color: ${(props: any) => props.theme.colors.white};
|
|
9
10
|
padding: 10px 0px 20px 0px;
|
|
@@ -65,28 +66,27 @@ const NavBar = (props: Props) => {
|
|
|
65
66
|
|
|
66
67
|
return (
|
|
67
68
|
<Wrapper style={{ paddingTop: props.paddingTop, ...props.style }}>
|
|
68
|
-
{(props?.onActionLeft) && (
|
|
69
|
+
{(props?.onActionLeft || props?.leftImg) && (
|
|
69
70
|
<OButton
|
|
70
|
-
imgLeftSrc={props.leftImg}
|
|
71
|
+
imgLeftSrc={props.leftImg || theme.images.general.arrow_left}
|
|
71
72
|
imgRightSrc={null}
|
|
72
73
|
style={{ ...btnBackArrow, ...props.btnStyle }}
|
|
73
74
|
onClick={props.onActionLeft}
|
|
74
|
-
imgLeftStyle={props.imgLeftStyle}
|
|
75
|
-
{...(!props.leftImg && { iconProps: { name: 'arrowleft', size: 28, color: props.btnStyle?.color } })}
|
|
75
|
+
imgLeftStyle= {props.imgLeftStyle}
|
|
76
76
|
/>)
|
|
77
77
|
}
|
|
78
78
|
<TitleTopWrapper>
|
|
79
79
|
{props.withIcon
|
|
80
80
|
? (
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
81
|
+
<OIcon
|
|
82
|
+
url={props.icon}
|
|
83
|
+
style={{
|
|
84
|
+
borderColor: theme.colors.lightGray,
|
|
85
|
+
borderRadius: 20,
|
|
86
|
+
}}
|
|
87
|
+
width={60}
|
|
88
|
+
height={60}
|
|
89
|
+
/>
|
|
90
90
|
)
|
|
91
91
|
: null
|
|
92
92
|
}
|
|
@@ -134,7 +134,7 @@ const NavBar = (props: Props) => {
|
|
|
134
134
|
</View>
|
|
135
135
|
)}
|
|
136
136
|
|
|
137
|
-
{props.rightComponent}
|
|
137
|
+
{ props.rightComponent }
|
|
138
138
|
</Wrapper>
|
|
139
139
|
)
|
|
140
140
|
}
|
|
@@ -15,8 +15,6 @@ import { Container } from '../../layouts/Container'
|
|
|
15
15
|
import NavBar from '../NavBar'
|
|
16
16
|
import { LANDSCAPE, PORTRAIT, useDeviceOrientation } from '../../../../../src/hooks/DeviceOrientation'
|
|
17
17
|
import GridContainer from '../../layouts/GridContainer'
|
|
18
|
-
import AntDesignIcon from 'react-native-vector-icons/AntDesign'
|
|
19
|
-
import MaterialIcon from 'react-native-vector-icons/MaterialCommunityIcons'
|
|
20
18
|
|
|
21
19
|
const OrderTypeSelectorCardUI = (props: OrderTypeSelectParams) => {
|
|
22
20
|
const {
|
|
@@ -29,7 +27,7 @@ const OrderTypeSelectorCardUI = (props: OrderTypeSelectParams) => {
|
|
|
29
27
|
callback
|
|
30
28
|
} = props
|
|
31
29
|
|
|
32
|
-
|
|
30
|
+
const theme = useTheme();
|
|
33
31
|
const [, t] = useLanguage();
|
|
34
32
|
const [orientationState] = useDeviceOrientation();
|
|
35
33
|
const [orderState] = useOrder()
|
|
@@ -47,7 +45,7 @@ const OrderTypeSelectorCardUI = (props: OrderTypeSelectParams) => {
|
|
|
47
45
|
}
|
|
48
46
|
|
|
49
47
|
useEffect(() => {
|
|
50
|
-
if
|
|
48
|
+
if(isCardCliked){
|
|
51
49
|
callback?.()
|
|
52
50
|
setIsCardClicked(false)
|
|
53
51
|
setIsLoadingCard(null)
|
|
@@ -85,13 +83,13 @@ const OrderTypeSelectorCardUI = (props: OrderTypeSelectParams) => {
|
|
|
85
83
|
style={cardStyle}
|
|
86
84
|
isDisabled={isCardCliked}
|
|
87
85
|
isLoading={isLoadingCard === 'Eat In'}
|
|
88
|
-
title={t('EAT_IN',
|
|
86
|
+
title={t('EAT_IN','Eat In')}
|
|
89
87
|
description={t('EAT_IN_DESCRIPTION', 'We are very glad to have you here. Bon appetit!')}
|
|
90
88
|
bgImage={theme.images.general.eatIn}
|
|
91
|
-
|
|
89
|
+
icon={theme.images.general.pushPin}
|
|
92
90
|
callToActionText={t('START_MY_ORDER', 'Start my order')}
|
|
93
91
|
onClick={() => {
|
|
94
|
-
if
|
|
92
|
+
if(_eatIn?.value !== orderState?.options?.type){
|
|
95
93
|
handleChangeOrderType(_eatIn?.value);
|
|
96
94
|
setIsCardClicked(true)
|
|
97
95
|
setIsLoadingCard('Eat In')
|
|
@@ -108,15 +106,15 @@ const OrderTypeSelectorCardUI = (props: OrderTypeSelectParams) => {
|
|
|
108
106
|
|
|
109
107
|
<OptionCard
|
|
110
108
|
style={cardStyle}
|
|
111
|
-
title={t('TAKE_OUT',
|
|
109
|
+
title={t('TAKE_OUT','Take out')}
|
|
112
110
|
isDisabled={isCardCliked}
|
|
113
111
|
isLoading={isLoadingCard === 'Take out'}
|
|
114
112
|
description={t('TAKE_OUT_DESCRIPTION', 'You are very welcome anytime you visit us!')}
|
|
115
113
|
bgImage={theme.images.general.takeOut}
|
|
116
|
-
|
|
114
|
+
icon={theme.images.general.shoppingCart}
|
|
117
115
|
callToActionText={t('START_MY_ORDER', 'Start my order')}
|
|
118
116
|
onClick={() => {
|
|
119
|
-
if
|
|
117
|
+
if(_takeOut?.value !== orderState?.options?.type){
|
|
120
118
|
handleChangeOrderType(_takeOut?.value);
|
|
121
119
|
setIsCardClicked(true)
|
|
122
120
|
setIsLoadingCard('Take out')
|