ordering-ui-react-native 0.22.51 → 0.22.52-release
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +5 -7
- package/src/DeliveryApp.tsx +1 -1
- package/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/Checkout/index.tsx +40 -39
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/context/OfflineActions/index.tsx +236 -0
- package/src/providers/AlertProvider.tsx +3 -1
- package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
- package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
- package/themes/business/src/components/BusinessController/index.tsx +8 -3
- package/themes/business/src/components/BusinessProductList/index.tsx +3 -2
- package/themes/business/src/components/Chat/index.tsx +15 -3
- package/themes/business/src/components/DriverMap/index.tsx +44 -33
- package/themes/business/src/components/FloatingButton/index.tsx +3 -2
- package/themes/business/src/components/LanguageSelector/index.tsx +1 -1
- package/themes/business/src/components/LoginForm/index.tsx +123 -98
- package/themes/business/src/components/LogoutButton/index.tsx +13 -4
- package/themes/business/src/components/MapView/index.tsx +42 -25
- package/themes/business/src/components/NewOrderNotification/index.tsx +37 -18
- package/themes/business/src/components/OrderDetails/Business.tsx +56 -20
- package/themes/business/src/components/OrderDetails/Delivery.tsx +134 -53
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +155 -45
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +51 -28
- package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
- package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +17 -16
- package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
- package/themes/business/src/components/OrderSummary/index.tsx +271 -176
- package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
- package/themes/business/src/components/OrdersOption/index.tsx +345 -231
- package/themes/business/src/components/OrdersOption/styles.tsx +14 -0
- package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
- package/themes/business/src/components/PreviousOrders/OrderItem.tsx +30 -18
- package/themes/business/src/components/PreviousOrders/index.tsx +74 -66
- package/themes/business/src/components/PreviousOrders/styles.tsx +2 -1
- package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
- package/themes/business/src/components/PrinterEdition/index.tsx +143 -75
- package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
- package/themes/business/src/components/PrinterSettings/index.tsx +1 -1
- package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
- package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
- package/themes/business/src/components/StoresList/index.tsx +2 -2
- package/themes/business/src/components/UserProfileForm/index.tsx +48 -10
- package/themes/business/src/components/UserProfileForm/styles.tsx +7 -0
- package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
- package/themes/business/src/components/shared/OTextarea.tsx +8 -9
- package/themes/business/src/config/currency.tsx +1010 -0
- package/themes/business/src/hooks/useLocation.tsx +16 -12
- package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
- package/themes/business/src/types/index.tsx +22 -7
- package/themes/business/src/utils/index.tsx +28 -3
- package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
- package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
- package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
- package/themes/kiosk/src/components/Checkout/index.tsx +9 -5
- package/themes/kiosk/src/components/CustomerName/index.tsx +1 -1
- package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
- package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
- package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
- package/themes/kiosk/src/components/PaymentOptions/index.tsx +121 -57
- package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
- package/themes/original/index.tsx +9 -1
- package/themes/original/src/components/AddressForm/index.tsx +19 -19
- package/themes/original/src/components/AddressList/index.tsx +0 -13
- package/themes/original/src/components/AppleLogin/index.tsx +4 -4
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +1 -1
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +14 -6
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +103 -92
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +8 -6
- package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
- package/themes/original/src/components/BusinessPreorder/index.tsx +46 -30
- package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +73 -70
- package/themes/original/src/components/BusinessProductsList/index.tsx +6 -7
- package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
- package/themes/original/src/components/BusinessProductsListing/index.tsx +10 -6
- package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
- package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
- package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
- package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
- package/themes/original/src/components/Cart/index.tsx +49 -15
- package/themes/original/src/components/CartContent/index.tsx +2 -4
- package/themes/original/src/components/Checkout/index.tsx +109 -88
- 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 -10
- package/themes/original/src/components/FavoriteList/index.tsx +0 -1
- package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -12
- 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 +0 -5
- package/themes/original/src/components/HelpAccountAndPayment/index.tsx +0 -5
- package/themes/original/src/components/HelpGuide/index.tsx +0 -5
- package/themes/original/src/components/HelpOrder/index.tsx +0 -5
- package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
- package/themes/original/src/components/Home/index.tsx +35 -19
- package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
- package/themes/original/src/components/LoginForm/index.tsx +12 -14
- package/themes/original/src/components/MessageListing/index.tsx +1 -6
- package/themes/original/src/components/Messages/index.tsx +20 -13
- package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
- package/themes/original/src/components/MomentOption/index.tsx +73 -59
- package/themes/original/src/components/MomentSelector/index.tsx +5 -2
- package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +1 -0
- package/themes/original/src/components/MultiCheckout/index.tsx +55 -27
- package/themes/original/src/components/MultiOrdersDetails/index.tsx +1 -0
- package/themes/original/src/components/MyOrders/index.tsx +2 -7
- package/themes/original/src/components/NavBar/index.tsx +7 -6
- 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/Notifications/index.tsx +0 -5
- package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
- package/themes/original/src/components/OrderDetails/OrderHistory.tsx +16 -11
- package/themes/original/src/components/OrderDetails/index.tsx +44 -21
- package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
- package/themes/original/src/components/OrderProgress/index.tsx +4 -3
- package/themes/original/src/components/OrderSummary/index.tsx +32 -11
- package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -11
- package/themes/original/src/components/OrdersOption/index.tsx +3 -6
- package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
- package/themes/original/src/components/PaymentOptions/index.tsx +462 -461
- package/themes/original/src/components/PhoneInputNumber/index.tsx +92 -7
- package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
- package/themes/original/src/components/PreviousOrders/index.tsx +1 -4
- package/themes/original/src/components/ProductForm/ActionButton.tsx +7 -12
- package/themes/original/src/components/ProductItemAccordion/index.tsx +28 -37
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
- package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
- package/themes/original/src/components/Promotions/index.tsx +2 -7
- package/themes/original/src/components/ReviewDriver/index.tsx +1 -6
- package/themes/original/src/components/ReviewOrder/index.tsx +2 -7
- package/themes/original/src/components/ReviewProducts/index.tsx +1 -6
- package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
- package/themes/original/src/components/ServiceForm/index.tsx +53 -55
- package/themes/original/src/components/Sessions/index.tsx +3 -8
- package/themes/original/src/components/SignupForm/index.tsx +44 -37
- package/themes/original/src/components/SingleOrderCard/index.tsx +7 -5
- 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 +16 -3
- package/themes/original/src/components/StripeElementsForm/index.tsx +6 -4
- package/themes/original/src/components/StripeElementsForm/naked.tsx +1 -1
- package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
- package/themes/original/src/components/TaxInformation/index.tsx +3 -2
- package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +8 -5
- package/themes/original/src/components/UserDetails/index.tsx +17 -16
- package/themes/original/src/components/UserFormDetails/index.tsx +113 -73
- package/themes/original/src/components/UserProfile/index.tsx +9 -1
- package/themes/original/src/components/UserProfileForm/index.tsx +0 -5
- package/themes/original/src/components/UserVerification/index.tsx +18 -5
- package/themes/original/src/components/Wallets/index.tsx +1 -3
- package/themes/original/src/components/WebsocketStatus/index.tsx +1 -4
- package/themes/original/src/components/shared/OAlert.tsx +2 -1
- package/themes/original/src/components/shared/OButton.tsx +5 -4
- package/themes/original/src/components/shared/OInput.tsx +4 -8
- package/themes/original/src/components/shared/OModal.tsx +7 -2
- package/themes/original/src/types/index.tsx +12 -4
- package/themes/original/src/utils/index.tsx +29 -0
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useState, useEffect, useRef, useCallback } from 'react';
|
|
2
|
-
import { Dimensions, SafeAreaView, StyleSheet, View } from 'react-native';
|
|
2
|
+
import { Dimensions, Platform, SafeAreaView, StyleSheet, View } from 'react-native';
|
|
3
3
|
import { useFocusEffect } from '@react-navigation/native'
|
|
4
4
|
import MapView, {
|
|
5
5
|
PROVIDER_GOOGLE,
|
|
@@ -24,6 +24,7 @@ const MapViewComponent = (props: MapViewParams) => {
|
|
|
24
24
|
setDriverLocation,
|
|
25
25
|
onNavigationRedirect,
|
|
26
26
|
getBusinessLocations,
|
|
27
|
+
isDeliveryApp
|
|
27
28
|
} = props;
|
|
28
29
|
|
|
29
30
|
const theme = useTheme();
|
|
@@ -53,19 +54,23 @@ const MapViewComponent = (props: MapViewParams) => {
|
|
|
53
54
|
|
|
54
55
|
const fitCoordinates = (location?: any) => {
|
|
55
56
|
if (mapRef.current) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
57
|
+
const isSendCoordinates =
|
|
58
|
+
location &&
|
|
59
|
+
userLocation &&
|
|
60
|
+
location.latitude !== userLocation.latitude &&
|
|
61
|
+
location.longitude !== userLocation.longitude &&
|
|
62
|
+
location.latitude !== 0 &&
|
|
63
|
+
location.longitude !== 0 &&
|
|
64
|
+
userLocation.latitude !== 0 &&
|
|
65
|
+
userLocation.longitude !== 0
|
|
66
|
+
|
|
67
|
+
isSendCoordinates && mapRef.current.fitToCoordinates(
|
|
68
|
+
[location, userLocation].map(_location => ({
|
|
69
|
+
latitude: _location.latitude,
|
|
70
|
+
longitude: _location.longitude
|
|
71
|
+
})),
|
|
67
72
|
{
|
|
68
|
-
edgePadding: { top: 120, right: 120, bottom: 120, left: 120 }
|
|
73
|
+
edgePadding: { top: 120, right: 120, bottom: 120, left: 120 }
|
|
69
74
|
},
|
|
70
75
|
);
|
|
71
76
|
}
|
|
@@ -136,8 +141,20 @@ const MapViewComponent = (props: MapViewParams) => {
|
|
|
136
141
|
const RenderMarker = ({ marker, customer, orderIds }: { marker: any, customer?: boolean, orderIds?: Array<number> }) => {
|
|
137
142
|
const markerRef = useRef<any>()
|
|
138
143
|
|
|
139
|
-
let coordinateLat = (customer
|
|
140
|
-
|
|
144
|
+
let coordinateLat = (customer
|
|
145
|
+
? typeof marker?.customer?.location?.lat === 'number' && !Number.isNaN(marker?.customer?.location?.lat)
|
|
146
|
+
? marker?.customer?.location?.lat
|
|
147
|
+
: 0
|
|
148
|
+
: typeof marker?.business?.location?.lat === 'number' && !Number.isNaN(marker?.business?.location?.lat)
|
|
149
|
+
? marker?.business?.location?.lat
|
|
150
|
+
: 0) ?? (initialPosition?.latitude || 0)
|
|
151
|
+
let coordinateLng = (customer
|
|
152
|
+
? typeof marker?.customer?.location?.lng === 'number' && !Number.isNaN(marker?.customer?.location?.lng)
|
|
153
|
+
? marker?.customer?.location?.lng
|
|
154
|
+
: 0
|
|
155
|
+
: typeof marker?.business?.location?.lng === 'number' && !Number.isNaN(marker?.business?.location?.lng)
|
|
156
|
+
? marker?.business?.location?.lng
|
|
157
|
+
: 0) ?? (initialPosition?.longitude || 0)
|
|
141
158
|
|
|
142
159
|
useEffect(() => {
|
|
143
160
|
if (
|
|
@@ -157,11 +174,11 @@ const MapViewComponent = (props: MapViewParams) => {
|
|
|
157
174
|
}}
|
|
158
175
|
onPress={() =>
|
|
159
176
|
setLocationSelected({
|
|
160
|
-
latitude:
|
|
161
|
-
longitude:
|
|
177
|
+
latitude: coordinateLat,
|
|
178
|
+
longitude: coordinateLng
|
|
162
179
|
})
|
|
163
180
|
}
|
|
164
|
-
ref={(ref) => markerRef.current = ref}
|
|
181
|
+
ref={(ref: any) => markerRef.current = ref}
|
|
165
182
|
>
|
|
166
183
|
<Icon
|
|
167
184
|
name="map-marker"
|
|
@@ -234,22 +251,22 @@ const MapViewComponent = (props: MapViewParams) => {
|
|
|
234
251
|
return (
|
|
235
252
|
<SafeAreaView style={{ flex: 1 }}>
|
|
236
253
|
<View style={{ flex: 1 }}>
|
|
237
|
-
{!isLoadingBusinessMarkers && isFocused && (
|
|
254
|
+
{(isDeliveryApp || (!isLoadingBusinessMarkers && isFocused)) && (
|
|
238
255
|
<View style={{ flex: 1 }}>
|
|
239
256
|
<MapView
|
|
240
257
|
ref={mapRef}
|
|
241
258
|
provider={PROVIDER_GOOGLE}
|
|
242
259
|
initialRegion={{
|
|
243
|
-
latitude: initialPosition?.latitude,
|
|
244
|
-
longitude: initialPosition?.longitude,
|
|
260
|
+
latitude: initialPosition?.latitude || 0,
|
|
261
|
+
longitude: initialPosition?.longitude || 0,
|
|
245
262
|
latitudeDelta: haveOrders ? 0.01 : 0.1,
|
|
246
263
|
longitudeDelta: haveOrders ? 0.01 * ASPECT_RATIO : 0.1 * ASPECT_RATIO,
|
|
247
264
|
}}
|
|
248
265
|
style={{ flex: 1 }}
|
|
249
266
|
zoomTapEnabled
|
|
250
267
|
zoomEnabled
|
|
251
|
-
zoomControlEnabled
|
|
252
|
-
cacheEnabled
|
|
268
|
+
zoomControlEnabled={!(isDeliveryApp && Platform.OS === 'android')}
|
|
269
|
+
cacheEnabled={(isDeliveryApp && Platform.OS === 'android' && isFocused) || Platform.OS === 'ios' || !isDeliveryApp}
|
|
253
270
|
moveOnMarkerPress
|
|
254
271
|
onTouchStart={() => (following.current = false)}
|
|
255
272
|
>
|
|
@@ -271,8 +288,8 @@ const MapViewComponent = (props: MapViewParams) => {
|
|
|
271
288
|
))}
|
|
272
289
|
<Marker
|
|
273
290
|
coordinate={{
|
|
274
|
-
latitude: location.lat,
|
|
275
|
-
longitude: location.lng,
|
|
291
|
+
latitude: typeof location.lat === 'number' && !Number.isNaN(location.lat) ? location.lat : 0,
|
|
292
|
+
longitude: typeof location.lng === 'number' && !Number.isNaN(location.lng) ? location.lng : 0,
|
|
276
293
|
}}
|
|
277
294
|
title={t('YOUR_LOCATION', 'Your Location')}
|
|
278
295
|
>
|
|
@@ -44,17 +44,25 @@ const SoundPlayerComponent = (props: any) => {
|
|
|
44
44
|
const id = setInterval(() => setCount(count + 1), 2500)
|
|
45
45
|
|
|
46
46
|
const playSound = async () => {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
try {
|
|
48
|
+
SoundPlayer.playUrl(URL_SOUND)
|
|
49
|
+
await new Promise(resolve => setTimeout(resolve, DELAY_SOUND))
|
|
50
|
+
SoundPlayer.stop()
|
|
51
|
+
} catch (err: any) {
|
|
52
|
+
console.log('Sound Error - ', err.message)
|
|
53
|
+
}
|
|
50
54
|
}
|
|
51
55
|
if (NativeModules?.RNSoundPlayer?.playUrl && typeof URL_SOUND === 'string' && isEnabledReadStorage) {
|
|
52
56
|
playSound()
|
|
53
57
|
}
|
|
54
58
|
|
|
55
59
|
return () => {
|
|
56
|
-
SoundPlayer.stop()
|
|
57
60
|
clearInterval(id);
|
|
61
|
+
try {
|
|
62
|
+
SoundPlayer.stop()
|
|
63
|
+
} catch (err: any) {
|
|
64
|
+
console.log('Sound Error - ', err.message)
|
|
65
|
+
}
|
|
58
66
|
}
|
|
59
67
|
}, [count, isEnabledReadStorage])
|
|
60
68
|
|
|
@@ -132,7 +140,8 @@ const NewOrderNotificationUI = (props: any) => {
|
|
|
132
140
|
location: JSON.stringify({
|
|
133
141
|
location: `{
|
|
134
142
|
lat: ${location.latitude},
|
|
135
|
-
lng: ${location.longitude}
|
|
143
|
+
lng: ${location.longitude},
|
|
144
|
+
mock: ${location.mocked}
|
|
136
145
|
}`
|
|
137
146
|
})
|
|
138
147
|
}),
|
|
@@ -144,11 +153,11 @@ const NewOrderNotificationUI = (props: any) => {
|
|
|
144
153
|
} catch { }
|
|
145
154
|
const duration = moment.duration(moment().diff(moment.utc(value?.last_driver_assigned_at)))
|
|
146
155
|
const assignedSecondsDiff = duration.asSeconds()
|
|
147
|
-
if (assignedSecondsDiff < 5 && !isBusinessApp && !value?.logistic_status
|
|
156
|
+
if (assignedSecondsDiff < 5 && !isBusinessApp && !value?.logistic_status) {
|
|
148
157
|
setCurrentEvent({ evt: 2, orderId: value?.id ?? value?.order_id })
|
|
149
158
|
}
|
|
150
159
|
}
|
|
151
|
-
if (!orderStatus.includes(value.status) || value?.author_id === user.id) return
|
|
160
|
+
if ((!orderStatus.includes(value.status) && evtType !== 1 && isBusinessApp && orderStatus?.length > 0) || value?.author_id === user.id) return
|
|
152
161
|
setCurrentEvent({
|
|
153
162
|
evt: evtType,
|
|
154
163
|
orderId: value?.driver
|
|
@@ -160,20 +169,30 @@ const NewOrderNotificationUI = (props: any) => {
|
|
|
160
169
|
}
|
|
161
170
|
|
|
162
171
|
useEffect(() => {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
172
|
+
const handleEventTypeOne = (o: any) => {
|
|
173
|
+
handleEventNotification(1, o, orderStatus)
|
|
174
|
+
}
|
|
175
|
+
const handleEventTypeTwo = (o: any) => {
|
|
176
|
+
handleEventNotification(2, o, orderStatus)
|
|
177
|
+
}
|
|
178
|
+
const handleEventTypeThree = (o: any) => {
|
|
179
|
+
handleEventNotification(3, o, orderStatus)
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
events.on('message_added_notification', handleEventTypeOne)
|
|
183
|
+
events.on('order_added_notification', handleEventTypeTwo)
|
|
184
|
+
events.on('order_updated_notification', handleEventTypeThree)
|
|
185
|
+
events.on('request_register_notification', handleEventTypeTwo)
|
|
186
|
+
events.on('request_update_notification', handleEventTypeThree)
|
|
168
187
|
|
|
169
188
|
return () => {
|
|
170
|
-
events.off('message_added_notification',
|
|
171
|
-
events.off('order_added_notification',
|
|
172
|
-
events.off('order_updated_notification',
|
|
173
|
-
events.off('request_register_notification',
|
|
174
|
-
events.off('request_update_notification',
|
|
189
|
+
events.off('message_added_notification', handleEventTypeOne)
|
|
190
|
+
events.off('order_added_notification', handleEventTypeTwo)
|
|
191
|
+
events.off('order_updated_notification', handleEventTypeThree)
|
|
192
|
+
events.off('request_register_notification', handleEventTypeTwo)
|
|
193
|
+
events.off('request_update_notification', handleEventTypeThree)
|
|
175
194
|
}
|
|
176
|
-
}, [orderStatus])
|
|
195
|
+
}, [orderStatus, events])
|
|
177
196
|
|
|
178
197
|
useEffect(() => {
|
|
179
198
|
return () => setCurrentEvent(null)
|
|
@@ -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}
|