ordering-ui-react-native 0.15.83 → 0.15.84-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 +7 -3
- package/src/DeliveryApp.tsx +43 -1
- package/src/components/ActiveOrders/index.tsx +61 -63
- package/src/components/ActiveOrders/styles.tsx +1 -1
- package/src/components/AddressForm/index.tsx +18 -2
- package/src/components/BusinessBasicInformation/index.tsx +11 -19
- package/src/components/BusinessController/index.tsx +16 -8
- package/src/components/BusinessInformation/index.tsx +14 -0
- package/src/components/BusinessTypeFilter/index.tsx +1 -2
- package/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/Checkout/index.tsx +25 -3
- package/src/components/DriverTips/index.tsx +11 -6
- package/src/components/LanguageSelector/index.tsx +24 -15
- package/src/components/LoginForm/index.tsx +120 -30
- package/src/components/LoginForm/styles.tsx +6 -0
- package/src/components/Messages/index.tsx +2 -2
- package/src/components/NotificationSetting/index.tsx +85 -0
- package/src/components/OrderDetails/index.tsx +7 -21
- package/src/components/PaymentOptions/index.tsx +335 -365
- package/src/components/PaymentOptionsWebView/index.tsx +120 -121
- package/src/components/ReviewDriver/index.tsx +1 -1
- package/src/components/ReviewOrder/index.tsx +2 -1
- package/src/components/ReviewProducts/index.tsx +11 -0
- package/src/components/SignupForm/index.tsx +145 -61
- package/src/components/SingleProductCard/index.tsx +16 -4
- package/src/components/SingleProductReview/index.tsx +1 -1
- package/src/components/StripeElementsForm/index.tsx +25 -16
- package/src/components/StripeMethodForm/index.tsx +22 -24
- package/src/components/UpsellingProducts/index.tsx +1 -1
- package/src/components/UserProfileForm/index.tsx +63 -6
- package/src/components/UserProfileForm/styles.tsx +8 -0
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/components/shared/OBottomPopup.tsx +6 -2
- package/src/components/shared/OModal.tsx +1 -1
- package/src/hooks/useCountdownTimer.tsx +26 -0
- package/src/index.tsx +2 -0
- package/src/navigators/CheckoutNavigator.tsx +6 -0
- package/src/navigators/HomeNavigator.tsx +6 -0
- package/src/pages/BusinessesListing.tsx +7 -6
- package/src/pages/MultiCheckout.tsx +31 -0
- package/src/pages/MultiOrdersDetails.tsx +27 -0
- package/src/pages/OrderDetails.tsx +1 -1
- package/src/pages/ReviewDriver.tsx +2 -2
- package/src/pages/ReviewOrder.tsx +2 -2
- package/src/theme.json +0 -1
- package/src/types/index.tsx +18 -11
- package/src/utils/index.tsx +28 -29
- package/themes/business/index.tsx +4 -0
- package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +100 -60
- package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
- package/themes/business/src/components/Chat/index.tsx +51 -91
- package/themes/business/src/components/DriverMap/index.tsx +6 -5
- package/themes/business/src/components/DriverSchedule/index.tsx +71 -0
- package/themes/business/src/components/DriverSchedule/styles.tsx +6 -0
- package/themes/business/src/components/LoginForm/index.tsx +89 -2
- package/themes/business/src/components/LoginForm/styles.tsx +6 -0
- package/themes/business/src/components/LogoutButton/index.tsx +1 -1
- package/themes/business/src/components/MapView/index.tsx +1 -1
- package/themes/business/src/components/NewOrderNotification/index.tsx +26 -13
- package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
- package/themes/business/src/components/OrderDetails/Delivery.tsx +17 -7
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +26 -18
- package/themes/business/src/components/OrdersListManager/index.tsx +11 -4
- package/themes/business/src/components/OrdersOption/index.tsx +16 -4
- package/themes/business/src/components/PreviousOrders/index.tsx +7 -7
- package/themes/business/src/components/ProductItemAccordion/index.tsx +5 -4
- package/themes/business/src/components/ScheduleBlocked/index.tsx +53 -0
- package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
- package/themes/business/src/components/UserProfileForm/index.tsx +28 -4
- package/themes/business/src/components/shared/OModal.tsx +41 -38
- package/themes/business/src/types/index.tsx +13 -6
- 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/BusinessMenu/index.tsx +25 -26
- package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -3
- package/themes/kiosk/src/components/Cart/index.tsx +10 -11
- package/themes/kiosk/src/components/CartBottomSheet/index.tsx +9 -2
- package/themes/kiosk/src/components/CartContent/index.tsx +0 -11
- package/themes/kiosk/src/components/CartItem/index.tsx +4 -3
- package/themes/kiosk/src/components/CategoriesMenu/index.tsx +107 -62
- package/themes/kiosk/src/components/Checkout/index.tsx +40 -22
- package/themes/kiosk/src/components/CustomerName/index.tsx +0 -6
- package/themes/kiosk/src/components/DrawerView/index.tsx +1 -0
- package/themes/kiosk/src/components/DrawerView/styles.tsx +2 -2
- 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/OrderDetails/index.tsx +2 -2
- package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +9 -11
- package/themes/kiosk/src/components/PaymentOptions/index.tsx +55 -53
- package/themes/kiosk/src/components/ProductForm/index.tsx +6 -7
- package/themes/kiosk/src/components/ProductOptionSubOption/index.tsx +3 -1
- package/themes/kiosk/src/components/UpsellingProducts/index.tsx +16 -5
- package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
- package/themes/kiosk/src/types/index.d.ts +1 -0
- package/themes/original/index.tsx +22 -0
- package/themes/original/src/components/ActiveOrders/index.tsx +15 -132
- package/themes/original/src/components/ActiveOrders/styles.tsx +0 -54
- package/themes/original/src/components/AddressForm/index.tsx +7 -6
- package/themes/original/src/components/AddressList/index.tsx +1 -1
- package/themes/original/src/components/AppleLogin/index.tsx +6 -8
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +291 -150
- package/themes/original/src/components/BusinessBasicInformation/styles.tsx +6 -2
- package/themes/original/src/components/BusinessController/index.tsx +179 -96
- package/themes/original/src/components/BusinessController/styles.tsx +5 -0
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +11 -8
- package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -1
- package/themes/original/src/components/BusinessListingSearch/BusinessControllerSkeletons/index.tsx +57 -0
- package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +59 -0
- package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/styles.tsx +13 -0
- package/themes/original/src/components/BusinessListingSearch/index.tsx +185 -120
- package/themes/original/src/components/BusinessListingSearch/styles.tsx +23 -11
- package/themes/original/src/components/BusinessPreorder/index.tsx +1 -1
- package/themes/original/src/components/BusinessProductsCategories/index.tsx +2 -2
- package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -0
- package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
- package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
- package/themes/original/src/components/BusinessProductsList/index.tsx +66 -73
- package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
- package/themes/original/src/components/BusinessProductsListing/index.tsx +311 -176
- package/themes/original/src/components/BusinessProductsListing/styles.tsx +18 -0
- package/themes/original/src/components/BusinessReviews/index.tsx +6 -1
- package/themes/original/src/components/BusinessTypeFilter/index.tsx +106 -38
- package/themes/original/src/components/BusinessTypeFilter/styles.tsx +2 -0
- package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +561 -0
- package/themes/original/src/components/BusinessesListing/{styles.tsx → Layout/Appointment/styles.tsx} +24 -2
- package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +663 -0
- package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +137 -0
- package/themes/original/src/components/BusinessesListing/index.tsx +104 -462
- package/themes/original/src/components/Cart/index.tsx +83 -38
- package/themes/original/src/components/Cart/styles.tsx +4 -0
- package/themes/original/src/components/CartContent/index.tsx +3 -3
- package/themes/original/src/components/Checkout/index.tsx +128 -67
- package/themes/original/src/components/Checkout/styles.tsx +0 -1
- package/themes/original/src/components/DriverTips/index.tsx +17 -12
- package/themes/original/src/components/Favorite/index.tsx +92 -0
- package/themes/original/src/components/Favorite/styles.tsx +22 -0
- package/themes/original/src/components/FavoriteList/index.tsx +298 -0
- package/themes/original/src/components/FavoriteList/styles.tsx +5 -0
- package/themes/original/src/components/ForgotPasswordForm/index.tsx +13 -4
- package/themes/original/src/components/GPSButton/index.tsx +15 -8
- package/themes/original/src/components/GoogleMap/index.tsx +11 -11
- package/themes/original/src/components/Help/index.tsx +21 -4
- package/themes/original/src/components/HelpAccountAndPayment/index.tsx +8 -3
- package/themes/original/src/components/HelpGuide/index.tsx +8 -3
- package/themes/original/src/components/HelpOrder/index.tsx +8 -3
- package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
- package/themes/original/src/components/LastOrders/index.tsx +12 -1
- package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -0
- package/themes/original/src/components/LoginForm/Otp/styles.tsx +7 -0
- package/themes/original/src/components/LoginForm/index.tsx +332 -164
- package/themes/original/src/components/LoginForm/styles.tsx +1 -3
- package/themes/original/src/components/Messages/index.tsx +17 -17
- package/themes/original/src/components/MomentSelector/index.tsx +197 -0
- package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
- package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
- package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
- package/themes/original/src/components/MultiCheckout/index.tsx +304 -0
- package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
- package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
- package/themes/original/src/components/MultiOrdersDetails/index.tsx +262 -0
- package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
- package/themes/original/src/components/MyOrders/index.tsx +132 -27
- package/themes/original/src/components/MyOrders/styles.tsx +8 -1
- package/themes/original/src/components/NavBar/index.tsx +11 -5
- package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
- package/themes/original/src/components/OrderDetails/index.tsx +164 -81
- package/themes/original/src/components/OrderDetails/styles.tsx +5 -2
- package/themes/original/src/components/OrderItAgain/index.tsx +73 -0
- package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
- package/themes/original/src/components/OrderProgress/index.tsx +8 -2
- package/themes/original/src/components/OrderSummary/index.tsx +2 -35
- package/themes/original/src/components/OrderTypeSelector/index.tsx +78 -35
- package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
- package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +140 -0
- package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
- package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +53 -0
- package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
- package/themes/original/src/components/OrdersOption/index.tsx +138 -46
- package/themes/original/src/components/OrdersOption/styles.tsx +4 -1
- package/themes/original/src/components/PaymentOptionCash/index.tsx +2 -2
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +15 -22
- package/themes/original/src/components/PaymentOptions/index.tsx +57 -37
- package/themes/original/src/components/PhoneInputNumber/index.tsx +5 -11
- package/themes/original/src/components/PlaceSpot/index.tsx +243 -47
- package/themes/original/src/components/PlaceSpot/styles.tsx +0 -2
- package/themes/original/src/components/PreviousOrders/index.tsx +18 -147
- package/themes/original/src/components/ProductForm/index.tsx +714 -673
- package/themes/original/src/components/ProductForm/styles.tsx +9 -7
- package/themes/original/src/components/ProductItemAccordion/index.tsx +2 -2
- package/themes/original/src/components/ProductOption/index.tsx +1 -1
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +13 -9
- package/themes/original/src/components/ProfessionalFilter/index.tsx +128 -0
- package/themes/original/src/components/ProfessionalFilter/styles.tsx +0 -0
- package/themes/original/src/components/ProfessionalProfile/index.tsx +298 -0
- package/themes/original/src/components/ProfessionalProfile/styles.tsx +46 -0
- package/themes/original/src/components/Promotions/index.tsx +22 -6
- package/themes/original/src/components/ReviewDriver/index.tsx +6 -6
- package/themes/original/src/components/ReviewOrder/index.tsx +1 -1
- package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
- package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
- package/themes/original/src/components/SearchBar/index.tsx +13 -5
- package/themes/original/src/components/ServiceForm/index.tsx +579 -0
- package/themes/original/src/components/ServiceForm/styles.tsx +50 -0
- package/themes/original/src/components/SignupForm/index.tsx +237 -126
- package/themes/original/src/components/SingleOrderCard/index.tsx +316 -0
- package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
- package/themes/original/src/components/SingleProductCard/index.tsx +197 -95
- package/themes/original/src/components/SingleProductCard/styles.tsx +2 -2
- package/themes/original/src/components/StripeElementsForm/index.tsx +25 -9
- package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
- package/themes/original/src/components/UpsellingProducts/index.tsx +7 -7
- package/themes/original/src/components/UserDetails/index.tsx +32 -18
- package/themes/original/src/components/UserFormDetails/index.tsx +108 -74
- package/themes/original/src/components/UserProfile/index.tsx +5 -1
- package/themes/original/src/components/UserProfileForm/index.tsx +15 -10
- package/themes/original/src/components/UserVerification/index.tsx +178 -192
- package/themes/original/src/components/Wallets/index.tsx +177 -163
- package/themes/original/src/components/shared/OBottomPopup.tsx +47 -14
- package/themes/original/src/components/shared/OButton.tsx +10 -3
- package/themes/original/src/components/shared/OInput.tsx +3 -2
- package/themes/original/src/components/shared/OModal.tsx +4 -2
- package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
- package/themes/original/src/types/index.tsx +212 -44
- package/themes/original/src/utils/index.tsx +94 -1
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import React, { useState } from 'react'
|
|
2
|
+
import { RefreshControl, ScrollView, View } from 'react-native'
|
|
3
|
+
import { OText } from '../shared'
|
|
4
|
+
import { useLanguage, useSession } from 'ordering-components/native'
|
|
5
|
+
import { DayContainer } from './styles'
|
|
6
|
+
import { useTheme } from 'styled-components/native'
|
|
7
|
+
export const DriverSchedule = (props: any) => {
|
|
8
|
+
const { schedule } = props
|
|
9
|
+
const [, t] = useLanguage()
|
|
10
|
+
const theme = useTheme()
|
|
11
|
+
const [, { refreshUserInfo }] = useSession()
|
|
12
|
+
const [refreshing] = useState(false);
|
|
13
|
+
|
|
14
|
+
const daysOfWeek = [
|
|
15
|
+
t('SUNDAY_ABBREVIATION', 'Sun'),
|
|
16
|
+
t('MONDAY_ABBREVIATION', 'Mon'),
|
|
17
|
+
t('TUESDAY_ABBREVIATION', 'Tues'),
|
|
18
|
+
t('WEDNESDAY_ABBREVIATION', 'Wed'),
|
|
19
|
+
t('THURSDAY_ABBREVIATION', 'Thur'),
|
|
20
|
+
t('FRIDAY_ABBREVIATION', 'Fri'),
|
|
21
|
+
t('SATURDAY_ABBREVIATION', 'Sat')
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
const scheduleFormatted = ({ hour, minute }: any) => {
|
|
25
|
+
const checkTime = (val: number) => val < 10 ? `0${val}` : val
|
|
26
|
+
return `${checkTime(hour)}:${checkTime(minute)}`
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<ScrollView
|
|
31
|
+
refreshControl={<RefreshControl
|
|
32
|
+
refreshing={refreshing}
|
|
33
|
+
onRefresh={() => refreshUserInfo()}
|
|
34
|
+
/>}
|
|
35
|
+
>
|
|
36
|
+
<OText size={24} style={{ paddingLeft: 30 }}>
|
|
37
|
+
{t('SCHEDULE', 'Schedule')}
|
|
38
|
+
</OText>
|
|
39
|
+
<View style={{ padding: 30 }}>
|
|
40
|
+
{schedule.map((item: any, i: number) => (
|
|
41
|
+
<DayContainer key={daysOfWeek[i]}>
|
|
42
|
+
<OText style={{ width: '20%' }} size={22} weight={700}>{daysOfWeek[i]}</OText>
|
|
43
|
+
<View style={{ width: '80%', alignItems: 'center' }}>
|
|
44
|
+
<>
|
|
45
|
+
{item?.enabled ? (
|
|
46
|
+
<View>
|
|
47
|
+
{item?.lapses.map((lapse: any, i: number) => (
|
|
48
|
+
<View key={`${daysOfWeek[i]}_${i}`} style={{ marginTop: 3, marginBottom: 20, flexDirection: 'row', justifyContent: 'space-between' }}>
|
|
49
|
+
<OText size={18} style={{ width: '30%' }}>
|
|
50
|
+
{scheduleFormatted(lapse.open)}
|
|
51
|
+
</OText>
|
|
52
|
+
<OText size={18} style={{ width: 15 }}>
|
|
53
|
+
-
|
|
54
|
+
</OText>
|
|
55
|
+
<OText size={18} style={{ width: '30%' }}>
|
|
56
|
+
{scheduleFormatted(lapse.close)}
|
|
57
|
+
</OText>
|
|
58
|
+
</View>
|
|
59
|
+
))}
|
|
60
|
+
</View>
|
|
61
|
+
) : (
|
|
62
|
+
<OText size={18} style={{ marginTop: 3, marginBottom: 10 }} color={theme.colors.red}>{t('NOT_AVAILABLE', 'Not available')}</OText>
|
|
63
|
+
)}
|
|
64
|
+
</>
|
|
65
|
+
</View>
|
|
66
|
+
</DayContainer>
|
|
67
|
+
))}
|
|
68
|
+
</View>
|
|
69
|
+
</ScrollView>
|
|
70
|
+
)
|
|
71
|
+
}
|
|
@@ -8,6 +8,8 @@ import {
|
|
|
8
8
|
ScrollView,
|
|
9
9
|
} from 'react-native';
|
|
10
10
|
import { useForm, Controller } from 'react-hook-form';
|
|
11
|
+
import Recaptcha from 'react-native-recaptcha-that-works'
|
|
12
|
+
import { TouchableOpacity } from 'react-native-gesture-handler';
|
|
11
13
|
import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
|
|
12
14
|
import {
|
|
13
15
|
ToastType,
|
|
@@ -25,6 +27,7 @@ import {
|
|
|
25
27
|
TabsContainer,
|
|
26
28
|
OrSeparator,
|
|
27
29
|
LineSeparator,
|
|
30
|
+
RecaptchaButton
|
|
28
31
|
} from './styles';
|
|
29
32
|
import { _setStoreData } from '../../providers/StoreUtil'
|
|
30
33
|
import { OText, OButton, OInput, OIconButton, OModal } from '../shared';
|
|
@@ -47,7 +50,10 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
47
50
|
handleCheckPhoneCode,
|
|
48
51
|
setCheckPhoneCodeState,
|
|
49
52
|
allowedLevels,
|
|
50
|
-
useRootPoint
|
|
53
|
+
useRootPoint,
|
|
54
|
+
notificationState,
|
|
55
|
+
handleReCaptcha,
|
|
56
|
+
enableReCaptcha
|
|
51
57
|
} = props;
|
|
52
58
|
|
|
53
59
|
const [ordering, { setOrdering }] = useApi();
|
|
@@ -61,6 +67,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
61
67
|
const inputRef = useRef<any>(null);
|
|
62
68
|
const inputMailRef = useRef<any>(null);
|
|
63
69
|
|
|
70
|
+
const [projectName, setProjectName] = useState({name: '', isFocued: false});
|
|
64
71
|
const [passwordSee, setPasswordSee] = useState(false);
|
|
65
72
|
const [isLoadingVerifyModal, setIsLoadingVerifyModal] = useState(false);
|
|
66
73
|
const [isModalVisible, setIsModalVisible] = useState(false);
|
|
@@ -84,6 +91,50 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
84
91
|
const [submitted, setSubmitted] = useState(false);
|
|
85
92
|
const [formValues, setFormValues] = useState(null);
|
|
86
93
|
|
|
94
|
+
const [recaptchaConfig, setRecaptchaConfig] = useState<any>({})
|
|
95
|
+
const [recaptchaVerified, setRecaptchaVerified] = useState(false)
|
|
96
|
+
|
|
97
|
+
const recaptchaRef = useRef<any>({});
|
|
98
|
+
|
|
99
|
+
const handleOpenRecaptcha = () => {
|
|
100
|
+
setRecaptchaVerified(false)
|
|
101
|
+
if (!recaptchaConfig?.siteKey) {
|
|
102
|
+
showToast(ToastType.Error, t('NO_RECAPTCHA_SITE_KEY', 'The config doesn\'t have recaptcha site key'));
|
|
103
|
+
return
|
|
104
|
+
}
|
|
105
|
+
if (!recaptchaConfig?.baseUrl) {
|
|
106
|
+
showToast(ToastType.Error, t('NO_RECAPTCHA_BASE_URL', 'The config doesn\'t have recaptcha base url'));
|
|
107
|
+
return
|
|
108
|
+
}
|
|
109
|
+
recaptchaRef.current.open()
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const onRecaptchaVerify = (token: any) => {
|
|
113
|
+
setRecaptchaVerified(true)
|
|
114
|
+
handleReCaptcha(token)
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
useEffect(() => {
|
|
118
|
+
if (configs && Object.keys(configs).length > 0 && enableReCaptcha) {
|
|
119
|
+
setRecaptchaConfig({
|
|
120
|
+
siteKey: configs?.security_recaptcha_site_key?.value || null,
|
|
121
|
+
baseUrl: configs?.security_recaptcha_base_url?.value || null
|
|
122
|
+
})
|
|
123
|
+
}
|
|
124
|
+
}, [configs, enableReCaptcha])
|
|
125
|
+
|
|
126
|
+
useEffect(() => {
|
|
127
|
+
const projectInputInterval = setInterval(() => {
|
|
128
|
+
if (projectName.name && useRootPoint && projectName.isFocued) {
|
|
129
|
+
setOrdering({
|
|
130
|
+
...ordering,
|
|
131
|
+
project: projectName.name
|
|
132
|
+
})
|
|
133
|
+
}
|
|
134
|
+
}, 1500)
|
|
135
|
+
return () => clearInterval(projectInputInterval);
|
|
136
|
+
}, [projectName])
|
|
137
|
+
|
|
87
138
|
const getTraduction = (key: string) => {
|
|
88
139
|
const keyList: any = {
|
|
89
140
|
// Add the key and traduction that you need below
|
|
@@ -465,6 +516,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
465
516
|
icon={theme.images.general.project}
|
|
466
517
|
iconColor={theme.colors.arrowColor}
|
|
467
518
|
onChange={(e: any) => {
|
|
519
|
+
setProjectName({name: e?.target?.value, isFocued: true})
|
|
468
520
|
onChange(e?.target?.value);
|
|
469
521
|
setSubmitted(false);
|
|
470
522
|
}}
|
|
@@ -493,6 +545,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
493
545
|
icon={theme.images.logos.emailInputIcon}
|
|
494
546
|
iconColor={theme.colors.arrowColor}
|
|
495
547
|
onChange={(e: any) => {
|
|
548
|
+
setProjectName({...projectName, isFocued: false})
|
|
496
549
|
handleChangeInputEmail(e, onChange);
|
|
497
550
|
}}
|
|
498
551
|
selectionColor={theme.colors.primary}
|
|
@@ -590,7 +643,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
590
643
|
|
|
591
644
|
{onNavigationRedirect && (
|
|
592
645
|
<Pressable
|
|
593
|
-
style={{ marginRight: 'auto', marginBottom:
|
|
646
|
+
style={{ marginRight: 'auto', marginBottom: 20 }}
|
|
594
647
|
onPress={() => onNavigationRedirect('Forgot')}>
|
|
595
648
|
<OText style={styles.textForgot}>
|
|
596
649
|
{t('FORGOT_YOUR_PASSWORD', 'Forgot your password?')}
|
|
@@ -598,6 +651,39 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
598
651
|
</Pressable>
|
|
599
652
|
)}
|
|
600
653
|
|
|
654
|
+
{enableReCaptcha && (
|
|
655
|
+
<>
|
|
656
|
+
<TouchableOpacity
|
|
657
|
+
style={{ marginBottom: 15 }}
|
|
658
|
+
onPress={handleOpenRecaptcha}
|
|
659
|
+
>
|
|
660
|
+
<RecaptchaButton>
|
|
661
|
+
{recaptchaVerified ? (
|
|
662
|
+
<MaterialCommunityIcons
|
|
663
|
+
name="checkbox-marked"
|
|
664
|
+
size={26}
|
|
665
|
+
color={theme.colors.primary}
|
|
666
|
+
/>
|
|
667
|
+
) : (
|
|
668
|
+
<MaterialCommunityIcons
|
|
669
|
+
name="checkbox-blank-outline"
|
|
670
|
+
size={26}
|
|
671
|
+
color={theme.colors.mediumGray}
|
|
672
|
+
/>
|
|
673
|
+
)}
|
|
674
|
+
<OText size={14} mLeft={8}>{t('VERIFY_ReCAPTCHA', 'Verify reCAPTCHA')}</OText>
|
|
675
|
+
</RecaptchaButton>
|
|
676
|
+
</TouchableOpacity>
|
|
677
|
+
<Recaptcha
|
|
678
|
+
ref={recaptchaRef}
|
|
679
|
+
siteKey={recaptchaConfig?.siteKey}
|
|
680
|
+
baseUrl={recaptchaConfig?.baseUrl}
|
|
681
|
+
onVerify={onRecaptchaVerify}
|
|
682
|
+
onExpire={() => setRecaptchaVerified(false)}
|
|
683
|
+
/>
|
|
684
|
+
</>
|
|
685
|
+
)}
|
|
686
|
+
|
|
601
687
|
<OButton
|
|
602
688
|
onClick={handleLogin}
|
|
603
689
|
text={t('LOGIN', 'Login')}
|
|
@@ -657,6 +743,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
657
743
|
export const LoginForm = (props: any) => {
|
|
658
744
|
const loginProps = {
|
|
659
745
|
...props,
|
|
746
|
+
isRecaptchaEnable: true,
|
|
660
747
|
UIComponent: LoginFormUI,
|
|
661
748
|
};
|
|
662
749
|
|
|
@@ -15,7 +15,7 @@ const LogoutButtonUI = (props: any) => {
|
|
|
15
15
|
const data = await _retrieveStoreData('notification_state');
|
|
16
16
|
const res = await handleLogoutClick(data);
|
|
17
17
|
if (res) {
|
|
18
|
-
_clearStoreData({ excludedKeys: ['
|
|
18
|
+
_clearStoreData({ excludedKeys: ['isTutorial'] });
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
21
|
|
|
@@ -191,7 +191,7 @@ const MapViewComponent = (props: MapViewParams) => {
|
|
|
191
191
|
{((customer && marker?.business?.zipcode) || (!customer && marker?.business?.zipcode)) && (
|
|
192
192
|
<OText>{customer ? marker?.customer?.zipcode : marker?.business?.zipcode}</OText>
|
|
193
193
|
)}
|
|
194
|
-
{customer && marker?.customer?.internal_number && (
|
|
194
|
+
{customer && !!marker?.customer?.internal_number && (
|
|
195
195
|
<OText>{marker?.customer?.internal_number}</OText>
|
|
196
196
|
)}
|
|
197
197
|
<OText textDecorationLine='underline' color={theme.colors.primary}>
|
|
@@ -14,7 +14,8 @@ Sound.setCategory('Playback')
|
|
|
14
14
|
|
|
15
15
|
const windowWidth = Dimensions.get('screen').width
|
|
16
16
|
|
|
17
|
-
const NewOrderNotificationUI = () => {
|
|
17
|
+
const NewOrderNotificationUI = (props: any) => {
|
|
18
|
+
const { isBusinessApp } = props
|
|
18
19
|
const [events] = useEvent()
|
|
19
20
|
const theme = useTheme()
|
|
20
21
|
const [, t] = useLanguage()
|
|
@@ -22,7 +23,7 @@ const NewOrderNotificationUI = () => {
|
|
|
22
23
|
const [ordering] = useApi()
|
|
23
24
|
const { getCurrentLocation } = useLocation();
|
|
24
25
|
const [soundTimeout, setSoundTimeout] = useState<any>(null)
|
|
25
|
-
|
|
26
|
+
let [currentEvent, setCurrentEvent] = useState<any>(null)
|
|
26
27
|
|
|
27
28
|
const evtList: any = {
|
|
28
29
|
1: {
|
|
@@ -45,6 +46,7 @@ const NewOrderNotificationUI = () => {
|
|
|
45
46
|
const notificationSound = new Sound(theme.sounds.notification, (e) => { console.log(e) });
|
|
46
47
|
|
|
47
48
|
const handlePlayNotificationSound = () => {
|
|
49
|
+
if (currentEvent) return
|
|
48
50
|
let times = 0
|
|
49
51
|
const _timeout = setInterval(function () {
|
|
50
52
|
notificationSound.play(success => {
|
|
@@ -62,29 +64,40 @@ const NewOrderNotificationUI = () => {
|
|
|
62
64
|
|
|
63
65
|
const handleCloseModal = () => {
|
|
64
66
|
clearInterval(soundTimeout)
|
|
67
|
+
currentEvent = null
|
|
65
68
|
setCurrentEvent({ evt: null })
|
|
66
69
|
}
|
|
67
70
|
|
|
68
71
|
const handleEventNotification = async (evtType: number, value: any) => {
|
|
69
72
|
if (value?.driver) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
73
|
+
try {
|
|
74
|
+
const location = await getCurrentLocation()
|
|
75
|
+
await fetch(`${ordering.root}/users/${user.id}/locations`, {
|
|
76
|
+
method: 'POST',
|
|
77
|
+
body: JSON.stringify({
|
|
78
|
+
location: JSON.stringify({location: `{lat: ${location.latitude}, lng: ${location.longitude}}`})
|
|
79
|
+
}),
|
|
80
|
+
headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }
|
|
81
|
+
})
|
|
82
|
+
} catch (error) {
|
|
83
|
+
console.log(error)
|
|
84
|
+
}
|
|
85
|
+
const duration = moment.duration(moment().diff(moment.utc(value?.last_driver_assigned_at)))
|
|
86
|
+
const assignedSecondsDiff = duration.asSeconds()
|
|
87
|
+
if (assignedSecondsDiff < 5 && !isBusinessApp) {
|
|
80
88
|
handlePlayNotificationSound()
|
|
81
89
|
clearInterval(soundTimeout)
|
|
90
|
+
currentEvent = { evt: 2, orderId: value?.id }
|
|
82
91
|
setCurrentEvent({ evt: 2, orderId: value?.id })
|
|
83
92
|
}
|
|
84
|
-
return
|
|
85
93
|
}
|
|
94
|
+
if (evtType === 3 || value.author_id === user.id) return
|
|
86
95
|
handlePlayNotificationSound()
|
|
87
96
|
clearInterval(soundTimeout)
|
|
97
|
+
currentEvent = {
|
|
98
|
+
evt: evtType,
|
|
99
|
+
orderId: evtList[evtType].event === 'messages' ? value?.order_id : value?.id
|
|
100
|
+
}
|
|
88
101
|
setCurrentEvent({
|
|
89
102
|
evt: evtType,
|
|
90
103
|
orderId: evtList[evtType].event === 'messages' ? value?.order_id : value?.id
|
|
@@ -439,7 +439,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
439
439
|
<>
|
|
440
440
|
<OrderContentComponent order={order} />
|
|
441
441
|
{(order?.status === 7 || order?.status === 4) &&
|
|
442
|
-
order?.delivery_type === 1 && (
|
|
442
|
+
order?.delivery_type === 1 && configs?.assign_driver_enabled?.value === '1' && (
|
|
443
443
|
<AssignDriver>
|
|
444
444
|
<OText style={{ marginBottom: 5 }} size={16} weight="600">
|
|
445
445
|
{t('ASSIGN_DRIVER', 'Assign driver')}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
//React & React Native
|
|
2
2
|
import React, { useState, useEffect } from 'react';
|
|
3
|
-
import { StyleSheet, View
|
|
3
|
+
import { StyleSheet, View } from 'react-native';
|
|
4
4
|
|
|
5
5
|
// Thirds
|
|
6
6
|
import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder';
|
|
@@ -29,7 +29,6 @@ import { NotFoundSource } from '../NotFoundSource';
|
|
|
29
29
|
import { getOrderStatus } from '../../utils';
|
|
30
30
|
import { OrderHeaderComponent } from './OrderHeaderComponent';
|
|
31
31
|
import { OrderContentComponent } from './OrderContentComponent';
|
|
32
|
-
|
|
33
32
|
//Styles
|
|
34
33
|
import { OrderDetailsContainer, Pickup } from './styles';
|
|
35
34
|
|
|
@@ -52,7 +51,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
52
51
|
appTitle,
|
|
53
52
|
handleClickLogisticOrder,
|
|
54
53
|
forceUpdate,
|
|
55
|
-
getPermissions
|
|
54
|
+
getPermissions,
|
|
55
|
+
isGrantedPermissions
|
|
56
56
|
} = props;
|
|
57
57
|
const [, { showToast }] = useToast();
|
|
58
58
|
const { order } = props.order
|
|
@@ -73,6 +73,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
73
73
|
key?: string | null;
|
|
74
74
|
}>({ open: false, content: [], key: null });
|
|
75
75
|
|
|
76
|
+
const validStatusComplete = [9, 19, 23]
|
|
77
|
+
|
|
76
78
|
const logisticOrderStatus = [4, 6, 7]
|
|
77
79
|
|
|
78
80
|
const showFloatButtonsPickUp: any = {
|
|
@@ -102,6 +104,10 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
102
104
|
};
|
|
103
105
|
|
|
104
106
|
const handleOpenMapView = async () => {
|
|
107
|
+
if (!isGrantedPermissions) {
|
|
108
|
+
navigation.navigate('RequestPermissions')
|
|
109
|
+
return
|
|
110
|
+
}
|
|
105
111
|
const _permissions = await getPermissions()
|
|
106
112
|
|
|
107
113
|
const isBlocked = _permissions.some((_permission: string) => permissions?.locationStatus?.[_permission] === 'blocked')
|
|
@@ -128,6 +134,10 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
128
134
|
};
|
|
129
135
|
|
|
130
136
|
const handleViewActionOrder = (action: string) => {
|
|
137
|
+
if (!isGrantedPermissions) {
|
|
138
|
+
navigation.navigate('RequestPermissions')
|
|
139
|
+
return
|
|
140
|
+
}
|
|
131
141
|
if (openModalForMapView) {
|
|
132
142
|
setOpenModalForMapView(false);
|
|
133
143
|
}
|
|
@@ -237,17 +247,17 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
237
247
|
let isToFollow = false;
|
|
238
248
|
let isBusinessMarker = false;
|
|
239
249
|
|
|
240
|
-
if (order?.status === 7 || order?.status === 8) {
|
|
250
|
+
if (order?.status === 7 || order?.status === 8 || order?.status === 18) {
|
|
241
251
|
const markerBusiness = 'Business';
|
|
242
252
|
isBusinessMarker = true;
|
|
243
253
|
locationMarker = locations.find(
|
|
244
254
|
(location: any) => location.type === markerBusiness,
|
|
245
255
|
);
|
|
246
256
|
|
|
247
|
-
if (order?.status === 8) {
|
|
257
|
+
if (order?.status === 8 || order?.status === 18) {
|
|
248
258
|
isToFollow = true;
|
|
249
259
|
}
|
|
250
|
-
} else if (order?.status === 3 || order?.status === 9) {
|
|
260
|
+
} else if (order?.status === 3 || order?.status === 9 || order?.status === 19 || order?.status === 23) {
|
|
251
261
|
const markerCustomer = 'Customer';
|
|
252
262
|
isToFollow = true;
|
|
253
263
|
isBusinessMarker = false;
|
|
@@ -385,7 +395,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
385
395
|
widthButton={'45%'}
|
|
386
396
|
/>
|
|
387
397
|
)}
|
|
388
|
-
{(order?.status
|
|
398
|
+
{(validStatusComplete.includes(order?.status)) && (
|
|
389
399
|
<>
|
|
390
400
|
<FloatingButton
|
|
391
401
|
disabled={props.order?.loading}
|
|
@@ -77,6 +77,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
77
77
|
})
|
|
78
78
|
|
|
79
79
|
const getIncludedTaxes = () => {
|
|
80
|
+
if (!order?.taxes) return 0
|
|
80
81
|
if (order?.taxes?.length === 0) {
|
|
81
82
|
return order.tax_type === 1 ? order?.summary?.tax ?? 0 : 0
|
|
82
83
|
} else {
|
|
@@ -273,8 +274,8 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
273
274
|
<View style={styles.linkWithIcons}>
|
|
274
275
|
<OLink
|
|
275
276
|
PressStyle={styles.linkWithIcons}
|
|
276
|
-
url={`tel:${order?.customer?.cellphone}`}
|
|
277
|
-
shorcut={order?.customer?.cellphone}
|
|
277
|
+
url={`tel:${!!order?.customer?.country_phone_code ? '+' + order?.customer?.country_phone_code : ''} ${order?.customer?.cellphone}`}
|
|
278
|
+
shorcut={`${!!order?.customer?.country_phone_code ? '+' + order?.customer?.country_phone_code : ''} ${order?.customer?.cellphone}`}
|
|
278
279
|
TextStyle={styles.textLink}
|
|
279
280
|
/>
|
|
280
281
|
</View>
|
|
@@ -322,6 +323,12 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
322
323
|
{order?.customer?.zipcode}
|
|
323
324
|
</OText>
|
|
324
325
|
)}
|
|
326
|
+
|
|
327
|
+
{!!order?.on_behalf_of && (
|
|
328
|
+
<OText numberOfLines={1} mBottom={4} ellipsizeMode="tail">
|
|
329
|
+
{t('ON_BEHALF_OF', 'On behalf of')}{': '} {order?.on_behalf_of}
|
|
330
|
+
</OText>
|
|
331
|
+
)}
|
|
325
332
|
{((order?.delivery_option !== undefined && order?.delivery_type === 1) || !!order?.comment) && (
|
|
326
333
|
<View style={{ marginTop: 10 }}>
|
|
327
334
|
{order?.delivery_option !== undefined && order?.delivery_type === 1 && (
|
|
@@ -357,6 +364,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
357
364
|
<ProductItemAccordion
|
|
358
365
|
key={product?.id || i}
|
|
359
366
|
product={product}
|
|
367
|
+
currency={order?.currency}
|
|
360
368
|
/>
|
|
361
369
|
))}
|
|
362
370
|
</OrderProducts>
|
|
@@ -365,7 +373,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
365
373
|
<Table>
|
|
366
374
|
<OText mBottom={4}>{t('SUBTOTAL', 'Subtotal')}</OText>
|
|
367
375
|
<OText mBottom={4}>
|
|
368
|
-
{parsePrice(((order?.summary?.subtotal ?? order?.subtotal) + getIncludedTaxes()))}
|
|
376
|
+
{parsePrice(((order?.summary?.subtotal ?? order?.subtotal) + getIncludedTaxes()), { currency: order?.currency})}
|
|
369
377
|
</OText>
|
|
370
378
|
</Table>
|
|
371
379
|
{(order?.summary?.discount > 0 ?? order?.discount > 0) && order?.offers?.length === 0 && (
|
|
@@ -378,7 +386,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
378
386
|
) : (
|
|
379
387
|
<OText mBottom={4}>{t('DISCOUNT', theme?.defaultLanguages?.DISCOUNT || 'Discount')}</OText>
|
|
380
388
|
)}
|
|
381
|
-
<OText>- {parsePrice(order?.summary?.discount ?? order?.discount)}</OText>
|
|
389
|
+
<OText>- {parsePrice(order?.summary?.discount ?? order?.discount, { currency: order?.currency})}</OText>
|
|
382
390
|
</Table>
|
|
383
391
|
)}
|
|
384
392
|
{
|
|
@@ -392,7 +400,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
392
400
|
)}
|
|
393
401
|
</OText>
|
|
394
402
|
</OSRow>
|
|
395
|
-
<OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
|
|
403
|
+
<OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency})}</OText>
|
|
396
404
|
</Table>
|
|
397
405
|
))
|
|
398
406
|
}
|
|
@@ -400,9 +408,9 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
400
408
|
<Table>
|
|
401
409
|
<OText mBottom={4}>{t('SUBTOTAL_WITH_DISCOUNT', 'Subtotal with discount')}</OText>
|
|
402
410
|
{order?.tax_type === 1 ? (
|
|
403
|
-
<OText mBottom={4}>{parsePrice((order?.summary?.subtotal_with_discount + getIncludedTaxesDiscounts() ?? 0))}</OText>
|
|
411
|
+
<OText mBottom={4}>{parsePrice((order?.summary?.subtotal_with_discount + getIncludedTaxesDiscounts() ?? 0), { currency: order?.currency})}</OText>
|
|
404
412
|
) : (
|
|
405
|
-
<OText mBottom={4}>{parsePrice(order?.summary?.subtotal_with_discount ?? 0)}</OText>
|
|
413
|
+
<OText mBottom={4}>{parsePrice(order?.summary?.subtotal_with_discount ?? 0, { currency: order?.currency})}</OText>
|
|
406
414
|
)}
|
|
407
415
|
</Table>
|
|
408
416
|
)}
|
|
@@ -412,7 +420,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
412
420
|
{t('TAX', 'Tax')} {`(${verifyDecimals(order?.tax, parseNumber)}%)`}
|
|
413
421
|
</OText>
|
|
414
422
|
<OText mBottom={4}>
|
|
415
|
-
{parsePrice(order?.summary?.tax ?? 0)}
|
|
423
|
+
{parsePrice(order?.summary?.tax ?? 0, { currency: order?.currency})}
|
|
416
424
|
</OText>
|
|
417
425
|
</Table>
|
|
418
426
|
)}
|
|
@@ -423,7 +431,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
423
431
|
{t('SERVICE_FEE', 'Service fee')}
|
|
424
432
|
{`(${verifyDecimals(order?.service_fee, parseNumber)}%)`}
|
|
425
433
|
</OText>
|
|
426
|
-
<OText mBottom={4}>{parsePrice(order?.summary?.service_fee ?? 0)}</OText>
|
|
434
|
+
<OText mBottom={4}>{parsePrice(order?.summary?.service_fee ?? 0, { currency: order?.currency})}</OText>
|
|
427
435
|
</Table>
|
|
428
436
|
)
|
|
429
437
|
}
|
|
@@ -436,7 +444,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
436
444
|
{`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
|
|
437
445
|
</OText>
|
|
438
446
|
</OSRow>
|
|
439
|
-
<OText mBottom={4}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0)}</OText>
|
|
447
|
+
<OText mBottom={4}>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0, { currency: order?.currency})}</OText>
|
|
440
448
|
</Table>
|
|
441
449
|
))
|
|
442
450
|
}
|
|
@@ -446,10 +454,10 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
446
454
|
<OSRow>
|
|
447
455
|
<OText mBottom={4}>
|
|
448
456
|
{fee.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
|
|
449
|
-
({fee?.fixed > 0 && `${parsePrice(fee?.fixed)} + `}{fee.percentage}%){' '}
|
|
457
|
+
({fee?.fixed > 0 && `${parsePrice(fee?.fixed, { currency: order?.currency})} + `}{fee.percentage}%){' '}
|
|
450
458
|
</OText>
|
|
451
459
|
</OSRow>
|
|
452
|
-
<OText mBottom={4}>{parsePrice(fee?.summary?.fixed + (fee?.summary?.percentage_after_discount ?? fee?.summary?.percentage) ?? 0)}</OText>
|
|
460
|
+
<OText mBottom={4}>{parsePrice(fee?.summary?.fixed + (fee?.summary?.percentage_after_discount ?? fee?.summary?.percentage) ?? 0, { currency: order?.currency})}</OText>
|
|
453
461
|
</Table>
|
|
454
462
|
))
|
|
455
463
|
}
|
|
@@ -464,7 +472,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
464
472
|
)}
|
|
465
473
|
</OText>
|
|
466
474
|
</OSRow>
|
|
467
|
-
<OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
|
|
475
|
+
<OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency})}</OText>
|
|
468
476
|
</Table>
|
|
469
477
|
))
|
|
470
478
|
}
|
|
@@ -476,7 +484,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
476
484
|
</OText>
|
|
477
485
|
|
|
478
486
|
<OText mBottom={4}>
|
|
479
|
-
{parsePrice(order?.summary?.delivery_price)}
|
|
487
|
+
{parsePrice(order?.summary?.delivery_price, { currency: order?.currency})}
|
|
480
488
|
</OText>
|
|
481
489
|
</Table>
|
|
482
490
|
)
|
|
@@ -492,7 +500,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
492
500
|
)}
|
|
493
501
|
</OText>
|
|
494
502
|
</OSRow>
|
|
495
|
-
<OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
|
|
503
|
+
<OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency})}</OText>
|
|
496
504
|
</Table>
|
|
497
505
|
))
|
|
498
506
|
}
|
|
@@ -507,7 +515,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
507
515
|
`(${verifyDecimals(order?.summary?.driver_tip, parseNumber)}%)`
|
|
508
516
|
)}
|
|
509
517
|
</OText>
|
|
510
|
-
<OText mBottom={4}>{parsePrice(order?.summary?.driver_tip ?? order?.totalDriverTip)}</OText>
|
|
518
|
+
<OText mBottom={4}>{parsePrice(order?.summary?.driver_tip ?? order?.totalDriverTip, { currency: order?.currency})}</OText>
|
|
511
519
|
</Table>
|
|
512
520
|
)}
|
|
513
521
|
|
|
@@ -521,7 +529,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
521
529
|
mBottom={4}
|
|
522
530
|
style={styles.textBold}
|
|
523
531
|
color={theme.colors.primary}>
|
|
524
|
-
{parsePrice(order?.summary?.total ?? order?.total)}
|
|
532
|
+
{parsePrice(order?.summary?.total ?? order?.total, { currency: order?.currency})}
|
|
525
533
|
</OText>
|
|
526
534
|
</Table>
|
|
527
535
|
</Total>
|
|
@@ -564,7 +572,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
564
572
|
)}
|
|
565
573
|
</View>
|
|
566
574
|
<OText>
|
|
567
|
-
-{parsePrice(event.amount)}
|
|
575
|
+
-{parsePrice(event.amount, { currency: order?.currency})}
|
|
568
576
|
</OText>
|
|
569
577
|
</View>
|
|
570
578
|
))}
|
|
@@ -6,7 +6,7 @@ import FontistoIcon from 'react-native-vector-icons/Fontisto'
|
|
|
6
6
|
import FeatherIcon from 'react-native-vector-icons/Feather';
|
|
7
7
|
import SelectDropdown from 'react-native-select-dropdown'
|
|
8
8
|
import { useTheme } from 'styled-components/native';
|
|
9
|
-
|
|
9
|
+
import { NotificationSetting } from '../../../../../src/components/NotificationSetting'
|
|
10
10
|
import {
|
|
11
11
|
FiltersTab,
|
|
12
12
|
TabsContainer,
|
|
@@ -611,13 +611,13 @@ const OrdersListManagerUI = (props: OrdersOptionParams) => {
|
|
|
611
611
|
</LeftSide>
|
|
612
612
|
|
|
613
613
|
<RightSide style={{ paddingBottom: 110, paddingHorizontal: 20 }}>
|
|
614
|
-
{currentOrderSelected &&
|
|
614
|
+
{currentOrderSelected && (
|
|
615
615
|
<OrderDetailsBusiness {...props.orderDetailsProps} order={currentOrderSelected} isCustomView />
|
|
616
616
|
)}
|
|
617
617
|
</RightSide>
|
|
618
618
|
</Sides>
|
|
619
619
|
|
|
620
|
-
<NewOrderNotification />
|
|
620
|
+
<NewOrderNotification isBusinessApp={isBusinessApp} />
|
|
621
621
|
{(openSearchModal || openSLASettingModal) && (
|
|
622
622
|
<OModal open={openSearchModal || openSLASettingModal} entireModal customClose>
|
|
623
623
|
<ModalContainer
|
|
@@ -756,6 +756,7 @@ const OrdersListManagerUI = (props: OrdersOptionParams) => {
|
|
|
756
756
|
|
|
757
757
|
export const OrdersListManager = (props: OrdersOptionParams) => {
|
|
758
758
|
const [, t] = useLanguage();
|
|
759
|
+
const [checkNotificationStatus, setCheckNotificationStatus] = useState({ open: false, checked: false })
|
|
759
760
|
const ordersProps = {
|
|
760
761
|
...props,
|
|
761
762
|
UIComponent: OrdersListManagerUI,
|
|
@@ -870,5 +871,11 @@ export const OrdersListManager = (props: OrdersOptionParams) => {
|
|
|
870
871
|
]
|
|
871
872
|
};
|
|
872
873
|
|
|
873
|
-
return
|
|
874
|
+
return (<>
|
|
875
|
+
<OrderListGroups {...ordersProps} />
|
|
876
|
+
{props?.checkNotification && (
|
|
877
|
+
<NotificationSetting checkNotificationStatus={checkNotificationStatus}
|
|
878
|
+
setCheckNotificationStatus={setCheckNotificationStatus} />
|
|
879
|
+
)}
|
|
880
|
+
</>);
|
|
874
881
|
};
|