ordering-ui-react-native 0.17.13 → 0.17.14-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 +43 -1
- package/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/OrderCreating/index.tsx +1 -21
- package/src/components/PaymentOptionsWebView/index.tsx +119 -120
- package/src/components/StripeMethodForm/index.tsx +108 -77
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/components/shared/OToast.tsx +4 -4
- package/src/types/index.tsx +5 -0
- package/src/utils/index.tsx +7 -1
- package/themes/business/index.tsx +2 -0
- package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +265 -240
- package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -4
- package/themes/business/src/components/BusinessController/index.tsx +0 -1
- package/themes/business/src/components/Chat/index.tsx +118 -107
- package/themes/business/src/components/DriverMap/index.tsx +17 -7
- package/themes/business/src/components/GoogleMap/index.tsx +58 -57
- package/themes/business/src/components/LoginForm/Otp/index.tsx +120 -0
- package/themes/business/src/components/LoginForm/Otp/styles.tsx +7 -0
- package/themes/business/src/components/LoginForm/index.tsx +238 -80
- package/themes/business/src/components/LoginForm/styles.tsx +10 -0
- package/themes/business/src/components/MapView/index.tsx +10 -10
- package/themes/business/src/components/NewOrderNotification/index.tsx +43 -50
- package/themes/business/src/components/OrderDetails/Delivery.tsx +4 -3
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +90 -47
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +59 -62
- package/themes/business/src/components/OrderDetailsLogistic/index.tsx +195 -0
- package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
- package/themes/business/src/components/OrderMessage/index.tsx +18 -17
- package/themes/business/src/components/OrderSummary/index.tsx +113 -121
- package/themes/business/src/components/OrdersOption/index.tsx +32 -75
- package/themes/business/src/components/PreviousOrders/OrderItem.tsx +250 -0
- package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +115 -0
- package/themes/business/src/components/PreviousOrders/index.tsx +445 -243
- package/themes/business/src/components/PreviousOrders/styles.tsx +31 -3
- package/themes/business/src/components/ProductItemAccordion/index.tsx +27 -3
- package/themes/business/src/components/ReviewCustomer/index.tsx +41 -24
- package/themes/business/src/components/StoresList/index.tsx +2 -2
- package/themes/business/src/components/shared/OLink.tsx +33 -13
- package/themes/business/src/components/shared/OModal.tsx +16 -9
- package/themes/business/src/components/shared/OText.tsx +8 -2
- package/themes/business/src/types/index.tsx +32 -2
- package/themes/business/src/utils/index.tsx +44 -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/BusinessesListing/index.tsx +2 -1
- package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
- package/themes/kiosk/src/components/LoginForm/Otp/index.tsx +92 -0
- package/themes/kiosk/src/components/LoginForm/Otp/styles.tsx +7 -0
- package/themes/kiosk/src/components/LoginForm/index.tsx +473 -151
- package/themes/kiosk/src/components/LoginForm/styles.tsx +14 -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/PhoneInputNumber/index.tsx +3 -2
- package/themes/kiosk/src/components/PhoneInputNumber/styles.tsx +1 -3
- package/themes/kiosk/src/components/ProductForm/index.tsx +1 -14
- package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
- package/themes/kiosk/src/components/shared/OModal.tsx +14 -11
- package/themes/kiosk/src/layouts/Container.tsx +7 -1
- package/themes/kiosk/src/types/index.d.ts +13 -0
- package/themes/kiosk/src/utils/index.tsx +15 -0
- package/themes/original/index.tsx +10 -2
- package/themes/original/src/components/AddressDetails/index.tsx +29 -11
- package/themes/original/src/components/AddressForm/index.tsx +41 -16
- package/themes/original/src/components/AddressList/index.tsx +26 -21
- package/themes/original/src/components/AddressList/styles.tsx +4 -2
- package/themes/original/src/components/AnalyticsSegment/index.tsx +195 -12
- package/themes/original/src/components/AppleLogin/index.tsx +4 -4
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +125 -82
- package/themes/original/src/components/BusinessBasicInformation/styles.tsx +9 -4
- package/themes/original/src/components/BusinessController/index.tsx +145 -68
- package/themes/original/src/components/BusinessController/styles.tsx +22 -9
- package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
- package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
- package/themes/original/src/components/BusinessInformation/index.tsx +10 -31
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +23 -22
- package/themes/original/src/components/BusinessListingSearch/index.tsx +350 -323
- package/themes/original/src/components/BusinessPreorder/index.tsx +97 -16
- package/themes/original/src/components/BusinessProductsList/index.tsx +20 -11
- package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
- package/themes/original/src/components/BusinessProductsListing/index.tsx +617 -492
- package/themes/original/src/components/BusinessProductsListing/styles.tsx +7 -13
- package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
- package/themes/original/src/components/BusinessTypeFilter/index.tsx +3 -3
- package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +1 -1
- package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +105 -78
- package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -9
- package/themes/original/src/components/BusinessesListing/index.tsx +5 -3
- package/themes/original/src/components/Cart/index.tsx +88 -43
- package/themes/original/src/components/CartContent/index.tsx +110 -19
- package/themes/original/src/components/CartContent/styles.tsx +15 -1
- package/themes/original/src/components/Checkout/index.tsx +323 -178
- package/themes/original/src/components/Checkout/styles.tsx +4 -2
- package/themes/original/src/components/CitiesControl/index.tsx +89 -0
- package/themes/original/src/components/CitiesControl/styles.tsx +17 -0
- package/themes/original/src/components/CouponControl/index.tsx +10 -3
- package/themes/original/src/components/DriverTips/index.tsx +52 -37
- package/themes/original/src/components/DriverTips/styles.tsx +2 -1
- package/themes/original/src/components/Favorite/index.tsx +7 -4
- package/themes/original/src/components/Favorite/styles.tsx +1 -1
- package/themes/original/src/components/FavoriteList/index.tsx +51 -80
- package/themes/original/src/components/FloatingButton/index.tsx +1 -2
- package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
- package/themes/original/src/components/GPSButton/styles.ts +3 -3
- package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +96 -0
- package/themes/original/src/components/GiftCard/GiftCardUI/styles.tsx +5 -0
- package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +100 -0
- package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +8 -0
- package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +178 -0
- package/themes/original/src/components/GiftCard/RedeemGiftCard/styles.tsx +8 -0
- package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +165 -0
- package/themes/original/src/components/GiftCard/SendGiftCard/styles.tsx +9 -0
- package/themes/original/src/components/Help/index.tsx +8 -8
- package/themes/original/src/components/HelpAccountAndPayment/index.tsx +11 -22
- package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +6 -0
- package/themes/original/src/components/HelpGuide/index.tsx +12 -16
- package/themes/original/src/components/HelpGuide/styles.tsx +6 -0
- package/themes/original/src/components/HelpOrder/index.tsx +12 -25
- package/themes/original/src/components/HelpOrder/styles.tsx +8 -1
- package/themes/original/src/components/Home/index.tsx +13 -4
- package/themes/original/src/components/LanguageSelector/index.tsx +19 -14
- package/themes/original/src/components/LastOrder/index.tsx +1 -34
- package/themes/original/src/components/LoginForm/Otp/index.tsx +89 -73
- package/themes/original/src/components/LoginForm/Otp/styles.tsx +0 -1
- package/themes/original/src/components/LoginForm/index.tsx +48 -19
- package/themes/original/src/components/LottieAnimation/index.tsx +78 -0
- package/themes/original/src/components/MessageListing/index.tsx +16 -42
- package/themes/original/src/components/Messages/index.tsx +32 -10
- package/themes/original/src/components/MomentOption/index.tsx +195 -88
- package/themes/original/src/components/MultiCart/index.tsx +50 -0
- package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +195 -116
- package/themes/original/src/components/MultiCheckout/index.tsx +262 -83
- package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +37 -224
- package/themes/original/src/components/MultiOrdersDetails/index.tsx +67 -20
- package/themes/original/src/components/MultiOrdersDetails/styles.tsx +1 -1
- package/themes/original/src/components/MyOrders/index.tsx +66 -17
- package/themes/original/src/components/NavBar/index.tsx +6 -11
- package/themes/original/src/components/Notifications/index.tsx +144 -0
- package/themes/original/src/components/Notifications/styles.tsx +20 -0
- package/themes/original/src/components/OrderDetails/OrderEta.tsx +61 -0
- package/themes/original/src/components/OrderDetails/OrderHistory.tsx +10 -3
- package/themes/original/src/components/OrderDetails/index.tsx +262 -347
- package/themes/original/src/components/OrderDetails/styles.tsx +10 -1
- package/themes/original/src/components/OrderItAgain/index.tsx +47 -43
- package/themes/original/src/components/OrderProgress/index.tsx +74 -112
- package/themes/original/src/components/OrderProgress/styles.tsx +5 -0
- package/themes/original/src/components/OrderSummary/index.tsx +67 -29
- package/themes/original/src/components/OrderTypeSelector/index.tsx +3 -2
- package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +28 -19
- package/themes/original/src/components/OrdersOption/index.tsx +99 -89
- package/themes/original/src/components/PageBanner/index.tsx +171 -0
- package/themes/original/src/components/PageBanner/styles.tsx +11 -0
- package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
- package/themes/original/src/components/PaymentOptions/index.tsx +34 -6
- package/themes/original/src/components/PhoneInputNumber/index.tsx +3 -3
- package/themes/original/src/components/PlaceSpot/index.tsx +12 -6
- package/themes/original/src/components/PreviousOrders/index.tsx +3 -2
- package/themes/original/src/components/ProductForm/index.tsx +231 -253
- package/themes/original/src/components/ProductForm/styles.tsx +4 -7
- package/themes/original/src/components/ProductItemAccordion/index.tsx +197 -138
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +18 -10
- package/themes/original/src/components/ProductOptionSubOption/styles.tsx +1 -2
- package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
- package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -50
- package/themes/original/src/components/ProfessionalProfile/index.tsx +36 -7
- package/themes/original/src/components/Promotions/index.tsx +234 -220
- package/themes/original/src/components/Promotions/styles.tsx +10 -3
- package/themes/original/src/components/ReviewDriver/index.tsx +3 -3
- package/themes/original/src/components/ReviewOrder/index.tsx +26 -9
- package/themes/original/src/components/ReviewOrder/styles.tsx +7 -0
- package/themes/original/src/components/ReviewProducts/index.tsx +7 -4
- package/themes/original/src/components/ReviewTrigger/index.tsx +27 -9
- package/themes/original/src/components/ReviewTrigger/styles.tsx +8 -1
- package/themes/original/src/components/ScheduleAccordion/index.tsx +68 -0
- package/themes/original/src/components/ScheduleAccordion/styles.tsx +14 -0
- package/themes/original/src/components/ServiceForm/index.tsx +358 -275
- package/themes/original/src/components/Sessions/index.tsx +11 -8
- package/themes/original/src/components/Sessions/styles.tsx +5 -0
- package/themes/original/src/components/SignupForm/index.tsx +82 -67
- package/themes/original/src/components/SingleOrderCard/index.tsx +148 -62
- package/themes/original/src/components/SingleOrderCard/styles.tsx +11 -9
- package/themes/original/src/components/SingleProductCard/index.tsx +99 -55
- package/themes/original/src/components/SingleProductCard/styles.tsx +27 -13
- package/themes/original/src/components/SingleProductReview/index.tsx +8 -2
- package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
- package/themes/original/src/components/StripeCardsList/index.tsx +9 -2
- package/themes/original/src/components/StripeElementsForm/index.tsx +28 -15
- package/themes/original/src/components/UpsellingProducts/index.tsx +238 -218
- package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
- package/themes/original/src/components/UserDetails/index.tsx +8 -4
- package/themes/original/src/components/UserFormDetails/index.tsx +53 -54
- package/themes/original/src/components/UserProfile/index.tsx +58 -35
- package/themes/original/src/components/UserProfile/styles.ts +17 -0
- package/themes/original/src/components/UserProfileForm/index.tsx +21 -28
- package/themes/original/src/components/UserProfileForm/styles.tsx +7 -0
- package/themes/original/src/components/Wallets/index.tsx +31 -17
- package/themes/original/src/components/Wallets/styles.tsx +2 -0
- package/themes/original/src/components/shared/CardAnimation.tsx +47 -0
- package/themes/original/src/components/shared/HeaderTitle.tsx +8 -3
- package/themes/original/src/components/shared/OBottomPopup.tsx +1 -1
- package/themes/original/src/components/shared/OButton.tsx +6 -2
- package/themes/original/src/components/shared/OIcon.tsx +8 -1
- package/themes/original/src/components/shared/OInput.tsx +10 -1
- package/themes/original/src/components/shared/OModal.tsx +3 -3
- package/themes/original/src/layouts/Container.tsx +13 -9
- package/themes/original/src/types/index.tsx +43 -9
- package/themes/original/src/utils/index.tsx +375 -58
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useEffect, useState, useRef } from 'react';
|
|
2
|
-
import { StyleSheet, View, Keyboard } from 'react-native';
|
|
2
|
+
import { StyleSheet, View, Keyboard, Vibration } from 'react-native';
|
|
3
3
|
import Spinner from 'react-native-loading-spinner-overlay';
|
|
4
4
|
import { useForm, Controller } from 'react-hook-form';
|
|
5
5
|
import { PhoneInputNumber } from '../PhoneInputNumber';
|
|
@@ -72,6 +72,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
72
72
|
generateOtpCode,
|
|
73
73
|
useLoginOtpEmail,
|
|
74
74
|
useLoginOtpCellphone,
|
|
75
|
+
isGuest
|
|
75
76
|
} = props;
|
|
76
77
|
|
|
77
78
|
const [, { showToast }] = useToast();
|
|
@@ -96,7 +97,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
96
97
|
const [alertState, setAlertState] = useState({ open: false, title: '', content: [] })
|
|
97
98
|
const [tabLayouts, setTabLayouts] = useState<any>({})
|
|
98
99
|
const tabsRef = useRef<any>(null)
|
|
99
|
-
|
|
100
|
+
const enabledPoweredByOrdering = configs?.powered_by_ordering_module?.value
|
|
100
101
|
const theme = useTheme();
|
|
101
102
|
const isOtpEmail = loginTab === 'otp' && otpType === 'email'
|
|
102
103
|
const isOtpCellphone = loginTab === 'otp' && otpType === 'cellphone'
|
|
@@ -165,6 +166,11 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
165
166
|
if (loginTab === 'otp') {
|
|
166
167
|
if (phoneInputData.error && (loginTab !== 'otp' || (otpType === 'cellphone' && loginTab === 'otp'))) {
|
|
167
168
|
showToast(ToastType.Error, t('INVALID_PHONE_NUMBER', 'Invalid phone number'));
|
|
169
|
+
Vibration.vibrate()
|
|
170
|
+
return
|
|
171
|
+
}
|
|
172
|
+
if(!values?.cellphone && otpType === 'cellphone'){
|
|
173
|
+
showToast(ToastType.Error, t('PHONE_NUMBER_REQUIRED', 'Phone number is required'));
|
|
168
174
|
return
|
|
169
175
|
}
|
|
170
176
|
if (loginTab === 'otp') {
|
|
@@ -177,6 +183,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
177
183
|
} else {
|
|
178
184
|
if (phoneInputData.error) {
|
|
179
185
|
showToast(ToastType.Error, phoneInputData.error);
|
|
186
|
+
Vibration.vibrate()
|
|
180
187
|
return;
|
|
181
188
|
}
|
|
182
189
|
handleButtonLoginClick({
|
|
@@ -189,6 +196,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
189
196
|
const handleVerifyCodeClick = () => {
|
|
190
197
|
if (phoneInputData.error) {
|
|
191
198
|
showToast(ToastType.Error, phoneInputData.error);
|
|
199
|
+
Vibration.vibrate()
|
|
192
200
|
return;
|
|
193
201
|
}
|
|
194
202
|
if (
|
|
@@ -203,6 +211,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
203
211
|
'The field Mobile phone is required.',
|
|
204
212
|
),
|
|
205
213
|
);
|
|
214
|
+
Vibration.vibrate()
|
|
206
215
|
return;
|
|
207
216
|
}
|
|
208
217
|
handleSendVerifyCode && handleSendVerifyCode(phoneInputData.phone);
|
|
@@ -217,17 +226,19 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
217
226
|
};
|
|
218
227
|
|
|
219
228
|
const handleChangeInputEmail = (value: string, onChange: any) => {
|
|
220
|
-
onChange(value.toLowerCase().replace(/[&,()%";:ç?<>{}\\[\]\s]/g, ''));
|
|
229
|
+
onChange(value.toLowerCase().trim().replace(/[&,()%";:ç?<>{}\\[\]\s]/g, ''));
|
|
221
230
|
};
|
|
222
231
|
|
|
223
232
|
const handleOpenRecaptcha = () => {
|
|
224
233
|
setRecaptchaVerified(false)
|
|
225
234
|
if (!recaptchaConfig?.siteKey) {
|
|
226
235
|
showToast(ToastType.Error, t('NO_RECAPTCHA_SITE_KEY', 'The config doesn\'t have recaptcha site key'));
|
|
236
|
+
Vibration.vibrate()
|
|
227
237
|
return
|
|
228
238
|
}
|
|
229
239
|
if (!recaptchaConfig?.baseUrl) {
|
|
230
240
|
showToast(ToastType.Error, t('NO_RECAPTCHA_BASE_URL', 'The config doesn\'t have recaptcha base url'));
|
|
241
|
+
Vibration.vibrate()
|
|
231
242
|
return
|
|
232
243
|
}
|
|
233
244
|
|
|
@@ -245,6 +256,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
245
256
|
}
|
|
246
257
|
|
|
247
258
|
const handleLoginOtp = (code: string) => {
|
|
259
|
+
if (!code) return
|
|
248
260
|
handleButtonLoginClick({ code })
|
|
249
261
|
setWillVerifyOtpState(false)
|
|
250
262
|
}
|
|
@@ -304,6 +316,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
304
316
|
baseUrl: configs?.security_recaptcha_base_url?.value || null
|
|
305
317
|
})
|
|
306
318
|
showToast(ToastType.Info, t('TRY_AGAIN', 'Please try again'))
|
|
319
|
+
Vibration.vibrate()
|
|
307
320
|
return
|
|
308
321
|
}
|
|
309
322
|
formState.result?.result &&
|
|
@@ -313,6 +326,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
313
326
|
? formState.result?.result
|
|
314
327
|
: formState.result?.result[0],
|
|
315
328
|
);
|
|
329
|
+
formState.result?.result && Vibration.vibrate()
|
|
316
330
|
}
|
|
317
331
|
}, [formState]);
|
|
318
332
|
|
|
@@ -324,6 +338,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
324
338
|
? verifyPhoneState?.result?.result
|
|
325
339
|
: verifyPhoneState?.result?.result[0];
|
|
326
340
|
verifyPhoneState.result?.result && showToast(ToastType.Error, message);
|
|
341
|
+
verifyPhoneState.result?.result && Vibration.vibrate();
|
|
327
342
|
setIsLoadingVerifyModal(false);
|
|
328
343
|
return;
|
|
329
344
|
}
|
|
@@ -363,18 +378,25 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
363
378
|
}
|
|
364
379
|
}, [checkPhoneCodeState])
|
|
365
380
|
|
|
381
|
+
useEffect(() => {
|
|
382
|
+
if (!!Object.values(errors)?.length) Vibration.vibrate()
|
|
383
|
+
}, [errors])
|
|
384
|
+
|
|
366
385
|
return (
|
|
367
386
|
<Container>
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
387
|
+
{isGuest ? (
|
|
388
|
+
<OText style={{ textAlign: 'center', marginBottom: 10 }} size={18}>{t('LOGIN', 'Login')}</OText>
|
|
389
|
+
) : (
|
|
390
|
+
<NavBar
|
|
391
|
+
title={t('LOGIN', 'Login')}
|
|
392
|
+
titleAlign={'center'}
|
|
393
|
+
onActionLeft={() => navigation?.canGoBack() && navigation.goBack()}
|
|
394
|
+
showCall={false}
|
|
395
|
+
btnStyle={{ paddingLeft: 0 }}
|
|
396
|
+
titleWrapStyle={{ paddingHorizontal: 0 }}
|
|
397
|
+
titleStyle={{ marginRight: 0, marginLeft: 0 }}
|
|
398
|
+
/>
|
|
399
|
+
)}
|
|
378
400
|
<FormSide>
|
|
379
401
|
{(Number(useLoginByEmail) + Number(useLoginByCellphone) + Number(useLoginOtpEmail) + Number(useLoginOtpCellphone) > 1) && (
|
|
380
402
|
<LoginWith>
|
|
@@ -680,7 +702,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
680
702
|
{t('NEW_ON_PLATFORM', 'New on Ordering?')}
|
|
681
703
|
</OText>
|
|
682
704
|
<TouchableOpacity onPress={() => onNavigationRedirect('Signup')}>
|
|
683
|
-
<OText size={14} mLeft={5} color={theme.colors.
|
|
705
|
+
<OText size={14} mLeft={5} color={theme.colors.primary}>
|
|
684
706
|
{t('CREATE_ACCOUNT', 'Create account')}
|
|
685
707
|
</OText>
|
|
686
708
|
</TouchableOpacity>
|
|
@@ -719,8 +741,9 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
719
741
|
)}
|
|
720
742
|
|
|
721
743
|
{configs && Object.keys(configs).length > 0 ? (
|
|
722
|
-
(((configs?.facebook_login?.value === 'true' || configs?.facebook_login?.value === '1') && configs?.facebook_id?.value) ||
|
|
723
|
-
(configs?.google_login_client_id?.value !== '' && configs?.google_login_client_id?.value !== null))
|
|
744
|
+
(((configs?.facebook_login?.value === 'true' || configs?.facebook_login?.value === '1') && configs?.facebook_id?.value && facebookLoginEnabled) ||
|
|
745
|
+
((configs?.google_login_client_id?.value !== '' && configs?.google_login_client_id?.value !== null) && googleLoginEnabled) ||
|
|
746
|
+
((configs?.apple_login_client_id?.value !== '' && configs?.apple_login_client_id?.value !== null) && appleLoginEnabled)) && !isGuest &&
|
|
724
747
|
(
|
|
725
748
|
<>
|
|
726
749
|
<View
|
|
@@ -748,7 +771,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
748
771
|
facebookLoginEnabled && (
|
|
749
772
|
<FacebookLogin
|
|
750
773
|
notificationState={notificationState}
|
|
751
|
-
handleErrors={(err: any) => showToast(ToastType.Error, err)}
|
|
774
|
+
handleErrors={(err: any) => { showToast(ToastType.Error, err), Vibration.vibrate() }}
|
|
752
775
|
handleLoading={(val: boolean) => setIsFBLoading(val)}
|
|
753
776
|
handleSuccessFacebookLogin={handleSuccessFacebook}
|
|
754
777
|
/>
|
|
@@ -757,7 +780,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
757
780
|
<GoogleLogin
|
|
758
781
|
notificationState={notificationState}
|
|
759
782
|
webClientId={configs?.google_login_client_id?.value}
|
|
760
|
-
handleErrors={(err: any) => showToast(ToastType.Error, err)}
|
|
783
|
+
handleErrors={(err: any) => { showToast(ToastType.Error, err), Vibration.vibrate() }}
|
|
761
784
|
handleLoading={(val: boolean) => setIsFBLoading(val)}
|
|
762
785
|
handleSuccessGoogleLogin={handleSuccessFacebook}
|
|
763
786
|
/>
|
|
@@ -765,7 +788,7 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
765
788
|
{(configs?.apple_login_client_id?.value !== '' && configs?.google_login_client_id?.value !== null) && appleLoginEnabled && (
|
|
766
789
|
<AppleLogin
|
|
767
790
|
notificationState={notificationState}
|
|
768
|
-
handleErrors={(err: any) => showToast(ToastType.Error, err)}
|
|
791
|
+
handleErrors={(err: any) => { showToast(ToastType.Error, err), Vibration.vibrate() }}
|
|
769
792
|
handleLoading={(val: boolean) => setIsFBLoading(val)}
|
|
770
793
|
handleSuccessAppleLogin={handleSuccessFacebook}
|
|
771
794
|
/>
|
|
@@ -788,6 +811,12 @@ const LoginFormUI = (props: LoginParams) => {
|
|
|
788
811
|
</Placeholder>
|
|
789
812
|
</SkeletonWrapper>
|
|
790
813
|
)}
|
|
814
|
+
|
|
815
|
+
{enabledPoweredByOrdering && (
|
|
816
|
+
<OText>
|
|
817
|
+
Powered By Ordering.co
|
|
818
|
+
</OText>
|
|
819
|
+
)}
|
|
791
820
|
</FormSide>
|
|
792
821
|
<OModal
|
|
793
822
|
open={isModalVisible}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import React, { useRef, useState } from 'react'
|
|
2
|
+
import Lottie from 'lottie-react-native';
|
|
3
|
+
import { TouchableOpacity, Easing, ViewStyle, Animated } from 'react-native';
|
|
4
|
+
import IconAntDesign from 'react-native-vector-icons/AntDesign'
|
|
5
|
+
import { useTheme } from 'styled-components';
|
|
6
|
+
|
|
7
|
+
interface Props {
|
|
8
|
+
initialValue: number,
|
|
9
|
+
onClick: any,
|
|
10
|
+
disableAnimation?: boolean
|
|
11
|
+
toValue: number,
|
|
12
|
+
style?: ViewStyle,
|
|
13
|
+
duration?: number,
|
|
14
|
+
type: 'favorite', // animation types
|
|
15
|
+
isActive: boolean,
|
|
16
|
+
animationType?: ((value: number) => number);
|
|
17
|
+
useNativeDriver?: boolean,
|
|
18
|
+
iconProps?: { color?: string, size?: number, style?: ViewStyle }
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const LottieAnimation = (props: Props) => {
|
|
22
|
+
const {
|
|
23
|
+
initialValue,
|
|
24
|
+
onClick,
|
|
25
|
+
disableAnimation,
|
|
26
|
+
toValue,
|
|
27
|
+
style,
|
|
28
|
+
duration,
|
|
29
|
+
type,
|
|
30
|
+
isActive,
|
|
31
|
+
useNativeDriver,
|
|
32
|
+
animationType,
|
|
33
|
+
iconProps
|
|
34
|
+
} = props
|
|
35
|
+
const theme = useTheme()
|
|
36
|
+
const animationProgress = useRef(new Animated.Value(initialValue))
|
|
37
|
+
const [isHide, setIsHide] = useState(true)
|
|
38
|
+
const favoriteArray = ['heart', 'hearto']
|
|
39
|
+
const icon = type === 'favorite' ? favoriteArray : []
|
|
40
|
+
const animationGif = type === 'favorite' ? theme.images?.general?.heart : ''
|
|
41
|
+
const onPressLottie = () => {
|
|
42
|
+
if (!disableAnimation) {
|
|
43
|
+
setIsHide(false)
|
|
44
|
+
Animated.timing(animationProgress.current, {
|
|
45
|
+
toValue,
|
|
46
|
+
duration: duration || 5000,
|
|
47
|
+
easing: animationType || Easing.linear,
|
|
48
|
+
useNativeDriver: useNativeDriver ?? true
|
|
49
|
+
}).start();
|
|
50
|
+
hideLottie()
|
|
51
|
+
}
|
|
52
|
+
onClick()
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const hideLottie = () => {
|
|
56
|
+
setTimeout(() => setIsHide(true), 4500)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return (
|
|
60
|
+
<TouchableOpacity
|
|
61
|
+
onPress={onPressLottie}
|
|
62
|
+
style={style}
|
|
63
|
+
>
|
|
64
|
+
{!isHide &&
|
|
65
|
+
<Lottie
|
|
66
|
+
progress={animationProgress.current}
|
|
67
|
+
source={animationGif}
|
|
68
|
+
/>
|
|
69
|
+
}
|
|
70
|
+
<IconAntDesign
|
|
71
|
+
name={isActive ? icon[0] : icon[1]}
|
|
72
|
+
color={iconProps?.color || theme.colors.danger5}
|
|
73
|
+
size={iconProps?.size || 16}
|
|
74
|
+
style={iconProps?.style}
|
|
75
|
+
/>
|
|
76
|
+
</TouchableOpacity>
|
|
77
|
+
)
|
|
78
|
+
}
|
|
@@ -16,11 +16,12 @@ import {
|
|
|
16
16
|
PlaceholderLine,
|
|
17
17
|
Fade
|
|
18
18
|
} from "rn-placeholder";
|
|
19
|
-
import { View, BackHandler } from 'react-native'
|
|
19
|
+
import { View, BackHandler, Platform } from 'react-native'
|
|
20
20
|
import {
|
|
21
21
|
MessageListingWrapper,
|
|
22
22
|
MessageContainer
|
|
23
23
|
} from './styles';
|
|
24
|
+
import { getOrderStatus } from '../../utils'
|
|
24
25
|
|
|
25
26
|
const OrdersOptionUI = (props: OrdersOptionParams) => {
|
|
26
27
|
const {
|
|
@@ -51,40 +52,6 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
|
|
|
51
52
|
: theme.images.general.emptyPastOrders
|
|
52
53
|
const orders = customArray || values || []
|
|
53
54
|
|
|
54
|
-
const getOrderStatus = (s: string) => {
|
|
55
|
-
const status = parseInt(s)
|
|
56
|
-
const orderStatus = [
|
|
57
|
-
{ key: 0, value: t('PENDING', 'Pending') },
|
|
58
|
-
{ key: 1, value: t('COMPLETED', 'Completed') },
|
|
59
|
-
{ key: 2, value: t('REJECTED', 'Rejected') },
|
|
60
|
-
{ key: 3, value: t('DRIVER_IN_BUSINESS', 'Driver in business') },
|
|
61
|
-
{ key: 4, value: t('PREPARATION_COMPLETED', 'Preparation Completed') },
|
|
62
|
-
{ key: 5, value: t('REJECTED_BY_BUSINESS', 'Rejected by business') },
|
|
63
|
-
{ key: 6, value: t('REJECTED_BY_DRIVER', 'Rejected by Driver') },
|
|
64
|
-
{ key: 7, value: t('ACCEPTED_BY_BUSINESS', 'Accepted by business') },
|
|
65
|
-
{ key: 8, value: t('ACCEPTED_BY_DRIVER', 'Accepted by driver') },
|
|
66
|
-
{ key: 9, value: t('PICK_UP_COMPLETED_BY_DRIVER', 'Pick up completed by driver') },
|
|
67
|
-
{ key: 10, value: t('PICK_UP_FAILED_BY_DRIVER', 'Pick up Failed by driver') },
|
|
68
|
-
{ key: 11, value: t('DELIVERY_COMPLETED_BY_DRIVER', 'Delivery completed by driver') },
|
|
69
|
-
{ key: 12, value: t('DELIVERY_FAILED_BY_DRIVER', 'Delivery Failed by driver') },
|
|
70
|
-
{ key: 13, value: t('PREORDER', 'PreOrder') },
|
|
71
|
-
{ key: 14, value: t('ORDER_NOT_READY', 'Order not ready') },
|
|
72
|
-
{ key: 15, value: t('ORDER_PICKEDUP_COMPLETED_BY_CUSTOMER', 'Order picked up completed by customer') },
|
|
73
|
-
{ key: 16, value: t('CANCELLED_BY_CUSTOMER', 'Cancelled by customer') },
|
|
74
|
-
{ key: 17, value: t('ORDER_NOT_PICKEDUP_BY_CUSTOMER', 'Order not picked up by customer') },
|
|
75
|
-
{ key: 18, value: t('DRIVER_ALMOST_ARRIVED_TO_BUSINESS', 'Driver almost arrived to business') },
|
|
76
|
-
{ key: 19, value: t('DRIVER_ALMOST_ARRIVED_TO_CUSTOMER', 'Driver almost arrived to customer') },
|
|
77
|
-
{ key: 20, value: t('ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS', 'Customer almost arrived to business') },
|
|
78
|
-
{ key: 21, value: t('ORDER_CUSTOMER_ARRIVED_BUSINESS', 'Customer arrived to business') },
|
|
79
|
-
{ key: 22, value: t('ORDER_LOOKING_FOR_DRIVER', 'Looking for driver') },
|
|
80
|
-
{ key: 23, value: t('ORDER_DRIVER_ON_WAY', 'Driver on way') }
|
|
81
|
-
]
|
|
82
|
-
|
|
83
|
-
const objectStatus = orderStatus.find((o) => o.key === status)
|
|
84
|
-
|
|
85
|
-
return objectStatus && objectStatus
|
|
86
|
-
}
|
|
87
|
-
|
|
88
55
|
const handleClickOrder = (uuid: string) => {
|
|
89
56
|
setSelectedOrderId(uuid)
|
|
90
57
|
setOpenMessges(true)
|
|
@@ -102,7 +69,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
|
|
|
102
69
|
}, [orderList, loading])
|
|
103
70
|
|
|
104
71
|
useEffect(() => {
|
|
105
|
-
if(refreshOrders){
|
|
72
|
+
if (refreshOrders) {
|
|
106
73
|
loadOrders(false, false, false, true)
|
|
107
74
|
setRefreshOrders && setRefreshOrders(false)
|
|
108
75
|
}
|
|
@@ -156,7 +123,9 @@ const OrderMessageUI = (props: any) => {
|
|
|
156
123
|
setMessages,
|
|
157
124
|
readMessages,
|
|
158
125
|
messagesReadList,
|
|
159
|
-
setOpenMessges
|
|
126
|
+
setOpenMessges,
|
|
127
|
+
setSeletedOrder,
|
|
128
|
+
setSelectedOrderId
|
|
160
129
|
} = props;
|
|
161
130
|
const [openModalForBusiness, setOpenModalForBusiness] = useState(false);
|
|
162
131
|
const [openModalForDriver, setOpenModalForDriver] = useState(false);
|
|
@@ -173,6 +142,8 @@ const OrderMessageUI = (props: any) => {
|
|
|
173
142
|
|
|
174
143
|
const handleClose = () => {
|
|
175
144
|
setOpenMessges(false)
|
|
145
|
+
setSeletedOrder(null)
|
|
146
|
+
setSelectedOrderId(null)
|
|
176
147
|
}
|
|
177
148
|
|
|
178
149
|
const handleOpenMessages = (data: any) => {
|
|
@@ -225,7 +196,7 @@ const OrderMessageUI = (props: any) => {
|
|
|
225
196
|
}
|
|
226
197
|
|
|
227
198
|
export const OrderListing = (props: OrdersOptionParams) => {
|
|
228
|
-
|
|
199
|
+
const [businessState] = useBusiness();
|
|
229
200
|
const OrderListingProps = {
|
|
230
201
|
...props,
|
|
231
202
|
UIComponent: OrdersOptionUI,
|
|
@@ -236,7 +207,7 @@ export const OrderListing = (props: OrdersOptionParams) => {
|
|
|
236
207
|
pageSize: 10,
|
|
237
208
|
controlType: 'infinity'
|
|
238
209
|
},
|
|
239
|
-
|
|
210
|
+
businessId: businessState?.business?.id,
|
|
240
211
|
profileMessages: true,
|
|
241
212
|
orderBy: 'last_direct_message_at',
|
|
242
213
|
orderDirection: 'asc'
|
|
@@ -292,7 +263,7 @@ export const MessageListing = (props: MessageListingParams) => {
|
|
|
292
263
|
titleAlign={'center'}
|
|
293
264
|
onActionLeft={goToBack}
|
|
294
265
|
showCall={false}
|
|
295
|
-
paddingTop={10}
|
|
266
|
+
paddingTop={Platform.OS === 'ios' ? 20 : 10}
|
|
296
267
|
btnStyle={{ paddingLeft: 0 }}
|
|
297
268
|
/>
|
|
298
269
|
<OrderListing
|
|
@@ -300,9 +271,9 @@ export const MessageListing = (props: MessageListingParams) => {
|
|
|
300
271
|
setSelectedOrderId={setSelectedOrderId}
|
|
301
272
|
setOrderList={setOrderListStatus}
|
|
302
273
|
setOpenMessges={setOpenMessges}
|
|
303
|
-
|
|
274
|
+
franchiseId={props.franchiseId}
|
|
304
275
|
/>
|
|
305
|
-
{openMessages && seletedOrder && (
|
|
276
|
+
{openMessages && !!seletedOrder?.id && (
|
|
306
277
|
<OModal
|
|
307
278
|
open={openMessages}
|
|
308
279
|
entireModal
|
|
@@ -311,7 +282,10 @@ export const MessageListing = (props: MessageListingParams) => {
|
|
|
311
282
|
>
|
|
312
283
|
<MessagesView
|
|
313
284
|
order={seletedOrder}
|
|
285
|
+
orderId={seletedOrder?.id}
|
|
314
286
|
setOpenMessges={setOpenMessges}
|
|
287
|
+
setSeletedOrder={setSeletedOrder}
|
|
288
|
+
setSelectedOrderId={setSelectedOrderId}
|
|
315
289
|
/>
|
|
316
290
|
</OModal>
|
|
317
291
|
)}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React, { useEffect, useState } from 'react'
|
|
2
|
+
import Clipboard from '@react-native-clipboard/clipboard';
|
|
2
3
|
import { Messages as MessagesController, useSession, useUtils, useLanguage, ToastType, useToast } from 'ordering-components/native'
|
|
3
4
|
import { useTheme } from 'styled-components/native';
|
|
4
5
|
import { launchImageLibrary } from 'react-native-image-picker'
|
|
@@ -12,6 +13,7 @@ import { Header, TitleHeader, Wrapper, QuickMessageContainer, ProfileMessageHead
|
|
|
12
13
|
import { MessagesParams } from '../../types'
|
|
13
14
|
import { useWindowDimensions } from 'react-native'
|
|
14
15
|
import { useSafeAreaInsets } from 'react-native-safe-area-context'
|
|
16
|
+
import { getLogisticTag } from '../../utils'
|
|
15
17
|
|
|
16
18
|
const ORDER_STATUS: any = {
|
|
17
19
|
0: 'ORDER_STATUS_PENDING',
|
|
@@ -126,7 +128,7 @@ const MessagesUI = (props: MessagesParams) => {
|
|
|
126
128
|
?
|
|
127
129
|
`${t('ORDER', 'Order')} ${t(message.change.attribute.toUpperCase(), message.change.attribute.replace('_', ' '))} ${t('CHANGED_FROM', 'Changed from')} ${filterSpecialStatus.includes(message.change.attribute) ?
|
|
128
130
|
`${message.change.old === null ? '0' : message.change.old} ${t('TO', 'to')} ${message.change.new} ${t('MINUTES', 'Minutes')}` :
|
|
129
|
-
`${message.change.old !== null && t(ORDER_STATUS[parseInt(message.change.old, 10)])} ${t('TO', 'to')} ${t(ORDER_STATUS[parseInt(message.change.new, 10)])}`
|
|
131
|
+
`${message.change?.attribute !== 'logistic_status' ? message.change.old !== null && t(ORDER_STATUS[parseInt(message.change.old, 10)]) : message.change.old !== null && getLogisticTag(message.change.old)} ${t('TO', 'to')} ${message.change?.attribute !== 'logistic_status' ? t(ORDER_STATUS[parseInt(message.change.new, 10)]) : getLogisticTag(message.change.new)}`
|
|
130
132
|
}`
|
|
131
133
|
: message.change.new
|
|
132
134
|
?
|
|
@@ -141,7 +143,7 @@ const MessagesUI = (props: MessagesParams) => {
|
|
|
141
143
|
const firstMessage = {
|
|
142
144
|
_id: 0,
|
|
143
145
|
text: _console,
|
|
144
|
-
createdAt: order?.created_at,
|
|
146
|
+
createdAt: parseDate(order?.created_at, { outputFormat: 'YYYY-MM-DD HH:mm:ss' }),
|
|
145
147
|
system: true
|
|
146
148
|
}
|
|
147
149
|
const newMessage: any = [];
|
|
@@ -150,13 +152,13 @@ const MessagesUI = (props: MessagesParams) => {
|
|
|
150
152
|
newMessage.push({
|
|
151
153
|
_id: message?.id,
|
|
152
154
|
text: message.type === 1 ? messageConsole(message) : message.comment,
|
|
153
|
-
createdAt: message.type !== 0 && message
|
|
155
|
+
createdAt: message.type !== 0 && parseDate(message?.created_at, { outputFormat: 'YYYY-MM-DD HH:mm:ss' }),
|
|
154
156
|
image: message.source,
|
|
155
157
|
system: message.type === 1,
|
|
156
158
|
user: {
|
|
157
|
-
_id: message.author.id,
|
|
158
|
-
name: message.author.name,
|
|
159
|
-
avatar: message.author.id !== user.id && type === USER_TYPE.DRIVER ? order?.driver?.photo : order?.business?.logo
|
|
159
|
+
_id: message.author && message.author.id,
|
|
160
|
+
name: message.author && message.author.name,
|
|
161
|
+
avatar: message.author && (message.author.id !== user.id && type === USER_TYPE.DRIVER ? order?.driver?.photo : order?.business?.logo)
|
|
160
162
|
}
|
|
161
163
|
});
|
|
162
164
|
}
|
|
@@ -165,13 +167,13 @@ const MessagesUI = (props: MessagesParams) => {
|
|
|
165
167
|
newMessage.push({
|
|
166
168
|
_id: message?.id,
|
|
167
169
|
text: message.type === 1 ? messageConsole(message) : message.comment,
|
|
168
|
-
createdAt: message.type !== 0 && message
|
|
170
|
+
createdAt: message.type !== 0 && parseDate(message?.created_at, { outputFormat: 'YYYY-MM-DD HH:mm:ss' }),
|
|
169
171
|
image: message.source,
|
|
170
172
|
system: message.type === 1,
|
|
171
173
|
user: {
|
|
172
|
-
_id: message.author.id,
|
|
173
|
-
name: message.author.name,
|
|
174
|
-
avatar: message.author.id !== user.id && type === USER_TYPE.DRIVER ? order?.driver?.photo : order?.business?.logo
|
|
174
|
+
_id: message.author && message.author.id,
|
|
175
|
+
name: message.author && message.author.name,
|
|
176
|
+
avatar: message.author && (message.author.id !== user.id && type === USER_TYPE.DRIVER ? order?.driver?.photo : order?.business?.logo)
|
|
175
177
|
}
|
|
176
178
|
});
|
|
177
179
|
}
|
|
@@ -240,6 +242,7 @@ const MessagesUI = (props: MessagesParams) => {
|
|
|
240
242
|
|
|
241
243
|
const renderAccessory = () => {
|
|
242
244
|
return (
|
|
245
|
+
!chatDisabled &&
|
|
243
246
|
<QuickMessageContainer
|
|
244
247
|
style={{
|
|
245
248
|
marginLeft: 10,
|
|
@@ -397,6 +400,24 @@ const MessagesUI = (props: MessagesParams) => {
|
|
|
397
400
|
}
|
|
398
401
|
}
|
|
399
402
|
|
|
403
|
+
const onLongPress = (context: any, message: any) => {
|
|
404
|
+
const options = [
|
|
405
|
+
t('COPY_TEXT', 'Copy text'),
|
|
406
|
+
t('CANCEL', 'Cancel'),
|
|
407
|
+
];
|
|
408
|
+
const cancelButtonIndex = options.length - 1;
|
|
409
|
+
context.actionSheet().showActionSheetWithOptions({
|
|
410
|
+
options,
|
|
411
|
+
cancelButtonIndex
|
|
412
|
+
}, (buttonIndex: any) => buttonIndex === 0 && Clipboard.setString(message.text)
|
|
413
|
+
);
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
useEffect(() => {
|
|
417
|
+
if (!order?.id || messages?.loading) return
|
|
418
|
+
readMessages && readMessages()
|
|
419
|
+
}, [order?.id, messages?.loading])
|
|
420
|
+
|
|
400
421
|
return (
|
|
401
422
|
<View style={{ height: getViewHeight(), width: '100%', paddingTop: 12, backgroundColor: 'white' }}>
|
|
402
423
|
<Wrapper>
|
|
@@ -473,6 +494,7 @@ const MessagesUI = (props: MessagesParams) => {
|
|
|
473
494
|
onSend={onSubmit}
|
|
474
495
|
onInputTextChanged={onChangeMessage}
|
|
475
496
|
alignTop
|
|
497
|
+
onLongPress={(context: any, message: any) => onLongPress(context, message)}
|
|
476
498
|
scrollToBottom
|
|
477
499
|
renderAvatarOnTop
|
|
478
500
|
renderUsernameOnMessage
|