ordering-ui-react-native 0.15.78 → 0.15.79-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 +6 -2
- package/src/components/LoginForm/index.tsx +120 -30
- package/src/components/LoginForm/styles.tsx +6 -0
- 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 +12 -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/pages/Sessions.tsx +22 -0
- 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/NewOrderNotification/index.tsx +26 -13
- package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
- package/themes/business/src/components/OrderDetails/Delivery.tsx +28 -11
- 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 +15 -7
- 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 +39 -28
- package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -3
- package/themes/kiosk/src/components/Cart/index.tsx +11 -12
- 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 +29 -20
- package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
- package/themes/kiosk/src/components/OrderDetails/index.tsx +32 -27
- package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +9 -11
- package/themes/kiosk/src/components/PaymentOptions/index.tsx +56 -54
- package/themes/kiosk/src/components/ProductForm/index.tsx +6 -7
- package/themes/kiosk/src/components/ProductItemAccordion/index.tsx +2 -2
- package/themes/kiosk/src/components/ProductOption/index.tsx +1 -1
- 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 +24 -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 +2 -2
- 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 +201 -96
- package/themes/original/src/components/BusinessController/styles.tsx +5 -0
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +8 -5
- package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -1
- package/themes/original/src/components/BusinessListingSearch/index.tsx +234 -64
- package/themes/original/src/components/BusinessListingSearch/styles.tsx +22 -2
- 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 +65 -73
- package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
- package/themes/original/src/components/BusinessProductsListing/index.tsx +315 -176
- package/themes/original/src/components/BusinessProductsListing/styles.tsx +11 -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 +560 -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 +661 -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 +84 -39
- package/themes/original/src/components/Cart/styles.tsx +4 -0
- package/themes/original/src/components/Checkout/index.tsx +100 -50
- 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 +84 -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/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 +1 -1
- 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 +258 -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 +4 -4
- package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
- package/themes/original/src/components/OrderDetails/index.tsx +148 -63
- package/themes/original/src/components/OrderDetails/styles.tsx +1 -2
- package/themes/original/src/components/OrderItAgain/index.tsx +72 -0
- package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
- package/themes/original/src/components/OrderSummary/index.tsx +5 -5
- package/themes/original/src/components/OrderTypeSelector/index.tsx +77 -35
- package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
- package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +153 -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 +139 -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/PreviousOrders/index.tsx +18 -147
- package/themes/original/src/components/ProductForm/index.tsx +712 -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 +145 -128
- package/themes/original/src/components/Promotions/styles.tsx +2 -0
- 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/Sessions/index.tsx +160 -0
- package/themes/original/src/components/Sessions/styles.tsx +15 -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 +220 -94
- 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 +2 -6
- 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 +10 -1
- package/themes/original/src/components/UserProfileForm/index.tsx +14 -9
- package/themes/original/src/components/UserVerification/index.tsx +178 -192
- package/themes/original/src/components/Wallets/index.tsx +2 -2
- package/themes/original/src/components/shared/OBottomPopup.tsx +47 -14
- package/themes/original/src/components/shared/OButton.tsx +2 -0
- 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 +199 -36
- package/themes/original/src/utils/index.tsx +94 -1
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
|
@@ -395,9 +395,14 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
395
395
|
</View>
|
|
396
396
|
</OSTable>
|
|
397
397
|
|
|
398
|
-
{order?.products?.length && (
|
|
399
|
-
|
|
400
|
-
<View
|
|
398
|
+
{order?.products?.length > 0 && (
|
|
399
|
+
<>
|
|
400
|
+
<View
|
|
401
|
+
style={{
|
|
402
|
+
flexDirection: 'row',
|
|
403
|
+
justifyContent: 'space-between'
|
|
404
|
+
}}
|
|
405
|
+
>
|
|
401
406
|
<OText
|
|
402
407
|
weight="bold"
|
|
403
408
|
mBottom={15}
|
|
@@ -405,29 +410,29 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
405
410
|
{`${order?.products?.length} ${t('ITEMS', 'items')}`}
|
|
406
411
|
</OText>
|
|
407
412
|
|
|
408
|
-
<
|
|
409
|
-
{
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
height={80}
|
|
415
|
-
width={80}
|
|
416
|
-
borderRadius={8}
|
|
417
|
-
style={{ marginEnd: 10, marginBottom: 10 }}
|
|
418
|
-
/>
|
|
419
|
-
))}
|
|
420
|
-
</GridContainer>
|
|
413
|
+
<OText
|
|
414
|
+
color={theme.colors.primary}
|
|
415
|
+
weight="bold"
|
|
416
|
+
>
|
|
417
|
+
{parsePrice((order?.summary?.total || order?.total) - (order?.summary?.discount || order?.discount))}
|
|
418
|
+
</OText>
|
|
421
419
|
</View>
|
|
422
|
-
|
|
423
|
-
<
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
420
|
+
<OSTable>
|
|
421
|
+
<GridContainer style={{ maxWidth: orientationState?.dimensions?.width * 0.6 }}>
|
|
422
|
+
{order?.products.map((product: Product, i: number) => (
|
|
423
|
+
<OImage
|
|
424
|
+
key={product?.id || i}
|
|
425
|
+
source={{ uri: product?.images || '' }}
|
|
426
|
+
resizeMode="cover"
|
|
427
|
+
height={80}
|
|
428
|
+
width={80}
|
|
429
|
+
borderRadius={8}
|
|
430
|
+
style={{ marginEnd: 10, marginBottom: 10 }}
|
|
431
|
+
/>
|
|
432
|
+
))}
|
|
433
|
+
</GridContainer>
|
|
434
|
+
</OSTable>
|
|
435
|
+
</>
|
|
431
436
|
)}
|
|
432
437
|
|
|
433
438
|
<OrderBill>
|
|
@@ -520,7 +525,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
520
525
|
<OSRow>
|
|
521
526
|
<OText>
|
|
522
527
|
{fee.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
|
|
523
|
-
({fee?.fixed > 0 && `${parsePrice(fee?.fixed)} + `}{fee.percentage}
|
|
528
|
+
({fee?.fixed > 0 && `${parsePrice(fee?.fixed)}${fee.percentage > 0 ? ' + ' : ''}`}{fee.percentage > 0 && `${fee.percentage}%`}){' '}
|
|
524
529
|
</OText>
|
|
525
530
|
</OSRow>
|
|
526
531
|
<OText>{parsePrice(fee?.summary?.fixed + (fee?.summary?.percentage_after_discount ?? fee?.summary?.percentage) ?? 0)}</OText>
|
|
@@ -593,7 +598,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
593
598
|
<>
|
|
594
599
|
<Spinner visible={!order || Object.keys(order).length === 0} />
|
|
595
600
|
|
|
596
|
-
{order && Object.keys(order).length > 0 && (
|
|
601
|
+
{!!order && Object.keys(order).length > 0 && (
|
|
597
602
|
<>
|
|
598
603
|
<Container>
|
|
599
604
|
<NavBar
|
|
@@ -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)
|
|
@@ -59,7 +57,7 @@ const OrderTypeSelectorCardUI = (props: OrderTypeSelectParams) => {
|
|
|
59
57
|
<Container>
|
|
60
58
|
<NavBar
|
|
61
59
|
title={t('ORDER_TYPE_X_ID', 'Order type')}
|
|
62
|
-
{
|
|
60
|
+
onActionLeft={goBack}
|
|
63
61
|
btnStyle={{ paddingLeft: 0 }}
|
|
64
62
|
/>
|
|
65
63
|
|
|
@@ -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')
|
|
@@ -107,7 +107,7 @@ const PaymentOptionsUI = (props: any) => {
|
|
|
107
107
|
|
|
108
108
|
const handlePlaceOrder = () => {
|
|
109
109
|
if (!userErrors.length) {
|
|
110
|
-
handlerClickPlaceOrder && handlerClickPlaceOrder();
|
|
110
|
+
handlerClickPlaceOrder && handlerClickPlaceOrder(null, { on_behalf_of: props.customerName });
|
|
111
111
|
return;
|
|
112
112
|
}
|
|
113
113
|
let stringError = '';
|
|
@@ -189,67 +189,69 @@ const PaymentOptionsUI = (props: any) => {
|
|
|
189
189
|
|
|
190
190
|
return (
|
|
191
191
|
<>
|
|
192
|
-
<Spinner visible={isLoading || placing} />
|
|
192
|
+
<Spinner visible={isLoading || placing || paymethodsList?.loading} />
|
|
193
193
|
|
|
194
194
|
<Container nestedScrollEnabled>
|
|
195
|
-
<NavBar
|
|
196
|
-
title={t('PAYMENT_METHODS', 'Payment methods')}
|
|
197
|
-
onActionLeft={goToBack}
|
|
198
|
-
btnStyle={{ paddingLeft: 0 }}
|
|
199
|
-
/>
|
|
200
|
-
|
|
201
|
-
<View
|
|
202
|
-
style={{ marginVertical: orientationState?.dimensions?.height * 0.03 }}>
|
|
203
|
-
<OText size={orientationState?.dimensions?.width * 0.048}>
|
|
204
|
-
{t('HOW_WOULD_YOU', 'How would you')} {'\n'}
|
|
205
|
-
<OText
|
|
206
|
-
size={orientationState?.dimensions?.width * 0.048}
|
|
207
|
-
weight={'700'}>
|
|
208
|
-
{`${t('LIKE_TO_PAY', 'like to pay')}?`}
|
|
209
|
-
</OText>
|
|
210
|
-
</OText>
|
|
211
|
-
</View>
|
|
212
|
-
|
|
213
195
|
{supportedMethods?.length > 0 && (
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
196
|
+
<>
|
|
197
|
+
<NavBar
|
|
198
|
+
title={t('PAYMENT_METHODS', 'Payment methods')}
|
|
199
|
+
onActionLeft={goToBack}
|
|
200
|
+
btnStyle={{ paddingLeft: 0 }}
|
|
201
|
+
/>
|
|
220
202
|
|
|
221
203
|
<View
|
|
222
|
-
style={{
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
/>
|
|
204
|
+
style={{ marginVertical: orientationState?.dimensions?.height * 0.03 }}>
|
|
205
|
+
<OText size={orientationState?.dimensions?.width * 0.048}>
|
|
206
|
+
{t('HOW_WOULD_YOU', 'How would you')} {'\n'}
|
|
207
|
+
<OText
|
|
208
|
+
size={orientationState?.dimensions?.width * 0.048}
|
|
209
|
+
weight={'700'}>
|
|
210
|
+
{`${t('LIKE_TO_PAY', 'like to pay')}?`}
|
|
211
|
+
</OText>
|
|
212
|
+
</OText>
|
|
213
|
+
</View>
|
|
233
214
|
|
|
234
|
-
{
|
|
215
|
+
<GridContainer style={{ justifyContent: 'space-between' }}>
|
|
216
|
+
{propsOfItems.CARD_ON_DELIVERY_ID && (
|
|
217
|
+
<View style={{ marginBottom: orientationState?.orientation === LANDSCAPE ? 20 : 0 }}>
|
|
218
|
+
<OptionCard {...propsOfItems?.CARD_ON_DELIVERY_ID} styke />
|
|
219
|
+
</View>
|
|
220
|
+
)}
|
|
235
221
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
222
|
+
<View
|
|
223
|
+
style={{
|
|
224
|
+
width:
|
|
225
|
+
orientationState?.orientation === LANDSCAPE
|
|
226
|
+
? orientationState?.dimensions?.width * 0.0016
|
|
227
|
+
: 1,
|
|
228
|
+
height:
|
|
229
|
+
orientationState?.orientation === PORTRAIT
|
|
230
|
+
? orientationState?.dimensions?.height * 0.018
|
|
231
|
+
: 1,
|
|
232
|
+
}}
|
|
233
|
+
/>
|
|
234
|
+
|
|
235
|
+
{propsOfItems?.CASH_ID && <OptionCard {...propsOfItems?.CASH_ID} />}
|
|
236
|
+
|
|
237
|
+
<View
|
|
238
|
+
style={{
|
|
239
|
+
width:
|
|
240
|
+
orientationState?.orientation === LANDSCAPE
|
|
241
|
+
? orientationState?.dimensions?.width * 0.0016
|
|
242
|
+
: 1,
|
|
243
|
+
height:
|
|
244
|
+
orientationState?.orientation === PORTRAIT
|
|
245
|
+
? orientationState?.dimensions?.height * 0.018
|
|
246
|
+
: 1,
|
|
247
|
+
}}
|
|
248
|
+
/>
|
|
248
249
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
250
|
+
{propsOfItems.STRIPE && (
|
|
251
|
+
<OptionCard {...propsOfItems?.STRIPE} />
|
|
252
|
+
)}
|
|
253
|
+
</GridContainer>
|
|
254
|
+
</>
|
|
253
255
|
)}
|
|
254
256
|
<View style={{ height: orientationState?.dimensions?.height * 0.05 }} />
|
|
255
257
|
<OModal
|
|
@@ -6,8 +6,7 @@ import {
|
|
|
6
6
|
StyleSheet,
|
|
7
7
|
Animated,
|
|
8
8
|
ScrollView,
|
|
9
|
-
|
|
10
|
-
ImageBackground
|
|
9
|
+
ImageBackground,
|
|
11
10
|
} from 'react-native'
|
|
12
11
|
import {
|
|
13
12
|
ProductForm as ProductOptions,
|
|
@@ -17,7 +16,6 @@ import {
|
|
|
17
16
|
useUtils
|
|
18
17
|
} from 'ordering-components/native'
|
|
19
18
|
import MaterialCommunityIcon from 'react-native-vector-icons/MaterialCommunityIcons'
|
|
20
|
-
import Spinner from 'react-native-loading-spinner-overlay'
|
|
21
19
|
import { useTheme } from 'styled-components/native'
|
|
22
20
|
|
|
23
21
|
import { ProductIngredient } from '../ProductIngredient'
|
|
@@ -32,12 +30,11 @@ import {
|
|
|
32
30
|
ProductComment,
|
|
33
31
|
ProductActions
|
|
34
32
|
} from './styles'
|
|
35
|
-
import { OButton,
|
|
33
|
+
import { OButton, OInput, OText } from '../shared'
|
|
36
34
|
import { ProductOptionSubOption } from '../ProductOptionSubOption'
|
|
37
35
|
import { NotFoundSource } from '../NotFoundSource'
|
|
38
36
|
import NavBar from '../NavBar'
|
|
39
37
|
import { useDeviceOrientation } from '../../../../../src/hooks/DeviceOrientation'
|
|
40
|
-
import { useCartBottomSheet } from '../../providers/CartBottomSheetProvider';
|
|
41
38
|
|
|
42
39
|
export const ProductOptionsUI = (props: any) => {
|
|
43
40
|
const {
|
|
@@ -56,7 +53,6 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
56
53
|
handleChangeCommentState,
|
|
57
54
|
productObject,
|
|
58
55
|
onClose,
|
|
59
|
-
isFromCheckout,
|
|
60
56
|
isDrawer
|
|
61
57
|
} = props;
|
|
62
58
|
|
|
@@ -66,7 +62,6 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
66
62
|
const [orderState] = useOrder();
|
|
67
63
|
const [{ auth }] = useSession();
|
|
68
64
|
const [orientationState] = useDeviceOrientation();
|
|
69
|
-
const [, { showCartBottomSheet }] = useCartBottomSheet();
|
|
70
65
|
|
|
71
66
|
const { product, loading, error } = productObject;
|
|
72
67
|
|
|
@@ -87,6 +82,8 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
87
82
|
const handleSaveProduct = () => {
|
|
88
83
|
const isErrors = Object.values(errors).length > 0
|
|
89
84
|
if (!isErrors) {
|
|
85
|
+
props.onProductStateChange &&
|
|
86
|
+
props.onProductStateChange(props.isEdit ? { product, productCart }: productCart)
|
|
90
87
|
handleSave && handleSave()
|
|
91
88
|
return
|
|
92
89
|
}
|
|
@@ -503,12 +500,14 @@ export const ProductOptionsUI = (props: any) => {
|
|
|
503
500
|
</WrapContent>
|
|
504
501
|
</View>
|
|
505
502
|
)}
|
|
503
|
+
|
|
506
504
|
{error && error.length > 0 && (
|
|
507
505
|
<NotFoundSource
|
|
508
506
|
content={error[0]?.message || error[0]}
|
|
509
507
|
/>
|
|
510
508
|
)}
|
|
511
509
|
</ScrollView>
|
|
510
|
+
|
|
512
511
|
{!loading && !error && product && (
|
|
513
512
|
<ProductActions>
|
|
514
513
|
{productCart && !isSoldOut && maxProductQuantity > 0 && (
|
|
@@ -103,7 +103,7 @@ export const ProductItemAccordion = (props: ProductItemAccordionParams) => {
|
|
|
103
103
|
|
|
104
104
|
const getFormattedSubOptionName = ({ quantity, name, position, price }: { quantity: number, name: string, position: string, price: number }) => {
|
|
105
105
|
const pos = position ? `(${position})` : ''
|
|
106
|
-
return `${quantity} x ${name} ${pos}
|
|
106
|
+
return `${quantity} x ${name} ${pos} ${price}`
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
/*useEffect(() => {
|
|
@@ -210,7 +210,7 @@ export const ProductItemAccordion = (props: ProductItemAccordionParams) => {
|
|
|
210
210
|
quantity: suboption.quantity,
|
|
211
211
|
name: suboption.name,
|
|
212
212
|
position: (suboption.position !== 'whole') ? t(suboption.position.toUpperCase(), suboption.position) : '',
|
|
213
|
-
price: parsePrice(suboption.price)
|
|
213
|
+
price: suboption.price > 0 ? `+${parsePrice(suboption.price)}` : parsePrice(suboption.price)
|
|
214
214
|
})}
|
|
215
215
|
</OText>
|
|
216
216
|
</ProductSubOption>
|
|
@@ -144,13 +144,15 @@ export const ProductOptionSubOptionUI = (props: any) => {
|
|
|
144
144
|
</PositionControl>
|
|
145
145
|
)
|
|
146
146
|
}
|
|
147
|
+
{price > 0 && (
|
|
147
148
|
<OText
|
|
148
149
|
color="#909BA9"
|
|
149
150
|
size={16}
|
|
150
151
|
weight="bold"
|
|
151
152
|
>
|
|
152
|
-
|
|
153
|
+
+ {parsePrice(price)}
|
|
153
154
|
</OText>
|
|
155
|
+
)}
|
|
154
156
|
</RightSide>
|
|
155
157
|
</Container>
|
|
156
158
|
)
|
|
@@ -71,6 +71,11 @@ const UpsellingProductsUI = (props: UpsellingProductsParams) => {
|
|
|
71
71
|
}, [upsellingProducts.loading, upsellingProducts?.products.length])
|
|
72
72
|
|
|
73
73
|
const handleFormProduct = (product: any) => {
|
|
74
|
+
if (props.onAddProduct) {
|
|
75
|
+
onClose && onClose()
|
|
76
|
+
props.onAddProduct(product)
|
|
77
|
+
return
|
|
78
|
+
}
|
|
74
79
|
setActualProduct(product)
|
|
75
80
|
setModalIsOpen(true)
|
|
76
81
|
}
|
|
@@ -81,9 +86,18 @@ const UpsellingProductsUI = (props: UpsellingProductsParams) => {
|
|
|
81
86
|
}
|
|
82
87
|
|
|
83
88
|
const UpsellingLayout = () => {
|
|
84
|
-
|
|
85
89
|
const theme = useTheme()
|
|
86
90
|
|
|
91
|
+
const onClickProduct = (product: any) => {
|
|
92
|
+
resetInactivityTimeout()
|
|
93
|
+
if (props.onAddProduct) {
|
|
94
|
+
onClose && onClose()
|
|
95
|
+
props.onAddProduct(product)
|
|
96
|
+
return
|
|
97
|
+
}
|
|
98
|
+
handleFormProduct(product)
|
|
99
|
+
}
|
|
100
|
+
|
|
87
101
|
return (
|
|
88
102
|
<Container>
|
|
89
103
|
{
|
|
@@ -167,10 +181,7 @@ const UpsellingProductsUI = (props: UpsellingProductsParams) => {
|
|
|
167
181
|
style={{ height: 40, width: '100%' }}
|
|
168
182
|
bgColor="#EAF2FE"
|
|
169
183
|
borderColor="#EAF2FE"
|
|
170
|
-
onClick={() =>
|
|
171
|
-
resetInactivityTimeout()
|
|
172
|
-
handleFormProduct(product)
|
|
173
|
-
}}
|
|
184
|
+
onClick={() => onClickProduct(product)}
|
|
174
185
|
/>
|
|
175
186
|
</Item>
|
|
176
187
|
)) : (
|
|
@@ -10,8 +10,6 @@ import {
|
|
|
10
10
|
|
|
11
11
|
import * as React from 'react';
|
|
12
12
|
import styled from 'styled-components/native';
|
|
13
|
-
import AntDesignIcon from 'react-native-vector-icons/AntDesign'
|
|
14
|
-
import { Icon, IconProps } from 'react-native-vector-icons/Icon';
|
|
15
13
|
|
|
16
14
|
const StyledButton = styled.View<Props>`
|
|
17
15
|
background-color: ${(props: any) => props.theme.colors.primary};
|
|
@@ -79,19 +77,17 @@ interface Props {
|
|
|
79
77
|
isCircle?: boolean;
|
|
80
78
|
bgColor?: string;
|
|
81
79
|
borderColor?: string;
|
|
82
|
-
iconProps?: IconProps;
|
|
83
|
-
IconCustom?: React.FunctionComponent
|
|
84
80
|
}
|
|
85
81
|
|
|
86
82
|
const OButton = (props: Props): React.ReactElement => {
|
|
87
83
|
if (props.isDisabled) {
|
|
88
84
|
return (
|
|
89
85
|
<View style={props.parentStyle}>
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
86
|
+
<StyledButtonDisabled style={props.style}>
|
|
87
|
+
<StyledTextDisabled style={props.disabledTextStyle ? props.disabledTextStyle : props.textStyle}>
|
|
88
|
+
{props.text}
|
|
89
|
+
</StyledTextDisabled>
|
|
90
|
+
</StyledButtonDisabled>
|
|
95
91
|
</View>
|
|
96
92
|
);
|
|
97
93
|
}
|
|
@@ -115,15 +111,6 @@ const OButton = (props: Props): React.ReactElement => {
|
|
|
115
111
|
{props.imgLeftSrc ? (
|
|
116
112
|
<StyledImage style={props.imgLeftStyle} source={props.imgLeftSrc} />
|
|
117
113
|
) : null}
|
|
118
|
-
{props.iconProps ? (
|
|
119
|
-
<>
|
|
120
|
-
{props?.IconCustom ? (
|
|
121
|
-
<props.IconCustom {...props.iconProps} />
|
|
122
|
-
) : (
|
|
123
|
-
<AntDesignIcon {...props.iconProps} />
|
|
124
|
-
)}
|
|
125
|
-
</>
|
|
126
|
-
) : null}
|
|
127
114
|
{props.text ? (
|
|
128
115
|
<StyledText style={props.textStyle}>{props.text}</StyledText>
|
|
129
116
|
) : null}
|
|
@@ -15,6 +15,8 @@ import { BusinessProductsListing } from './src/components/BusinessProductsListin
|
|
|
15
15
|
import { CartContent } from './src/components/CartContent';
|
|
16
16
|
import { BusinessCart } from './src/components/BusinessCart';
|
|
17
17
|
import { Checkout } from './src/components/Checkout';
|
|
18
|
+
import { Favorite } from './src/components/Favorite';
|
|
19
|
+
import { FavoriteList } from './src/components/FavoriteList';
|
|
18
20
|
import { FloatingButton } from './src/components/FloatingButton';
|
|
19
21
|
import { ForgotPasswordForm } from './src/components/ForgotPasswordForm';
|
|
20
22
|
import { MomentOption } from './src/components/MomentOption';
|
|
@@ -30,6 +32,7 @@ import { ReviewDriver } from './src/components/ReviewDriver';
|
|
|
30
32
|
import { UserProfile } from './src/components/UserProfile';
|
|
31
33
|
import { MessageListing } from './src/components/MessageListing';
|
|
32
34
|
import { Messages } from './src/components/Messages';
|
|
35
|
+
import { MyOrders } from './src/components/MyOrders';
|
|
33
36
|
import { Help } from './src/components/Help';
|
|
34
37
|
import { HelpAccountAndPayment } from './src/components/HelpAccountAndPayment';
|
|
35
38
|
import { HelpGuide } from './src/components/HelpGuide';
|
|
@@ -45,6 +48,8 @@ import { UpsellingProducts } from './src/components/UpsellingProducts';
|
|
|
45
48
|
import { UserVerification } from './src/components/UserVerification';
|
|
46
49
|
import { BusinessListingSearch } from './src/components/BusinessListingSearch';
|
|
47
50
|
import { LastOrders } from './src/components/LastOrders';
|
|
51
|
+
import { MultiCheckout } from './src/components/MultiCheckout'
|
|
52
|
+
import { MultiOrdersDetails } from './src/components/MultiOrdersDetails'
|
|
48
53
|
import NavBar from './src/components/NavBar';
|
|
49
54
|
import { BusinessTypeFilter } from './src/components/BusinessTypeFilter';
|
|
50
55
|
import { BusinessController } from './src/components/BusinessController';
|
|
@@ -54,16 +59,22 @@ import { PaymentOptions } from './src/components/PaymentOptions';
|
|
|
54
59
|
import { DriverTips } from './src/components/DriverTips';
|
|
55
60
|
import { UserDetails } from './src/components/UserDetails';
|
|
56
61
|
import { OrderSummary } from './src/components/OrderSummary';
|
|
62
|
+
import { OrderItAgain } from './src/components/OrderItAgain';
|
|
57
63
|
import { CartStoresListing } from './src/components/CartStoresListing';
|
|
58
64
|
import { PaymentOptionsWebView } from '../../src/components/PaymentOptionsWebView';
|
|
59
65
|
import { GoogleMap } from './src/components/GoogleMap';
|
|
60
66
|
import { SingleProductCard } from './src/components/SingleProductCard';
|
|
67
|
+
import { SingleOrderCard } from './src/components/SingleOrderCard';
|
|
61
68
|
import { UpsellingRedirect } from './src/components/BusinessProductsListing/UpsellingRedirect';
|
|
62
69
|
import { ProductItemAccordion } from './src/components/ProductItemAccordion';
|
|
63
70
|
import { BusinessItemAccordion } from './src/components/BusinessItemAccordion';
|
|
64
71
|
import { CouponControl } from './src/components/CouponControl';
|
|
65
72
|
import { TaxInformation } from './src/components/TaxInformation';
|
|
66
73
|
import { PlaceSpot } from './src/components/PlaceSpot';
|
|
74
|
+
import { ProfessionalFilter } from './src/components/ProfessionalFilter';
|
|
75
|
+
import { ProfessionalProfile } from './src/components/ProfessionalProfile';
|
|
76
|
+
import { ServiceForm } from './src/components/ServiceForm';
|
|
77
|
+
import { MomentSelector } from './src/components/MomentSelector';
|
|
67
78
|
import { Cart } from './src/components/Cart';
|
|
68
79
|
import { LanguageSelector } from './src/components/LanguageSelector';
|
|
69
80
|
import { PhoneInputNumber } from './src/components/PhoneInputNumber'
|
|
@@ -77,6 +88,7 @@ import { StripeCardsList } from './src/components/StripeCardsList';
|
|
|
77
88
|
import { ProductIngredient } from './src/components/ProductIngredient';
|
|
78
89
|
import { ProductOption } from './src/components/ProductOption';
|
|
79
90
|
import { ProductOptionSubOption } from './src/components/ProductOptionSubOption';
|
|
91
|
+
import { Sessions } from './src/components/Sessions';
|
|
80
92
|
import { SingleProductReview } from './src/components/SingleProductReview';
|
|
81
93
|
import { LogoutButton } from './src/components/LogoutButton';
|
|
82
94
|
import { UserFormDetailsUI } from './src/components/UserFormDetails';
|
|
@@ -163,6 +175,8 @@ export {
|
|
|
163
175
|
CartContent,
|
|
164
176
|
BusinessCart,
|
|
165
177
|
Checkout,
|
|
178
|
+
Favorite,
|
|
179
|
+
FavoriteList,
|
|
166
180
|
ForgotPasswordForm,
|
|
167
181
|
MomentOption,
|
|
168
182
|
OrdersOption,
|
|
@@ -181,6 +195,8 @@ export {
|
|
|
181
195
|
HelpAccountAndPayment,
|
|
182
196
|
HelpGuide,
|
|
183
197
|
HelpOrder,
|
|
198
|
+
MultiCheckout,
|
|
199
|
+
MultiOrdersDetails,
|
|
184
200
|
NetworkError,
|
|
185
201
|
NotFoundSource,
|
|
186
202
|
OrderTypeSelector,
|
|
@@ -204,16 +220,22 @@ export {
|
|
|
204
220
|
DriverTips,
|
|
205
221
|
UserDetails,
|
|
206
222
|
OrderSummary,
|
|
223
|
+
OrderItAgain,
|
|
207
224
|
CartStoresListing,
|
|
208
225
|
PaymentOptionsWebView,
|
|
209
226
|
GoogleMap,
|
|
210
227
|
SingleProductCard,
|
|
228
|
+
SingleOrderCard,
|
|
211
229
|
UpsellingRedirect,
|
|
212
230
|
ProductItemAccordion,
|
|
213
231
|
BusinessItemAccordion,
|
|
214
232
|
CouponControl,
|
|
215
233
|
TaxInformation,
|
|
216
234
|
PlaceSpot,
|
|
235
|
+
ProfessionalFilter,
|
|
236
|
+
ServiceForm,
|
|
237
|
+
ProfessionalProfile,
|
|
238
|
+
MomentSelector,
|
|
217
239
|
Cart,
|
|
218
240
|
LanguageSelector,
|
|
219
241
|
PhoneInputNumber,
|
|
@@ -227,11 +249,13 @@ export {
|
|
|
227
249
|
ProductIngredient,
|
|
228
250
|
ProductOption,
|
|
229
251
|
ProductOptionSubOption,
|
|
252
|
+
Sessions,
|
|
230
253
|
SingleProductReview,
|
|
231
254
|
LogoutButton,
|
|
232
255
|
UserFormDetailsUI,
|
|
233
256
|
WalletTransactionItem,
|
|
234
257
|
Promotions,
|
|
258
|
+
MyOrders,
|
|
235
259
|
ORDER_TYPES,
|
|
236
260
|
USER_TYPE,
|
|
237
261
|
|