ordering-ui-react-native 0.15.92 → 0.15.93-release
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +7 -3
- package/src/DeliveryApp.tsx +43 -1
- package/src/components/ActiveOrders/index.tsx +61 -63
- package/src/components/ActiveOrders/styles.tsx +8 -14
- 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 +2 -1
- package/src/components/DriverTips/index.tsx +11 -6
- package/src/components/LanguageSelector/index.tsx +21 -16
- 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/OrdersOption/index.tsx +54 -56
- 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/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 +1 -2
- package/themes/business/index.tsx +4 -0
- package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +1 -1
- package/themes/business/src/components/Chat/index.tsx +14 -6
- 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/LogoutButton/index.tsx +1 -1
- package/themes/business/src/components/MapView/index.tsx +1 -1
- package/themes/business/src/components/MessagesOption/index.tsx +11 -1
- package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
- package/themes/business/src/components/OrderDetails/Delivery.tsx +6 -4
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +25 -18
- package/themes/business/src/components/OrdersListManager/index.tsx +10 -3
- package/themes/business/src/components/OrdersOption/index.tsx +65 -21
- package/themes/business/src/components/OrdersOption/styles.tsx +5 -1
- package/themes/business/src/components/OrdersOptionBusiness/index.tsx +15 -1
- package/themes/business/src/components/OrdersOptionCity/index.tsx +15 -1
- package/themes/business/src/components/OrdersOptionDate/index.tsx +19 -6
- package/themes/business/src/components/OrdersOptionDelivery/index.tsx +15 -1
- package/themes/business/src/components/OrdersOptionDriver/index.tsx +15 -1
- package/themes/business/src/components/OrdersOptionPaymethod/index.tsx +15 -1
- package/themes/business/src/components/OrdersOptionStatus/index.tsx +10 -1
- package/themes/business/src/components/PreviousMessages/index.tsx +1 -0
- 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/ReviewCustomer/index.tsx +1 -1
- 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/ODropDown.tsx +42 -8
- package/themes/business/src/components/shared/ODropDownCalendar.tsx +36 -7
- package/themes/business/src/components/shared/OModal.tsx +41 -38
- package/themes/business/src/types/index.tsx +14 -9
- 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 +137 -134
- package/themes/original/src/components/AddressList/index.tsx +2 -2
- package/themes/original/src/components/AppleLogin/index.tsx +4 -4
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +302 -160
- 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 +106 -126
- package/themes/original/src/components/BusinessListingSearch/styles.tsx +18 -13
- 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 +296 -178
- 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 +673 -0
- package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +137 -0
- package/themes/original/src/components/BusinessesListing/index.tsx +102 -464
- package/themes/original/src/components/Cart/index.tsx +82 -37
- package/themes/original/src/components/Cart/styles.tsx +4 -0
- package/themes/original/src/components/CartContent/index.tsx +22 -16
- package/themes/original/src/components/Checkout/index.tsx +107 -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/GPSButton/index.tsx +25 -17
- package/themes/original/src/components/GoogleMap/index.tsx +21 -12
- 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/LoginForm/Otp/index.tsx +3 -2
- package/themes/original/src/components/LoginForm/index.tsx +16 -10
- 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/NotFoundSource/index.tsx +2 -1
- package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
- package/themes/original/src/components/OrderDetails/index.tsx +138 -58
- 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 +84 -36
- 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 -23
- package/themes/original/src/components/PaymentOptions/index.tsx +57 -37
- package/themes/original/src/components/PhoneInputNumber/index.tsx +4 -10
- 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 +694 -647
- 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/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 +4 -4
- 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 -127
- 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 +204 -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 -3
- 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 +4 -0
- 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/WalletTransactions/index.tsx +76 -0
- package/themes/original/src/components/WalletTransactions/styles.tsx +13 -0
- package/themes/original/src/components/Wallets/index.tsx +176 -162
- package/themes/original/src/components/Wallets/styles.tsx +10 -8
- 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 +197 -47
- package/themes/original/src/utils/index.tsx +77 -0
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
package/src/utils/index.tsx
CHANGED
|
@@ -34,7 +34,6 @@ export const getTraduction = (key: string, t: any) => {
|
|
|
34
34
|
ERROR_ADD_PRODUCT_VERY_FAR_FOR_DELIVERY: 'Error adding product, very far for delivery',
|
|
35
35
|
ERROR_PRODUCT_NOT_FOUND: 'Error with the product',
|
|
36
36
|
ERROR_ADD_BUSINESS_INVALID: 'An error occurred with the business',
|
|
37
|
-
ERROR_INVALID_OFFER: 'The offer doesn\'t exist'
|
|
38
37
|
}
|
|
39
38
|
|
|
40
39
|
return keyList[key] ? t(key, keyList[key]) : t(key)
|
|
@@ -450,7 +449,7 @@ export const orderCommentList = (value: string) => {
|
|
|
450
449
|
|
|
451
450
|
if (!messages[status]) return null
|
|
452
451
|
|
|
453
|
-
const list = messages[status].map((val: any, i: number) => ({ key: i, value: val, content: t(`REJECT_REASON_${val.toUpperCase()}`, val.
|
|
452
|
+
const list = messages[status].map((val: any, i: number) => ({ key: i, value: val, content: t(`REJECT_REASON_${val.toUpperCase()}`, val.replace(/_/g, ' ')) }))
|
|
454
453
|
|
|
455
454
|
return { list }
|
|
456
455
|
}
|
|
@@ -39,6 +39,8 @@ import { VerifyPhone } from './src/components/VerifyPhone';
|
|
|
39
39
|
import { DriverMap } from './src/components/DriverMap';
|
|
40
40
|
import { MapViewUI as MapView } from './src/components/MapView'
|
|
41
41
|
import { NewOrderNotification } from './src/components/NewOrderNotification';
|
|
42
|
+
import { DriverSchedule } from './src/components/DriverSchedule';
|
|
43
|
+
import { ScheduleBlocked } from './src/components/ScheduleBlocked';
|
|
42
44
|
//OComponents
|
|
43
45
|
import {
|
|
44
46
|
OText,
|
|
@@ -106,6 +108,8 @@ export {
|
|
|
106
108
|
UserFormDetailsUI,
|
|
107
109
|
UserProfileForm,
|
|
108
110
|
VerifyPhone,
|
|
111
|
+
DriverSchedule,
|
|
112
|
+
ScheduleBlocked,
|
|
109
113
|
//OComponents
|
|
110
114
|
OAlert,
|
|
111
115
|
OButton,
|
|
@@ -111,6 +111,13 @@ const ChatUI = (props: MessagesParams) => {
|
|
|
111
111
|
{ key: 'driver_message_4', text: t('DRIVER_MESSAGE_4', 'driver_message_4') }
|
|
112
112
|
]
|
|
113
113
|
|
|
114
|
+
const adminMessageList: any = [
|
|
115
|
+
{ key: 'message_1', text: t('ADMIN_MESSAGE_1', 'admin_message_1') },
|
|
116
|
+
{ key: 'message_2', text: t('ADMIN_MESSAGE_2', 'admin_message_2') },
|
|
117
|
+
{ key: 'message_3', text: t('ADMIN_MESSAGE_3', 'admin_message_3') },
|
|
118
|
+
{ key: 'message_4', text: t('ADMIN_MESSAGE_4', 'admin_message_4') }
|
|
119
|
+
]
|
|
120
|
+
|
|
114
121
|
const handleClickQuickMessage = (text: string) => {
|
|
115
122
|
setMessage && setMessage(`${message}${text}`)
|
|
116
123
|
}
|
|
@@ -426,7 +433,8 @@ const ChatUI = (props: MessagesParams) => {
|
|
|
426
433
|
};
|
|
427
434
|
|
|
428
435
|
useEffect(() => {
|
|
429
|
-
if (user.level ===
|
|
436
|
+
if (user.level === 0) setMessageList(adminMessageList)
|
|
437
|
+
else if (user.level === 2) setMessageList(storeMessageList)
|
|
430
438
|
else if (user.level === 4) setMessageList(driverMessageList)
|
|
431
439
|
else setMessageList([])
|
|
432
440
|
}, [user])
|
|
@@ -484,12 +492,12 @@ const ChatUI = (props: MessagesParams) => {
|
|
|
484
492
|
image: message.source,
|
|
485
493
|
system: message.type === 1,
|
|
486
494
|
user: {
|
|
487
|
-
_id: message.author
|
|
488
|
-
name: message.author
|
|
495
|
+
_id: message.author?.id,
|
|
496
|
+
name: message.author?.name,
|
|
489
497
|
can_see: message?.can_see,
|
|
490
|
-
level: message.author
|
|
498
|
+
level: message.author?.level,
|
|
491
499
|
avatar:
|
|
492
|
-
message.author
|
|
500
|
+
message.author?.id !== user?.id && type === USER_TYPE.DRIVER
|
|
493
501
|
? order?.driver?.photo
|
|
494
502
|
: order?.business?.logo,
|
|
495
503
|
},
|
|
@@ -734,7 +742,7 @@ const ChatUI = (props: MessagesParams) => {
|
|
|
734
742
|
color: '#414954'
|
|
735
743
|
}}
|
|
736
744
|
style={{ ...styles.editButton }}
|
|
737
|
-
onClick={() => handleClickQuickMessage(quickMessage.text)}
|
|
745
|
+
onClick={() => handleClickQuickMessage(message?.length > 0 ? ' ' + quickMessage.text : quickMessage.text)}
|
|
738
746
|
/>
|
|
739
747
|
</React.Fragment>
|
|
740
748
|
))}
|
|
@@ -327,6 +327,7 @@ export const DriverMap = (props: GoogleMapsParams) => {
|
|
|
327
327
|
justifyContent: 'center',
|
|
328
328
|
paddingVertical: 10,
|
|
329
329
|
paddingHorizontal: 80,
|
|
330
|
+
position: 'absolute'
|
|
330
331
|
},
|
|
331
332
|
showButton: {
|
|
332
333
|
alignSelf: 'center',
|
|
@@ -490,14 +491,14 @@ export const DriverMap = (props: GoogleMapsParams) => {
|
|
|
490
491
|
</View>
|
|
491
492
|
</View>
|
|
492
493
|
</View>
|
|
493
|
-
<View style={
|
|
494
|
+
<View style={{
|
|
495
|
+
...styles.buttonContainer,
|
|
496
|
+
bottom: showAcceptOrReject ? 80 : 0
|
|
497
|
+
}}>
|
|
494
498
|
<OButton
|
|
495
499
|
imgRightSrc=''
|
|
496
500
|
textStyle={{ color: theme.colors.white }}
|
|
497
|
-
style={
|
|
498
|
-
...styles.showButton,
|
|
499
|
-
bottom: showAcceptOrReject ? 80 : 0
|
|
500
|
-
}}
|
|
501
|
+
style={styles.showButton}
|
|
501
502
|
onClick={() => showLocation({
|
|
502
503
|
latitude: destination.latitude,
|
|
503
504
|
longitude: destination.longitude,
|
|
@@ -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
|
+
}
|
|
@@ -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}>
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
StyleSheet,
|
|
6
6
|
Dimensions,
|
|
7
7
|
ScrollView,
|
|
8
|
+
RefreshControl,
|
|
8
9
|
} from 'react-native';
|
|
9
10
|
import { Contacts, useLanguage } from 'ordering-components/native';
|
|
10
11
|
import { useTheme } from 'styled-components/native';
|
|
@@ -24,6 +25,7 @@ const MessagesOptionUI = (props: MessagesOptionParams) => {
|
|
|
24
25
|
messages,
|
|
25
26
|
onNavigationRedirect,
|
|
26
27
|
setSortBy,
|
|
28
|
+
getOrders
|
|
27
29
|
} = props;
|
|
28
30
|
|
|
29
31
|
const theme = useTheme();
|
|
@@ -55,6 +57,7 @@ const MessagesOptionUI = (props: MessagesOptionParams) => {
|
|
|
55
57
|
const [tabsFilter, setTabsFilter] = useState(tabs[0].tags);
|
|
56
58
|
const [activeTag, setActiveTag] = useState(tags[0].key);
|
|
57
59
|
const [reload, setReload] = useState(false);
|
|
60
|
+
const [refreshing] = useState(false);
|
|
58
61
|
const [unreadMessages, setUnreadMessages] = useState(
|
|
59
62
|
values?.reduce(
|
|
60
63
|
(total: number, order: any) => total + order.unread_count,
|
|
@@ -247,7 +250,14 @@ const MessagesOptionUI = (props: MessagesOptionParams) => {
|
|
|
247
250
|
/>
|
|
248
251
|
)}
|
|
249
252
|
|
|
250
|
-
<ScrollView
|
|
253
|
+
<ScrollView
|
|
254
|
+
showsVerticalScrollIndicator={false}
|
|
255
|
+
style={{ flex: 1 }}
|
|
256
|
+
refreshControl={<RefreshControl
|
|
257
|
+
refreshing={refreshing}
|
|
258
|
+
onRefresh={() => getOrders?.()}
|
|
259
|
+
/>}
|
|
260
|
+
>
|
|
251
261
|
{!reload &&
|
|
252
262
|
!error &&
|
|
253
263
|
values.length > 0 &&
|
|
@@ -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')}
|
|
@@ -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 = {
|
|
@@ -245,17 +247,17 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
245
247
|
let isToFollow = false;
|
|
246
248
|
let isBusinessMarker = false;
|
|
247
249
|
|
|
248
|
-
if (order?.status === 7 || order?.status === 8) {
|
|
250
|
+
if (order?.status === 7 || order?.status === 8 || order?.status === 18) {
|
|
249
251
|
const markerBusiness = 'Business';
|
|
250
252
|
isBusinessMarker = true;
|
|
251
253
|
locationMarker = locations.find(
|
|
252
254
|
(location: any) => location.type === markerBusiness,
|
|
253
255
|
);
|
|
254
256
|
|
|
255
|
-
if (order?.status === 8) {
|
|
257
|
+
if (order?.status === 8 || order?.status === 18) {
|
|
256
258
|
isToFollow = true;
|
|
257
259
|
}
|
|
258
|
-
} else if (order?.status === 3 || order?.status === 9) {
|
|
260
|
+
} else if (order?.status === 3 || order?.status === 9 || order?.status === 19 || order?.status === 23) {
|
|
259
261
|
const markerCustomer = 'Customer';
|
|
260
262
|
isToFollow = true;
|
|
261
263
|
isBusinessMarker = false;
|
|
@@ -393,7 +395,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
393
395
|
widthButton={'45%'}
|
|
394
396
|
/>
|
|
395
397
|
)}
|
|
396
|
-
{(order?.status
|
|
398
|
+
{(validStatusComplete.includes(order?.status)) && (
|
|
397
399
|
<>
|
|
398
400
|
<FloatingButton
|
|
399
401
|
disabled={props.order?.loading}
|
|
@@ -274,8 +274,8 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
274
274
|
<View style={styles.linkWithIcons}>
|
|
275
275
|
<OLink
|
|
276
276
|
PressStyle={styles.linkWithIcons}
|
|
277
|
-
url={`tel:${order?.customer?.cellphone}`}
|
|
278
|
-
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}`}
|
|
279
279
|
TextStyle={styles.textLink}
|
|
280
280
|
/>
|
|
281
281
|
</View>
|
|
@@ -323,6 +323,12 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
323
323
|
{order?.customer?.zipcode}
|
|
324
324
|
</OText>
|
|
325
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
|
+
)}
|
|
326
332
|
{((order?.delivery_option !== undefined && order?.delivery_type === 1) || !!order?.comment) && (
|
|
327
333
|
<View style={{ marginTop: 10 }}>
|
|
328
334
|
{order?.delivery_option !== undefined && order?.delivery_type === 1 && (
|
|
@@ -358,6 +364,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
358
364
|
<ProductItemAccordion
|
|
359
365
|
key={product?.id || i}
|
|
360
366
|
product={product}
|
|
367
|
+
currency={order?.currency}
|
|
361
368
|
/>
|
|
362
369
|
))}
|
|
363
370
|
</OrderProducts>
|
|
@@ -366,7 +373,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
366
373
|
<Table>
|
|
367
374
|
<OText mBottom={4}>{t('SUBTOTAL', 'Subtotal')}</OText>
|
|
368
375
|
<OText mBottom={4}>
|
|
369
|
-
{parsePrice(((order?.summary?.subtotal ?? order?.subtotal) + getIncludedTaxes()))}
|
|
376
|
+
{parsePrice(((order?.summary?.subtotal ?? order?.subtotal) + getIncludedTaxes()), { currency: order?.currency})}
|
|
370
377
|
</OText>
|
|
371
378
|
</Table>
|
|
372
379
|
{(order?.summary?.discount > 0 ?? order?.discount > 0) && order?.offers?.length === 0 && (
|
|
@@ -379,7 +386,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
379
386
|
) : (
|
|
380
387
|
<OText mBottom={4}>{t('DISCOUNT', theme?.defaultLanguages?.DISCOUNT || 'Discount')}</OText>
|
|
381
388
|
)}
|
|
382
|
-
<OText>- {parsePrice(order?.summary?.discount ?? order?.discount)}</OText>
|
|
389
|
+
<OText>- {parsePrice(order?.summary?.discount ?? order?.discount, { currency: order?.currency})}</OText>
|
|
383
390
|
</Table>
|
|
384
391
|
)}
|
|
385
392
|
{
|
|
@@ -393,7 +400,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
393
400
|
)}
|
|
394
401
|
</OText>
|
|
395
402
|
</OSRow>
|
|
396
|
-
<OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
|
|
403
|
+
<OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency})}</OText>
|
|
397
404
|
</Table>
|
|
398
405
|
))
|
|
399
406
|
}
|
|
@@ -401,9 +408,9 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
401
408
|
<Table>
|
|
402
409
|
<OText mBottom={4}>{t('SUBTOTAL_WITH_DISCOUNT', 'Subtotal with discount')}</OText>
|
|
403
410
|
{order?.tax_type === 1 ? (
|
|
404
|
-
<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>
|
|
405
412
|
) : (
|
|
406
|
-
<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>
|
|
407
414
|
)}
|
|
408
415
|
</Table>
|
|
409
416
|
)}
|
|
@@ -413,7 +420,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
413
420
|
{t('TAX', 'Tax')} {`(${verifyDecimals(order?.tax, parseNumber)}%)`}
|
|
414
421
|
</OText>
|
|
415
422
|
<OText mBottom={4}>
|
|
416
|
-
{parsePrice(order?.summary?.tax ?? 0)}
|
|
423
|
+
{parsePrice(order?.summary?.tax ?? 0, { currency: order?.currency})}
|
|
417
424
|
</OText>
|
|
418
425
|
</Table>
|
|
419
426
|
)}
|
|
@@ -424,7 +431,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
424
431
|
{t('SERVICE_FEE', 'Service fee')}
|
|
425
432
|
{`(${verifyDecimals(order?.service_fee, parseNumber)}%)`}
|
|
426
433
|
</OText>
|
|
427
|
-
<OText mBottom={4}>{parsePrice(order?.summary?.service_fee ?? 0)}</OText>
|
|
434
|
+
<OText mBottom={4}>{parsePrice(order?.summary?.service_fee ?? 0, { currency: order?.currency})}</OText>
|
|
428
435
|
</Table>
|
|
429
436
|
)
|
|
430
437
|
}
|
|
@@ -437,7 +444,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
437
444
|
{`(${verifyDecimals(tax?.rate, parseNumber)}%)`}{' '}
|
|
438
445
|
</OText>
|
|
439
446
|
</OSRow>
|
|
440
|
-
<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>
|
|
441
448
|
</Table>
|
|
442
449
|
))
|
|
443
450
|
}
|
|
@@ -447,10 +454,10 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
447
454
|
<OSRow>
|
|
448
455
|
<OText mBottom={4}>
|
|
449
456
|
{fee.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
|
|
450
|
-
({fee?.fixed > 0 && `${parsePrice(fee?.fixed)} + `}{fee.percentage}%){' '}
|
|
457
|
+
({fee?.fixed > 0 && `${parsePrice(fee?.fixed, { currency: order?.currency})} + `}{fee.percentage}%){' '}
|
|
451
458
|
</OText>
|
|
452
459
|
</OSRow>
|
|
453
|
-
<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>
|
|
454
461
|
</Table>
|
|
455
462
|
))
|
|
456
463
|
}
|
|
@@ -465,7 +472,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
465
472
|
)}
|
|
466
473
|
</OText>
|
|
467
474
|
</OSRow>
|
|
468
|
-
<OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
|
|
475
|
+
<OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency})}</OText>
|
|
469
476
|
</Table>
|
|
470
477
|
))
|
|
471
478
|
}
|
|
@@ -477,7 +484,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
477
484
|
</OText>
|
|
478
485
|
|
|
479
486
|
<OText mBottom={4}>
|
|
480
|
-
{parsePrice(order?.summary?.delivery_price)}
|
|
487
|
+
{parsePrice(order?.summary?.delivery_price, { currency: order?.currency})}
|
|
481
488
|
</OText>
|
|
482
489
|
</Table>
|
|
483
490
|
)
|
|
@@ -493,7 +500,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
493
500
|
)}
|
|
494
501
|
</OText>
|
|
495
502
|
</OSRow>
|
|
496
|
-
<OText mBottom={4}>- {parsePrice(offer?.summary?.discount)}</OText>
|
|
503
|
+
<OText mBottom={4}>- {parsePrice(offer?.summary?.discount, { currency: order?.currency})}</OText>
|
|
497
504
|
</Table>
|
|
498
505
|
))
|
|
499
506
|
}
|
|
@@ -508,7 +515,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
508
515
|
`(${verifyDecimals(order?.summary?.driver_tip, parseNumber)}%)`
|
|
509
516
|
)}
|
|
510
517
|
</OText>
|
|
511
|
-
<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>
|
|
512
519
|
</Table>
|
|
513
520
|
)}
|
|
514
521
|
|
|
@@ -522,7 +529,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
522
529
|
mBottom={4}
|
|
523
530
|
style={styles.textBold}
|
|
524
531
|
color={theme.colors.primary}>
|
|
525
|
-
{parsePrice(order?.summary?.total ?? order?.total)}
|
|
532
|
+
{parsePrice(order?.summary?.total ?? order?.total, { currency: order?.currency})}
|
|
526
533
|
</OText>
|
|
527
534
|
</Table>
|
|
528
535
|
</Total>
|
|
@@ -565,7 +572,7 @@ export const OrderContentComponent = (props: OrderContent) => {
|
|
|
565
572
|
)}
|
|
566
573
|
</View>
|
|
567
574
|
<OText>
|
|
568
|
-
-{parsePrice(event.amount)}
|
|
575
|
+
-{parsePrice(event.amount, { currency: order?.currency})}
|
|
569
576
|
</OText>
|
|
570
577
|
</View>
|
|
571
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,7 +611,7 @@ 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>
|
|
@@ -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
|
};
|