ordering-ui-react-native 0.22.13 → 0.22.14-release

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/package.json +6 -7
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessesListing/index.tsx +1 -1
  4. package/src/components/Checkout/index.tsx +40 -39
  5. package/src/components/StripeMethodForm/index.tsx +4 -2
  6. package/src/components/VerifyPhone/styles.tsx +1 -2
  7. package/src/context/OfflineActions/index.tsx +236 -0
  8. package/src/types/index.tsx +2 -1
  9. package/themes/business/index.tsx +2 -0
  10. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
  11. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
  12. package/themes/business/src/components/BusinessController/index.tsx +8 -3
  13. package/themes/business/src/components/BusinessProductList/index.tsx +2 -1
  14. package/themes/business/src/components/Chat/index.tsx +15 -3
  15. package/themes/business/src/components/DriverMap/index.tsx +49 -26
  16. package/themes/business/src/components/FloatingButton/index.tsx +3 -2
  17. package/themes/business/src/components/GoogleMap/index.tsx +15 -8
  18. package/themes/business/src/components/LanguageSelector/index.tsx +2 -3
  19. package/themes/business/src/components/LanguageSelector/lang_country.json +515 -70
  20. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  21. package/themes/business/src/components/MapView/index.tsx +36 -17
  22. package/themes/business/src/components/NewOrderNotification/index.tsx +40 -27
  23. package/themes/business/src/components/OrderDetails/Business.tsx +47 -27
  24. package/themes/business/src/components/OrderDetails/Delivery.tsx +134 -53
  25. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +128 -41
  26. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +46 -19
  27. package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
  28. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +46 -21
  29. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
  30. package/themes/business/src/components/OrderSummary/index.tsx +7 -5
  31. package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
  32. package/themes/business/src/components/OrdersOption/index.tsx +217 -156
  33. package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
  34. package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
  35. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +39 -16
  36. package/themes/business/src/components/PreviousOrders/index.tsx +74 -66
  37. package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
  38. package/themes/business/src/components/PrinterEdition/index.tsx +431 -0
  39. package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
  40. package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
  41. package/themes/business/src/components/PrinterSettings/index.tsx +162 -174
  42. package/themes/business/src/components/PrinterSettings/styles.tsx +14 -1
  43. package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
  44. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  45. package/themes/business/src/components/StoresList/index.tsx +2 -2
  46. package/themes/business/src/components/UserProfileForm/index.tsx +16 -17
  47. package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
  48. package/themes/business/src/components/shared/OTextarea.tsx +8 -9
  49. package/themes/business/src/config/currency.tsx +1010 -0
  50. package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
  51. package/themes/business/src/types/index.tsx +13 -4
  52. package/themes/business/src/utils/index.tsx +33 -3
  53. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  54. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  55. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  56. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  57. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  58. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  59. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  60. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  61. package/themes/original/index.tsx +11 -0
  62. package/themes/original/src/components/AddressForm/index.tsx +32 -17
  63. package/themes/original/src/components/AddressList/index.tsx +8 -7
  64. package/themes/original/src/components/AnalyticsSegment/index.tsx +6 -6
  65. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  66. package/themes/original/src/components/BusinessBasicInformation/index.tsx +5 -8
  67. package/themes/original/src/components/BusinessController/index.tsx +3 -3
  68. package/themes/original/src/components/BusinessItemAccordion/index.tsx +13 -5
  69. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +103 -92
  70. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +8 -6
  71. package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
  72. package/themes/original/src/components/BusinessPreorder/index.tsx +46 -28
  73. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +73 -70
  74. package/themes/original/src/components/BusinessProductsList/index.tsx +6 -7
  75. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  76. package/themes/original/src/components/BusinessProductsListing/index.tsx +18 -6
  77. package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
  78. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
  79. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
  80. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  81. package/themes/original/src/components/Cart/index.tsx +46 -14
  82. package/themes/original/src/components/CartContent/index.tsx +2 -4
  83. package/themes/original/src/components/Checkout/index.tsx +113 -59
  84. package/themes/original/src/components/CitiesControl/index.tsx +0 -3
  85. package/themes/original/src/components/CouponControl/index.tsx +1 -3
  86. package/themes/original/src/components/DriverTips/index.tsx +1 -3
  87. package/themes/original/src/components/Favorite/index.tsx +1 -5
  88. package/themes/original/src/components/FavoriteList/index.tsx +0 -1
  89. package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -7
  90. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +15 -17
  91. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +3 -7
  92. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +24 -32
  93. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +7 -9
  94. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +11 -12
  95. package/themes/original/src/components/GoogleMap/index.tsx +39 -18
  96. package/themes/original/src/components/Help/index.tsx +2 -0
  97. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
  98. package/themes/original/src/components/Home/index.tsx +3 -11
  99. package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
  100. package/themes/original/src/components/LoginForm/index.tsx +4 -7
  101. package/themes/original/src/components/MessageListing/index.tsx +2 -1
  102. package/themes/original/src/components/Messages/index.tsx +27 -19
  103. package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
  104. package/themes/original/src/components/MomentOption/index.tsx +80 -51
  105. package/themes/original/src/components/MomentSelector/index.tsx +5 -2
  106. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -3
  107. package/themes/original/src/components/MultiCheckout/index.tsx +55 -27
  108. package/themes/original/src/components/MultiOrdersDetails/index.tsx +1 -0
  109. package/themes/original/src/components/MyOrders/index.tsx +2 -2
  110. package/themes/original/src/components/NavBar/index.tsx +7 -4
  111. package/themes/original/src/components/NetworkError/index.tsx +0 -5
  112. package/themes/original/src/components/NotFoundSource/index.tsx +0 -3
  113. package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
  114. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +13 -10
  115. package/themes/original/src/components/OrderDetails/index.tsx +44 -21
  116. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  117. package/themes/original/src/components/OrderProgress/index.tsx +5 -4
  118. package/themes/original/src/components/OrderSummary/index.tsx +29 -10
  119. package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -6
  120. package/themes/original/src/components/OrdersOption/index.tsx +3 -6
  121. package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
  122. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  123. package/themes/original/src/components/PaymentOptions/index.tsx +0 -2
  124. package/themes/original/src/components/PhoneInputNumber/index.tsx +74 -4
  125. package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
  126. package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
  127. package/themes/original/src/components/ProductForm/ActionButton.tsx +17 -20
  128. package/themes/original/src/components/ProductForm/index.tsx +107 -102
  129. package/themes/original/src/components/ProductItemAccordion/index.tsx +50 -43
  130. package/themes/original/src/components/ProductItemAccordion/styles.tsx +0 -3
  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 +6 -9
  134. package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
  135. package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
  136. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  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 -3
  140. package/themes/original/src/components/SignupForm/index.tsx +86 -78
  141. package/themes/original/src/components/SingleOrderCard/index.tsx +6 -4
  142. package/themes/original/src/components/SingleProductCard/index.tsx +5 -5
  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 +10 -3
  146. package/themes/original/src/components/StripeElementsForm/index.tsx +76 -62
  147. package/themes/original/src/components/StripeElementsForm/naked.tsx +48 -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 +10 -7
  151. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
  152. package/themes/original/src/components/UserDetails/index.tsx +17 -16
  153. package/themes/original/src/components/UserFormDetails/index.tsx +161 -134
  154. package/themes/original/src/components/UserProfile/index.tsx +9 -1
  155. package/themes/original/src/components/UserVerification/index.tsx +15 -4
  156. package/themes/original/src/components/Wallets/index.tsx +6 -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 +7 -2
  163. package/themes/original/src/utils/index.tsx +30 -1
  164. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -53,16 +53,23 @@ const MapViewComponent = (props: MapViewParams) => {
53
53
 
54
54
  const fitCoordinates = (location?: any) => {
55
55
  if (mapRef.current) {
56
- mapRef.current.fitToCoordinates(
57
- [
58
- { latitude: location.latitude ?? 0, longitude: location.longitude ?? 0},
59
- {
60
- latitude: userLocation?.latitude,
61
- longitude: userLocation?.longitude,
62
- },
63
- ],
56
+ const isSendCoordinates =
57
+ location &&
58
+ userLocation &&
59
+ location.latitude !== userLocation.latitude &&
60
+ location.longitude !== userLocation.longitude &&
61
+ location.latitude !== 0 &&
62
+ location.longitude !== 0 &&
63
+ userLocation.latitude !== 0 &&
64
+ userLocation.longitude !== 0
65
+
66
+ isSendCoordinates && mapRef.current.fitToCoordinates(
67
+ [location, userLocation].map(_location => ({
68
+ latitude: _location.latitude,
69
+ longitude: _location.longitude
70
+ })),
64
71
  {
65
- edgePadding: { top: 120, right: 120, bottom: 120, left: 120 },
72
+ edgePadding: { top: 120, right: 120, bottom: 120, left: 120 }
66
73
  },
67
74
  );
68
75
  }
@@ -133,8 +140,20 @@ const MapViewComponent = (props: MapViewParams) => {
133
140
  const RenderMarker = ({ marker, customer, orderIds }: { marker: any, customer?: boolean, orderIds?: Array<number> }) => {
134
141
  const markerRef = useRef<any>()
135
142
 
136
- let coordinateLat = (customer ? marker?.customer?.location?.lat : marker?.business?.location?.lat) ?? initialPosition?.latitude
137
- let coordinateLng = (customer ? marker?.customer?.location?.lng : marker?.business?.location?.lng) ?? initialPosition?.longitude
143
+ let coordinateLat = (customer
144
+ ? typeof marker?.customer?.location?.lat === 'number' && !Number.isNaN(marker?.customer?.location?.lat)
145
+ ? marker?.customer?.location?.lat
146
+ : 0
147
+ : typeof marker?.business?.location?.lat === 'number' && !Number.isNaN(marker?.business?.location?.lat)
148
+ ? marker?.business?.location?.lat
149
+ : 0) ?? (initialPosition?.latitude || 0)
150
+ let coordinateLng = (customer
151
+ ? typeof marker?.customer?.location?.lng === 'number' && !Number.isNaN(marker?.customer?.location?.lng)
152
+ ? marker?.customer?.location?.lng
153
+ : 0
154
+ : typeof marker?.business?.location?.lng === 'number' && !Number.isNaN(marker?.business?.location?.lng)
155
+ ? marker?.business?.location?.lng
156
+ : 0) ?? (initialPosition?.longitude || 0)
138
157
 
139
158
  useEffect(() => {
140
159
  if (
@@ -154,8 +173,8 @@ const MapViewComponent = (props: MapViewParams) => {
154
173
  }}
155
174
  onPress={() =>
156
175
  setLocationSelected({
157
- latitude: customer ? marker?.customer?.location?.lat : marker?.business?.location?.lat,
158
- longitude: customer ? marker?.customer?.location?.lng : marker?.business?.location?.lng
176
+ latitude: coordinateLat,
177
+ longitude: coordinateLng
159
178
  })
160
179
  }
161
180
  ref={(ref) => markerRef.current = ref}
@@ -235,8 +254,8 @@ const MapViewComponent = (props: MapViewParams) => {
235
254
  ref={mapRef}
236
255
  provider={PROVIDER_GOOGLE}
237
256
  initialRegion={{
238
- latitude: initialPosition?.latitude,
239
- longitude: initialPosition?.longitude,
257
+ latitude: initialPosition?.latitude || 0,
258
+ longitude: initialPosition?.longitude || 0,
240
259
  latitudeDelta: haveOrders ? 0.01 : 0.1,
241
260
  longitudeDelta: haveOrders ? 0.01 * ASPECT_RATIO : 0.1 * ASPECT_RATIO,
242
261
  }}
@@ -266,8 +285,8 @@ const MapViewComponent = (props: MapViewParams) => {
266
285
  ))}
267
286
  <Marker
268
287
  coordinate={{
269
- latitude: location.lat,
270
- longitude: location.lng,
288
+ latitude: typeof location.lat === 'number' && !Number.isNaN(location.lat) ? location.lat : 0,
289
+ longitude: typeof location.lng === 'number' && !Number.isNaN(location.lng) ? location.lng : 0,
271
290
  }}
272
291
  title={t('YOUR_LOCATION', 'Your Location')}
273
292
  >
@@ -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 (
@@ -109,21 +117,16 @@ const SoundPlayerComponent = (props: any) => {
109
117
  }
110
118
 
111
119
  const NewOrderNotificationUI = (props: any) => {
112
- const { isBusinessApp, evtList } = props
120
+ const { isBusinessApp, evtList, orderStatus } = props
113
121
  const [, t] = useLanguage()
114
122
  const [events] = useEvent()
115
123
  const [{ user, token }] = useSession()
116
124
  const [ordering] = useApi()
117
- const [{ configs }] = useConfig()
118
125
  const [, { showToast }] = useToast()
119
126
  const { getCurrentLocation } = useLocation()
120
127
  const [currentEvent, setCurrentEvent] = useState<any>(null)
121
128
 
122
- const orderStatus = !!isBusinessApp
123
- ? configs?.notification_business_states?.value.split('|').map((value: any) => Number(value)) || []
124
- : configs?.notification_driver_states?.value.split('|').map((value: any) => Number(value)) || []
125
-
126
- const handleEventNotification = async (evtType: number, value: any) => {
129
+ const handleEventNotification = async (evtType: number, value: any, orderStatus?: any) => {
127
130
  if (value?.driver) {
128
131
  try {
129
132
  const location = await getCurrentLocation()
@@ -149,11 +152,11 @@ const NewOrderNotificationUI = (props: any) => {
149
152
  } catch { }
150
153
  const duration = moment.duration(moment().diff(moment.utc(value?.last_driver_assigned_at)))
151
154
  const assignedSecondsDiff = duration.asSeconds()
152
- if (assignedSecondsDiff < 5 && !isBusinessApp && !value?.logistic_status && orderStatus.includes(value.status)) {
155
+ if (assignedSecondsDiff < 5 && !isBusinessApp && !value?.logistic_status) {
153
156
  setCurrentEvent({ evt: 2, orderId: value?.id ?? value?.order_id })
154
157
  }
155
158
  }
156
- if (!orderStatus.includes(value.status) || value?.author_id === user.id) return
159
+ if ((!orderStatus.includes(value.status) && evtType !== 1 && isBusinessApp && orderStatus?.length > 0) || value?.author_id === user.id) return
157
160
  setCurrentEvent({
158
161
  evt: evtType,
159
162
  orderId: value?.driver
@@ -165,20 +168,30 @@ const NewOrderNotificationUI = (props: any) => {
165
168
  }
166
169
 
167
170
  useEffect(() => {
168
- events.on('message_added_notification', (o: any) => handleEventNotification(1, o))
169
- events.on('order_added_notification', (o: any) => handleEventNotification(2, o))
170
- events.on('order_updated_notification', (o: any) => handleEventNotification(3, o))
171
- events.on('request_register_notification', (o: any) => handleEventNotification(2, o))
172
- events.on('request_update_notification', (o: any) => handleEventNotification(3, o))
171
+ const handleEventTypeOne = (o: any) => {
172
+ handleEventNotification(1, o, orderStatus)
173
+ }
174
+ const handleEventTypeTwo = (o: any) => {
175
+ handleEventNotification(2, o, orderStatus)
176
+ }
177
+ const handleEventTypeThree = (o: any) => {
178
+ handleEventNotification(3, o, orderStatus)
179
+ }
180
+
181
+ events.on('message_added_notification', handleEventTypeOne)
182
+ events.on('order_added_notification', handleEventTypeTwo)
183
+ events.on('order_updated_notification', handleEventTypeThree)
184
+ events.on('request_register_notification', handleEventTypeTwo)
185
+ events.on('request_update_notification', handleEventTypeThree)
173
186
 
174
187
  return () => {
175
- events.off('message_added_notification', (o: any) => handleEventNotification(1, o))
176
- events.off('order_added_notification', (o: any) => handleEventNotification(2, o))
177
- events.off('order_updated_notification', (o: any) => handleEventNotification(3, o))
178
- events.off('request_register_notification', (o: any) => handleEventNotification(2, o))
179
- events.off('request_update_notification', (o: any) => handleEventNotification(3, o))
188
+ events.off('message_added_notification', handleEventTypeOne)
189
+ events.off('order_added_notification', handleEventTypeTwo)
190
+ events.off('order_updated_notification', handleEventTypeThree)
191
+ events.off('request_register_notification', handleEventTypeTwo)
192
+ events.off('request_update_notification', handleEventTypeThree)
180
193
  }
181
- }, [])
194
+ }, [orderStatus, events])
182
195
 
183
196
  useEffect(() => {
184
197
  return () => setCurrentEvent(null)
@@ -186,13 +199,13 @@ const NewOrderNotificationUI = (props: any) => {
186
199
 
187
200
  return (
188
201
  <>
189
- {!!currentEvent ? (
202
+ {!!currentEvent && (
190
203
  <SoundPlayerComponent
191
204
  evtList={evtList}
192
205
  currentEvent={currentEvent}
193
206
  handleCloseEvents={() => setCurrentEvent(null)}
194
207
  />
195
- ) : null}
208
+ )}
196
209
  </>
197
210
  )
198
211
  };
@@ -31,7 +31,7 @@ import { FloatingButton } from '../FloatingButton';
31
31
  import { GoogleMap } from '../GoogleMap';
32
32
  import { OButton, OModal, OText, OIcon } from '../shared';
33
33
  import { OrderDetailsParams } from '../../types';
34
- import { verifyDecimals, getProductPrice, getOrderStatus } from '../../utils';
34
+ import { verifyDecimals, getProductPrice, getOrderStatus, getCurrenySymbol } from '../../utils';
35
35
  import { USER_TYPE } from '../../config/constants';
36
36
  import CountryPicker from 'react-native-country-picker-modal';
37
37
  import { NotFoundSource } from '../NotFoundSource';
@@ -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();
@@ -77,7 +79,9 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
77
79
  const [printerSettings, setPrinterSettings] = useState<any>('')
78
80
  const [autoPrintEnabled, setAutoPrintEnabled] = useState<boolean>(false)
79
81
 
80
- const orderToComplete = [4,20,21]
82
+ const orderToComplete = [4, 20, 21]
83
+ const orderToReady = [7, 14]
84
+ const deliveryTypes = [1, 7]
81
85
 
82
86
  if (order?.status === 7 || order?.status === 4) {
83
87
  if (drivers?.length > 0 && drivers) {
@@ -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
  });
@@ -257,20 +267,23 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
257
267
  )}:\n${productsInString}\n`;
258
268
 
259
269
  const subtotal = `${t('SUBTOTAL', 'Subtotal')}: ${parsePrice(
260
- order?.subtotal,
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,7 +310,8 @@ 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
 
@@ -309,24 +323,26 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
309
323
  setOpenModalForAccept(true);
310
324
  };
311
325
 
312
- const printAction = async (printerSettings: any, commands: any) => {
326
+ const printAction = async (printerSettings: any, commands: any, showAlert: boolean = true) => {
313
327
  try {
314
328
  var printResult = await StarPRNT.print(printerSettings?.emulation, commands, printerSettings?.portName);
315
- showToast(ToastType.Info, t('ORDER_PRINTED_SUCCESS', 'Order printed'), 1000)
329
+ showAlert && showToast(ToastType.Info, t('ORDER_PRINTED_SUCCESS', 'Order printed'), 1000)
316
330
  } catch (e) {
317
- showToast(ToastType.Error, t('ORDER_PRINTED_FAILED', 'Order not printed, connection failed'), 1000)
331
+ showAlert && showToast(ToastType.Error, t('ORDER_PRINTED_FAILED', 'Order not printed, connection failed'), 1000)
318
332
  }
319
333
  }
320
334
 
321
335
  const handleViewSummaryOrder = () => {
322
336
  if (printerSettings) {
323
- const commands: any = generateCommands({
324
- ...order,
325
- orderStatus: getOrderStatus(order?.status, t)?.value
326
- }, printerSettings?.printMode)
327
- commands.push({ appendCutPaper: StarPRNT.CutPaperAction.PartialCutWithFeed })
328
-
329
- printAction(printerSettings, commands)
337
+ printerSettings.map((printer: any, idx: number) => {
338
+ const commands: any = generateCommands({
339
+ ...order,
340
+ orderStatus: getOrderStatus(order?.status, t)?.value
341
+ }, printer?.printMode)
342
+ commands.push({ appendCutPaper: StarPRNT.CutPaperAction.PartialCutWithFeed })
343
+
344
+ printAction(printer, commands, idx === printerSettings.length - 1)
345
+ })
330
346
  return
331
347
  }
332
348
  navigation?.navigate &&
@@ -337,6 +353,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
337
353
  };
338
354
 
339
355
  const handleCloseModal = () => {
356
+ readMessages && readMessages()
357
+ loadMessages && loadMessages()
340
358
  setOpenModalForBusiness(false);
341
359
  };
342
360
 
@@ -377,7 +395,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
377
395
  },
378
396
  {
379
397
  ...order?.customer?.location,
380
- title: order?.customer?.name ?? t('CUSTOMER', 'Customer'),
398
+ title: order?.customer?.name ?? t('CUSTOMER', 'Customer'),
381
399
  address: {
382
400
  addressName: order?.customer?.address,
383
401
  zipcode: order?.customer?.zipcode
@@ -411,9 +429,9 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
411
429
 
412
430
  useEffect(() => {
413
431
  const getStorageData = async () => {
414
- const printer = await _retrieveStoreData('printer')
432
+ const printers = await _retrieveStoreData('printers')
415
433
  const autoPrint = await _retrieveStoreData('auto_print_after_accept_order')
416
- setPrinterSettings(printer)
434
+ setPrinterSettings(printers?.length && printers)
417
435
  setAutoPrintEnabled(!!autoPrint)
418
436
  }
419
437
 
@@ -480,6 +498,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
480
498
  handleCopyClipboard={handleCopyClipboard}
481
499
  handleArrowBack={handleArrowBack}
482
500
  isCustomView={props.isCustomView}
501
+ messages={messages}
502
+ messagesReadList={messagesReadList}
483
503
  />
484
504
  <OrderDetailsContainer
485
505
  keyboardShouldPersistTaps="handled"
@@ -487,7 +507,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
487
507
  <>
488
508
  <OrderContentComponent order={order} />
489
509
  {(order?.status === 7 || order?.status === 4) &&
490
- order?.delivery_type === 1 && configs?.assign_driver_enabled?.value === '1' && (
510
+ deliveryTypes.includes(order?.delivery_type) && configs?.assign_driver_enabled?.value === '1' && (
491
511
  <AssignDriver>
492
512
  <OText style={{ marginBottom: 5 }} size={16} weight="600">
493
513
  {t('ASSIGN_DRIVER', 'Assign driver')}
@@ -585,6 +605,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
585
605
  messages={messages}
586
606
  order={order}
587
607
  setMessages={setMessages}
608
+ notificationApp={notificationApp}
588
609
  />
589
610
  </OModal>
590
611
 
@@ -628,7 +649,6 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
628
649
  </>
629
650
  <View style={{ height: 30 }} />
630
651
  </OrderDetailsContainer>
631
-
632
652
  {order &&
633
653
  Object.keys(order).length > 0 &&
634
654
  getOrderStatus(order?.status, t)?.value ===
@@ -645,7 +665,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
645
665
  widthButton={'45%'}
646
666
  />
647
667
  )}
648
- {order?.status === 7 && (
668
+ {orderToReady.includes(order?.status) && (
649
669
  <FloatingButton
650
670
  btnText={t('READY_FOR_PICKUP', 'Ready for pickup')}
651
671
  colorTxt1={theme.colors.primary}
@@ -655,7 +675,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
655
675
  disabled={loading}
656
676
  />
657
677
  )}
658
- {orderToComplete.includes(order?.status) && ![1].includes(order?.delivery_type) && (
678
+ {orderToComplete.includes(order?.status) && !deliveryTypes.includes(order?.delivery_type) && (
659
679
  <FloatingButton
660
680
  btnText={t(
661
681
  'ORDER_NOT_PICKEDUP_BY_CUSTOMER',
@@ -666,7 +686,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
666
686
  secondButtonClick={() => handleChangeOrderStatus?.(15)}
667
687
  firstButtonClick={() => handleChangeOrderStatus?.(17)}
668
688
  secondBtnText={t(
669
- 'PICKUP_COMPLETED_BY_CUSTOMER',
689
+ 'ORDER_PICKUP_COMPLETED_BY_CUSTOMER',
670
690
  'Pickup completed by customer',
671
691
  )}
672
692
  secondButton={true}