ordering-ui-react-native 0.21.89 → 0.21.90-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 -7
- package/src/DeliveryApp.tsx +43 -1
- package/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/StripeMethodForm/index.tsx +6 -4
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/context/OfflineActions/index.tsx +236 -0
- package/src/types/index.tsx +3 -1
- package/themes/business/index.tsx +2 -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 +2 -1
- package/themes/business/src/components/Chat/index.tsx +5 -2
- package/themes/business/src/components/DriverMap/index.tsx +49 -27
- package/themes/business/src/components/GoogleMap/index.tsx +15 -8
- package/themes/business/src/components/Home/index.tsx +5 -1
- package/themes/business/src/components/LanguageSelector/index.tsx +2 -3
- package/themes/business/src/components/LanguageSelector/lang_country.json +515 -70
- package/themes/business/src/components/LogoutButton/index.tsx +1 -1
- package/themes/business/src/components/MapView/index.tsx +36 -17
- package/themes/business/src/components/NewOrderNotification/index.tsx +69 -33
- package/themes/business/src/components/OrderDetails/Business.tsx +74 -9
- package/themes/business/src/components/OrderDetails/Delivery.tsx +131 -51
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +112 -41
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +62 -24
- package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
- package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +221 -0
- package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
- package/themes/business/src/components/OrderSummary/index.tsx +223 -73
- package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
- package/themes/business/src/components/OrdersOption/index.tsx +251 -159
- package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
- package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
- package/themes/business/src/components/PreviousOrders/OrderItem.tsx +42 -20
- package/themes/business/src/components/PreviousOrders/index.tsx +76 -66
- package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
- package/themes/business/src/components/PrinterEdition/index.tsx +431 -0
- package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
- package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
- package/themes/business/src/components/PrinterSettings/index.tsx +267 -0
- package/themes/business/src/components/PrinterSettings/styles.tsx +30 -0
- package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
- package/themes/business/src/components/Sessions/index.tsx +1 -1
- package/themes/business/src/components/StoresList/index.tsx +2 -2
- package/themes/business/src/components/UserFormDetails/index.tsx +111 -107
- package/themes/business/src/components/UserProfileForm/index.tsx +43 -25
- package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
- package/themes/business/src/components/shared/OInput.tsx +2 -0
- package/themes/business/src/components/shared/OTextarea.tsx +8 -9
- package/themes/business/src/hooks/useLocation.tsx +5 -4
- package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
- package/themes/business/src/types/index.tsx +14 -4
- package/themes/business/src/utils/index.tsx +25 -1
- 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 +6 -0
- 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/shared/OButton.tsx +5 -18
- package/themes/original/index.tsx +11 -0
- package/themes/original/src/components/AddressDetails/index.tsx +18 -8
- package/themes/original/src/components/AddressForm/index.tsx +32 -17
- package/themes/original/src/components/AddressList/index.tsx +8 -7
- package/themes/original/src/components/AnalyticsSegment/index.tsx +6 -6
- package/themes/original/src/components/AppleLogin/index.tsx +4 -4
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +5 -8
- package/themes/original/src/components/BusinessController/index.tsx +12 -7
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +13 -5
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +2 -3
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +1 -3
- package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
- package/themes/original/src/components/BusinessPreorder/index.tsx +20 -15
- package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +5 -5
- package/themes/original/src/components/BusinessProductsList/index.tsx +2 -2
- package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
- package/themes/original/src/components/BusinessProductsListing/index.tsx +18 -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/index.tsx +1 -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 +43 -15
- package/themes/original/src/components/CartContent/index.tsx +2 -4
- package/themes/original/src/components/Checkout/index.tsx +104 -58
- 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 +2 -10
- package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
- package/themes/original/src/components/LoginForm/index.tsx +4 -7
- package/themes/original/src/components/MessageListing/index.tsx +2 -1
- package/themes/original/src/components/Messages/index.tsx +13 -9
- package/themes/original/src/components/MomentOption/index.tsx +13 -2
- package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -3
- package/themes/original/src/components/MultiCheckout/index.tsx +130 -86
- package/themes/original/src/components/MultiOrdersDetails/index.tsx +2 -1
- package/themes/original/src/components/MyOrders/index.tsx +10 -23
- 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 +13 -10
- package/themes/original/src/components/OrderDetails/index.tsx +42 -19
- package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
- package/themes/original/src/components/OrderProgress/index.tsx +16 -6
- package/themes/original/src/components/OrderSummary/index.tsx +28 -9
- 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 +17 -9
- 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 +17 -20
- package/themes/original/src/components/ProductForm/index.tsx +107 -102
- package/themes/original/src/components/ProductItemAccordion/index.tsx +55 -49
- package/themes/original/src/components/ProductItemAccordion/styles.tsx +3 -4
- 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 +6 -9
- 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 +86 -78
- package/themes/original/src/components/SingleOrderCard/index.tsx +6 -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/StripeCardForm/index.tsx +0 -3
- package/themes/original/src/components/StripeCardsList/index.tsx +10 -3
- package/themes/original/src/components/StripeElementsForm/index.tsx +77 -60
- package/themes/original/src/components/StripeElementsForm/naked.tsx +48 -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 +10 -7
- package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
- package/themes/original/src/components/UserDetails/index.tsx +3 -2
- package/themes/original/src/components/UserFormDetails/index.tsx +154 -130
- package/themes/original/src/components/UserProfile/index.tsx +9 -1
- 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 +5 -1
- package/themes/original/src/utils/index.tsx +30 -1
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
|
@@ -51,7 +51,7 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
|
|
|
51
51
|
const { confirmApplePayPayment } = useApplePay()
|
|
52
52
|
|
|
53
53
|
const [addCardOpen, setAddCardOpen] = useState({ stripe: false, stripeConnect: false });
|
|
54
|
-
|
|
54
|
+
const [newCardAdded, setNewCardAdded] = useState(null)
|
|
55
55
|
const isWalletCashEnabled = configs?.wallet_cash_enabled?.value === '1'
|
|
56
56
|
const isWalletPointsEnabled = configs?.wallet_credit_point_enabled?.value === '1'
|
|
57
57
|
|
|
@@ -223,6 +223,8 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
|
|
|
223
223
|
handlePaymethodDataChange={handlePaymethodDataChange}
|
|
224
224
|
clientSecret={props.clientSecret}
|
|
225
225
|
onPaymentChange={handlePaymethodDataChange}
|
|
226
|
+
newCardAdded={newCardAdded}
|
|
227
|
+
addNewCardAsDefault
|
|
226
228
|
/>
|
|
227
229
|
</View>
|
|
228
230
|
)}
|
|
@@ -233,6 +235,7 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
|
|
|
233
235
|
toSave
|
|
234
236
|
businessId={businessIds[0]}
|
|
235
237
|
businessIds={businessIds}
|
|
238
|
+
businessNames={openCarts?.map?.((cart: any) => cart?.business?.name)}
|
|
236
239
|
publicKey={paymethodSelected?.data?.publishable}
|
|
237
240
|
requirements={props.clientSecret}
|
|
238
241
|
handleSource={handlePaymethodDataChange}
|
|
@@ -306,7 +309,7 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
|
|
|
306
309
|
</>
|
|
307
310
|
)}
|
|
308
311
|
|
|
309
|
-
|
|
312
|
+
<OModal
|
|
310
313
|
entireModal
|
|
311
314
|
title={t('ADD_CREDIT_OR_DEBIT_CARD', 'Add credit or debit card')}
|
|
312
315
|
open={addCardOpen.stripe}
|
|
@@ -326,10 +329,11 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
|
|
|
326
329
|
publicKey={paymethodSelected?.data?.publishable}
|
|
327
330
|
requirements={props.clientSecret}
|
|
328
331
|
onSelectCard={handlePaymethodDataChange}
|
|
332
|
+
setNewCardAdded={setNewCardAdded}
|
|
329
333
|
onCancel={() => setAddCardOpen({ ...addCardOpen, stripe: false })}
|
|
330
334
|
/>
|
|
331
335
|
</KeyboardAvoidingView>
|
|
332
|
-
</OModal>
|
|
336
|
+
</OModal>
|
|
333
337
|
</PMContainer>
|
|
334
338
|
)
|
|
335
339
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useState, useEffect } from 'react'
|
|
1
|
+
import React, { useState, useEffect, useCallback, useMemo } from 'react'
|
|
2
2
|
import {
|
|
3
3
|
useLanguage,
|
|
4
4
|
useConfig,
|
|
@@ -70,7 +70,8 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
70
70
|
walletState,
|
|
71
71
|
onNavigationRedirectReplace,
|
|
72
72
|
merchantId,
|
|
73
|
-
cartsInvalid
|
|
73
|
+
cartsInvalid,
|
|
74
|
+
checkoutFieldsState
|
|
74
75
|
} = props
|
|
75
76
|
|
|
76
77
|
const theme = useTheme();
|
|
@@ -82,12 +83,12 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
82
83
|
wrapperNavbar: {
|
|
83
84
|
paddingHorizontal: 20,
|
|
84
85
|
backgroundColor: theme?.colors?.white,
|
|
85
|
-
|
|
86
|
+
borderWidth: 0
|
|
86
87
|
},
|
|
87
88
|
detailWrapper: {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
paddingHorizontal: 20,
|
|
90
|
+
width: '100%'
|
|
91
|
+
},
|
|
91
92
|
})
|
|
92
93
|
|
|
93
94
|
const [, { showToast }] = useToast();
|
|
@@ -96,8 +97,9 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
96
97
|
const [{ parsePrice, parseDate }] = useUtils();
|
|
97
98
|
const [{ options, carts, loading }, { confirmCart }] = useOrder();
|
|
98
99
|
const [validationFields] = useValidationFields();
|
|
99
|
-
const [{ user }, { login }] = useSession()
|
|
100
|
+
const [{ user, loading: userLoading }, { login }] = useSession()
|
|
100
101
|
|
|
102
|
+
const notFields = ['coupon', 'driver_tip', 'mobile_phone', 'address', 'zipcode', 'address_notes', 'comments']
|
|
101
103
|
const configTypes = configs?.order_types_allowed?.value.split('|').map((value: any) => Number(value)) || []
|
|
102
104
|
const isPreOrder = configs?.preorder_status_enabled?.value === '1'
|
|
103
105
|
const isMultiDriverTips = configs?.checkout_multi_business_enabled?.value === '1'
|
|
@@ -121,6 +123,7 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
121
123
|
|
|
122
124
|
const creditPointGeneralPlan = loyaltyPlansState?.result?.find((loyal: any) => loyal.type === 'credit_point')
|
|
123
125
|
const loyalBusinessAvailable = creditPointGeneralPlan?.businesses?.filter((b: any) => b.accumulates) ?? []
|
|
126
|
+
const checkoutFields = useMemo(() => checkoutFieldsState?.fields?.filter((field : any) => field.order_type_id === options?.type), [checkoutFieldsState, options])
|
|
124
127
|
|
|
125
128
|
const accumulationRateBusiness = (businessId: number) => {
|
|
126
129
|
const value = loyalBusinessAvailable?.find((loyal: any) => loyal.business_id === businessId)?.accumulation_rate ?? 0
|
|
@@ -143,16 +146,17 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
143
146
|
?.reduce((sum: any, cart: any) => sum + clearAmount((cart?.subtotal + getIncludedTaxes(cart)) * accumulationRateBusiness(cart?.business_id)), 0)
|
|
144
147
|
?.toFixed(configs.format_number_decimal_length?.value ?? 2)
|
|
145
148
|
|
|
146
|
-
|
|
149
|
+
const [showTitle, setShowTitle] = useState(false)
|
|
147
150
|
const [isUserDetailsEdit, setIsUserDetailsEdit] = useState(false);
|
|
148
151
|
const [phoneUpdate, setPhoneUpdate] = useState(false);
|
|
149
152
|
const [userErrors, setUserErrors] = useState<any>([]);
|
|
153
|
+
const [cartsOpened, setCartsOpened] = useState([])
|
|
150
154
|
const [placeByMethodPay, setPlaceByMethodPay] = useState(false)
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
155
|
+
const [allowedGuest, setAllowedGuest] = useState(false)
|
|
156
|
+
const [isOpen, setIsOpen] = useState(false)
|
|
157
|
+
const [requiredFields, setRequiredFields] = useState<any>([])
|
|
158
|
+
const stripePaymethods: any = ['stripe', 'stripe_direct', 'stripe_connect', 'stripe_redirect']
|
|
159
|
+
const [openModal, setOpenModal] = useState({ login: false, signup: false, isGuest: false })
|
|
156
160
|
const [methodPaySupported, setMethodPaySupported] = useState({ enabled: false, message: null, loading: true })
|
|
157
161
|
const methodsPay = ['global_google_pay', 'global_apple_pay']
|
|
158
162
|
const isDisablePlaceOrderButton = cartGroup?.loading || placing || (!(paymethodSelected?.paymethod_id || paymethodSelected?.wallet_id) && cartGroup?.result?.balance > 0) ||
|
|
@@ -168,53 +172,73 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
168
172
|
|
|
169
173
|
const checkValidationFields = () => {
|
|
170
174
|
setUserErrors([])
|
|
171
|
-
const errors = []
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
175
|
+
const errors: Array<string> = []
|
|
176
|
+
const userSelected = user
|
|
177
|
+
const _requiredFields: Array<string> = []
|
|
178
|
+
Object.values(checkoutFieldsState?.fields).map((field: any) => {
|
|
179
|
+
if (options?.type === field?.order_type_id &&
|
|
180
|
+
field?.enabled &&
|
|
181
|
+
field?.required &&
|
|
182
|
+
!notFields.includes(field?.validation_field?.code)
|
|
183
|
+
) {
|
|
184
|
+
if (userSelected && !userSelected[field?.validation_field?.code]) {
|
|
185
|
+
_requiredFields.push(field?.validation_field?.code)
|
|
179
186
|
}
|
|
180
187
|
}
|
|
181
188
|
})
|
|
182
|
-
|
|
189
|
+
const mobilePhoneField: any = Object.values(checkoutFieldsState?.fields)?.find((field: any) => field?.order_type_id === options?.type && field?.validation_field?.code === 'mobile_phone')
|
|
183
190
|
if (
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
191
|
+
userSelected &&
|
|
192
|
+
!userSelected?.cellphone &&
|
|
193
|
+
((mobilePhoneField?.enabled &&
|
|
194
|
+
mobilePhoneField?.required) ||
|
|
187
195
|
configs?.verification_phone_required?.value === '1')
|
|
188
196
|
) {
|
|
189
197
|
_requiredFields.push('cellphone')
|
|
190
198
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
if (phoneUpdate) {
|
|
194
|
-
errors.push(t('NECESSARY_UPDATE_COUNTRY_PHONE_CODE', 'It is necessary to update your phone number'))
|
|
195
|
-
}
|
|
199
|
+
setRequiredFields(_requiredFields)
|
|
196
200
|
|
|
197
201
|
setUserErrors(errors)
|
|
198
202
|
}
|
|
199
203
|
|
|
204
|
+
const checkGuestValidationFields = () => {
|
|
205
|
+
const userSelected = user
|
|
206
|
+
const _requiredFields = checkoutFieldsState?.fields
|
|
207
|
+
.filter((field) => (field?.order_type_id === options?.type) && field?.enabled && field?.required_with_guest &&
|
|
208
|
+
!notFields.includes(field?.validation_field?.code) &&
|
|
209
|
+
userSelected && !userSelected[field?.validation_field?.code])
|
|
210
|
+
const requiredFieldsCode = _requiredFields.map((item) => item?.validation_field?.code)
|
|
211
|
+
const guestCheckoutCellPhone = checkoutFieldsState?.fields?.find((field) => field.order_type_id === options?.type && field?.validation_field?.code === 'mobile_phone')
|
|
212
|
+
if (
|
|
213
|
+
userSelected &&
|
|
214
|
+
!userSelected?.cellphone &&
|
|
215
|
+
((guestCheckoutCellPhone?.enabled &&
|
|
216
|
+
guestCheckoutCellPhone?.required_with_guest) ||
|
|
217
|
+
configs?.verification_phone_required?.value === '1')
|
|
218
|
+
) {
|
|
219
|
+
requiredFieldsCode.push('cellphone')
|
|
220
|
+
}
|
|
221
|
+
setRequiredFields(requiredFieldsCode)
|
|
222
|
+
}
|
|
223
|
+
|
|
200
224
|
const togglePhoneUpdate = (val: boolean) => {
|
|
201
225
|
setPhoneUpdate(val)
|
|
202
226
|
}
|
|
203
227
|
|
|
204
228
|
const handlePlaceOrder = (confirmPayment?: any) => {
|
|
205
229
|
if (stripePaymethods.includes(paymethodSelected?.gateway) && user?.guest_id) {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
230
|
+
setOpenModal({ ...openModal, signup: true, isGuest: true })
|
|
231
|
+
return
|
|
232
|
+
}
|
|
209
233
|
|
|
210
|
-
if (!userErrors.length &&
|
|
234
|
+
if (!userErrors.length && !requiredFields?.length) {
|
|
211
235
|
handleGroupPlaceOrder && handleGroupPlaceOrder(confirmPayment)
|
|
212
236
|
return
|
|
213
237
|
}
|
|
214
238
|
if (requiredFields?.length) {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
239
|
+
setIsOpen(true)
|
|
240
|
+
return
|
|
241
|
+
}
|
|
218
242
|
let stringError = ''
|
|
219
243
|
Object.values(userErrors).map((item: any, i: number) => {
|
|
220
244
|
stringError += (i + 1) === userErrors.length ? `- ${item?.message || item}` : `- ${item?.message || item}\n`
|
|
@@ -224,26 +248,26 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
224
248
|
}
|
|
225
249
|
|
|
226
250
|
const handlePlaceOrderAsGuest = () => {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
251
|
+
setIsOpen(false)
|
|
252
|
+
handleGroupPlaceOrder && handleGroupPlaceOrder()
|
|
253
|
+
}
|
|
230
254
|
|
|
231
255
|
const handleSuccessSignup = (user: any) => {
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
256
|
+
login({
|
|
257
|
+
user,
|
|
258
|
+
token: user?.session?.access_token
|
|
259
|
+
})
|
|
260
|
+
openModal?.isGuest && handlePlaceOrderAsGuest()
|
|
261
|
+
setOpenModal({ ...openModal, signup: false, isGuest: false })
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
const handleSuccessLogin = (user: any) => {
|
|
265
|
+
if (user) setOpenModal({ ...openModal, login: false })
|
|
266
|
+
}
|
|
243
267
|
|
|
244
268
|
const handleScroll = ({ nativeEvent: { contentOffset } }: any) => {
|
|
245
|
-
|
|
246
|
-
|
|
269
|
+
setShowTitle(contentOffset.y > 30)
|
|
270
|
+
}
|
|
247
271
|
|
|
248
272
|
const handleGoBack = () => {
|
|
249
273
|
if (navigation?.canGoBack()) {
|
|
@@ -254,10 +278,13 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
254
278
|
}
|
|
255
279
|
|
|
256
280
|
useEffect(() => {
|
|
257
|
-
if (
|
|
281
|
+
if (checkoutFieldsState?.loading || userLoading) return
|
|
282
|
+
if (user?.guest_id) {
|
|
283
|
+
checkGuestValidationFields()
|
|
284
|
+
} else {
|
|
258
285
|
checkValidationFields()
|
|
259
286
|
}
|
|
260
|
-
}, [
|
|
287
|
+
}, [checkoutFieldsState, user, options?.type])
|
|
261
288
|
|
|
262
289
|
useEffect(() => {
|
|
263
290
|
if (cartsToShow?.length === 1) {
|
|
@@ -291,6 +318,18 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
291
318
|
}
|
|
292
319
|
}, [paymethodSelected])
|
|
293
320
|
|
|
321
|
+
const changeActiveState = useCallback((isClosed: boolean, uuid: string) => {
|
|
322
|
+
const isActive = cartsOpened?.includes?.(uuid)
|
|
323
|
+
if (isActive || !isClosed) {
|
|
324
|
+
setCartsOpened(cartsOpened?.filter?.((_uuid) => _uuid !== uuid))
|
|
325
|
+
} else {
|
|
326
|
+
setCartsOpened([
|
|
327
|
+
...cartsOpened,
|
|
328
|
+
uuid
|
|
329
|
+
])
|
|
330
|
+
}
|
|
331
|
+
}, [cartsOpened])
|
|
332
|
+
|
|
294
333
|
return (
|
|
295
334
|
<>
|
|
296
335
|
<SafeAreaView style={{ backgroundColor: theme.colors.backgroundPage }}>
|
|
@@ -318,7 +357,7 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
318
357
|
</TopHeader>
|
|
319
358
|
</View>
|
|
320
359
|
</SafeAreaView>
|
|
321
|
-
<Container pt={0} noPadding onScroll={handleScroll}>
|
|
360
|
+
<Container pt={0} noPadding onScroll={handleScroll} showsVerticalScrollIndicator={false}>
|
|
322
361
|
<View style={styles.wrapperNavbar}>
|
|
323
362
|
<NavBar
|
|
324
363
|
hideArrowLeft
|
|
@@ -329,8 +368,8 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
329
368
|
paddingTop={Platform.OS === 'ios' ? 0 : 4}
|
|
330
369
|
btnStyle={{ paddingLeft: 0 }}
|
|
331
370
|
titleWrapStyle={{ paddingHorizontal: 0 }}
|
|
332
|
-
|
|
333
|
-
|
|
371
|
+
titleStyle={{ marginRight: 0, marginLeft: 0 }}
|
|
372
|
+
style={{ marginTop: 20 }}
|
|
334
373
|
/>
|
|
335
374
|
</View>
|
|
336
375
|
<ChContainer style={styles.pagePadding}>
|
|
@@ -381,15 +420,11 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
381
420
|
</OText>
|
|
382
421
|
<OButton
|
|
383
422
|
text={t('SIGN_UP', 'Sign up')}
|
|
384
|
-
textStyle={{ color: theme.colors.white }}
|
|
385
423
|
style={{ borderRadius: 7.6, marginTop: 20 }}
|
|
386
424
|
onClick={() => setOpenModal({ ...openModal, signup: true })}
|
|
387
425
|
/>
|
|
388
426
|
<OButton
|
|
389
427
|
text={t('LOGIN', 'Login')}
|
|
390
|
-
textStyle={{ color: theme.colors.primary }}
|
|
391
|
-
bgColor={theme.colors.white}
|
|
392
|
-
borderColor={theme.colors.primary}
|
|
393
428
|
style={{ borderRadius: 7.6, marginTop: 20 }}
|
|
394
429
|
onClick={() => setOpenModal({ ...openModal, login: true })}
|
|
395
430
|
/>
|
|
@@ -411,6 +446,9 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
411
446
|
isCheckout
|
|
412
447
|
phoneUpdate={phoneUpdate}
|
|
413
448
|
togglePhoneUpdate={togglePhoneUpdate}
|
|
449
|
+
isOrderTypeValidationField
|
|
450
|
+
requiredFields={requiredFields}
|
|
451
|
+
checkoutFields={checkoutFields}
|
|
414
452
|
/>
|
|
415
453
|
)}
|
|
416
454
|
</ChUserDetails>
|
|
@@ -522,6 +560,9 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
522
560
|
hideDriverTip={configs?.multi_business_checkout_show_combined_driver_tip?.value === '1'}
|
|
523
561
|
onNavigationRedirect={(route: string, params: any) => props.navigation.navigate(route, params)}
|
|
524
562
|
businessConfigs={cart?.business?.configs}
|
|
563
|
+
cartsOpened={cartsOpened}
|
|
564
|
+
changeActiveState={changeActiveState}
|
|
565
|
+
isActive={cartsOpened?.includes?.(cart?.uuid)}
|
|
525
566
|
/>
|
|
526
567
|
{openCarts.length > 1 && (
|
|
527
568
|
<View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginTop: 13, marginHorizontal: -40 }} />
|
|
@@ -631,30 +672,33 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
631
672
|
</ScrollView>
|
|
632
673
|
</OModal>
|
|
633
674
|
<OModal
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
675
|
+
open={isOpen}
|
|
676
|
+
onClose={() => setIsOpen(false)}
|
|
677
|
+
>
|
|
678
|
+
<View style={styles.detailWrapper}>
|
|
679
|
+
<UserDetails
|
|
680
|
+
isUserDetailsEdit
|
|
681
|
+
useValidationFields
|
|
682
|
+
useDefualtSessionManager
|
|
683
|
+
useSessionUser
|
|
684
|
+
isCheckout
|
|
685
|
+
isEdit
|
|
686
|
+
phoneUpdate={phoneUpdate}
|
|
687
|
+
togglePhoneUpdate={togglePhoneUpdate}
|
|
688
|
+
hideUpdateButton
|
|
689
|
+
handlePlaceOrderAsGuest={handlePlaceOrderAsGuest}
|
|
690
|
+
isCheckoutPlace
|
|
691
|
+
isOrderTypeValidationField
|
|
692
|
+
requiredFields={requiredFields}
|
|
693
|
+
checkoutFields={checkoutFields}
|
|
694
|
+
onClose={() => {
|
|
695
|
+
setIsOpen(false)
|
|
696
|
+
handlePlaceOrder()
|
|
697
|
+
}}
|
|
698
|
+
setIsOpen={setIsOpen}
|
|
699
|
+
/>
|
|
700
|
+
</View>
|
|
701
|
+
</OModal>
|
|
658
702
|
</Container>
|
|
659
703
|
|
|
660
704
|
<FloatingButton
|
|
@@ -72,7 +72,7 @@ export const MultiOrdersDetailsUI = (props: any) => {
|
|
|
72
72
|
navigation?.canGoBack() && navigation.goBack();
|
|
73
73
|
return;
|
|
74
74
|
}
|
|
75
|
-
navigation.navigate('
|
|
75
|
+
navigation.navigate('BottomTab');
|
|
76
76
|
return true
|
|
77
77
|
}
|
|
78
78
|
|
|
@@ -101,6 +101,7 @@ export const MultiOrdersDetailsUI = (props: any) => {
|
|
|
101
101
|
style={styles.btnBackArrow}
|
|
102
102
|
onClick={() => handleArrowBack()}
|
|
103
103
|
icon={AntDesignIcon}
|
|
104
|
+
useArrow
|
|
104
105
|
iconProps={{
|
|
105
106
|
name: 'arrowleft',
|
|
106
107
|
size: 26
|
|
@@ -9,6 +9,7 @@ import { ScrollView } from 'react-native-gesture-handler';
|
|
|
9
9
|
import { Tab } from './styles'
|
|
10
10
|
import { useTheme } from 'styled-components/native';
|
|
11
11
|
import { Container } from '../../layouts/Container';
|
|
12
|
+
import NavBar from '../NavBar'
|
|
12
13
|
|
|
13
14
|
export const MyOrders = (props: any) => {
|
|
14
15
|
const {
|
|
@@ -93,29 +94,15 @@ export const MyOrders = (props: any) => {
|
|
|
93
94
|
...props.titleStyle
|
|
94
95
|
}}>
|
|
95
96
|
{!props.hideBackBtn && (!isChewLayout || (isChewLayout && hideOrdersTheme)) && (
|
|
96
|
-
<
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
backgroundColor: '#FFF',
|
|
104
|
-
borderColor: '#FFF',
|
|
105
|
-
shadowColor: '#FFF',
|
|
106
|
-
paddingLeft: 0,
|
|
107
|
-
paddingRight: 0,
|
|
108
|
-
marginTop: 30,
|
|
109
|
-
}}
|
|
110
|
-
onClick={goToBack}
|
|
111
|
-
icon={AntDesignIcon}
|
|
112
|
-
iconProps={{
|
|
113
|
-
name: 'arrowleft',
|
|
114
|
-
size: 26
|
|
115
|
-
}}
|
|
97
|
+
<NavBar
|
|
98
|
+
title={t('MY_ORDERS', 'My Orders')}
|
|
99
|
+
titleAlign={'center'}
|
|
100
|
+
onActionLeft={goToBack}
|
|
101
|
+
showCall={false}
|
|
102
|
+
paddingTop={30}
|
|
103
|
+
btnStyle={{ paddingLeft: 0 }}
|
|
116
104
|
/>
|
|
117
105
|
)}
|
|
118
|
-
<HeaderTitle ph={10} text={t('MY_ORDERS', 'My Orders')} />
|
|
119
106
|
</View>
|
|
120
107
|
)}
|
|
121
108
|
{!hideOrders && !isChewLayout && !showNavbar && (
|
|
@@ -125,7 +112,7 @@ export const MyOrders = (props: any) => {
|
|
|
125
112
|
<ScrollView
|
|
126
113
|
horizontal
|
|
127
114
|
style={{ ...styles.container, borderBottomWidth: 1 }}
|
|
128
|
-
contentContainerStyle={{ paddingHorizontal: !!businessesSearchList ? 0 : 20
|
|
115
|
+
contentContainerStyle={{ paddingHorizontal: !!businessesSearchList ? 0 : 20 }}
|
|
129
116
|
showsHorizontalScrollIndicator={false}
|
|
130
117
|
scrollEventThrottle={16}
|
|
131
118
|
>
|
|
@@ -149,7 +136,7 @@ export const MyOrders = (props: any) => {
|
|
|
149
136
|
)}
|
|
150
137
|
{selectedOption === 'orders' && (
|
|
151
138
|
<>
|
|
152
|
-
<View style={{ paddingHorizontal: 20
|
|
139
|
+
<View style={{ paddingHorizontal: 20 }}>
|
|
153
140
|
<OrdersOption
|
|
154
141
|
{...props}
|
|
155
142
|
preOrders
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
|
|
1
4
|
import * as React from 'react'
|
|
2
5
|
import styled, { useTheme } from 'styled-components/native'
|
|
3
6
|
import { OButton, OIcon, OText } from '../shared'
|
|
@@ -64,6 +67,7 @@ const NavBar = (props: Props) => {
|
|
|
64
67
|
<Wrapper style={{ paddingTop: props.paddingTop, ...{ flexDirection: props.isVertical ? 'column' : 'row', alignItems: props.isVertical ? 'flex-start' : 'center' }, ...props.style }}>
|
|
65
68
|
{!props.hideArrowLeft && (
|
|
66
69
|
<OButton
|
|
70
|
+
useArrow
|
|
67
71
|
iconProps={{
|
|
68
72
|
name: 'arrowleft',
|
|
69
73
|
size: 26
|
|
@@ -114,8 +118,6 @@ const NavBar = (props: Props) => {
|
|
|
114
118
|
{props.showCall
|
|
115
119
|
? (<OButton
|
|
116
120
|
isCircle={true}
|
|
117
|
-
bgColor={theme.colors.primary}
|
|
118
|
-
borderColor={theme.colors.primary}
|
|
119
121
|
imgRightSrc={null}
|
|
120
122
|
imgLeftStyle={{ tintColor: 'white', width: 30, height: 30 }}
|
|
121
123
|
imgLeftSrc={theme.images.general.support}
|
|
@@ -131,8 +133,9 @@ NavBar.defaultProps = {
|
|
|
131
133
|
textAlign: 'center'
|
|
132
134
|
};
|
|
133
135
|
|
|
134
|
-
const areEqual = (prevProps: { route?: any
|
|
135
|
-
return prevProps.route === nextProps.route
|
|
136
|
+
const areEqual = (prevProps: { route?: any, title?: string }, nextProps: { route?: any, title?: string }) => {
|
|
137
|
+
return prevProps.route === nextProps.route &&
|
|
138
|
+
JSON.stringify(prevProps.title) === JSON.stringify(nextProps.title)
|
|
136
139
|
return true
|
|
137
140
|
}
|
|
138
141
|
|
|
@@ -45,15 +45,10 @@ export const NetworkError = (props: NoNetworkParams) => {
|
|
|
45
45
|
/>
|
|
46
46
|
<OButton
|
|
47
47
|
text={t('REFRESH', 'Refresh')}
|
|
48
|
-
bgColor={theme.colors.primary}
|
|
49
|
-
borderColor={theme.colors.primary}
|
|
50
48
|
style={{
|
|
51
49
|
borderRadius: 8,
|
|
52
50
|
marginTop: 45
|
|
53
51
|
}}
|
|
54
|
-
textStyle={{
|
|
55
|
-
color: theme.colors.white
|
|
56
|
-
}}
|
|
57
52
|
onClick={() => RNRestart.Restart()}
|
|
58
53
|
/>
|
|
59
54
|
</ImageContainer>
|
|
@@ -42,11 +42,8 @@ export const NotFoundSource = (props: NotFoundSourceParams) => {
|
|
|
42
42
|
<View style={{ marginTop: 10, width: '100%' }}>
|
|
43
43
|
<OButton
|
|
44
44
|
style={{ width: '100%', height: 50, ...btnStyle }}
|
|
45
|
-
bgColor={theme.colors.primary}
|
|
46
|
-
borderColor={theme.colors.primary}
|
|
47
45
|
onClick={() => onClickButton()}
|
|
48
46
|
text={btnTitle}
|
|
49
|
-
textStyle={{ color: theme.colors.white }}
|
|
50
47
|
/>
|
|
51
48
|
</View>
|
|
52
49
|
)}
|
|
@@ -10,13 +10,14 @@ export const OrderEta = (props: any) => {
|
|
|
10
10
|
|
|
11
11
|
const [{ parseDate }] = useUtils()
|
|
12
12
|
const [estimatedDeliveryTime, setEstimatedDeliveryTime] = useState(null)
|
|
13
|
-
|
|
13
|
+
const deliveryTypes = [1, 7]
|
|
14
|
+
|
|
14
15
|
const getEstimatedDeliveryTime = () => {
|
|
15
16
|
let estimatedUtcTime = null
|
|
16
17
|
let totalEta = 0
|
|
17
18
|
if (order?.delivered_in) totalEta += order?.delivered_in
|
|
18
19
|
if (order?.prepared_in) totalEta += order?.prepared_in
|
|
19
|
-
if (order?.delivery_type
|
|
20
|
+
if (deliveryTypes?.includes?.(order?.delivery_type) && order?.eta_drive_time) {
|
|
20
21
|
totalEta += order?.eta_drive_time
|
|
21
22
|
}
|
|
22
23
|
|
|
@@ -57,7 +58,7 @@ export const OrderEta = (props: any) => {
|
|
|
57
58
|
}
|
|
58
59
|
estimatedUtcTime = moment.utc(_delivery).add(totalEta, 'minutes')
|
|
59
60
|
const _estimatedTime = outputFormat ? moment(estimatedUtcTime).local().format(outputFormat) : parseDate(estimatedUtcTime, { utc: false })
|
|
60
|
-
setEstimatedDeliveryTime(_estimatedTime)
|
|
61
|
+
setEstimatedDeliveryTime(order?.status === 13 ? parseDate(_delivery, { utc: !!order?.delivery_datetime_utc, outputFormat: outputFormat }) : _estimatedTime)
|
|
61
62
|
}
|
|
62
63
|
|
|
63
64
|
useEffect(() => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import { useTheme } from 'styled-components/native'
|
|
3
3
|
import { ScrollView, StyleSheet, View } from 'react-native'
|
|
4
|
-
import { useLanguage, useUtils } from 'ordering-components/native'
|
|
4
|
+
import { useLanguage, useUtils, useConfig } from 'ordering-components/native'
|
|
5
5
|
import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons'
|
|
6
6
|
import { OText, OButton } from '../shared'
|
|
7
7
|
import { formatSeconds } from '../../utils'
|
|
@@ -17,7 +17,9 @@ export const OrderHistory = (props: any) => {
|
|
|
17
17
|
|
|
18
18
|
const [, t] = useLanguage()
|
|
19
19
|
const [{ parseDate }] = useUtils()
|
|
20
|
+
const [{ configs }] = useConfig();
|
|
20
21
|
const theme = useTheme()
|
|
22
|
+
const changeIdToExternalId = configs?.change_order_id?.value === '1'
|
|
21
23
|
|
|
22
24
|
const styles = StyleSheet.create({
|
|
23
25
|
historyItem: {
|
|
@@ -62,7 +64,10 @@ export const OrderHistory = (props: any) => {
|
|
|
62
64
|
20: 'ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS',
|
|
63
65
|
21: 'ORDER_CUSTOMER_ARRIVED_BUSINESS',
|
|
64
66
|
22: 'ORDER_LOOKING_FOR_DRIVER',
|
|
65
|
-
23: 'ORDER_DRIVER_ON_WAY'
|
|
67
|
+
23: 'ORDER_DRIVER_ON_WAY',
|
|
68
|
+
24: 'ORDER_DRIVER_WAITING_FOR_ORDER',
|
|
69
|
+
25: 'ORDER_ACCEPTED_BY_DRIVER_COMPANY',
|
|
70
|
+
26: 'ORDER_DRIVER_ARRIVED_CUSTOMER'
|
|
66
71
|
}
|
|
67
72
|
|
|
68
73
|
const getLogisticTagStatus = (status: any) => {
|
|
@@ -90,7 +95,7 @@ export const OrderHistory = (props: any) => {
|
|
|
90
95
|
return (
|
|
91
96
|
<ScrollView contentContainerStyle={styles.container}>
|
|
92
97
|
<OText size={20} style={{ alignSelf: 'center', textAlign: 'center' }} mBottom={10}>
|
|
93
|
-
{t('DETAILS_OF_ORDER', 'Details of Order_NUMBER_').replace('_NUMBER_',
|
|
98
|
+
{t('DETAILS_OF_ORDER', 'Details of Order_NUMBER_').replace('_NUMBER_', (changeIdToExternalId && order?.external_id) || `# ${order?.id}`)}
|
|
94
99
|
</OText>
|
|
95
100
|
{!messages?.loading && order && (
|
|
96
101
|
<View style={styles.historyItem}>
|
|
@@ -145,10 +150,10 @@ export const OrderHistory = (props: any) => {
|
|
|
145
150
|
</>
|
|
146
151
|
)
|
|
147
152
|
: message.change?.attribute === 'prepared_in' ? (
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
153
|
+
<>
|
|
154
|
+
{t('TIME_ADDED_BY_BUSINESS', 'Time added by business')}{'\n'}
|
|
155
|
+
{formatSeconds(parseInt(message.change.new, 10))}
|
|
156
|
+
</>
|
|
152
157
|
) : t(ORDER_STATUS[parseInt(message.change.new, 10)])
|
|
153
158
|
}
|
|
154
159
|
</OText>
|
|
@@ -170,11 +175,9 @@ export const OrderHistory = (props: any) => {
|
|
|
170
175
|
))}
|
|
171
176
|
<OButton
|
|
172
177
|
text={enableReview ? t('REVIEW_ORDER', 'Review order') : t('CONTINUE', 'Continue')}
|
|
173
|
-
textStyle={{ fontSize: 14
|
|
178
|
+
textStyle={{ fontSize: 14 }}
|
|
174
179
|
imgRightSrc={theme.images.general.arrow_right}
|
|
175
180
|
imgRightStyle={{ tintColor: theme.colors.white, right: 5, margin: 5 }}
|
|
176
|
-
borderColor='transparent'
|
|
177
|
-
bgColor={theme.colors.primary}
|
|
178
181
|
style={{ borderRadius: 7.6, borderWidth: 1, height: 44, shadowOpacity: 0, marginBottom: 30, marginTop: 20 }}
|
|
179
182
|
onClick={() => handleReview()}
|
|
180
183
|
/>
|