ordering-ui-react-native 0.22.50 → 0.22.51-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.
Files changed (164) hide show
  1. package/package.json +6 -8
  2. package/src/DeliveryApp.tsx +1 -1
  3. package/src/components/BusinessesListing/index.tsx +1 -1
  4. package/src/components/Checkout/index.tsx +40 -39
  5. package/src/components/VerifyPhone/styles.tsx +1 -2
  6. package/src/context/OfflineActions/index.tsx +236 -0
  7. package/src/providers/AlertProvider.tsx +3 -1
  8. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
  9. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
  10. package/themes/business/src/components/BusinessController/index.tsx +8 -3
  11. package/themes/business/src/components/BusinessProductList/index.tsx +3 -2
  12. package/themes/business/src/components/Chat/index.tsx +15 -3
  13. package/themes/business/src/components/DriverMap/index.tsx +44 -33
  14. package/themes/business/src/components/FloatingButton/index.tsx +3 -2
  15. package/themes/business/src/components/LanguageSelector/index.tsx +1 -1
  16. package/themes/business/src/components/LoginForm/index.tsx +123 -98
  17. package/themes/business/src/components/LogoutButton/index.tsx +13 -4
  18. package/themes/business/src/components/MapView/index.tsx +42 -25
  19. package/themes/business/src/components/NewOrderNotification/index.tsx +37 -18
  20. package/themes/business/src/components/OrderDetails/Business.tsx +56 -20
  21. package/themes/business/src/components/OrderDetails/Delivery.tsx +134 -53
  22. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +155 -45
  23. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +51 -28
  24. package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
  25. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +17 -16
  26. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
  27. package/themes/business/src/components/OrderSummary/index.tsx +271 -176
  28. package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
  29. package/themes/business/src/components/OrdersOption/index.tsx +332 -231
  30. package/themes/business/src/components/OrdersOption/styles.tsx +14 -0
  31. package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
  32. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +30 -18
  33. package/themes/business/src/components/PreviousOrders/index.tsx +74 -66
  34. package/themes/business/src/components/PreviousOrders/styles.tsx +2 -1
  35. package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
  36. package/themes/business/src/components/PrinterEdition/index.tsx +143 -75
  37. package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
  38. package/themes/business/src/components/PrinterSettings/index.tsx +1 -1
  39. package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
  40. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  41. package/themes/business/src/components/StoresList/index.tsx +2 -2
  42. package/themes/business/src/components/UserProfileForm/index.tsx +48 -10
  43. package/themes/business/src/components/UserProfileForm/styles.tsx +7 -0
  44. package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
  45. package/themes/business/src/components/shared/OTextarea.tsx +8 -9
  46. package/themes/business/src/config/currency.tsx +1010 -0
  47. package/themes/business/src/hooks/useLocation.tsx +16 -12
  48. package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
  49. package/themes/business/src/types/index.tsx +22 -7
  50. package/themes/business/src/utils/index.tsx +28 -3
  51. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  52. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  53. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  54. package/themes/kiosk/src/components/Checkout/index.tsx +9 -5
  55. package/themes/kiosk/src/components/CustomerName/index.tsx +1 -1
  56. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  57. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  58. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  59. package/themes/kiosk/src/components/PaymentOptions/index.tsx +121 -57
  60. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  61. package/themes/original/index.tsx +9 -1
  62. package/themes/original/src/components/AddressForm/index.tsx +19 -19
  63. package/themes/original/src/components/AddressList/index.tsx +0 -13
  64. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  65. package/themes/original/src/components/BusinessBasicInformation/index.tsx +1 -1
  66. package/themes/original/src/components/BusinessItemAccordion/index.tsx +14 -6
  67. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +103 -92
  68. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +8 -6
  69. package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
  70. package/themes/original/src/components/BusinessPreorder/index.tsx +46 -30
  71. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +73 -70
  72. package/themes/original/src/components/BusinessProductsList/index.tsx +6 -7
  73. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  74. package/themes/original/src/components/BusinessProductsListing/index.tsx +10 -6
  75. package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
  76. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
  77. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
  78. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  79. package/themes/original/src/components/Cart/index.tsx +49 -15
  80. package/themes/original/src/components/CartContent/index.tsx +2 -4
  81. package/themes/original/src/components/Checkout/index.tsx +109 -88
  82. package/themes/original/src/components/CitiesControl/index.tsx +0 -3
  83. package/themes/original/src/components/CouponControl/index.tsx +1 -3
  84. package/themes/original/src/components/DriverTips/index.tsx +1 -3
  85. package/themes/original/src/components/Favorite/index.tsx +1 -10
  86. package/themes/original/src/components/FavoriteList/index.tsx +0 -1
  87. package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -12
  88. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +15 -17
  89. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +3 -7
  90. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +24 -32
  91. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +7 -9
  92. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +11 -12
  93. package/themes/original/src/components/GoogleMap/index.tsx +39 -18
  94. package/themes/original/src/components/Help/index.tsx +0 -5
  95. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +0 -5
  96. package/themes/original/src/components/HelpGuide/index.tsx +0 -5
  97. package/themes/original/src/components/HelpOrder/index.tsx +0 -5
  98. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
  99. package/themes/original/src/components/Home/index.tsx +35 -19
  100. package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
  101. package/themes/original/src/components/LoginForm/index.tsx +12 -14
  102. package/themes/original/src/components/MessageListing/index.tsx +1 -6
  103. package/themes/original/src/components/Messages/index.tsx +20 -13
  104. package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
  105. package/themes/original/src/components/MomentOption/index.tsx +73 -59
  106. package/themes/original/src/components/MomentSelector/index.tsx +5 -2
  107. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -4
  108. package/themes/original/src/components/MultiCheckout/index.tsx +55 -27
  109. package/themes/original/src/components/MultiOrdersDetails/index.tsx +1 -0
  110. package/themes/original/src/components/MyOrders/index.tsx +2 -7
  111. package/themes/original/src/components/NavBar/index.tsx +7 -6
  112. package/themes/original/src/components/NetworkError/index.tsx +0 -5
  113. package/themes/original/src/components/NotFoundSource/index.tsx +0 -3
  114. package/themes/original/src/components/Notifications/index.tsx +0 -5
  115. package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
  116. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +16 -11
  117. package/themes/original/src/components/OrderDetails/index.tsx +44 -21
  118. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  119. package/themes/original/src/components/OrderProgress/index.tsx +4 -3
  120. package/themes/original/src/components/OrderSummary/index.tsx +32 -11
  121. package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -11
  122. package/themes/original/src/components/OrdersOption/index.tsx +3 -6
  123. package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
  124. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  125. package/themes/original/src/components/PaymentOptions/index.tsx +462 -461
  126. package/themes/original/src/components/PhoneInputNumber/index.tsx +92 -7
  127. package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
  128. package/themes/original/src/components/PreviousOrders/index.tsx +1 -4
  129. package/themes/original/src/components/ProductForm/ActionButton.tsx +7 -12
  130. package/themes/original/src/components/ProductItemAccordion/index.tsx +28 -37
  131. package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
  132. package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
  133. package/themes/original/src/components/Promotions/index.tsx +2 -7
  134. package/themes/original/src/components/ReviewDriver/index.tsx +1 -6
  135. package/themes/original/src/components/ReviewOrder/index.tsx +2 -7
  136. package/themes/original/src/components/ReviewProducts/index.tsx +1 -6
  137. package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
  138. package/themes/original/src/components/ServiceForm/index.tsx +53 -55
  139. package/themes/original/src/components/Sessions/index.tsx +3 -8
  140. package/themes/original/src/components/SignupForm/index.tsx +44 -37
  141. package/themes/original/src/components/SingleOrderCard/index.tsx +7 -5
  142. package/themes/original/src/components/SingleProductCard/index.tsx +3 -4
  143. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  144. package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
  145. package/themes/original/src/components/StripeCardsList/index.tsx +16 -3
  146. package/themes/original/src/components/StripeElementsForm/index.tsx +8 -4
  147. package/themes/original/src/components/StripeElementsForm/naked.tsx +1 -1
  148. package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
  149. package/themes/original/src/components/TaxInformation/index.tsx +3 -2
  150. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +8 -5
  151. package/themes/original/src/components/UserDetails/index.tsx +17 -16
  152. package/themes/original/src/components/UserFormDetails/index.tsx +113 -73
  153. package/themes/original/src/components/UserProfile/index.tsx +9 -1
  154. package/themes/original/src/components/UserProfileForm/index.tsx +0 -5
  155. package/themes/original/src/components/UserVerification/index.tsx +18 -5
  156. package/themes/original/src/components/Wallets/index.tsx +1 -3
  157. package/themes/original/src/components/WebsocketStatus/index.tsx +1 -4
  158. package/themes/original/src/components/shared/OAlert.tsx +2 -1
  159. package/themes/original/src/components/shared/OButton.tsx +5 -4
  160. package/themes/original/src/components/shared/OInput.tsx +4 -8
  161. package/themes/original/src/components/shared/OModal.tsx +7 -2
  162. package/themes/original/src/types/index.tsx +12 -4
  163. package/themes/original/src/utils/index.tsx +29 -0
  164. 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
- mapRef.current.fitToCoordinates(
57
- [
58
- {
59
- latitude: typeof location?.latitude !== 'object' ? location?.latitude : 0,
60
- longitude: typeof location?.longitude !== 'object' ? location?.latitude : 0
61
- },
62
- {
63
- latitude: typeof userLocation?.latitude !== 'object' ? userLocation?.latitude : 0,
64
- longitude: typeof userLocation?.longitude !== 'object' ? userLocation?.latitude : 0
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 ? marker?.customer?.location?.lat || 0 : marker?.business?.location?.lat || 0) ?? (initialPosition?.latitude || 0)
140
- let coordinateLng = (customer ? marker?.customer?.location?.lng || 0 : marker?.business?.location?.lng || 0) ?? (initialPosition?.longitude || 0)
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: customer ? marker?.customer?.location?.lat : marker?.business?.location?.lat,
161
- longitude: customer ? marker?.customer?.location?.lng : marker?.business?.location?.lng
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
- SoundPlayer.playUrl(URL_SOUND)
48
- await new Promise(resolve => setTimeout(resolve, DELAY_SOUND))
49
- SoundPlayer.stop()
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 && orderStatus.includes(value.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
- events.on('message_added_notification', (o: any) => handleEventNotification(1, o, orderStatus))
164
- events.on('order_added_notification', (o: any) => handleEventNotification(2, o, orderStatus))
165
- events.on('order_updated_notification', (o: any) => handleEventNotification(3, o, orderStatus))
166
- events.on('request_register_notification', (o: any) => handleEventNotification(2, o, orderStatus))
167
- events.on('request_update_notification', (o: any) => handleEventNotification(3, o, orderStatus))
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', (o: any) => handleEventNotification(1, o))
171
- events.off('order_added_notification', (o: any) => handleEventNotification(2, o))
172
- events.off('order_updated_notification', (o: any) => handleEventNotification(3, o))
173
- events.off('request_register_notification', (o: any) => handleEventNotification(2, o))
174
- events.off('request_update_notification', (o: any) => handleEventNotification(3, o))
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
- : t('DRIVER_THRU', 'Driver thru')
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 ?? t('CUSTOMER', 'Customer'),
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
- const printers = await _retrieveStoreData('printers')
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 === 1 && configs?.assign_driver_enabled?.value === '1' && (
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 === 7 && (
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) && ![1].includes(order?.delivery_type) && (
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
- 'PICKUP_COMPLETED_BY_CUSTOMER',
707
+ 'ORDER_PICKUP_COMPLETED_BY_CUSTOMER',
672
708
  'Pickup completed by customer',
673
709
  )}
674
710
  secondButton={true}