ordering-ui-react-native 0.22.75 → 0.22.76-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/components/BusinessesListing/index.tsx +1 -1
- package/src/components/Checkout/index.tsx +40 -39
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/context/OfflineActions/index.tsx +236 -0
- package/src/providers/AlertProvider.tsx +3 -1
- package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +5 -3
- package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
- package/themes/business/src/components/BusinessController/index.tsx +8 -3
- package/themes/business/src/components/BusinessProductList/index.tsx +3 -2
- package/themes/business/src/components/Chat/index.tsx +15 -3
- package/themes/business/src/components/DriverMap/index.tsx +44 -33
- package/themes/business/src/components/FloatingButton/index.tsx +3 -2
- package/themes/business/src/components/LanguageSelector/index.tsx +1 -1
- package/themes/business/src/components/LoginForm/index.tsx +123 -98
- package/themes/business/src/components/LogoutButton/index.tsx +13 -4
- package/themes/business/src/components/MapView/RenderMarker.tsx +146 -0
- package/themes/business/src/components/MapView/index.tsx +68 -142
- package/themes/business/src/components/NewOrderNotification/index.tsx +38 -54
- package/themes/business/src/components/OrderDetails/Business.tsx +56 -20
- package/themes/business/src/components/OrderDetails/Delivery.tsx +111 -42
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +146 -36
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +51 -28
- package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
- package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +17 -16
- package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
- package/themes/business/src/components/OrderSummary/index.tsx +271 -176
- package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
- package/themes/business/src/components/OrdersOption/index.tsx +207 -144
- 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 +20 -8
- 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 +15 -16
- package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
- package/themes/business/src/components/StoresList/index.tsx +2 -2
- package/themes/business/src/components/UserProfileForm/index.tsx +48 -10
- package/themes/business/src/components/UserProfileForm/styles.tsx +7 -0
- package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
- package/themes/business/src/config/currency.tsx +1010 -0
- package/themes/business/src/hooks/useLocation.tsx +16 -12
- package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
- package/themes/business/src/types/index.tsx +26 -4
- package/themes/business/src/utils/index.tsx +26 -2
- 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 +223 -219
- package/themes/original/src/components/AddressForm/index.tsx +56 -17
- package/themes/original/src/components/AppleLogin/index.tsx +3 -4
- package/themes/original/src/components/BusinessController/index.tsx +4 -2
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +8 -3
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +102 -90
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +7 -3
- package/themes/original/src/components/BusinessListingSearch/index.tsx +8 -13
- package/themes/original/src/components/BusinessPreorder/index.tsx +30 -17
- package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +72 -69
- package/themes/original/src/components/BusinessProductsList/index.tsx +4 -5
- package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
- package/themes/original/src/components/BusinessProductsListing/index.tsx +5 -4
- package/themes/original/src/components/BusinessesListing/Layout/Appointment/styles.tsx +1 -0
- package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +2 -1
- package/themes/original/src/components/Cart/index.tsx +43 -12
- package/themes/original/src/components/Checkout/index.tsx +126 -98
- package/themes/original/src/components/FloatingButton/index.tsx +1 -1
- package/themes/original/src/components/GPSButton/index.tsx +2 -1
- package/themes/original/src/components/GoogleMap/index.tsx +3 -2
- package/themes/original/src/components/Help/functions.tsx +76 -0
- package/themes/original/src/components/Help/index.tsx +74 -29
- package/themes/original/src/components/Help/styles.tsx +4 -1
- package/themes/original/src/components/HelpOptions/index.tsx +53 -0
- package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
- package/themes/original/src/components/Home/index.tsx +36 -11
- package/themes/original/src/components/LastOrder/index.tsx +1 -1
- package/themes/original/src/components/LoginForm/index.tsx +11 -5
- package/themes/original/src/components/MessageListing/index.tsx +1 -1
- package/themes/original/src/components/Messages/index.tsx +562 -555
- package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
- package/themes/original/src/components/MomentOption/index.tsx +141 -61
- package/themes/original/src/components/MomentOption/styles.tsx +1 -1
- package/themes/original/src/components/MomentSelector/index.tsx +5 -2
- package/themes/original/src/components/MultiCheckout/index.tsx +78 -33
- package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +2 -2
- package/themes/original/src/components/MultiOrdersDetails/index.tsx +2 -2
- package/themes/original/src/components/NavBar/index.tsx +6 -2
- package/themes/original/src/components/NotFoundSource/index.tsx +40 -39
- package/themes/original/src/components/NotFoundSource/styles.tsx +18 -9
- package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
- package/themes/original/src/components/OrderDetails/OrderHistory.tsx +11 -4
- package/themes/original/src/components/OrderDetails/index.tsx +44 -20
- package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
- package/themes/original/src/components/OrderProgress/index.tsx +5 -4
- package/themes/original/src/components/OrderSummary/index.tsx +32 -11
- package/themes/original/src/components/OrderTypeSelector/index.tsx +120 -120
- package/themes/original/src/components/OrdersOption/index.tsx +325 -325
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +1 -0
- package/themes/original/src/components/PaymentOptions/index.tsx +471 -459
- package/themes/original/src/components/PhoneInputNumber/index.tsx +92 -7
- package/themes/original/src/components/ProductItemAccordion/index.tsx +28 -37
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +15 -14
- package/themes/original/src/components/ServiceForm/index.tsx +2 -2
- package/themes/original/src/components/SignupForm/index.tsx +40 -24
- package/themes/original/src/components/SingleOrderCard/index.tsx +8 -5
- package/themes/original/src/components/SingleProductCard/index.tsx +2 -1
- package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
- package/themes/original/src/components/StripeCardsList/index.tsx +7 -1
- package/themes/original/src/components/StripeElementsForm/index.tsx +2 -2
- package/themes/original/src/components/TaxInformation/index.tsx +3 -2
- package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +7 -2
- package/themes/original/src/components/UserDetails/index.tsx +17 -16
- package/themes/original/src/components/UserFormDetails/index.tsx +109 -67
- package/themes/original/src/components/UserVerification/index.tsx +18 -5
- package/themes/original/src/components/VerifyPhone/index.tsx +1 -1
- package/themes/original/src/components/shared/OInput.tsx +97 -97
- package/themes/original/src/components/shared/OModal.tsx +7 -2
- package/themes/original/src/providers/AlertProvider.tsx +1 -1
- package/themes/original/src/types/index.tsx +700 -695
- package/themes/original/src/utils/index.tsx +50 -34
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
- package/themes/original/src/components/HelpAccountAndPayment/index.tsx +0 -62
- package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +0 -12
- package/themes/original/src/components/HelpGuide/index.tsx +0 -68
- package/themes/original/src/components/HelpGuide/styles.tsx +0 -12
- package/themes/original/src/components/HelpOrder/index.tsx +0 -71
- package/themes/original/src/components/HelpOrder/styles.tsx +0 -13
|
@@ -3,8 +3,7 @@ import {
|
|
|
3
3
|
StyleSheet,
|
|
4
4
|
View,
|
|
5
5
|
TouchableOpacity,
|
|
6
|
-
ActivityIndicator
|
|
7
|
-
Alert,
|
|
6
|
+
ActivityIndicator
|
|
8
7
|
} from 'react-native';
|
|
9
8
|
import Clipboard from '@react-native-clipboard/clipboard';
|
|
10
9
|
import { StarPRNT } from 'react-native-star-prnt';
|
|
@@ -31,7 +30,7 @@ import { FloatingButton } from '../FloatingButton';
|
|
|
31
30
|
import { GoogleMap } from '../GoogleMap';
|
|
32
31
|
import { OButton, OModal, OText, OIcon } from '../shared';
|
|
33
32
|
import { OrderDetailsParams } from '../../types';
|
|
34
|
-
import { verifyDecimals, getProductPrice, getOrderStatus } from '../../utils';
|
|
33
|
+
import { verifyDecimals, getProductPrice, getOrderStatus, getCurrenySymbol } from '../../utils';
|
|
35
34
|
import { USER_TYPE } from '../../config/constants';
|
|
36
35
|
import CountryPicker from 'react-native-country-picker-modal';
|
|
37
36
|
import { NotFoundSource } from '../NotFoundSource';
|
|
@@ -53,6 +52,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
53
52
|
actions,
|
|
54
53
|
orderTitle,
|
|
55
54
|
appTitle,
|
|
55
|
+
loadMessages,
|
|
56
|
+
notificationApp
|
|
56
57
|
} = props;
|
|
57
58
|
|
|
58
59
|
const theme = useTheme();
|
|
@@ -77,7 +78,9 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
77
78
|
const [printerSettings, setPrinterSettings] = useState<any>('')
|
|
78
79
|
const [autoPrintEnabled, setAutoPrintEnabled] = useState<boolean>(false)
|
|
79
80
|
|
|
80
|
-
const orderToComplete = [4,20,21]
|
|
81
|
+
const orderToComplete = [4, 20, 21]
|
|
82
|
+
const orderToReady = [7, 14]
|
|
83
|
+
const deliveryTypes = [1, 7]
|
|
81
84
|
|
|
82
85
|
if (order?.status === 7 || order?.status === 4) {
|
|
83
86
|
if (drivers?.length > 0 && drivers) {
|
|
@@ -135,6 +138,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
135
138
|
if (order?.status === 7 && autoPrintEnabled && printerSettings) {
|
|
136
139
|
handleViewSummaryOrder()
|
|
137
140
|
}
|
|
141
|
+
return order
|
|
138
142
|
}
|
|
139
143
|
}
|
|
140
144
|
|
|
@@ -142,8 +146,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
142
146
|
if (name !== 'No') {
|
|
143
147
|
const pos = position && position !== 'whole' ? `(${t(position.toUpperCase(), position)})` : '';
|
|
144
148
|
return pos
|
|
145
|
-
? `${quantity} x ${name} ${pos} +${parsePrice(price)}\n`
|
|
146
|
-
: `${quantity} x ${name} +${parsePrice(price)}\n`;
|
|
149
|
+
? `${quantity} x ${name} ${pos} +${parsePrice(price, { currency: getCurrenySymbol(order?.currency) })}\n`
|
|
150
|
+
: `${quantity} x ${name} +${parsePrice(price, { currency: getCurrenySymbol(order?.currency) })}\n`;
|
|
147
151
|
} else {
|
|
148
152
|
return 'No\n';
|
|
149
153
|
}
|
|
@@ -208,7 +212,13 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
208
212
|
? t('EAT_IN', 'Eat in')
|
|
209
213
|
: order.delivery_type === 4
|
|
210
214
|
? t('CURBSIDE', 'Curbside')
|
|
211
|
-
:
|
|
215
|
+
: order.delivery_type === 5
|
|
216
|
+
? t('DRIVER_THRU', 'Driver thru')
|
|
217
|
+
: order.delivery_type === 7
|
|
218
|
+
? t('CATERING_DELIVERY', 'Catering delivery')
|
|
219
|
+
: order.delivery_type === 8
|
|
220
|
+
? t('CATERING_PICKUP', 'Catering pickup')
|
|
221
|
+
: t('DELIVERY', 'Delivery')
|
|
212
222
|
}\n`
|
|
213
223
|
: '';
|
|
214
224
|
|
|
@@ -245,7 +255,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
245
255
|
order?.products.length &&
|
|
246
256
|
order?.products.map((product: any, i: number) => {
|
|
247
257
|
const string =
|
|
248
|
-
`${product?.quantity} X ${product?.name} ${parsePrice(product.total ?? getProductPrice(product))}\n${getOptions(product.options, product.comment)}`;
|
|
258
|
+
`${product?.quantity} X ${product?.name} ${parsePrice(product.total ?? getProductPrice(product), { currency: getCurrenySymbol(order?.currency) })}\n${getOptions(product.options, product.comment)}`;
|
|
249
259
|
|
|
250
260
|
return i === 0 ? ` ${string}` : string
|
|
251
261
|
});
|
|
@@ -258,19 +268,22 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
258
268
|
|
|
259
269
|
const subtotal = `${t('SUBTOTAL', 'Subtotal')}: ${parsePrice(
|
|
260
270
|
order?.subtotal,
|
|
271
|
+
{ currency: getCurrenySymbol(order?.currency) }
|
|
261
272
|
)}\n`;
|
|
262
273
|
|
|
263
274
|
const drivertip = `${t('DRIVER_TIP', 'Driver tip')} ${parsePrice(
|
|
264
275
|
order?.summary?.driver_tip || order?.totalDriverTip,
|
|
276
|
+
{ currency: getCurrenySymbol(order?.currency) }
|
|
265
277
|
)}\n`;
|
|
266
278
|
|
|
267
279
|
const deliveryFee = `${t('DELIVERY_FEE', 'Delivery fee')} ${verifyDecimals(
|
|
268
280
|
order?.service_fee,
|
|
269
281
|
parseNumber,
|
|
270
|
-
)}% ${parsePrice(order?.summary?.service_fee || order?.serviceFee || 0)}\n`;
|
|
282
|
+
)}% ${parsePrice(order?.summary?.service_fee || order?.serviceFee || 0, { currency: getCurrenySymbol(order?.currency) })}\n`;
|
|
271
283
|
|
|
272
284
|
const total = `${t('TOTAL', 'Total')} ${parsePrice(
|
|
273
285
|
order?.summary?.total || order?.total,
|
|
286
|
+
{ currency: getCurrenySymbol(order?.currency) }
|
|
274
287
|
)}\n`;
|
|
275
288
|
|
|
276
289
|
const orderStatus = `${t('INVOICE_ORDER_NO', 'Order No.')} ${order.id} ${t(
|
|
@@ -297,14 +310,33 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
297
310
|
|
|
298
311
|
const handleOpenMessagesForBusiness = () => {
|
|
299
312
|
setOpenModalForBusiness(true);
|
|
300
|
-
readMessages && readMessages()
|
|
313
|
+
readMessages && readMessages()
|
|
314
|
+
loadMessages && loadMessages()
|
|
301
315
|
setUnreadAlert({ ...unreadAlert, business: false });
|
|
302
316
|
};
|
|
303
317
|
|
|
304
|
-
const handleViewActionOrder = (action: string) => {
|
|
318
|
+
const handleViewActionOrder = async (action: string, options?: any) => {
|
|
305
319
|
if (openModalForMapView) {
|
|
306
320
|
setOpenModalForMapView(false);
|
|
307
321
|
}
|
|
322
|
+
if (options?.forceUpdateStatus) {
|
|
323
|
+
let bodyToSend: any = {};
|
|
324
|
+
const orderStatus: any = {
|
|
325
|
+
acceptByBusiness: {
|
|
326
|
+
status: 7,
|
|
327
|
+
},
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
if (actions && action === 'accept') {
|
|
331
|
+
bodyToSend = orderStatus[actions.accept];
|
|
332
|
+
}
|
|
333
|
+
bodyToSend.id = order?.id;
|
|
334
|
+
const _order = await handleChangeOrderStatus(bodyToSend?.status, bodyToSend)
|
|
335
|
+
if (!_order?.id) {
|
|
336
|
+
showToast(ToastType.Error, t('FAILED_TO_UPDATE_ORDER', 'Failed to update order'), 5000)
|
|
337
|
+
return
|
|
338
|
+
}
|
|
339
|
+
}
|
|
308
340
|
setActionOrder(action);
|
|
309
341
|
setOpenModalForAccept(true);
|
|
310
342
|
};
|
|
@@ -339,6 +371,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
339
371
|
};
|
|
340
372
|
|
|
341
373
|
const handleCloseModal = () => {
|
|
374
|
+
readMessages && readMessages()
|
|
375
|
+
loadMessages && loadMessages()
|
|
342
376
|
setOpenModalForBusiness(false);
|
|
343
377
|
};
|
|
344
378
|
|
|
@@ -379,7 +413,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
379
413
|
},
|
|
380
414
|
{
|
|
381
415
|
...order?.customer?.location,
|
|
382
|
-
title: order?.customer?.name ??
|
|
416
|
+
title: order?.customer?.name ?? t('CUSTOMER', 'Customer'),
|
|
383
417
|
address: {
|
|
384
418
|
addressName: order?.customer?.address,
|
|
385
419
|
zipcode: order?.customer?.zipcode
|
|
@@ -392,7 +426,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
392
426
|
];
|
|
393
427
|
|
|
394
428
|
useEffect(() => {
|
|
395
|
-
if (openModalForAccept) {
|
|
429
|
+
if (openModalForAccept && !loading) {
|
|
396
430
|
setOpenModalForAccept(false);
|
|
397
431
|
}
|
|
398
432
|
|
|
@@ -413,7 +447,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
413
447
|
|
|
414
448
|
useEffect(() => {
|
|
415
449
|
const getStorageData = async () => {
|
|
416
|
-
|
|
450
|
+
const printers = await _retrieveStoreData('printers')
|
|
417
451
|
const autoPrint = await _retrieveStoreData('auto_print_after_accept_order')
|
|
418
452
|
setPrinterSettings(printers?.length && printers)
|
|
419
453
|
setAutoPrintEnabled(!!autoPrint)
|
|
@@ -482,6 +516,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
482
516
|
handleCopyClipboard={handleCopyClipboard}
|
|
483
517
|
handleArrowBack={handleArrowBack}
|
|
484
518
|
isCustomView={props.isCustomView}
|
|
519
|
+
messages={messages}
|
|
520
|
+
messagesReadList={messagesReadList}
|
|
485
521
|
/>
|
|
486
522
|
<OrderDetailsContainer
|
|
487
523
|
keyboardShouldPersistTaps="handled"
|
|
@@ -489,7 +525,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
489
525
|
<>
|
|
490
526
|
<OrderContentComponent order={order} />
|
|
491
527
|
{(order?.status === 7 || order?.status === 4) &&
|
|
492
|
-
order?.delivery_type
|
|
528
|
+
deliveryTypes.includes(order?.delivery_type) && configs?.assign_driver_enabled?.value === '1' && (
|
|
493
529
|
<AssignDriver>
|
|
494
530
|
<OText style={{ marginBottom: 5 }} size={16} weight="600">
|
|
495
531
|
{t('ASSIGN_DRIVER', 'Assign driver')}
|
|
@@ -587,6 +623,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
587
623
|
messages={messages}
|
|
588
624
|
order={order}
|
|
589
625
|
setMessages={setMessages}
|
|
626
|
+
notificationApp={notificationApp}
|
|
590
627
|
/>
|
|
591
628
|
</OModal>
|
|
592
629
|
|
|
@@ -630,7 +667,6 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
630
667
|
</>
|
|
631
668
|
<View style={{ height: 30 }} />
|
|
632
669
|
</OrderDetailsContainer>
|
|
633
|
-
|
|
634
670
|
{order &&
|
|
635
671
|
Object.keys(order).length > 0 &&
|
|
636
672
|
getOrderStatus(order?.status, t)?.value ===
|
|
@@ -638,7 +674,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
638
674
|
<FloatingButton
|
|
639
675
|
btnText={t('REJECT', 'Reject')}
|
|
640
676
|
isSecondaryBtn={false}
|
|
641
|
-
secondButtonClick={() => handleViewActionOrder('accept')}
|
|
677
|
+
secondButtonClick={() => handleViewActionOrder('accept', { forceUpdateStatus: true })}
|
|
642
678
|
firstButtonClick={() => handleViewActionOrder('reject')}
|
|
643
679
|
secondBtnText={t('ACCEPT', 'Accept')}
|
|
644
680
|
secondButton={true}
|
|
@@ -647,7 +683,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
647
683
|
widthButton={'45%'}
|
|
648
684
|
/>
|
|
649
685
|
)}
|
|
650
|
-
{order?.status
|
|
686
|
+
{orderToReady.includes(order?.status) && (
|
|
651
687
|
<FloatingButton
|
|
652
688
|
btnText={t('READY_FOR_PICKUP', 'Ready for pickup')}
|
|
653
689
|
colorTxt1={theme.colors.primary}
|
|
@@ -657,7 +693,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
657
693
|
disabled={loading}
|
|
658
694
|
/>
|
|
659
695
|
)}
|
|
660
|
-
{orderToComplete.includes(order?.status) && !
|
|
696
|
+
{orderToComplete.includes(order?.status) && !deliveryTypes.includes(order?.delivery_type) && (
|
|
661
697
|
<FloatingButton
|
|
662
698
|
btnText={t(
|
|
663
699
|
'ORDER_NOT_PICKEDUP_BY_CUSTOMER',
|
|
@@ -668,7 +704,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
668
704
|
secondButtonClick={() => handleChangeOrderStatus?.(15)}
|
|
669
705
|
firstButtonClick={() => handleChangeOrderStatus?.(17)}
|
|
670
706
|
secondBtnText={t(
|
|
671
|
-
'
|
|
707
|
+
'ORDER_PICKUP_COMPLETED_BY_CUSTOMER',
|
|
672
708
|
'Pickup completed by customer',
|
|
673
709
|
)}
|
|
674
710
|
secondButton={true}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
//React & React Native
|
|
2
1
|
import React, { useState, useEffect } from 'react';
|
|
3
2
|
import { StyleSheet, View } from 'react-native';
|
|
4
3
|
|
|
5
|
-
// Thirds
|
|
6
4
|
import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder';
|
|
7
5
|
import Clipboard from '@react-native-clipboard/clipboard';
|
|
6
|
+
import MCIcon from 'react-native-vector-icons/MaterialCommunityIcons';
|
|
8
7
|
|
|
9
|
-
//OrderingComponent
|
|
10
8
|
import {
|
|
11
9
|
useLanguage,
|
|
12
10
|
OrderDetails as OrderDetailsConTableoller,
|
|
@@ -14,16 +12,16 @@ import {
|
|
|
14
12
|
useSession,
|
|
15
13
|
ToastType,
|
|
16
14
|
useUtils,
|
|
17
|
-
useConfig
|
|
15
|
+
useConfig,
|
|
16
|
+
useApi
|
|
18
17
|
} from 'ordering-components/native';
|
|
19
18
|
|
|
20
|
-
//Components
|
|
21
19
|
import Alert from '../../providers/AlertProvider';
|
|
22
20
|
import { AcceptOrRejectOrder } from '../AcceptOrRejectOrder';
|
|
23
21
|
import { Chat } from '../Chat';
|
|
24
22
|
import { FloatingButton } from '../FloatingButton';
|
|
25
23
|
import { DriverMap } from '../DriverMap';
|
|
26
|
-
import { OButton } from '../shared';
|
|
24
|
+
import { OButton, OText } from '../shared';
|
|
27
25
|
import { OModal } from '../shared';
|
|
28
26
|
import { OrderDetailsParams } from '../../types';
|
|
29
27
|
import { USER_TYPE } from '../../config/constants';
|
|
@@ -32,8 +30,8 @@ import { NotFoundSource } from '../NotFoundSource';
|
|
|
32
30
|
import { verifyDecimals, getProductPrice, getOrderStatus } from '../../utils';
|
|
33
31
|
import { OrderHeaderComponent } from './OrderHeaderComponent';
|
|
34
32
|
import { OrderContentComponent } from './OrderContentComponent';
|
|
35
|
-
//Styles
|
|
36
33
|
import { OrderDetailsContainer, Pickup } from './styles';
|
|
34
|
+
import { useOfflineActions } from '../../../../../src/context/OfflineActions';
|
|
37
35
|
|
|
38
36
|
export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
39
37
|
const {
|
|
@@ -42,7 +40,6 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
42
40
|
setMessages,
|
|
43
41
|
readMessages,
|
|
44
42
|
messagesReadList,
|
|
45
|
-
handleChangeOrderStatus,
|
|
46
43
|
permissions,
|
|
47
44
|
askLocationPermission,
|
|
48
45
|
driverLocation,
|
|
@@ -56,13 +53,15 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
56
53
|
forceUpdate,
|
|
57
54
|
getPermissions,
|
|
58
55
|
orderAssingId,
|
|
59
|
-
isGrantedPermissions
|
|
56
|
+
isGrantedPermissions
|
|
60
57
|
} = props;
|
|
58
|
+
|
|
61
59
|
const [, { showToast }] = useToast();
|
|
62
60
|
const [{ parsePrice, parseNumber }] = useUtils();
|
|
63
61
|
const [{ configs }] = useConfig();
|
|
64
|
-
|
|
62
|
+
const [ordering] = useApi()
|
|
65
63
|
const { order } = props.order
|
|
64
|
+
const isDelosiProject = ['delosi', 'delosipruebas'].includes(ordering?.project)
|
|
66
65
|
|
|
67
66
|
const hideTimer = configs?.hidden_driver_eta_time?.value === '1'
|
|
68
67
|
const isAllowedDriverRejectOrder = configs?.allow_driver_reject_order?.value === '1'
|
|
@@ -72,6 +71,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
72
71
|
const theme = useTheme();
|
|
73
72
|
const [, t] = useLanguage();
|
|
74
73
|
const [session] = useSession();
|
|
74
|
+
const [{ isNetConnected, canSaveChangesOffline }, { applyOffAction, registerOffOrder }] = useOfflineActions()
|
|
75
|
+
|
|
75
76
|
const [actionOrder, setActionOrder] = useState('');
|
|
76
77
|
const [unreadAlert, setUnreadAlert] = useState({
|
|
77
78
|
business: false,
|
|
@@ -86,12 +87,17 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
86
87
|
key?: string | null;
|
|
87
88
|
}>({ open: false, content: [], key: null });
|
|
88
89
|
|
|
89
|
-
const
|
|
90
|
+
const disabledActionsByInternet = isNetConnected !== null && !isNetConnected && canSaveChangesOffline === false
|
|
91
|
+
|
|
92
|
+
const validStatusComplete = [9, 19, 23, 26]
|
|
90
93
|
|
|
91
94
|
const pendingOrderStatus = [1, 4, 7, 13]
|
|
92
95
|
|
|
93
96
|
const logisticOrderStatus = [4, 6, 7]
|
|
94
97
|
|
|
98
|
+
const deliveryTypes = [1, 7]
|
|
99
|
+
|
|
100
|
+
|
|
95
101
|
const showFloatButtonsPickUp: any = {
|
|
96
102
|
8: !isHideRejectButtons,
|
|
97
103
|
3: true,
|
|
@@ -105,13 +111,23 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
105
111
|
14: true
|
|
106
112
|
};
|
|
107
113
|
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
114
|
+
const handleChangeOrderStatus = async (status: number) => {
|
|
115
|
+
if (!isNetConnected && canSaveChangesOffline !== false) {
|
|
116
|
+
const result = applyOffAction({
|
|
117
|
+
event: 'evt_off_change_order_status',
|
|
118
|
+
data: { orderId: order?.id, body: { status } }
|
|
119
|
+
})
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const dataToSave: any = !isNetConnected && canSaveChangesOffline !== false
|
|
123
|
+
? { dataToSave: { status, unsync: true } }
|
|
124
|
+
: null
|
|
125
|
+
const orderUpdated = await props.handleChangeOrderStatus(status, {}, dataToSave)
|
|
126
|
+
|
|
127
|
+
if (!isNetConnected && canSaveChangesOffline !== false) {
|
|
128
|
+
await registerOffOrder(orderUpdated)
|
|
129
|
+
}
|
|
130
|
+
}
|
|
115
131
|
|
|
116
132
|
const handleOpenMessagesForBusiness = () => {
|
|
117
133
|
setOpenModalForBusiness(true);
|
|
@@ -222,7 +238,13 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
222
238
|
? t('EAT_IN', 'Eat in')
|
|
223
239
|
: order.delivery_type === 4
|
|
224
240
|
? t('CURBSIDE', 'Curbside')
|
|
225
|
-
:
|
|
241
|
+
: order.delivery_type === 5
|
|
242
|
+
? t('DRIVER_THRU', 'Driver thru')
|
|
243
|
+
: order.delivery_type === 7
|
|
244
|
+
? t('CATERING_DELIVERY', 'Catering delivery')
|
|
245
|
+
: order.delivery_type === 8
|
|
246
|
+
? t('CATERING_PICKUP', 'Catering pickup')
|
|
247
|
+
: t('DELIVERY', 'Delivery')
|
|
226
248
|
}\n`
|
|
227
249
|
: '';
|
|
228
250
|
|
|
@@ -449,8 +471,10 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
449
471
|
let locationMarker: any;
|
|
450
472
|
let isToFollow = false;
|
|
451
473
|
let isBusinessMarker = false;
|
|
452
|
-
|
|
453
|
-
|
|
474
|
+
const customerStatusses = [3, 9, 19, 23, 26]
|
|
475
|
+
const businessStatusses = [7, 8, 18]
|
|
476
|
+
const arrivedCustomerStatusses = [9, 19, 23]
|
|
477
|
+
if (businessStatusses?.includes(order?.status)) {
|
|
454
478
|
const markerBusiness = 'Business';
|
|
455
479
|
isBusinessMarker = true;
|
|
456
480
|
locationMarker = locations.find(
|
|
@@ -460,7 +484,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
460
484
|
if (order?.status === 8 || order?.status === 18) {
|
|
461
485
|
isToFollow = true;
|
|
462
486
|
}
|
|
463
|
-
} else if (
|
|
487
|
+
} else if (customerStatusses?.includes(order?.status)) {
|
|
464
488
|
const markerCustomer = 'Customer';
|
|
465
489
|
isToFollow = true;
|
|
466
490
|
isBusinessMarker = false;
|
|
@@ -488,20 +512,35 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
488
512
|
isOrderGroup={isOrderGroup}
|
|
489
513
|
lastOrder={lastOrder}
|
|
490
514
|
/>
|
|
491
|
-
{(order?.status === 8 || order?.status === 18) && order?.delivery_type
|
|
515
|
+
{(order?.status === 8 || order?.status === 18) && deliveryTypes?.includes(order?.delivery_type) && !props.order?.loading && (
|
|
492
516
|
<Pickup>
|
|
493
517
|
<OButton
|
|
494
518
|
style={styles.btnPickUp}
|
|
495
519
|
textStyle={{ color: theme.colors.primary }}
|
|
496
520
|
text={t('ARRIVED_TO_BUSINESS', 'Arrived to bussiness')}
|
|
521
|
+
isDisabled={disabledActionsByInternet}
|
|
497
522
|
onClick={() =>
|
|
498
|
-
|
|
523
|
+
isGrantedPermissions ? handleChangeOrderStatus(3) : goToPermissionPage()
|
|
499
524
|
}
|
|
500
525
|
imgLeftStyle={{ tintColor: theme.colors.backArrow }}
|
|
501
526
|
/>
|
|
502
527
|
</Pickup>
|
|
503
528
|
)}
|
|
504
|
-
{order?.status
|
|
529
|
+
{arrivedCustomerStatusses.includes(order?.status) && deliveryTypes?.includes(order?.delivery_type) && !props.order?.loading && (
|
|
530
|
+
<View style={{ paddingVertical: 20, marginBottom: 20 }}>
|
|
531
|
+
<OButton
|
|
532
|
+
style={styles.btnPickUp}
|
|
533
|
+
textStyle={{ color: theme.colors.primary }}
|
|
534
|
+
text={t('ARRIVED_TO_CUSTOMER', 'Arrived to customer')}
|
|
535
|
+
isDisabled={disabledActionsByInternet}
|
|
536
|
+
onClick={() =>
|
|
537
|
+
isGrantedPermissions ? handleChangeOrderStatus(26) : goToPermissionPage()
|
|
538
|
+
}
|
|
539
|
+
imgLeftStyle={{ tintColor: theme.colors.backArrow }}
|
|
540
|
+
/>
|
|
541
|
+
</View>
|
|
542
|
+
)}
|
|
543
|
+
{order?.status === 3 && deliveryTypes?.includes(order?.delivery_type) && !isHideRejectButtons && isEnabledOrderNotReady && !props.order?.loading && (
|
|
505
544
|
<View style={{ paddingVertical: 20, marginBottom: 20 }}>
|
|
506
545
|
<OButton
|
|
507
546
|
style={styles.btnPickUp}
|
|
@@ -518,7 +557,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
518
557
|
<View
|
|
519
558
|
style={{
|
|
520
559
|
height:
|
|
521
|
-
order?.status === 8 && order?.delivery_type
|
|
560
|
+
order?.status === 8 && deliveryTypes?.includes(order?.delivery_type) ? 50 : 35,
|
|
522
561
|
}}
|
|
523
562
|
/>
|
|
524
563
|
|
|
@@ -546,8 +585,30 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
546
585
|
</View>
|
|
547
586
|
)}
|
|
548
587
|
{!((!order || Object.keys(order).length === 0) &&
|
|
549
|
-
(props.order?.error?.length < 1 || !props.order?.error)) && (
|
|
588
|
+
(props.order?.error?.length < 1 || !props.order?.error)) && order?.id && (
|
|
550
589
|
<View style={{ flex: 1 }}>
|
|
590
|
+
{order?.unsync && (
|
|
591
|
+
<View
|
|
592
|
+
style={{
|
|
593
|
+
flexDirection: 'row',
|
|
594
|
+
justifyContent: 'flex-start',
|
|
595
|
+
alignItems: 'center'
|
|
596
|
+
}}
|
|
597
|
+
>
|
|
598
|
+
<MCIcon
|
|
599
|
+
name={'cloud-sync'}
|
|
600
|
+
color={'#444'}
|
|
601
|
+
size={16}
|
|
602
|
+
/>
|
|
603
|
+
<OText
|
|
604
|
+
size={14}
|
|
605
|
+
color={theme.colors.textGray}
|
|
606
|
+
style={{ marginLeft: 5 }}
|
|
607
|
+
>
|
|
608
|
+
{t('PENDING_SYNC_CHANGES', 'Pending sync changes')}
|
|
609
|
+
</OText>
|
|
610
|
+
</View>
|
|
611
|
+
)}
|
|
551
612
|
<OrderHeaderComponent
|
|
552
613
|
order={order}
|
|
553
614
|
handleOpenMapView={handleOpenMapView}
|
|
@@ -571,11 +632,11 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
571
632
|
</OrderDetailsContainer>
|
|
572
633
|
{showFloatButtonsPickUp[order?.status] && (
|
|
573
634
|
<FloatingButton
|
|
574
|
-
disabled={props.order?.loading}
|
|
635
|
+
disabled={props.order?.loading || disabledActionsByInternet}
|
|
575
636
|
btnText={t('PICKUP_FAILED', 'Pickup failed')}
|
|
576
637
|
isSecondaryBtn={false}
|
|
577
638
|
secondButtonClick={() =>
|
|
578
|
-
|
|
639
|
+
isGrantedPermissions ? handleChangeOrderStatus(9) : goToPermissionPage()
|
|
579
640
|
}
|
|
580
641
|
firstButtonClick={() =>
|
|
581
642
|
handleViewActionOrder && handleViewActionOrder('pickupFailed')
|
|
@@ -588,40 +649,48 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
588
649
|
isHideRejectButtons={isHideRejectButtons || !isEnabledFailedPickupDriver}
|
|
589
650
|
/>
|
|
590
651
|
)}
|
|
591
|
-
{(validStatusComplete.includes(order?.status)) && (
|
|
652
|
+
{(validStatusComplete.includes(order?.status)) && !(isDelosiProject && order?.status !== 26 && isHideRejectButtons) && (
|
|
592
653
|
<>
|
|
593
654
|
<FloatingButton
|
|
594
|
-
disabled={props.order?.loading}
|
|
655
|
+
disabled={props.order?.loading || disabledActionsByInternet}
|
|
595
656
|
btnText={t('DELIVERY_FAILED', 'Delivery Failed')}
|
|
596
657
|
isSecondaryBtn={false}
|
|
597
658
|
secondButtonClick={() =>
|
|
598
|
-
|
|
659
|
+
isGrantedPermissions ? handleChangeOrderStatus(11) : goToPermissionPage()
|
|
599
660
|
}
|
|
600
661
|
firstButtonClick={() =>
|
|
601
662
|
handleViewActionOrder && handleViewActionOrder('deliveryFailed')
|
|
602
663
|
}
|
|
603
664
|
secondBtnText={t('DELIVERY_COMPLETE', 'Delivery complete')}
|
|
604
|
-
secondButton={true}
|
|
665
|
+
secondButton={isDelosiProject ? order?.status === 26 : true}
|
|
605
666
|
firstColorCustom={theme.colors.red}
|
|
667
|
+
principalButtonColor={theme.colors.red}
|
|
606
668
|
secondColorCustom={theme.colors.green}
|
|
607
|
-
widthButton={isHideRejectButtons ? '100%' : '45%'}
|
|
669
|
+
widthButton={isHideRejectButtons || (isDelosiProject && order?.status !== 26) ? '100%' : '45%'}
|
|
608
670
|
isHideRejectButtons={isHideRejectButtons}
|
|
609
671
|
/>
|
|
610
672
|
</>
|
|
611
673
|
)}
|
|
612
674
|
{showFloatButtonsAcceptOrReject[order?.status] && (
|
|
613
675
|
<FloatingButton
|
|
614
|
-
disabled={props.order?.loading}
|
|
676
|
+
disabled={props.order?.loading || disabledActionsByInternet}
|
|
677
|
+
widthButton={isHideRejectButtons ? '100%' : '45%'}
|
|
678
|
+
isHideRejectButtons={isHideRejectButtons}
|
|
615
679
|
btnText={t('REJECT', 'Reject')}
|
|
680
|
+
firstColorCustom={theme.colors.red}
|
|
681
|
+
firstButtonClick={() => order?.isLogistic && (order?.order_group || logisticOrderStatus.includes(order?.status))
|
|
682
|
+
? handleRejectLogisticOrder()
|
|
683
|
+
: handleViewActionOrder('reject')
|
|
684
|
+
}
|
|
616
685
|
isSecondaryBtn={false}
|
|
617
|
-
secondButtonClick={() => hideTimer ? handleChangeOrderStatus && handleChangeOrderStatus(8) : (order?.isLogistic && (order?.order_group || logisticOrderStatus.includes(order?.status))) ? handleAcceptLogisticOrder(order) : handleViewActionOrder('accept')}
|
|
618
|
-
firstButtonClick={() => order?.isLogistic && (order?.order_group || logisticOrderStatus.includes(order?.status)) ? handleRejectLogisticOrder() : handleViewActionOrder('reject')}
|
|
619
|
-
secondBtnText={t('ACCEPT', 'Accept')}
|
|
620
686
|
secondButton={true}
|
|
621
|
-
|
|
687
|
+
secondBtnText={t('ACCEPT', 'Accept')}
|
|
688
|
+
secondButtonClick={() => hideTimer
|
|
689
|
+
? handleChangeOrderStatus(8)
|
|
690
|
+
: (order?.isLogistic && (order?.order_group || logisticOrderStatus.includes(order?.status)))
|
|
691
|
+
? handleAcceptLogisticOrder(order)
|
|
692
|
+
: handleViewActionOrder('accept')}
|
|
622
693
|
secondColorCustom={theme.colors.green}
|
|
623
|
-
widthButton={isHideRejectButtons ? '100%' : '45%'}
|
|
624
|
-
isHideRejectButtons={isHideRejectButtons}
|
|
625
694
|
/>
|
|
626
695
|
)}
|
|
627
696
|
</>
|
|
@@ -676,7 +745,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
|
|
|
676
745
|
entireModal
|
|
677
746
|
customClose>
|
|
678
747
|
<AcceptOrRejectOrder
|
|
679
|
-
handleUpdateOrder={handleChangeOrderStatus}
|
|
748
|
+
handleUpdateOrder={props.handleChangeOrderStatus}
|
|
680
749
|
closeModal={setOpenModalForAccept}
|
|
681
750
|
customerCellphone={order?.customer?.cellphone}
|
|
682
751
|
loading={props.order?.loading}
|