ordering-ui-react-native 0.22.43 → 0.22.44-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 +6 -8
- 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/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 +14 -5
- package/themes/business/src/components/MapView/index.tsx +42 -22
- package/themes/business/src/components/NewOrderNotification/index.tsx +38 -19
- package/themes/business/src/components/OrderDetails/Business.tsx +34 -16
- 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 +6 -4
- package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
- package/themes/business/src/components/OrdersOption/index.tsx +332 -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 +29 -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/components/shared/OTextarea.tsx +8 -9
- 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 +25 -17
- package/themes/original/src/components/AddressList/index.tsx +8 -7
- 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/BusinessItemAccordion/index.tsx +14 -6
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +103 -92
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +8 -6
- package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
- package/themes/original/src/components/BusinessPreorder/index.tsx +46 -28
- 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 +49 -15
- package/themes/original/src/components/CartContent/index.tsx +2 -4
- package/themes/original/src/components/Checkout/index.tsx +127 -79
- package/themes/original/src/components/CitiesControl/index.tsx +0 -3
- package/themes/original/src/components/CouponControl/index.tsx +1 -3
- package/themes/original/src/components/DriverTips/index.tsx +1 -3
- package/themes/original/src/components/Favorite/index.tsx +1 -5
- package/themes/original/src/components/FavoriteList/index.tsx +0 -1
- package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -7
- package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +15 -17
- package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +3 -7
- package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +24 -32
- package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +7 -9
- package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +11 -12
- package/themes/original/src/components/GoogleMap/index.tsx +39 -18
- package/themes/original/src/components/Help/index.tsx +2 -0
- package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
- package/themes/original/src/components/Home/index.tsx +35 -19
- package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
- package/themes/original/src/components/LoginForm/index.tsx +13 -10
- package/themes/original/src/components/MessageListing/index.tsx +2 -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 +80 -52
- package/themes/original/src/components/MomentSelector/index.tsx +5 -2
- package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -4
- package/themes/original/src/components/MultiCheckout/index.tsx +55 -27
- package/themes/original/src/components/MultiOrdersDetails/index.tsx +1 -0
- package/themes/original/src/components/MyOrders/index.tsx +2 -2
- package/themes/original/src/components/NavBar/index.tsx +7 -4
- package/themes/original/src/components/NetworkError/index.tsx +0 -5
- package/themes/original/src/components/NotFoundSource/index.tsx +0 -3
- package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
- package/themes/original/src/components/OrderDetails/OrderHistory.tsx +16 -11
- package/themes/original/src/components/OrderDetails/index.tsx +44 -21
- 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 +7 -6
- package/themes/original/src/components/OrdersOption/index.tsx +3 -6
- package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
- package/themes/original/src/components/PaymentOptions/index.tsx +462 -461
- package/themes/original/src/components/PhoneInputNumber/index.tsx +92 -7
- package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
- package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
- package/themes/original/src/components/ProductForm/ActionButton.tsx +7 -12
- package/themes/original/src/components/ProductForm/index.tsx +107 -102
- package/themes/original/src/components/ProductItemAccordion/index.tsx +30 -38
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
- package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
- package/themes/original/src/components/Promotions/index.tsx +2 -2
- package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
- package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
- package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
- package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
- package/themes/original/src/components/ServiceForm/index.tsx +52 -54
- package/themes/original/src/components/Sessions/index.tsx +3 -3
- package/themes/original/src/components/SignupForm/index.tsx +44 -32
- package/themes/original/src/components/SingleOrderCard/index.tsx +6 -4
- package/themes/original/src/components/SingleProductCard/index.tsx +5 -5
- package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
- package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
- package/themes/original/src/components/StripeCardsList/index.tsx +16 -3
- package/themes/original/src/components/StripeElementsForm/index.tsx +8 -4
- package/themes/original/src/components/StripeElementsForm/naked.tsx +1 -1
- package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
- package/themes/original/src/components/TaxInformation/index.tsx +3 -2
- package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +8 -5
- package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
- package/themes/original/src/components/UserDetails/index.tsx +17 -16
- package/themes/original/src/components/UserFormDetails/index.tsx +115 -75
- 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/Wallets/index.tsx +6 -3
- package/themes/original/src/components/WebsocketStatus/index.tsx +1 -4
- package/themes/original/src/components/shared/OAlert.tsx +2 -1
- package/themes/original/src/components/shared/OButton.tsx +5 -4
- 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
|
|
@@ -66,7 +66,9 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
66
66
|
isFromProductsList,
|
|
67
67
|
hasAddressDefault,
|
|
68
68
|
afterSignup,
|
|
69
|
-
businessSlug
|
|
69
|
+
businessSlug,
|
|
70
|
+
isFromCheckout,
|
|
71
|
+
onNavigationRedirect
|
|
70
72
|
} = props;
|
|
71
73
|
|
|
72
74
|
const theme = useTheme();
|
|
@@ -132,6 +134,7 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
132
134
|
const [configState] = useConfig();
|
|
133
135
|
const [orderState] = useOrder();
|
|
134
136
|
const { handleSubmit, errors, control, setValue } = useForm();
|
|
137
|
+
const [autoCompleteAddress, setAutoCompleteAddress] = useState(false)
|
|
135
138
|
|
|
136
139
|
const [toggleMap, setToggleMap] = useState(false);
|
|
137
140
|
const [alertState, setAlertState] = useState<{
|
|
@@ -172,6 +175,8 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
172
175
|
const isHideMap = theme?.address?.components?.map?.hidden
|
|
173
176
|
const isHideIcons = theme?.address?.components?.icons?.hidden
|
|
174
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)
|
|
175
180
|
const goToBack = () => navigation?.canGoBack() && navigation.goBack();
|
|
176
181
|
|
|
177
182
|
const getAddressFormatted = (address: any) => {
|
|
@@ -351,9 +356,6 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
351
356
|
map_data: { library: 'google', place_id: data.place_id },
|
|
352
357
|
zip_code: data?.zip_code || null,
|
|
353
358
|
};
|
|
354
|
-
if (googleInput?.current) {
|
|
355
|
-
googleInput?.current?.setAddressText(addressSelected.address);
|
|
356
|
-
}
|
|
357
359
|
updateChanges(addressSelected);
|
|
358
360
|
};
|
|
359
361
|
|
|
@@ -383,9 +385,11 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
383
385
|
auth &&
|
|
384
386
|
!afterSignup
|
|
385
387
|
) {
|
|
386
|
-
|
|
387
|
-
? navigation.
|
|
388
|
-
:
|
|
388
|
+
isFromCheckout
|
|
389
|
+
? navigation.goBack()
|
|
390
|
+
: !isFromProductsList
|
|
391
|
+
? navigation.navigate('BottomTab')
|
|
392
|
+
: navigation.navigate('Business');
|
|
389
393
|
}
|
|
390
394
|
}, [orderState?.options?.address]);
|
|
391
395
|
|
|
@@ -524,6 +528,12 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
524
528
|
setIsSignUpEffect(true);
|
|
525
529
|
}, [orderState.loading]);
|
|
526
530
|
|
|
531
|
+
useEffect(() => {
|
|
532
|
+
if (isAllowUnaddressOrderType) {
|
|
533
|
+
onNavigationRedirect && onNavigationRedirect(!!businessSlug ? 'Business' : 'BusinessList')
|
|
534
|
+
}
|
|
535
|
+
}, [isAllowUnaddressOrderType])
|
|
536
|
+
|
|
527
537
|
return (
|
|
528
538
|
<ScrollView
|
|
529
539
|
keyboardShouldPersistTaps='always'
|
|
@@ -569,6 +579,7 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
569
579
|
placeholder={t('ADD_ADDRESS', 'Add a address')}
|
|
570
580
|
onPress={(data, details: any) => {
|
|
571
581
|
handleChangeAddress(data, details);
|
|
582
|
+
setAutoCompleteAddress(true);
|
|
572
583
|
}}
|
|
573
584
|
query={{
|
|
574
585
|
key: googleMapsApiKey,
|
|
@@ -583,6 +594,7 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
583
594
|
target: { name: 'address', value: text },
|
|
584
595
|
});
|
|
585
596
|
setValue('address', text);
|
|
597
|
+
setAutoCompleteAddress(true)
|
|
586
598
|
}
|
|
587
599
|
setIsFirstTime(false);
|
|
588
600
|
setAddressEditing(text.length == 0);
|
|
@@ -670,13 +682,15 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
670
682
|
setSaveLocation={setSaveMapLocation}
|
|
671
683
|
handleToggleMap={handleToggleMap}
|
|
672
684
|
isIntGeoCoder
|
|
685
|
+
setAutoCompleteAddress={setAutoCompleteAddress}
|
|
686
|
+
autoCompleteAddress={autoCompleteAddress}
|
|
673
687
|
/>
|
|
674
688
|
</GoogleMapContainer>
|
|
675
689
|
</View>
|
|
676
690
|
)}
|
|
677
691
|
|
|
678
692
|
<View style={{ flexDirection: 'row', flexBasis: '50%' }}>
|
|
679
|
-
{((isRequiredField && isRequiredField('internal_number')) || showFieldWithTheme('internal_number')) && (
|
|
693
|
+
{showField?.('internal_number') && ((isRequiredField && isRequiredField('internal_number')) || showFieldWithTheme('internal_number')) && (
|
|
680
694
|
<Controller
|
|
681
695
|
control={control}
|
|
682
696
|
name="internal_number"
|
|
@@ -723,7 +737,7 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
723
737
|
/>
|
|
724
738
|
)}
|
|
725
739
|
|
|
726
|
-
{((isRequiredField && isRequiredField('zipcode')) || showFieldWithTheme('zipcode')) && (
|
|
740
|
+
{showField?.('zipcode') && ((isRequiredField && isRequiredField('zipcode')) || showFieldWithTheme('zipcode')) && (
|
|
727
741
|
<Controller
|
|
728
742
|
control={control}
|
|
729
743
|
name="zipcode"
|
|
@@ -768,7 +782,7 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
768
782
|
)}
|
|
769
783
|
</View>
|
|
770
784
|
|
|
771
|
-
{((isRequiredField && isRequiredField('address_notes')) || showFieldWithTheme('address_notes')) && (
|
|
785
|
+
{showField?.('address_notes') && ((isRequiredField && isRequiredField('address_notes')) || showFieldWithTheme('address_notes')) && (
|
|
772
786
|
<Controller
|
|
773
787
|
control={control}
|
|
774
788
|
name="address_notes"
|
|
@@ -849,9 +863,6 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
849
863
|
: t('LOADING', 'Loading')
|
|
850
864
|
}
|
|
851
865
|
onClick={handleSubmit(onSubmit)}
|
|
852
|
-
bgColor={theme.colors.primary}
|
|
853
|
-
borderColor={theme.colors.primary}
|
|
854
|
-
textStyle={{ color: theme.colors.white }}
|
|
855
866
|
isDisabled={formState.loading}
|
|
856
867
|
style={{ borderRadius: 7.6, shadowOpacity: 0 }}
|
|
857
868
|
showNextIcon
|
|
@@ -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
|
/>
|
|
@@ -887,9 +898,6 @@ const AddressFormUI = (props: AddressFormParams) => {
|
|
|
887
898
|
)}
|
|
888
899
|
<OButton
|
|
889
900
|
text={t('SAVE', 'Save')}
|
|
890
|
-
textStyle={{ color: theme.colors.white }}
|
|
891
|
-
bgColor={theme.colors.primary}
|
|
892
|
-
borderColor={theme.colors.primary}
|
|
893
901
|
imgRightSrc={null}
|
|
894
902
|
style={{ marginHorizontal: 30, marginBottom: 10 }}
|
|
895
903
|
onClick={() => setSaveMapLocation(true)}
|
|
@@ -217,7 +217,8 @@ const AddressListUI = (props: AddressListParams) => {
|
|
|
217
217
|
onSaveAddress: handleSaveAddress,
|
|
218
218
|
isSelectedAfterAdd: true,
|
|
219
219
|
isFromProductsList: isFromProductsList,
|
|
220
|
-
hasAddressDefault: !!orderState.options?.address?.location
|
|
220
|
+
hasAddressDefault: !!orderState.options?.address?.location,
|
|
221
|
+
isFromCheckout: route?.params?.isFromCheckout
|
|
221
222
|
}
|
|
222
223
|
) : onNavigationRedirect(
|
|
223
224
|
'AddressFormInitial',
|
|
@@ -228,7 +229,8 @@ const AddressListUI = (props: AddressListParams) => {
|
|
|
228
229
|
onSaveAddress: handleSaveAddress,
|
|
229
230
|
isSelectedAfterAdd: true,
|
|
230
231
|
isFromProductsList: isFromProductsList,
|
|
231
|
-
hasAddressDefault: !!orderState.options?.address?.location
|
|
232
|
+
hasAddressDefault: !!orderState.options?.address?.location,
|
|
233
|
+
isFromCheckout: route?.params?.isFromCheckout
|
|
232
234
|
})}
|
|
233
235
|
>
|
|
234
236
|
<OIcon src={theme.images.general.pencil} width={16} style={{ marginHorizontal: 4 }} />
|
|
@@ -293,10 +295,7 @@ const AddressListUI = (props: AddressListParams) => {
|
|
|
293
295
|
<OButton
|
|
294
296
|
text={t('ADD_NEW_ADDRESS', 'Add new Address')}
|
|
295
297
|
imgRightSrc=''
|
|
296
|
-
bgColor={theme.colors.primary}
|
|
297
|
-
textStyle={{ color: theme.colors.white }}
|
|
298
298
|
style={styles.button}
|
|
299
|
-
borderColor={theme.colors.primary}
|
|
300
299
|
onClick={() => !afterSignup ? onNavigationRedirect(
|
|
301
300
|
'AddressForm',
|
|
302
301
|
{
|
|
@@ -305,7 +304,8 @@ const AddressListUI = (props: AddressListParams) => {
|
|
|
305
304
|
addressesList: addressList?.addresses,
|
|
306
305
|
nopadding: true,
|
|
307
306
|
isSelectedAfterAdd: true,
|
|
308
|
-
hasAddressDefault: !!orderState.options?.address?.location
|
|
307
|
+
hasAddressDefault: !!orderState.options?.address?.location,
|
|
308
|
+
isFromCheckout: route?.params?.isFromCheckout
|
|
309
309
|
}) : onNavigationRedirect(
|
|
310
310
|
'AddressFormInitial',
|
|
311
311
|
{
|
|
@@ -314,7 +314,8 @@ const AddressListUI = (props: AddressListParams) => {
|
|
|
314
314
|
addressesList: addressList?.addresses,
|
|
315
315
|
nopadding: true,
|
|
316
316
|
isSelectedAfterAdd: true,
|
|
317
|
-
hasAddressDefault: !!orderState.options?.address?.location
|
|
317
|
+
hasAddressDefault: !!orderState.options?.address?.location,
|
|
318
|
+
isFormCheckout: route?.params?.isFromCheckout
|
|
318
319
|
})}
|
|
319
320
|
/>
|
|
320
321
|
</>
|
|
@@ -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
|
<>
|
|
@@ -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)
|
|
@@ -57,6 +57,9 @@ export const BusinessItemAccordion = (props: any) => {
|
|
|
57
57
|
return acc = acc
|
|
58
58
|
}, cart?.subtotal)
|
|
59
59
|
|
|
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
|
|
62
|
+
|
|
60
63
|
useEffect(() => {
|
|
61
64
|
if (isActive && !isFromUpselling) {
|
|
62
65
|
if (cart?.uuid !== viewedCart?.uuid) {
|
|
@@ -66,6 +69,11 @@ export const BusinessItemAccordion = (props: any) => {
|
|
|
66
69
|
}
|
|
67
70
|
}, [isActive, viewedCart])
|
|
68
71
|
|
|
72
|
+
const handleGoToStore = () => {
|
|
73
|
+
Vibration.vibrate(100)
|
|
74
|
+
props.onNavigationRedirect('Business', { store: cart?.business?.slug })
|
|
75
|
+
}
|
|
76
|
+
|
|
69
77
|
return (
|
|
70
78
|
<BIContainer isClosed={isClosed} isMultiCheckout={isMultiCheckout} checkoutVisible={!isActive && !isClosed && !!isProducts && !checkoutButtonDisabled}>
|
|
71
79
|
<BIHeader
|
|
@@ -79,7 +87,7 @@ export const BusinessItemAccordion = (props: any) => {
|
|
|
79
87
|
<View style={{ flexDirection: 'row' }}>
|
|
80
88
|
{props.onNavigationRedirect && !isClosed && !isGiftCart && (
|
|
81
89
|
<>
|
|
82
|
-
<TouchableOpacity onPress={() =>
|
|
90
|
+
<TouchableOpacity onPress={() => handleGoToStore()}>
|
|
83
91
|
<OText color={theme.colors.primary} size={12} lineHeight={18} style={{ textDecorationLine: 'underline' }}>{t('GO_TO_STORE', 'Go to store')}</OText>
|
|
84
92
|
</TouchableOpacity>
|
|
85
93
|
</>
|
|
@@ -153,11 +161,11 @@ export const BusinessItemAccordion = (props: any) => {
|
|
|
153
161
|
{cart?.valid_products && (
|
|
154
162
|
<OButton
|
|
155
163
|
onClick={handleClickCheckout}
|
|
156
|
-
textStyle={{ color:
|
|
164
|
+
textStyle={{ color: textStyles, textAlign: 'center', flex: 1 }}
|
|
157
165
|
style={{ width: 180, flexDirection: 'row', justifyContent: 'center', borderRadius: 7.6, shadowOpacity: 0 }}
|
|
158
166
|
text={t('CHECKOUT', 'Checkout')}
|
|
159
|
-
bgColor={
|
|
160
|
-
borderColor={
|
|
167
|
+
bgColor={bgStyle}
|
|
168
|
+
borderColor={bgStyle}
|
|
161
169
|
isDisabled={checkoutButtonDisabled}
|
|
162
170
|
/>
|
|
163
171
|
)}
|