ordering-ui-react-native 0.22.54 → 0.22.55-release
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +5 -7
- package/src/DeliveryApp.tsx +1 -1
- package/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/Checkout/index.tsx +40 -39
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/context/OfflineActions/index.tsx +236 -0
- package/src/providers/AlertProvider.tsx +3 -1
- package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
- package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
- package/themes/business/src/components/BusinessController/index.tsx +8 -3
- package/themes/business/src/components/BusinessProductList/index.tsx +3 -2
- package/themes/business/src/components/Chat/index.tsx +15 -3
- package/themes/business/src/components/DriverMap/index.tsx +44 -33
- package/themes/business/src/components/FloatingButton/index.tsx +3 -2
- package/themes/business/src/components/LanguageSelector/index.tsx +1 -1
- package/themes/business/src/components/LoginForm/index.tsx +123 -98
- package/themes/business/src/components/LogoutButton/index.tsx +13 -4
- package/themes/business/src/components/MapView/index.tsx +22 -17
- package/themes/business/src/components/NewOrderNotification/index.tsx +25 -14
- package/themes/business/src/components/OrderDetails/Business.tsx +56 -20
- package/themes/business/src/components/OrderDetails/Delivery.tsx +134 -53
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +155 -45
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +51 -28
- package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
- package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +17 -16
- package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
- package/themes/business/src/components/OrderSummary/index.tsx +271 -176
- package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
- package/themes/business/src/components/OrdersOption/index.tsx +345 -231
- package/themes/business/src/components/OrdersOption/styles.tsx +14 -0
- package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
- package/themes/business/src/components/PreviousOrders/OrderItem.tsx +30 -18
- package/themes/business/src/components/PreviousOrders/index.tsx +74 -66
- package/themes/business/src/components/PreviousOrders/styles.tsx +2 -1
- package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
- package/themes/business/src/components/PrinterEdition/index.tsx +143 -75
- package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
- package/themes/business/src/components/PrinterSettings/index.tsx +1 -1
- package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
- package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
- package/themes/business/src/components/StoresList/index.tsx +2 -2
- package/themes/business/src/components/UserProfileForm/index.tsx +48 -10
- package/themes/business/src/components/UserProfileForm/styles.tsx +7 -0
- package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
- package/themes/business/src/config/currency.tsx +1010 -0
- package/themes/business/src/hooks/useLocation.tsx +16 -12
- package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
- package/themes/business/src/types/index.tsx +22 -7
- package/themes/business/src/utils/index.tsx +28 -3
- package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
- package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
- package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
- package/themes/kiosk/src/components/Checkout/index.tsx +9 -5
- package/themes/kiosk/src/components/CustomerName/index.tsx +1 -1
- package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
- package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
- package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
- package/themes/kiosk/src/components/PaymentOptions/index.tsx +121 -57
- package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
- package/themes/original/index.tsx +9 -1
- package/themes/original/src/components/AddressForm/index.tsx +19 -8
- package/themes/original/src/components/AppleLogin/index.tsx +4 -4
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +1 -1
- package/themes/original/src/components/BusinessController/index.tsx +4 -2
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +10 -4
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +103 -92
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +7 -3
- package/themes/original/src/components/BusinessListingSearch/index.tsx +8 -13
- package/themes/original/src/components/BusinessPreorder/index.tsx +34 -15
- package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +73 -70
- package/themes/original/src/components/BusinessProductsList/index.tsx +6 -7
- package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
- package/themes/original/src/components/BusinessProductsListing/index.tsx +10 -6
- package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
- package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
- package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
- package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
- package/themes/original/src/components/Cart/index.tsx +48 -13
- package/themes/original/src/components/CartContent/index.tsx +2 -3
- package/themes/original/src/components/Checkout/index.tsx +104 -80
- package/themes/original/src/components/Favorite/index.tsx +1 -5
- package/themes/original/src/components/ForgotPasswordForm/index.tsx +1 -2
- package/themes/original/src/components/GoogleMap/index.tsx +39 -18
- package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
- package/themes/original/src/components/Home/index.tsx +35 -16
- package/themes/original/src/components/LoginForm/index.tsx +12 -5
- package/themes/original/src/components/MessageListing/index.tsx +1 -1
- package/themes/original/src/components/Messages/index.tsx +20 -13
- package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
- package/themes/original/src/components/MomentOption/index.tsx +72 -51
- package/themes/original/src/components/MomentSelector/index.tsx +5 -2
- package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +1 -0
- package/themes/original/src/components/MultiCheckout/index.tsx +55 -26
- package/themes/original/src/components/MyOrders/index.tsx +2 -2
- package/themes/original/src/components/NavBar/index.tsx +6 -2
- package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
- package/themes/original/src/components/OrderDetails/OrderHistory.tsx +11 -4
- package/themes/original/src/components/OrderDetails/index.tsx +44 -19
- package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
- package/themes/original/src/components/OrderProgress/index.tsx +4 -3
- package/themes/original/src/components/OrderSummary/index.tsx +32 -11
- package/themes/original/src/components/OrderTypeSelector/index.tsx +4 -3
- package/themes/original/src/components/OrdersOption/index.tsx +3 -6
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
- package/themes/original/src/components/PaymentOptions/index.tsx +462 -459
- package/themes/original/src/components/PhoneInputNumber/index.tsx +92 -7
- package/themes/original/src/components/ProductForm/ActionButton.tsx +6 -10
- package/themes/original/src/components/ProductItemAccordion/index.tsx +28 -37
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
- package/themes/original/src/components/ServiceForm/index.tsx +1 -1
- package/themes/original/src/components/SignupForm/index.tsx +41 -24
- package/themes/original/src/components/SingleOrderCard/index.tsx +7 -4
- package/themes/original/src/components/SingleProductCard/index.tsx +3 -4
- package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
- package/themes/original/src/components/StripeCardsList/index.tsx +16 -3
- package/themes/original/src/components/StripeElementsForm/index.tsx +6 -3
- package/themes/original/src/components/StripeElementsForm/naked.tsx +1 -1
- package/themes/original/src/components/TaxInformation/index.tsx +3 -2
- package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +7 -2
- package/themes/original/src/components/UserDetails/index.tsx +17 -16
- package/themes/original/src/components/UserFormDetails/index.tsx +109 -67
- package/themes/original/src/components/UserProfile/index.tsx +9 -1
- package/themes/original/src/components/UserVerification/index.tsx +18 -5
- package/themes/original/src/components/shared/OAlert.tsx +2 -1
- package/themes/original/src/components/shared/OButton.tsx +2 -2
- package/themes/original/src/components/shared/OInput.tsx +4 -8
- package/themes/original/src/components/shared/OModal.tsx +7 -2
- package/themes/original/src/types/index.tsx +12 -4
- package/themes/original/src/utils/index.tsx +29 -0
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
|
@@ -24,6 +24,11 @@ import MaterialIcon from 'react-native-vector-icons/MaterialCommunityIcons'
|
|
|
24
24
|
|
|
25
25
|
const PaymentOptionsUI = (props: any) => {
|
|
26
26
|
const {
|
|
27
|
+
cart,
|
|
28
|
+
onNavigationRedirect,
|
|
29
|
+
isDisabled,
|
|
30
|
+
paymethodData,
|
|
31
|
+
handlePaymethodDataChange,
|
|
27
32
|
errorCash,
|
|
28
33
|
isLoading,
|
|
29
34
|
paymethodsList,
|
|
@@ -43,11 +48,11 @@ const PaymentOptionsUI = (props: any) => {
|
|
|
43
48
|
const [orientationState] = useDeviceOrientation();
|
|
44
49
|
const [userErrors, setUserErrors] = useState<any>([]);
|
|
45
50
|
const [isOpenModal, setIsOpenModal] = useState(false)
|
|
46
|
-
const paymethodSelected =
|
|
47
|
-
|
|
51
|
+
const paymethodSelected =
|
|
52
|
+
paySelected || props.paymethodSelected || isOpenMethod.paymethod;
|
|
48
53
|
|
|
49
54
|
useEffect(() => {
|
|
50
|
-
if (paymethodsList
|
|
55
|
+
if (paymethodsList.paymethods.length === 1) {
|
|
51
56
|
handlePaymethodClick &&
|
|
52
57
|
handlePaymethodClick(paymethodsList.paymethods[0]);
|
|
53
58
|
}
|
|
@@ -80,11 +85,23 @@ const PaymentOptionsUI = (props: any) => {
|
|
|
80
85
|
}
|
|
81
86
|
}, [isOpenMethod.paymethod, placing, isLoading, paySelected]);
|
|
82
87
|
|
|
83
|
-
const
|
|
88
|
+
// const includePaymethods = ['cash', 'card_delivery', 'stripe'];
|
|
89
|
+
const includePaymethods = ['cash', 'card_delivery'];
|
|
90
|
+
|
|
91
|
+
const supportedMethods = paymethodsList.paymethods.filter((p: any) =>
|
|
84
92
|
includePaymethods.includes(p.gateway),
|
|
85
93
|
);
|
|
86
94
|
|
|
87
|
-
const
|
|
95
|
+
const cashIndex: number = supportedMethods?.findIndex(
|
|
96
|
+
(item: any) => item?.gateway === 'cash',
|
|
97
|
+
);
|
|
98
|
+
const cardOnDeliveryIndex = supportedMethods?.findIndex(
|
|
99
|
+
(item: any) => item?.gateway === 'card_delivery',
|
|
100
|
+
);
|
|
101
|
+
const stripeIndex = supportedMethods?.findIndex(
|
|
102
|
+
(item: any) => item?.gateway === 'stripe',
|
|
103
|
+
);
|
|
104
|
+
const onSelectPaymethod = (paymethod: any, isPopupMethod: boolean) => {
|
|
88
105
|
handlePaymethodClick(paymethod);
|
|
89
106
|
};
|
|
90
107
|
|
|
@@ -115,15 +132,57 @@ const PaymentOptionsUI = (props: any) => {
|
|
|
115
132
|
: orientationState?.dimensions?.height * 0.55,
|
|
116
133
|
};
|
|
117
134
|
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
135
|
+
const propsOfItems = {
|
|
136
|
+
CASH_ID:
|
|
137
|
+
cashIndex !== -1
|
|
138
|
+
? {
|
|
139
|
+
style: cardStyle,
|
|
140
|
+
title: t('CASH', 'Cash'),
|
|
141
|
+
description: t(
|
|
142
|
+
'GO_FOR_YOR_RECEIPT_AND_GO_TO_THE_FRONT_COUNTER',
|
|
143
|
+
'Pay with cash in the front counter',
|
|
144
|
+
),
|
|
145
|
+
bgImage: theme.images.general.cash,
|
|
146
|
+
callToActionText: t('LETS_GO', 'LETS_GO'),
|
|
147
|
+
VectorIcon: () => <AntIconDesign name='shoppingcart' size={28} color='white' style={{ marginBottom: 10 }} />,
|
|
148
|
+
onClick: () =>
|
|
149
|
+
onSelectPaymethod(supportedMethods[cashIndex], false),
|
|
150
|
+
...supportedMethods[cashIndex],
|
|
151
|
+
}
|
|
152
|
+
: null,
|
|
153
|
+
|
|
154
|
+
CARD_ON_DELIVERY_ID:
|
|
155
|
+
cardOnDeliveryIndex !== -1
|
|
156
|
+
? {
|
|
157
|
+
style: cardStyle,
|
|
158
|
+
title: t('CARD', supportedMethods[cardOnDeliveryIndex]?.name),
|
|
159
|
+
description: t(
|
|
160
|
+
'WE_ACCEPT_EVERY_DEBIT_OR_CREDIT_CARD',
|
|
161
|
+
'We accept every debit or credit card',
|
|
162
|
+
),
|
|
163
|
+
bgImage: theme.images.general.carddelivery,
|
|
164
|
+
callToActionText: t("LETS_GO", "Let's go"),
|
|
165
|
+
VectorIcon: () => <MaterialIcon name='pin-outline' size={28} color='white' style={{ marginBottom: 10 }} />,
|
|
166
|
+
onClick: () => onSelectPaymethod(supportedMethods[cardOnDeliveryIndex], false),
|
|
167
|
+
...supportedMethods[cardOnDeliveryIndex],
|
|
168
|
+
}
|
|
169
|
+
: null,
|
|
170
|
+
STRIPE:
|
|
171
|
+
stripeIndex !== -1
|
|
172
|
+
? {
|
|
173
|
+
style: cardStyle,
|
|
174
|
+
title: t('STRIPE', supportedMethods[stripeIndex]?.name),
|
|
175
|
+
description: t('STRIPE', 'Stripe'),
|
|
176
|
+
bgImage: theme.images.general.carddelivery,
|
|
177
|
+
callToActionText: t('INSERT_INFO', 'Test info'),
|
|
178
|
+
VectorIcon: () => <MaterialIcon name='pin-outline' size={28} color='white' style={{ marginBottom: 10 }} />,
|
|
179
|
+
onClick: () => {
|
|
180
|
+
onSelectPaymethod(supportedMethods[stripeIndex], false);
|
|
181
|
+
setIsOpenModal(true)
|
|
182
|
+
},
|
|
183
|
+
...supportedMethods[stripeIndex],
|
|
184
|
+
}
|
|
185
|
+
: null,
|
|
127
186
|
};
|
|
128
187
|
|
|
129
188
|
const goToBack = () => navigation?.goBack();
|
|
@@ -133,40 +192,47 @@ const PaymentOptionsUI = (props: any) => {
|
|
|
133
192
|
<Spinner visible={isLoading || placing || paymethodsList?.loading} />
|
|
134
193
|
|
|
135
194
|
<Container nestedScrollEnabled>
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
<
|
|
159
|
-
{...
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
195
|
+
{supportedMethods?.length > 0 && (
|
|
196
|
+
<>
|
|
197
|
+
<NavBar
|
|
198
|
+
title={t('PAYMENT_METHODS', 'Payment methods')}
|
|
199
|
+
onActionLeft={goToBack}
|
|
200
|
+
btnStyle={{ paddingLeft: 0 }}
|
|
201
|
+
/>
|
|
202
|
+
|
|
203
|
+
<View
|
|
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>
|
|
214
|
+
|
|
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
|
+
)}
|
|
221
|
+
|
|
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} />}
|
|
170
236
|
|
|
171
237
|
<View
|
|
172
238
|
style={{
|
|
@@ -180,15 +246,13 @@ const PaymentOptionsUI = (props: any) => {
|
|
|
180
246
|
: 1,
|
|
181
247
|
}}
|
|
182
248
|
/>
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
)}
|
|
191
|
-
</GridContainer>
|
|
249
|
+
|
|
250
|
+
{propsOfItems.STRIPE && (
|
|
251
|
+
<OptionCard {...propsOfItems?.STRIPE} />
|
|
252
|
+
)}
|
|
253
|
+
</GridContainer>
|
|
254
|
+
</>
|
|
255
|
+
)}
|
|
192
256
|
<View style={{ height: orientationState?.dimensions?.height * 0.05 }} />
|
|
193
257
|
<OModal
|
|
194
258
|
open={isOpenModal}
|
|
@@ -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}
|
|
@@ -19,6 +19,7 @@ import { Favorite } from './src/components/Favorite';
|
|
|
19
19
|
import { FavoriteList } from './src/components/FavoriteList';
|
|
20
20
|
import { FloatingButton } from './src/components/FloatingButton';
|
|
21
21
|
import { ForgotPasswordForm } from './src/components/ForgotPasswordForm';
|
|
22
|
+
import { GPSButton } from './src/components/GPSButton';
|
|
22
23
|
import { MomentOption } from './src/components/MomentOption';
|
|
23
24
|
import { OrdersOption } from './src/components/OrdersOption';
|
|
24
25
|
import { OrderDetails } from './src/components/OrderDetails';
|
|
@@ -85,6 +86,7 @@ import { VerifyPhone } from './src/components/VerifyPhone';
|
|
|
85
86
|
import { GoogleLogin } from './src/components/GoogleLogin';
|
|
86
87
|
import { PreviousOrders } from './src/components/PreviousOrders';
|
|
87
88
|
import { PaymentOptionCash } from './src/components/PaymentOptionCash';
|
|
89
|
+
import { SendGiftCard } from './src/components/GiftCard/SendGiftCard';
|
|
88
90
|
import { StripeElementsForm } from './src/components/StripeElementsForm';
|
|
89
91
|
import { StripeCardsList } from './src/components/StripeCardsList';
|
|
90
92
|
import { ProductIngredient } from './src/components/ProductIngredient';
|
|
@@ -106,7 +108,7 @@ import { OSBill, OSTable, OSCoupon, OSTotal, OSRow } from './src/components/Orde
|
|
|
106
108
|
import { FormInput, FormSide, ButtonsWrapper, LoginWith, OTab, OTabs } from './src/components/LoginForm/styles';
|
|
107
109
|
import { OSItem, OSItemContent, OSItemActions } from './src/components/PaymentOptionStripe/styles';
|
|
108
110
|
|
|
109
|
-
import { orderTypeList } from './src/utils'
|
|
111
|
+
import { orderTypeList, getTraduction, verifyDecimals, getOrderStatus, getOrderStatuPickUp } from './src/utils'
|
|
110
112
|
|
|
111
113
|
import Alert from './src/providers/AlertProvider'
|
|
112
114
|
|
|
@@ -184,6 +186,7 @@ export {
|
|
|
184
186
|
Checkout,
|
|
185
187
|
Favorite,
|
|
186
188
|
FavoriteList,
|
|
189
|
+
GPSButton,
|
|
187
190
|
ForgotPasswordForm,
|
|
188
191
|
MomentOption,
|
|
189
192
|
OrdersOption,
|
|
@@ -258,6 +261,7 @@ export {
|
|
|
258
261
|
ProductIngredient,
|
|
259
262
|
ProductOption,
|
|
260
263
|
ProductOptionSubOption,
|
|
264
|
+
SendGiftCard,
|
|
261
265
|
Sessions,
|
|
262
266
|
SingleProductReview,
|
|
263
267
|
LogoutButton,
|
|
@@ -346,6 +350,10 @@ export {
|
|
|
346
350
|
_removeStoreData,
|
|
347
351
|
_clearStoreData,
|
|
348
352
|
orderTypeList,
|
|
353
|
+
getTraduction,
|
|
354
|
+
verifyDecimals,
|
|
355
|
+
getOrderStatus,
|
|
356
|
+
getOrderStatuPickUp,
|
|
349
357
|
|
|
350
358
|
// Date Picker
|
|
351
359
|
DatePickerUI
|
|
@@ -67,7 +67,8 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
67
67
|
hasAddressDefault,
|
|
68
68
|
afterSignup,
|
|
69
69
|
businessSlug,
|
|
70
|
-
isFromCheckout
|
|
70
|
+
isFromCheckout,
|
|
71
|
+
onNavigationRedirect
|
|
71
72
|
} = props;
|
|
72
73
|
|
|
73
74
|
const theme = useTheme();
|
|
@@ -133,6 +134,7 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
133
134
|
const [configState] = useConfig();
|
|
134
135
|
const [orderState] = useOrder();
|
|
135
136
|
const { handleSubmit, errors, control, setValue } = useForm();
|
|
137
|
+
const [autoCompleteAddress, setAutoCompleteAddress] = useState(false)
|
|
136
138
|
|
|
137
139
|
const [toggleMap, setToggleMap] = useState(false);
|
|
138
140
|
const [alertState, setAlertState] = useState<{
|
|
@@ -173,6 +175,8 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
173
175
|
const isHideMap = theme?.address?.components?.map?.hidden
|
|
174
176
|
const isHideIcons = theme?.address?.components?.icons?.hidden
|
|
175
177
|
const continueAsGuest = () => navigation.navigate(!!businessSlug ? 'Business' : 'BusinessList', { isGuestUser: true });
|
|
178
|
+
const unaddressedTypes = configState?.configs?.unaddressed_order_types_allowed?.value.split('|').map((value: any) => Number(value)) || []
|
|
179
|
+
const isAllowUnaddressOrderType = unaddressedTypes.includes(orderState?.options?.type)
|
|
176
180
|
const goToBack = () => navigation?.canGoBack() && navigation.goBack();
|
|
177
181
|
|
|
178
182
|
const getAddressFormatted = (address: any) => {
|
|
@@ -352,9 +356,6 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
352
356
|
map_data: { library: 'google', place_id: data.place_id },
|
|
353
357
|
zip_code: data?.zip_code || null,
|
|
354
358
|
};
|
|
355
|
-
if (googleInput?.current) {
|
|
356
|
-
googleInput?.current?.setAddressText(addressSelected.address);
|
|
357
|
-
}
|
|
358
359
|
updateChanges(addressSelected);
|
|
359
360
|
};
|
|
360
361
|
|
|
@@ -527,6 +528,12 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
527
528
|
setIsSignUpEffect(true);
|
|
528
529
|
}, [orderState.loading]);
|
|
529
530
|
|
|
531
|
+
useEffect(() => {
|
|
532
|
+
if (isAllowUnaddressOrderType) {
|
|
533
|
+
onNavigationRedirect && onNavigationRedirect(!!businessSlug ? 'Business' : 'BusinessList')
|
|
534
|
+
}
|
|
535
|
+
}, [isAllowUnaddressOrderType])
|
|
536
|
+
|
|
530
537
|
return (
|
|
531
538
|
<ScrollView
|
|
532
539
|
keyboardShouldPersistTaps='always'
|
|
@@ -572,6 +579,7 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
572
579
|
placeholder={t('ADD_ADDRESS', 'Add a address')}
|
|
573
580
|
onPress={(data, details: any) => {
|
|
574
581
|
handleChangeAddress(data, details);
|
|
582
|
+
setAutoCompleteAddress(true);
|
|
575
583
|
}}
|
|
576
584
|
query={{
|
|
577
585
|
key: googleMapsApiKey,
|
|
@@ -586,6 +594,7 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
586
594
|
target: { name: 'address', value: text },
|
|
587
595
|
});
|
|
588
596
|
setValue('address', text);
|
|
597
|
+
setAutoCompleteAddress(true)
|
|
589
598
|
}
|
|
590
599
|
setIsFirstTime(false);
|
|
591
600
|
setAddressEditing(text.length == 0);
|
|
@@ -673,13 +682,15 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
673
682
|
setSaveLocation={setSaveMapLocation}
|
|
674
683
|
handleToggleMap={handleToggleMap}
|
|
675
684
|
isIntGeoCoder
|
|
685
|
+
setAutoCompleteAddress={setAutoCompleteAddress}
|
|
686
|
+
autoCompleteAddress={autoCompleteAddress}
|
|
676
687
|
/>
|
|
677
688
|
</GoogleMapContainer>
|
|
678
689
|
</View>
|
|
679
690
|
)}
|
|
680
691
|
|
|
681
692
|
<View style={{ flexDirection: 'row', flexBasis: '50%' }}>
|
|
682
|
-
{((isRequiredField && isRequiredField('internal_number')) || showFieldWithTheme('internal_number')) && (
|
|
693
|
+
{showField?.('internal_number') && ((isRequiredField && isRequiredField('internal_number')) || showFieldWithTheme('internal_number')) && (
|
|
683
694
|
<Controller
|
|
684
695
|
control={control}
|
|
685
696
|
name="internal_number"
|
|
@@ -726,7 +737,7 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
726
737
|
/>
|
|
727
738
|
)}
|
|
728
739
|
|
|
729
|
-
{((isRequiredField && isRequiredField('zipcode')) || showFieldWithTheme('zipcode')) && (
|
|
740
|
+
{showField?.('zipcode') && ((isRequiredField && isRequiredField('zipcode')) || showFieldWithTheme('zipcode')) && (
|
|
730
741
|
<Controller
|
|
731
742
|
control={control}
|
|
732
743
|
name="zipcode"
|
|
@@ -771,7 +782,7 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
771
782
|
)}
|
|
772
783
|
</View>
|
|
773
784
|
|
|
774
|
-
{((isRequiredField && isRequiredField('address_notes')) || showFieldWithTheme('address_notes')) && (
|
|
785
|
+
{showField?.('address_notes') && ((isRequiredField && isRequiredField('address_notes')) || showFieldWithTheme('address_notes')) && (
|
|
775
786
|
<Controller
|
|
776
787
|
control={control}
|
|
777
788
|
name="address_notes"
|
|
@@ -861,7 +872,7 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
861
872
|
text={t('CANCEL', 'Cancel')}
|
|
862
873
|
bgColor={theme.colors.secundary}
|
|
863
874
|
borderColor={theme.colors.secundary}
|
|
864
|
-
textStyle={{ color: theme.colors.
|
|
875
|
+
textStyle={{ color: theme.colors.textNormal }}
|
|
865
876
|
style={{ borderRadius: 7.6, borderWidth: 1, shadowOpacity: 0 }}
|
|
866
877
|
onClick={() => navigation?.canGoBack() && navigation.goBack()}
|
|
867
878
|
/>
|
|
@@ -21,7 +21,7 @@ export const AppleLogin = (props: any) => {
|
|
|
21
21
|
const [{ configs }] = useConfig();
|
|
22
22
|
const [credentialStateForUser, updateCredentialStateForUser] = useState<any>(-1);
|
|
23
23
|
|
|
24
|
-
let user
|
|
24
|
+
let user: any = null
|
|
25
25
|
|
|
26
26
|
const buttonText = auth
|
|
27
27
|
? t('CONTINUE_WITH_APPLE', 'Logout with Apple')
|
|
@@ -53,7 +53,7 @@ export const AppleLogin = (props: any) => {
|
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
const fetchAndUpdateCredentialState = async (updateCredentialStateForUser
|
|
56
|
+
const fetchAndUpdateCredentialState = async (updateCredentialStateForUser: any) => {
|
|
57
57
|
if (user === null) {
|
|
58
58
|
updateCredentialStateForUser('N/A');
|
|
59
59
|
} else {
|
|
@@ -66,7 +66,7 @@ export const AppleLogin = (props: any) => {
|
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
const onIOSButtonPress = async (updateCredentialStateForUser
|
|
69
|
+
const onIOSButtonPress = async (updateCredentialStateForUser: any) => {
|
|
70
70
|
try {
|
|
71
71
|
const appleAuthRequestResponse = await appleAuth.performRequest({
|
|
72
72
|
requestedOperation: appleAuth.Operation.LOGIN,
|
|
@@ -79,7 +79,7 @@ export const AppleLogin = (props: any) => {
|
|
|
79
79
|
identityToken,
|
|
80
80
|
authorizationCode
|
|
81
81
|
} = appleAuthRequestResponse;
|
|
82
|
-
|
|
82
|
+
|
|
83
83
|
user = newUser;
|
|
84
84
|
|
|
85
85
|
fetchAndUpdateCredentialState(updateCredentialStateForUser).catch(error =>
|
|
@@ -452,7 +452,7 @@ export const BusinessBasicInformation = (
|
|
|
452
452
|
</BusinessInfoItem>
|
|
453
453
|
</View>
|
|
454
454
|
<WrapReviews>
|
|
455
|
-
{!isBusinessInfoShow && (
|
|
455
|
+
{!isBusinessInfoShow && !loading && (
|
|
456
456
|
<>
|
|
457
457
|
{isPreOrder && (!business?.professionals || business?.professionals?.length === 0) && (
|
|
458
458
|
<>
|
|
@@ -40,6 +40,8 @@ function BusinessControllerPropsAreEqual(prevProps: any, nextProps: any) {
|
|
|
40
40
|
prevProps.isBusinessOpen === nextProps.isBusinessOpen
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
const deliveryTypes = [1, 7]
|
|
44
|
+
|
|
43
45
|
export const BusinessControllerUI = React.memo((props: BusinessControllerParams) => {
|
|
44
46
|
const {
|
|
45
47
|
business,
|
|
@@ -321,14 +323,14 @@ export const BusinessControllerUI = React.memo((props: BusinessControllerParams)
|
|
|
321
323
|
</View>
|
|
322
324
|
) : (
|
|
323
325
|
<View style={styles.bullet}>
|
|
324
|
-
{orderState?.options?.type
|
|
326
|
+
{deliveryTypes.includes(orderState?.options?.type) && !hideBusinessFee && (
|
|
325
327
|
<OText size={textSize} color={theme.colors.textSecondary}>
|
|
326
328
|
{`${t('DELIVERY_FEE', 'Delivery fee')} ${parsePrice(businessDeliveryPrice ?? business?.delivery_price) + ' \u2022 '}`}
|
|
327
329
|
</OText>
|
|
328
330
|
)}
|
|
329
331
|
{!hideBusinessTime && (
|
|
330
332
|
<OText size={textSize} color={theme.colors.textSecondary}>{`${convertHoursToMinutes(
|
|
331
|
-
orderState?.options?.type
|
|
333
|
+
deliveryTypes.includes(orderState?.options?.type)
|
|
332
334
|
? (businessDeliveryTime ?? business?.delivery_time)
|
|
333
335
|
: (businessPickupTime ?? business?.pickup_time),
|
|
334
336
|
)} \u2022 `}</OText>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useState, useRef, useEffect } from 'react';
|
|
2
|
-
import { TouchableOpacity, View } from 'react-native';
|
|
2
|
+
import { TouchableOpacity, View, Vibration } from 'react-native';
|
|
3
3
|
import { useOrder, useLanguage, useUtils, useConfig, useEvent } from 'ordering-components/native';
|
|
4
4
|
import { useTheme } from 'styled-components/native';
|
|
5
5
|
import {
|
|
@@ -49,7 +49,7 @@ export const BusinessItemAccordion = (props: any) => {
|
|
|
49
49
|
if (cartsLength === 1) {
|
|
50
50
|
changeActiveState && changeActiveState(!isClosed, cart?.uuid)
|
|
51
51
|
}
|
|
52
|
-
}, [orderState?.carts, isClosed])
|
|
52
|
+
}, [orderState?.carts?.length, isClosed])
|
|
53
53
|
|
|
54
54
|
const subtotalWithTaxes = cart?.taxes?.reduce((acc: any, item: any) => {
|
|
55
55
|
if (item?.type === 1)
|
|
@@ -58,6 +58,7 @@ export const BusinessItemAccordion = (props: any) => {
|
|
|
58
58
|
}, cart?.subtotal)
|
|
59
59
|
|
|
60
60
|
const bgStyle = (subtotalWithTaxes < cart?.minimum || !cart?.valid_address) ? theme.colors.secundary : theme.colors.primary
|
|
61
|
+
const textStyles = (subtotalWithTaxes < cart?.minimum || !cart?.valid_address) ? theme.colors.black : theme.colors.white
|
|
61
62
|
|
|
62
63
|
useEffect(() => {
|
|
63
64
|
if (isActive && !isFromUpselling) {
|
|
@@ -68,6 +69,11 @@ export const BusinessItemAccordion = (props: any) => {
|
|
|
68
69
|
}
|
|
69
70
|
}, [isActive, viewedCart])
|
|
70
71
|
|
|
72
|
+
const handleGoToStore = () => {
|
|
73
|
+
Vibration.vibrate(100)
|
|
74
|
+
props.onNavigationRedirect('Business', { store: cart?.business?.slug })
|
|
75
|
+
}
|
|
76
|
+
|
|
71
77
|
return (
|
|
72
78
|
<BIContainer isClosed={isClosed} isMultiCheckout={isMultiCheckout} checkoutVisible={!isActive && !isClosed && !!isProducts && !checkoutButtonDisabled}>
|
|
73
79
|
<BIHeader
|
|
@@ -81,7 +87,7 @@ export const BusinessItemAccordion = (props: any) => {
|
|
|
81
87
|
<View style={{ flexDirection: 'row' }}>
|
|
82
88
|
{props.onNavigationRedirect && !isClosed && !isGiftCart && (
|
|
83
89
|
<>
|
|
84
|
-
<TouchableOpacity onPress={() =>
|
|
90
|
+
<TouchableOpacity onPress={() => handleGoToStore()}>
|
|
85
91
|
<OText color={theme.colors.primary} size={12} lineHeight={18} style={{ textDecorationLine: 'underline' }}>{t('GO_TO_STORE', 'Go to store')}</OText>
|
|
86
92
|
</TouchableOpacity>
|
|
87
93
|
</>
|
|
@@ -155,7 +161,7 @@ export const BusinessItemAccordion = (props: any) => {
|
|
|
155
161
|
{cart?.valid_products && (
|
|
156
162
|
<OButton
|
|
157
163
|
onClick={handleClickCheckout}
|
|
158
|
-
textStyle={{ color:
|
|
164
|
+
textStyle={{ color: textStyles, textAlign: 'center', flex: 1 }}
|
|
159
165
|
style={{ width: 180, flexDirection: 'row', justifyContent: 'center', borderRadius: 7.6, shadowOpacity: 0 }}
|
|
160
166
|
text={t('CHECKOUT', 'Checkout')}
|
|
161
167
|
bgColor={bgStyle}
|