ordering-ui-react-native 0.22.48 → 0.22.49-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 +38 -19
  20. package/themes/business/src/components/OrderDetails/Business.tsx +88 -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 -28
  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 +52 -54
  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
 
@@ -67,7 +75,7 @@ const SoundPlayerComponent = (props: any) => {
67
75
  setIsEnabledReadStorage(true)
68
76
  }
69
77
  }
70
- checkSoundMedia()
78
+ // checkSoundMedia()
71
79
 
72
80
  }, [])
73
81
  return (
@@ -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';
@@ -39,6 +38,7 @@ import { OrderHeaderComponent } from './OrderHeaderComponent';
39
38
  import { OrderContentComponent } from './OrderContentComponent';
40
39
  import { _retrieveStoreData } from '../../providers/StoreUtil'
41
40
  import { usePrinterCommands } from './usePrinterCommands'
41
+ import Alert from '../../../../../src/providers/AlertProvider'
42
42
 
43
43
  export const OrderDetailsUI = (props: OrderDetailsParams) => {
44
44
  const {
@@ -53,6 +53,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
53
53
  actions,
54
54
  orderTitle,
55
55
  appTitle,
56
+ loadMessages,
57
+ notificationApp
56
58
  } = props;
57
59
 
58
60
  const theme = useTheme();
@@ -76,8 +78,11 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
76
78
  const [isDriverModalVisible, setIsDriverModalVisible] = useState(false);
77
79
  const [printerSettings, setPrinterSettings] = useState<any>('')
78
80
  const [autoPrintEnabled, setAutoPrintEnabled] = useState<boolean>(false)
81
+ const [alertState, setAlertState] = useState<any>({ open: false, title: '', content: [] })
79
82
 
80
- const orderToComplete = [4,20,21]
83
+ const orderToComplete = [4, 20, 21]
84
+ const orderToReady = [7, 14]
85
+ const deliveryTypes = [1, 7]
81
86
 
82
87
  if (order?.status === 7 || order?.status === 4) {
83
88
  if (drivers?.length > 0 && drivers) {
@@ -135,6 +140,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
135
140
  if (order?.status === 7 && autoPrintEnabled && printerSettings) {
136
141
  handleViewSummaryOrder()
137
142
  }
143
+ return order
138
144
  }
139
145
  }
140
146
 
@@ -142,8 +148,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
142
148
  if (name !== 'No') {
143
149
  const pos = position && position !== 'whole' ? `(${t(position.toUpperCase(), position)})` : '';
144
150
  return pos
145
- ? `${quantity} x ${name} ${pos} +${parsePrice(price)}\n`
146
- : `${quantity} x ${name} +${parsePrice(price)}\n`;
151
+ ? `${quantity} x ${name} ${pos} +${parsePrice(price, { currency: getCurrenySymbol(order?.currency) })}\n`
152
+ : `${quantity} x ${name} +${parsePrice(price, { currency: getCurrenySymbol(order?.currency) })}\n`;
147
153
  } else {
148
154
  return 'No\n';
149
155
  }
@@ -208,7 +214,13 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
208
214
  ? t('EAT_IN', 'Eat in')
209
215
  : order.delivery_type === 4
210
216
  ? t('CURBSIDE', 'Curbside')
211
- : t('DRIVER_THRU', 'Driver thru')
217
+ : order.delivery_type === 5
218
+ ? t('DRIVER_THRU', 'Driver thru')
219
+ : order.delivery_type === 7
220
+ ? t('CATERING_DELIVERY', 'Catering delivery')
221
+ : order.delivery_type === 8
222
+ ? t('CATERING_PICKUP', 'Catering pickup')
223
+ : t('DELIVERY', 'Delivery')
212
224
  }\n`
213
225
  : '';
214
226
 
@@ -245,7 +257,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
245
257
  order?.products.length &&
246
258
  order?.products.map((product: any, i: number) => {
247
259
  const string =
248
- `${product?.quantity} X ${product?.name} ${parsePrice(product.total ?? getProductPrice(product))}\n${getOptions(product.options, product.comment)}`;
260
+ `${product?.quantity} X ${product?.name} ${parsePrice(product.total ?? getProductPrice(product), { currency: getCurrenySymbol(order?.currency) })}\n${getOptions(product.options, product.comment)}`;
249
261
 
250
262
  return i === 0 ? ` ${string}` : string
251
263
  });
@@ -258,19 +270,22 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
258
270
 
259
271
  const subtotal = `${t('SUBTOTAL', 'Subtotal')}: ${parsePrice(
260
272
  order?.subtotal,
273
+ { currency: getCurrenySymbol(order?.currency) }
261
274
  )}\n`;
262
275
 
263
276
  const drivertip = `${t('DRIVER_TIP', 'Driver tip')} ${parsePrice(
264
277
  order?.summary?.driver_tip || order?.totalDriverTip,
278
+ { currency: getCurrenySymbol(order?.currency) }
265
279
  )}\n`;
266
280
 
267
281
  const deliveryFee = `${t('DELIVERY_FEE', 'Delivery fee')} ${verifyDecimals(
268
282
  order?.service_fee,
269
283
  parseNumber,
270
- )}% ${parsePrice(order?.summary?.service_fee || order?.serviceFee || 0)}\n`;
284
+ )}% ${parsePrice(order?.summary?.service_fee || order?.serviceFee || 0, { currency: getCurrenySymbol(order?.currency) })}\n`;
271
285
 
272
286
  const total = `${t('TOTAL', 'Total')} ${parsePrice(
273
287
  order?.summary?.total || order?.total,
288
+ { currency: getCurrenySymbol(order?.currency) }
274
289
  )}\n`;
275
290
 
276
291
  const orderStatus = `${t('INVOICE_ORDER_NO', 'Order No.')} ${order.id} ${t(
@@ -297,14 +312,47 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
297
312
 
298
313
  const handleOpenMessagesForBusiness = () => {
299
314
  setOpenModalForBusiness(true);
300
- readMessages && readMessages();
315
+ readMessages && readMessages()
316
+ loadMessages && loadMessages()
301
317
  setUnreadAlert({ ...unreadAlert, business: false });
302
318
  };
303
319
 
304
- const handleViewActionOrder = (action: string) => {
320
+ const handleViewActionOrder = (action: string, options?: any) => {
305
321
  if (openModalForMapView) {
306
322
  setOpenModalForMapView(false);
307
323
  }
324
+ if (options?.alert) {
325
+ let bodyToSend: any = {};
326
+ const orderStatus: any = {
327
+ acceptByBusiness: {
328
+ status: 7,
329
+ },
330
+ };
331
+
332
+ if (actions && action === 'accept') {
333
+ bodyToSend = orderStatus[actions.accept];
334
+ }
335
+ bodyToSend.id = order?.id;
336
+ setAlertState({
337
+ open: true,
338
+ content: options?.content,
339
+ title: t('ORDER_STATUS', 'Order status'),
340
+ onAccept: async () => {
341
+ setAlertState({
342
+ open: false,
343
+ content: []
344
+ })
345
+ const order = await handleChangeOrderStatus(bodyToSend?.status, bodyToSend)
346
+ if (order?.id) {
347
+ setActionOrder(action);
348
+ setOpenModalForAccept(true);
349
+ } else {
350
+ showToast(ToastType.Error, t('FAILED_TO_UPDATE_ORDER', 'Failed to update order'), 5000)
351
+ }
352
+ }
353
+ })
354
+ return
355
+ }
308
356
  setActionOrder(action);
309
357
  setOpenModalForAccept(true);
310
358
  };
@@ -339,6 +387,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
339
387
  };
340
388
 
341
389
  const handleCloseModal = () => {
390
+ readMessages && readMessages()
391
+ loadMessages && loadMessages()
342
392
  setOpenModalForBusiness(false);
343
393
  };
344
394
 
@@ -350,6 +400,14 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
350
400
  navigation?.canGoBack() && navigation.goBack();
351
401
  };
352
402
 
403
+ const closeAlert = () => {
404
+ setAlertState({
405
+ open: false,
406
+ title: '',
407
+ content: []
408
+ })
409
+ }
410
+
353
411
  useEffect(() => {
354
412
  if (messagesReadList?.length) {
355
413
  openModalForBusiness
@@ -379,7 +437,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
379
437
  },
380
438
  {
381
439
  ...order?.customer?.location,
382
- title: order?.customer?.name ?? t('CUSTOMER', 'Customer'),
440
+ title: order?.customer?.name ?? t('CUSTOMER', 'Customer'),
383
441
  address: {
384
442
  addressName: order?.customer?.address,
385
443
  zipcode: order?.customer?.zipcode
@@ -392,7 +450,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
392
450
  ];
393
451
 
394
452
  useEffect(() => {
395
- if (openModalForAccept) {
453
+ if (openModalForAccept && !loading) {
396
454
  setOpenModalForAccept(false);
397
455
  }
398
456
 
@@ -413,7 +471,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
413
471
 
414
472
  useEffect(() => {
415
473
  const getStorageData = async () => {
416
- const printers = await _retrieveStoreData('printers')
474
+ const printers = await _retrieveStoreData('printers')
417
475
  const autoPrint = await _retrieveStoreData('auto_print_after_accept_order')
418
476
  setPrinterSettings(printers?.length && printers)
419
477
  setAutoPrintEnabled(!!autoPrint)
@@ -482,6 +540,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
482
540
  handleCopyClipboard={handleCopyClipboard}
483
541
  handleArrowBack={handleArrowBack}
484
542
  isCustomView={props.isCustomView}
543
+ messages={messages}
544
+ messagesReadList={messagesReadList}
485
545
  />
486
546
  <OrderDetailsContainer
487
547
  keyboardShouldPersistTaps="handled"
@@ -489,7 +549,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
489
549
  <>
490
550
  <OrderContentComponent order={order} />
491
551
  {(order?.status === 7 || order?.status === 4) &&
492
- order?.delivery_type === 1 && configs?.assign_driver_enabled?.value === '1' && (
552
+ deliveryTypes.includes(order?.delivery_type) && configs?.assign_driver_enabled?.value === '1' && (
493
553
  <AssignDriver>
494
554
  <OText style={{ marginBottom: 5 }} size={16} weight="600">
495
555
  {t('ASSIGN_DRIVER', 'Assign driver')}
@@ -587,6 +647,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
587
647
  messages={messages}
588
648
  order={order}
589
649
  setMessages={setMessages}
650
+ notificationApp={notificationApp}
590
651
  />
591
652
  </OModal>
592
653
 
@@ -630,7 +691,6 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
630
691
  </>
631
692
  <View style={{ height: 30 }} />
632
693
  </OrderDetailsContainer>
633
-
634
694
  {order &&
635
695
  Object.keys(order).length > 0 &&
636
696
  getOrderStatus(order?.status, t)?.value ===
@@ -638,7 +698,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
638
698
  <FloatingButton
639
699
  btnText={t('REJECT', 'Reject')}
640
700
  isSecondaryBtn={false}
641
- secondButtonClick={() => handleViewActionOrder('accept')}
701
+ secondButtonClick={() => handleViewActionOrder('accept', { alert: true, content: t('DO_YOU_WANT_ACCEPT_ORDER', 'Do you want to accept the order?') })}
642
702
  firstButtonClick={() => handleViewActionOrder('reject')}
643
703
  secondBtnText={t('ACCEPT', 'Accept')}
644
704
  secondButton={true}
@@ -647,7 +707,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
647
707
  widthButton={'45%'}
648
708
  />
649
709
  )}
650
- {order?.status === 7 && (
710
+ {orderToReady.includes(order?.status) && (
651
711
  <FloatingButton
652
712
  btnText={t('READY_FOR_PICKUP', 'Ready for pickup')}
653
713
  colorTxt1={theme.colors.primary}
@@ -657,7 +717,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
657
717
  disabled={loading}
658
718
  />
659
719
  )}
660
- {orderToComplete.includes(order?.status) && ![1].includes(order?.delivery_type) && (
720
+ {orderToComplete.includes(order?.status) && !deliveryTypes.includes(order?.delivery_type) && (
661
721
  <FloatingButton
662
722
  btnText={t(
663
723
  'ORDER_NOT_PICKEDUP_BY_CUSTOMER',
@@ -668,7 +728,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
668
728
  secondButtonClick={() => handleChangeOrderStatus?.(15)}
669
729
  firstButtonClick={() => handleChangeOrderStatus?.(17)}
670
730
  secondBtnText={t(
671
- 'PICKUP_COMPLETED_BY_CUSTOMER',
731
+ 'ORDER_PICKUP_COMPLETED_BY_CUSTOMER',
672
732
  'Pickup completed by customer',
673
733
  )}
674
734
  secondButton={true}
@@ -680,6 +740,14 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
680
740
  )}
681
741
  </View>
682
742
  )}
743
+ <Alert
744
+ open={alertState.open}
745
+ content={alertState.content}
746
+ title={alertState.title || ''}
747
+ onAccept={alertState.onAccept}
748
+ onClose={closeAlert}
749
+ onCancel={closeAlert}
750
+ />
683
751
  </>
684
752
  );
685
753
  };