ordering-ui-react-native 0.22.2 → 0.22.3-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 (161) 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/StripeMethodForm/index.tsx +4 -2
  5. package/src/components/VerifyPhone/styles.tsx +1 -2
  6. package/src/context/OfflineActions/index.tsx +236 -0
  7. package/src/types/index.tsx +2 -1
  8. package/themes/business/index.tsx +2 -0
  9. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
  10. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
  11. package/themes/business/src/components/BusinessController/index.tsx +8 -3
  12. package/themes/business/src/components/BusinessProductList/index.tsx +2 -1
  13. package/themes/business/src/components/Chat/index.tsx +15 -3
  14. package/themes/business/src/components/DriverMap/index.tsx +49 -27
  15. package/themes/business/src/components/FloatingButton/index.tsx +3 -2
  16. package/themes/business/src/components/GoogleMap/index.tsx +15 -8
  17. package/themes/business/src/components/LanguageSelector/index.tsx +2 -3
  18. package/themes/business/src/components/LanguageSelector/lang_country.json +515 -70
  19. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  20. package/themes/business/src/components/MapView/index.tsx +36 -17
  21. package/themes/business/src/components/NewOrderNotification/index.tsx +40 -27
  22. package/themes/business/src/components/OrderDetails/Business.tsx +54 -37
  23. package/themes/business/src/components/OrderDetails/Delivery.tsx +138 -55
  24. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +125 -43
  25. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +62 -24
  26. package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
  27. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +138 -64
  28. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
  29. package/themes/business/src/components/OrderSummary/index.tsx +210 -65
  30. package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
  31. package/themes/business/src/components/OrdersOption/index.tsx +217 -156
  32. package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
  33. package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
  34. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +39 -16
  35. package/themes/business/src/components/PreviousOrders/index.tsx +76 -66
  36. package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
  37. package/themes/business/src/components/PrinterEdition/index.tsx +431 -0
  38. package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
  39. package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
  40. package/themes/business/src/components/PrinterSettings/index.tsx +173 -154
  41. package/themes/business/src/components/PrinterSettings/styles.tsx +20 -0
  42. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  43. package/themes/business/src/components/StoresList/index.tsx +2 -2
  44. package/themes/business/src/components/UserProfileForm/index.tsx +16 -17
  45. package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
  46. package/themes/business/src/components/shared/OTextarea.tsx +8 -9
  47. package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
  48. package/themes/business/src/types/index.tsx +14 -5
  49. package/themes/business/src/utils/index.tsx +25 -1
  50. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  51. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  52. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  53. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  54. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  55. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  56. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  57. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  58. package/themes/original/index.tsx +11 -0
  59. package/themes/original/src/components/AddressForm/index.tsx +32 -17
  60. package/themes/original/src/components/AddressList/index.tsx +8 -7
  61. package/themes/original/src/components/AnalyticsSegment/index.tsx +6 -6
  62. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  63. package/themes/original/src/components/BusinessBasicInformation/index.tsx +5 -8
  64. package/themes/original/src/components/BusinessController/index.tsx +5 -5
  65. package/themes/original/src/components/BusinessItemAccordion/index.tsx +13 -5
  66. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +2 -3
  67. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +1 -3
  68. package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
  69. package/themes/original/src/components/BusinessPreorder/index.tsx +44 -32
  70. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +73 -70
  71. package/themes/original/src/components/BusinessProductsList/index.tsx +6 -7
  72. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  73. package/themes/original/src/components/BusinessProductsListing/index.tsx +18 -6
  74. package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
  75. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
  76. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +1 -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 +38 -14
  80. package/themes/original/src/components/CartContent/index.tsx +2 -4
  81. package/themes/original/src/components/Checkout/index.tsx +112 -58
  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 -5
  86. package/themes/original/src/components/FavoriteList/index.tsx +0 -1
  87. package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -7
  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 +2 -0
  95. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
  96. package/themes/original/src/components/Home/index.tsx +3 -11
  97. package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
  98. package/themes/original/src/components/LoginForm/index.tsx +4 -7
  99. package/themes/original/src/components/MessageListing/index.tsx +2 -1
  100. package/themes/original/src/components/Messages/index.tsx +29 -17
  101. package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
  102. package/themes/original/src/components/MomentOption/index.tsx +79 -56
  103. package/themes/original/src/components/MomentSelector/index.tsx +1 -1
  104. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -3
  105. package/themes/original/src/components/MultiCheckout/index.tsx +55 -27
  106. package/themes/original/src/components/MultiOrdersDetails/index.tsx +1 -0
  107. package/themes/original/src/components/MyOrders/index.tsx +2 -2
  108. package/themes/original/src/components/NavBar/index.tsx +7 -4
  109. package/themes/original/src/components/NetworkError/index.tsx +0 -5
  110. package/themes/original/src/components/NotFoundSource/index.tsx +0 -3
  111. package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
  112. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +13 -10
  113. package/themes/original/src/components/OrderDetails/index.tsx +44 -21
  114. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  115. package/themes/original/src/components/OrderProgress/index.tsx +5 -4
  116. package/themes/original/src/components/OrderSummary/index.tsx +29 -10
  117. package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -6
  118. package/themes/original/src/components/OrdersOption/index.tsx +3 -6
  119. package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
  120. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  121. package/themes/original/src/components/PaymentOptions/index.tsx +10 -8
  122. package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
  123. package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
  124. package/themes/original/src/components/ProductForm/ActionButton.tsx +17 -20
  125. package/themes/original/src/components/ProductForm/index.tsx +107 -102
  126. package/themes/original/src/components/ProductItemAccordion/index.tsx +51 -44
  127. package/themes/original/src/components/ProductItemAccordion/styles.tsx +3 -4
  128. package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
  129. package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
  130. package/themes/original/src/components/Promotions/index.tsx +6 -9
  131. package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
  132. package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
  133. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  134. package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
  135. package/themes/original/src/components/ServiceForm/index.tsx +52 -54
  136. package/themes/original/src/components/Sessions/index.tsx +3 -3
  137. package/themes/original/src/components/SignupForm/index.tsx +86 -78
  138. package/themes/original/src/components/SingleOrderCard/index.tsx +6 -4
  139. package/themes/original/src/components/SingleProductCard/index.tsx +3 -4
  140. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  141. package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
  142. package/themes/original/src/components/StripeCardsList/index.tsx +10 -3
  143. package/themes/original/src/components/StripeElementsForm/index.tsx +76 -62
  144. package/themes/original/src/components/StripeElementsForm/naked.tsx +48 -1
  145. package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
  146. package/themes/original/src/components/TaxInformation/index.tsx +3 -2
  147. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +10 -7
  148. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
  149. package/themes/original/src/components/UserDetails/index.tsx +17 -16
  150. package/themes/original/src/components/UserFormDetails/index.tsx +159 -133
  151. package/themes/original/src/components/UserProfile/index.tsx +9 -1
  152. package/themes/original/src/components/UserVerification/index.tsx +14 -4
  153. package/themes/original/src/components/Wallets/index.tsx +6 -3
  154. package/themes/original/src/components/WebsocketStatus/index.tsx +1 -4
  155. package/themes/original/src/components/shared/OAlert.tsx +2 -1
  156. package/themes/original/src/components/shared/OButton.tsx +5 -4
  157. package/themes/original/src/components/shared/OInput.tsx +4 -8
  158. package/themes/original/src/components/shared/OModal.tsx +7 -2
  159. package/themes/original/src/types/index.tsx +5 -1
  160. package/themes/original/src/utils/index.tsx +30 -1
  161. 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
  };
@@ -48,12 +48,13 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
48
48
  readMessages,
49
49
  messagesReadList,
50
50
  handleAssignDriver,
51
- handleChangeOrderStatus,
52
51
  isFromCheckout,
53
52
  driverLocation,
54
53
  actions,
55
54
  orderTitle,
56
55
  appTitle,
56
+ loadMessages,
57
+ notificationApp
57
58
  } = props;
58
59
 
59
60
  const theme = useTheme();
@@ -75,7 +76,12 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
75
76
  const [openModalForAccept, setOpenModalForAccept] = useState(false);
76
77
  const [openModalForMapView, setOpenModalForMapView] = useState(false);
77
78
  const [isDriverModalVisible, setIsDriverModalVisible] = useState(false);
78
- const [printerSettings, setPrinterSettings] = useState('')
79
+ const [printerSettings, setPrinterSettings] = useState<any>('')
80
+ const [autoPrintEnabled, setAutoPrintEnabled] = useState<boolean>(false)
81
+
82
+ const orderToComplete = [4, 20, 21]
83
+ const orderToReady = [7, 14]
84
+ const deliveryTypes = [1, 7]
79
85
 
80
86
  if (order?.status === 7 || order?.status === 4) {
81
87
  if (drivers?.length > 0 && drivers) {
@@ -126,6 +132,16 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
126
132
  }
127
133
  }
128
134
 
135
+ const handleChangeOrderStatus = async (status: any, isAcceptOrReject: any = {}) => {
136
+ if (props.handleChangeOrderStatus) {
137
+ const order: any = await props.handleChangeOrderStatus(status, isAcceptOrReject)
138
+
139
+ if (order?.status === 7 && autoPrintEnabled && printerSettings) {
140
+ handleViewSummaryOrder()
141
+ }
142
+ }
143
+ }
144
+
129
145
  const getFormattedSubOptionName = ({ quantity, name, position, price }: any) => {
130
146
  if (name !== 'No') {
131
147
  const pos = position && position !== 'whole' ? `(${t(position.toUpperCase(), position)})` : '';
@@ -196,7 +212,13 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
196
212
  ? t('EAT_IN', 'Eat in')
197
213
  : order.delivery_type === 4
198
214
  ? t('CURBSIDE', 'Curbside')
199
- : 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')
200
222
  }\n`
201
223
  : '';
202
224
 
@@ -285,7 +307,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
285
307
 
286
308
  const handleOpenMessagesForBusiness = () => {
287
309
  setOpenModalForBusiness(true);
288
- readMessages && readMessages();
310
+ readMessages && readMessages()
311
+ loadMessages && loadMessages()
289
312
  setUnreadAlert({ ...unreadAlert, business: false });
290
313
  };
291
314
 
@@ -297,38 +320,26 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
297
320
  setOpenModalForAccept(true);
298
321
  };
299
322
 
300
- const printAction = async (printerSettings: any, commands: any) => {
323
+ const printAction = async (printerSettings: any, commands: any, showAlert: boolean = true) => {
301
324
  try {
302
325
  var printResult = await StarPRNT.print(printerSettings?.emulation, commands, printerSettings?.portName);
303
- Alert.alert(
304
- t('PRINT_SUCCESS_TITLE', 'Print Success'),
305
- t('PRINT_SUCCESS_SUBTITLE', `Go check your _printer_ printer!`).replace('_printer_', printerSettings?.model),
306
- [
307
- {text: 'OK', onPress: () => null},
308
- ],
309
- { cancelable: false }
310
- )
326
+ showAlert && showToast(ToastType.Info, t('ORDER_PRINTED_SUCCESS', 'Order printed'), 1000)
311
327
  } catch (e) {
312
- Alert.alert(
313
- t('PRINT_FAIL_TITLE', 'Connection Failed'),
314
- t('PRINT_FAIL_SUBTITLE', 'Make sure your Star Printer is turned on and have thermal paper in it.'),
315
- [
316
- {text: 'OK', onPress: () => null},
317
- ],
318
- { cancelable: false }
319
- )
328
+ showAlert && showToast(ToastType.Error, t('ORDER_PRINTED_FAILED', 'Order not printed, connection failed'), 1000)
320
329
  }
321
330
  }
322
331
 
323
332
  const handleViewSummaryOrder = () => {
324
333
  if (printerSettings) {
325
- const commands: any = generateCommands({
326
- ...order,
327
- orderStatus: getOrderStatus(order?.status, t)?.value
334
+ printerSettings.map((printer: any, idx: number) => {
335
+ const commands: any = generateCommands({
336
+ ...order,
337
+ orderStatus: getOrderStatus(order?.status, t)?.value
338
+ }, printer?.printMode)
339
+ commands.push({ appendCutPaper: StarPRNT.CutPaperAction.PartialCutWithFeed })
340
+
341
+ printAction(printer, commands, idx === printerSettings.length - 1)
328
342
  })
329
- commands.push({ appendCutPaper: StarPRNT.CutPaperAction.PartialCutWithFeed })
330
-
331
- printAction(printerSettings, commands)
332
343
  return
333
344
  }
334
345
  navigation?.navigate &&
@@ -339,6 +350,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
339
350
  };
340
351
 
341
352
  const handleCloseModal = () => {
353
+ readMessages && readMessages()
354
+ loadMessages && loadMessages()
342
355
  setOpenModalForBusiness(false);
343
356
  };
344
357
 
@@ -379,7 +392,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
379
392
  },
380
393
  {
381
394
  ...order?.customer?.location,
382
- title: order?.customer?.name ?? t('CUSTOMER', 'Customer'),
395
+ title: order?.customer?.name ?? t('CUSTOMER', 'Customer'),
383
396
  address: {
384
397
  addressName: order?.customer?.address,
385
398
  zipcode: order?.customer?.zipcode
@@ -412,12 +425,14 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
412
425
  }, [driverLocation]);
413
426
 
414
427
  useEffect(() => {
415
- const getPrinterDefault = async () => {
416
- const printer = await _retrieveStoreData('printer')
417
- setPrinterSettings(printer)
428
+ const getStorageData = async () => {
429
+ const printers = await _retrieveStoreData('printers')
430
+ const autoPrint = await _retrieveStoreData('auto_print_after_accept_order')
431
+ setPrinterSettings(printers?.length && printers)
432
+ setAutoPrintEnabled(!!autoPrint)
418
433
  }
419
434
 
420
- getPrinterDefault()
435
+ getStorageData()
421
436
  }, [])
422
437
 
423
438
  const styles = StyleSheet.create({
@@ -480,6 +495,8 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
480
495
  handleCopyClipboard={handleCopyClipboard}
481
496
  handleArrowBack={handleArrowBack}
482
497
  isCustomView={props.isCustomView}
498
+ messages={messages}
499
+ messagesReadList={messagesReadList}
483
500
  />
484
501
  <OrderDetailsContainer
485
502
  keyboardShouldPersistTaps="handled"
@@ -487,7 +504,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
487
504
  <>
488
505
  <OrderContentComponent order={order} />
489
506
  {(order?.status === 7 || order?.status === 4) &&
490
- order?.delivery_type === 1 && configs?.assign_driver_enabled?.value === '1' && (
507
+ deliveryTypes.includes(order?.delivery_type) && configs?.assign_driver_enabled?.value === '1' && (
491
508
  <AssignDriver>
492
509
  <OText style={{ marginBottom: 5 }} size={16} weight="600">
493
510
  {t('ASSIGN_DRIVER', 'Assign driver')}
@@ -585,6 +602,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
585
602
  messages={messages}
586
603
  order={order}
587
604
  setMessages={setMessages}
605
+ notificationApp={notificationApp}
588
606
  />
589
607
  </OModal>
590
608
 
@@ -628,7 +646,6 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
628
646
  </>
629
647
  <View style={{ height: 30 }} />
630
648
  </OrderDetailsContainer>
631
-
632
649
  {order &&
633
650
  Object.keys(order).length > 0 &&
634
651
  getOrderStatus(order?.status, t)?.value ===
@@ -645,7 +662,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
645
662
  widthButton={'45%'}
646
663
  />
647
664
  )}
648
- {order?.status === 7 && (
665
+ {orderToReady.includes(order?.status) && (
649
666
  <FloatingButton
650
667
  btnText={t('READY_FOR_PICKUP', 'Ready for pickup')}
651
668
  colorTxt1={theme.colors.primary}
@@ -655,7 +672,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
655
672
  disabled={loading}
656
673
  />
657
674
  )}
658
- {order?.status === 4 && ![1].includes(order?.delivery_type) && (
675
+ {orderToComplete.includes(order?.status) && !deliveryTypes.includes(order?.delivery_type) && (
659
676
  <FloatingButton
660
677
  btnText={t(
661
678
  'ORDER_NOT_PICKEDUP_BY_CUSTOMER',
@@ -666,7 +683,7 @@ export const OrderDetailsUI = (props: OrderDetailsParams) => {
666
683
  secondButtonClick={() => handleChangeOrderStatus?.(15)}
667
684
  firstButtonClick={() => handleChangeOrderStatus?.(17)}
668
685
  secondBtnText={t(
669
- 'PICKUP_COMPLETED_BY_CUSTOMER',
686
+ 'ORDER_PICKUP_COMPLETED_BY_CUSTOMER',
670
687
  'Pickup completed by customer',
671
688
  )}
672
689
  secondButton={true}