@ethora/chat-component-rn 26.5.7 → 26.5.10

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 (371) hide show
  1. package/CHANGELOG.md +133 -0
  2. package/README.md +67 -10
  3. package/index.js +24 -0
  4. package/lib/commonjs/assets/icons.js +5 -1
  5. package/lib/commonjs/assets/icons.js.map +1 -1
  6. package/lib/commonjs/components/ContextMenu/ContextMenuComponents.js +11 -5
  7. package/lib/commonjs/components/ContextMenu/ContextMenuComponents.js.map +1 -1
  8. package/lib/commonjs/components/MainComponents/ChatRoom.js +64 -38
  9. package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
  10. package/lib/commonjs/components/MainComponents/ChatWrapper.js +57 -13
  11. package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
  12. package/lib/commonjs/components/MainComponents/MediaMessage.js +4 -2
  13. package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
  14. package/lib/commonjs/components/MainComponents/MessageContainer.js +2 -2
  15. package/lib/commonjs/components/MainComponents/MessageContainer.js.map +1 -1
  16. package/lib/commonjs/components/MainComponents/MessageList.js +165 -28
  17. package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
  18. package/lib/commonjs/components/MainComponents/ReduxWrapper.js +17 -8
  19. package/lib/commonjs/components/MainComponents/ReduxWrapper.js.map +1 -1
  20. package/lib/commonjs/components/MainComponents/SystemMessage.js +34 -22
  21. package/lib/commonjs/components/MainComponents/SystemMessage.js.map +1 -1
  22. package/lib/commonjs/components/MessageBubble/Message.js +84 -39
  23. package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
  24. package/lib/commonjs/components/MessageBubble/MessageInteractions.js +82 -22
  25. package/lib/commonjs/components/MessageBubble/MessageInteractions.js.map +1 -1
  26. package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +16 -4
  27. package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
  28. package/lib/commonjs/components/Modals/FilePreviewModal/DocumentViewer.js +104 -0
  29. package/lib/commonjs/components/Modals/FilePreviewModal/DocumentViewer.js.map +1 -0
  30. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +140 -24
  31. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  32. package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js +29 -1
  33. package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
  34. package/lib/commonjs/components/Modals/Modal/Modal.js +5 -1
  35. package/lib/commonjs/components/Modals/Modal/Modal.js.map +1 -1
  36. package/lib/commonjs/components/Modals/ModalWrapper/ModalWrapper.js +77 -47
  37. package/lib/commonjs/components/Modals/ModalWrapper/ModalWrapper.js.map +1 -1
  38. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +3 -3
  39. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  40. package/lib/commonjs/components/Modals/styledModalComponents.js +4 -9
  41. package/lib/commonjs/components/Modals/styledModalComponents.js.map +1 -1
  42. package/lib/commonjs/components/styled/MediaFilePreview.js +47 -28
  43. package/lib/commonjs/components/styled/MediaFilePreview.js.map +1 -1
  44. package/lib/commonjs/components/styled/MessageImage.js +49 -9
  45. package/lib/commonjs/components/styled/MessageImage.js.map +1 -1
  46. package/lib/commonjs/components/styled/NewMessageLabel.js +8 -6
  47. package/lib/commonjs/components/styled/NewMessageLabel.js.map +1 -1
  48. package/lib/commonjs/components/styled/SendInput.js +49 -27
  49. package/lib/commonjs/components/styled/SendInput.js.map +1 -1
  50. package/lib/commonjs/components/styled/StyledInputComponents/MediaComponents.js +14 -4
  51. package/lib/commonjs/components/styled/StyledInputComponents/MediaComponents.js.map +1 -1
  52. package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js +7 -2
  53. package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
  54. package/lib/commonjs/components/styled/UnsupportedType.js +5 -1
  55. package/lib/commonjs/components/styled/UnsupportedType.js.map +1 -1
  56. package/lib/commonjs/components/styled/VideoMessage.js +60 -14
  57. package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
  58. package/lib/commonjs/context/MessageNotificationContext.js +7 -7
  59. package/lib/commonjs/context/MessageNotificationContext.js.map +1 -1
  60. package/lib/commonjs/context/xmppProvider.js +244 -32
  61. package/lib/commonjs/context/xmppProvider.js.map +1 -1
  62. package/lib/commonjs/helpers/chatAutoEnterer.js +2 -7
  63. package/lib/commonjs/helpers/chatAutoEnterer.js.map +1 -1
  64. package/lib/commonjs/helpers/historyPreloadScheduler.js +4 -1
  65. package/lib/commonjs/helpers/historyPreloadScheduler.js.map +1 -1
  66. package/lib/commonjs/helpers/insertMessageWithDelimiter.js +15 -5
  67. package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
  68. package/lib/commonjs/helpers/keyboardLayout.js +18 -0
  69. package/lib/commonjs/helpers/keyboardLayout.js.map +1 -0
  70. package/lib/commonjs/helpers/mediaDimensions.js +51 -0
  71. package/lib/commonjs/helpers/mediaDimensions.js.map +1 -0
  72. package/lib/commonjs/helpers/normalizeRoomJid.js +20 -0
  73. package/lib/commonjs/helpers/normalizeRoomJid.js.map +1 -0
  74. package/lib/commonjs/hooks/useChatRoomFocus.js +87 -0
  75. package/lib/commonjs/hooks/useChatRoomFocus.js.map +1 -0
  76. package/lib/commonjs/hooks/useHeapSender.js +1 -1
  77. package/lib/commonjs/hooks/useHeapSender.js.map +1 -1
  78. package/lib/commonjs/hooks/useLogout.js +3 -3
  79. package/lib/commonjs/hooks/useLogout.js.map +1 -1
  80. package/lib/commonjs/hooks/usePushNotifications.js +6 -2
  81. package/lib/commonjs/hooks/usePushNotifications.js.map +1 -1
  82. package/lib/commonjs/hooks/useRoomState.js +2 -0
  83. package/lib/commonjs/hooks/useRoomState.js.map +1 -1
  84. package/lib/commonjs/hooks/useSendMessage.js +201 -10
  85. package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
  86. package/lib/commonjs/hooks/useUnreadMessagesCounter.js +12 -14
  87. package/lib/commonjs/hooks/useUnreadMessagesCounter.js.map +1 -1
  88. package/lib/commonjs/main.js +7 -0
  89. package/lib/commonjs/main.js.map +1 -1
  90. package/lib/commonjs/networking/api-requests/auth.api.js +67 -0
  91. package/lib/commonjs/networking/api-requests/auth.api.js.map +1 -1
  92. package/lib/commonjs/networking/apiClient.js +2 -1
  93. package/lib/commonjs/networking/apiClient.js.map +1 -1
  94. package/lib/commonjs/networking/outboundQueue.js +92 -0
  95. package/lib/commonjs/networking/outboundQueue.js.map +1 -0
  96. package/lib/commonjs/networking/xmpp/createTimeoutPromise.xmpp.js +4 -1
  97. package/lib/commonjs/networking/xmpp/createTimeoutPromise.xmpp.js.map +1 -1
  98. package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js +7 -8
  99. package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
  100. package/lib/commonjs/networking/xmpp/getRoomsPaged.xmpp.js +26 -3
  101. package/lib/commonjs/networking/xmpp/getRoomsPaged.xmpp.js.map +1 -1
  102. package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js +26 -8
  103. package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
  104. package/lib/commonjs/networking/xmpp/sendTextMessage.xmpp.js +2 -1
  105. package/lib/commonjs/networking/xmpp/sendTextMessage.xmpp.js.map +1 -1
  106. package/lib/commonjs/networking/xmppClient.js +294 -35
  107. package/lib/commonjs/networking/xmppClient.js.map +1 -1
  108. package/lib/commonjs/roomStore/Middleware/unreadMidlleware.js +22 -6
  109. package/lib/commonjs/roomStore/Middleware/unreadMidlleware.js.map +1 -1
  110. package/lib/commonjs/roomStore/roomsSlice.js +157 -23
  111. package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
  112. package/lib/commonjs/utils/installPromiseRejectionTracker.js +83 -0
  113. package/lib/commonjs/utils/installPromiseRejectionTracker.js.map +1 -0
  114. package/lib/commonjs/utils/resendMessage.js +1 -1
  115. package/lib/commonjs/utils/resendMessage.js.map +1 -1
  116. package/lib/module/assets/icons.js +5 -1
  117. package/lib/module/assets/icons.js.map +1 -1
  118. package/lib/module/components/ContextMenu/ContextMenuComponents.js +11 -5
  119. package/lib/module/components/ContextMenu/ContextMenuComponents.js.map +1 -1
  120. package/lib/module/components/MainComponents/ChatRoom.js +65 -39
  121. package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
  122. package/lib/module/components/MainComponents/ChatWrapper.js +57 -13
  123. package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
  124. package/lib/module/components/MainComponents/MediaMessage.js +4 -2
  125. package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
  126. package/lib/module/components/MainComponents/MessageContainer.js +2 -2
  127. package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
  128. package/lib/module/components/MainComponents/MessageList.js +166 -29
  129. package/lib/module/components/MainComponents/MessageList.js.map +1 -1
  130. package/lib/module/components/MainComponents/ReduxWrapper.js +18 -8
  131. package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
  132. package/lib/module/components/MainComponents/SystemMessage.js +33 -21
  133. package/lib/module/components/MainComponents/SystemMessage.js.map +1 -1
  134. package/lib/module/components/MessageBubble/Message.js +85 -40
  135. package/lib/module/components/MessageBubble/Message.js.map +1 -1
  136. package/lib/module/components/MessageBubble/MessageInteractions.js +84 -24
  137. package/lib/module/components/MessageBubble/MessageInteractions.js.map +1 -1
  138. package/lib/module/components/Modals/AttachSheet/AttachSheet.js +15 -3
  139. package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
  140. package/lib/module/components/Modals/FilePreviewModal/DocumentViewer.js +99 -0
  141. package/lib/module/components/Modals/FilePreviewModal/DocumentViewer.js.map +1 -0
  142. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +143 -25
  143. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  144. package/lib/module/components/Modals/FilePreviewModal/PdfView.js +31 -3
  145. package/lib/module/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
  146. package/lib/module/components/Modals/Modal/Modal.js +5 -1
  147. package/lib/module/components/Modals/Modal/Modal.js.map +1 -1
  148. package/lib/module/components/Modals/ModalWrapper/ModalWrapper.js +79 -49
  149. package/lib/module/components/Modals/ModalWrapper/ModalWrapper.js.map +1 -1
  150. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +3 -3
  151. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  152. package/lib/module/components/Modals/styledModalComponents.js +4 -9
  153. package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
  154. package/lib/module/components/styled/MediaFilePreview.js +47 -28
  155. package/lib/module/components/styled/MediaFilePreview.js.map +1 -1
  156. package/lib/module/components/styled/MessageImage.js +51 -11
  157. package/lib/module/components/styled/MessageImage.js.map +1 -1
  158. package/lib/module/components/styled/NewMessageLabel.js +8 -6
  159. package/lib/module/components/styled/NewMessageLabel.js.map +1 -1
  160. package/lib/module/components/styled/SendInput.js +50 -28
  161. package/lib/module/components/styled/SendInput.js.map +1 -1
  162. package/lib/module/components/styled/StyledInputComponents/MediaComponents.js +14 -4
  163. package/lib/module/components/styled/StyledInputComponents/MediaComponents.js.map +1 -1
  164. package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js +7 -2
  165. package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
  166. package/lib/module/components/styled/UnsupportedType.js +5 -1
  167. package/lib/module/components/styled/UnsupportedType.js.map +1 -1
  168. package/lib/module/components/styled/VideoMessage.js +61 -15
  169. package/lib/module/components/styled/VideoMessage.js.map +1 -1
  170. package/lib/module/context/MessageNotificationContext.js +7 -7
  171. package/lib/module/context/MessageNotificationContext.js.map +1 -1
  172. package/lib/module/context/xmppProvider.js +246 -34
  173. package/lib/module/context/xmppProvider.js.map +1 -1
  174. package/lib/module/helpers/chatAutoEnterer.js +2 -7
  175. package/lib/module/helpers/chatAutoEnterer.js.map +1 -1
  176. package/lib/module/helpers/historyPreloadScheduler.js +4 -1
  177. package/lib/module/helpers/historyPreloadScheduler.js.map +1 -1
  178. package/lib/module/helpers/insertMessageWithDelimiter.js +15 -5
  179. package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
  180. package/lib/module/helpers/keyboardLayout.js +12 -0
  181. package/lib/module/helpers/keyboardLayout.js.map +1 -0
  182. package/lib/module/helpers/mediaDimensions.js +46 -0
  183. package/lib/module/helpers/mediaDimensions.js.map +1 -0
  184. package/lib/module/helpers/normalizeRoomJid.js +15 -0
  185. package/lib/module/helpers/normalizeRoomJid.js.map +1 -0
  186. package/lib/module/hooks/useChatRoomFocus.js +82 -0
  187. package/lib/module/hooks/useChatRoomFocus.js.map +1 -0
  188. package/lib/module/hooks/useHeapSender.js +1 -1
  189. package/lib/module/hooks/useHeapSender.js.map +1 -1
  190. package/lib/module/hooks/useLogout.js +3 -3
  191. package/lib/module/hooks/useLogout.js.map +1 -1
  192. package/lib/module/hooks/usePushNotifications.js +6 -2
  193. package/lib/module/hooks/usePushNotifications.js.map +1 -1
  194. package/lib/module/hooks/useRoomState.js +2 -0
  195. package/lib/module/hooks/useRoomState.js.map +1 -1
  196. package/lib/module/hooks/useSendMessage.js +203 -12
  197. package/lib/module/hooks/useSendMessage.js.map +1 -1
  198. package/lib/module/hooks/useUnreadMessagesCounter.js +12 -14
  199. package/lib/module/hooks/useUnreadMessagesCounter.js.map +1 -1
  200. package/lib/module/main.js +1 -0
  201. package/lib/module/main.js.map +1 -1
  202. package/lib/module/networking/api-requests/auth.api.js +67 -1
  203. package/lib/module/networking/api-requests/auth.api.js.map +1 -1
  204. package/lib/module/networking/apiClient.js +2 -1
  205. package/lib/module/networking/apiClient.js.map +1 -1
  206. package/lib/module/networking/outboundQueue.js +84 -0
  207. package/lib/module/networking/outboundQueue.js.map +1 -0
  208. package/lib/module/networking/xmpp/createTimeoutPromise.xmpp.js +4 -1
  209. package/lib/module/networking/xmpp/createTimeoutPromise.xmpp.js.map +1 -1
  210. package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js +7 -8
  211. package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
  212. package/lib/module/networking/xmpp/getRoomsPaged.xmpp.js +26 -3
  213. package/lib/module/networking/xmpp/getRoomsPaged.xmpp.js.map +1 -1
  214. package/lib/module/networking/xmpp/presenceInRoom.xmpp.js +26 -8
  215. package/lib/module/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
  216. package/lib/module/networking/xmpp/sendTextMessage.xmpp.js +2 -1
  217. package/lib/module/networking/xmpp/sendTextMessage.xmpp.js.map +1 -1
  218. package/lib/module/networking/xmppClient.js +294 -35
  219. package/lib/module/networking/xmppClient.js.map +1 -1
  220. package/lib/module/roomStore/Middleware/unreadMidlleware.js +22 -6
  221. package/lib/module/roomStore/Middleware/unreadMidlleware.js.map +1 -1
  222. package/lib/module/roomStore/roomsSlice.js +154 -22
  223. package/lib/module/roomStore/roomsSlice.js.map +1 -1
  224. package/lib/module/utils/installPromiseRejectionTracker.js +78 -0
  225. package/lib/module/utils/installPromiseRejectionTracker.js.map +1 -0
  226. package/lib/module/utils/resendMessage.js +1 -1
  227. package/lib/module/utils/resendMessage.js.map +1 -1
  228. package/lib/typescript/assets/icons.d.ts +8 -4
  229. package/lib/typescript/assets/icons.d.ts.map +1 -1
  230. package/lib/typescript/components/ContextMenu/ContextMenuComponents.d.ts.map +1 -1
  231. package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
  232. package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
  233. package/lib/typescript/components/MainComponents/MediaMessage.d.ts +1 -0
  234. package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
  235. package/lib/typescript/components/MainComponents/MessageContainer.d.ts.map +1 -1
  236. package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
  237. package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts +1 -0
  238. package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
  239. package/lib/typescript/components/MainComponents/SystemMessage.d.ts +0 -7
  240. package/lib/typescript/components/MainComponents/SystemMessage.d.ts.map +1 -1
  241. package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
  242. package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts +4 -2
  243. package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts.map +1 -1
  244. package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
  245. package/lib/typescript/components/Modals/FilePreviewModal/DocumentViewer.d.ts +29 -0
  246. package/lib/typescript/components/Modals/FilePreviewModal/DocumentViewer.d.ts.map +1 -0
  247. package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts +0 -1
  248. package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
  249. package/lib/typescript/components/Modals/FilePreviewModal/PdfView.d.ts.map +1 -1
  250. package/lib/typescript/components/Modals/Modal/Modal.d.ts.map +1 -1
  251. package/lib/typescript/components/Modals/ModalWrapper/ModalWrapper.d.ts.map +1 -1
  252. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
  253. package/lib/typescript/components/Modals/styledModalComponents.d.ts.map +1 -1
  254. package/lib/typescript/components/styled/MediaFilePreview.d.ts.map +1 -1
  255. package/lib/typescript/components/styled/MessageImage.d.ts.map +1 -1
  256. package/lib/typescript/components/styled/NewMessageLabel.d.ts +1 -5
  257. package/lib/typescript/components/styled/NewMessageLabel.d.ts.map +1 -1
  258. package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
  259. package/lib/typescript/components/styled/StyledInputComponents/MediaComponents.d.ts +9 -1
  260. package/lib/typescript/components/styled/StyledInputComponents/MediaComponents.d.ts.map +1 -1
  261. package/lib/typescript/components/styled/StyledInputComponents/StyledInputComponents.d.ts.map +1 -1
  262. package/lib/typescript/components/styled/UnsupportedType.d.ts +1 -0
  263. package/lib/typescript/components/styled/UnsupportedType.d.ts.map +1 -1
  264. package/lib/typescript/components/styled/VideoMessage.d.ts.map +1 -1
  265. package/lib/typescript/context/xmppProvider.d.ts +1 -0
  266. package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
  267. package/lib/typescript/helpers/chatAutoEnterer.d.ts.map +1 -1
  268. package/lib/typescript/helpers/historyPreloadScheduler.d.ts.map +1 -1
  269. package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
  270. package/lib/typescript/helpers/keyboardLayout.d.ts +9 -0
  271. package/lib/typescript/helpers/keyboardLayout.d.ts.map +1 -0
  272. package/lib/typescript/helpers/mediaDimensions.d.ts +9 -0
  273. package/lib/typescript/helpers/mediaDimensions.d.ts.map +1 -0
  274. package/lib/typescript/helpers/normalizeRoomJid.d.ts +2 -0
  275. package/lib/typescript/helpers/normalizeRoomJid.d.ts.map +1 -0
  276. package/lib/typescript/hooks/useChatRoomFocus.d.ts +42 -0
  277. package/lib/typescript/hooks/useChatRoomFocus.d.ts.map +1 -0
  278. package/lib/typescript/hooks/useHeapSender.d.ts.map +1 -1
  279. package/lib/typescript/hooks/usePushNotifications.d.ts.map +1 -1
  280. package/lib/typescript/hooks/useRoomState.d.ts +1 -0
  281. package/lib/typescript/hooks/useRoomState.d.ts.map +1 -1
  282. package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
  283. package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts.map +1 -1
  284. package/lib/typescript/main.d.ts +1 -0
  285. package/lib/typescript/main.d.ts.map +1 -1
  286. package/lib/typescript/networking/api-requests/auth.api.d.ts +3 -0
  287. package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
  288. package/lib/typescript/networking/apiClient.d.ts.map +1 -1
  289. package/lib/typescript/networking/outboundQueue.d.ts +57 -0
  290. package/lib/typescript/networking/outboundQueue.d.ts.map +1 -0
  291. package/lib/typescript/networking/xmpp/createTimeoutPromise.xmpp.d.ts.map +1 -1
  292. package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts +1 -1
  293. package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts.map +1 -1
  294. package/lib/typescript/networking/xmpp/getRoomsPaged.xmpp.d.ts +1 -1
  295. package/lib/typescript/networking/xmpp/getRoomsPaged.xmpp.d.ts.map +1 -1
  296. package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts.map +1 -1
  297. package/lib/typescript/networking/xmpp/sendTextMessage.xmpp.d.ts.map +1 -1
  298. package/lib/typescript/networking/xmppClient.d.ts +33 -4
  299. package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
  300. package/lib/typescript/roomStore/Middleware/unreadMidlleware.d.ts.map +1 -1
  301. package/lib/typescript/roomStore/roomsSlice.d.ts +8 -1
  302. package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
  303. package/lib/typescript/types/models/media.model.d.ts +1 -0
  304. package/lib/typescript/types/models/media.model.d.ts.map +1 -1
  305. package/lib/typescript/types/models/xmpp.model.d.ts +1 -1
  306. package/lib/typescript/types/models/xmpp.model.d.ts.map +1 -1
  307. package/lib/typescript/types/types.d.ts +4 -0
  308. package/lib/typescript/types/types.d.ts.map +1 -1
  309. package/lib/typescript/utils/installPromiseRejectionTracker.d.ts +20 -0
  310. package/lib/typescript/utils/installPromiseRejectionTracker.d.ts.map +1 -0
  311. package/lib/typescript/utils/resendMessage.d.ts.map +1 -1
  312. package/package.json +18 -2
  313. package/src/assets/icons.tsx +23 -14
  314. package/src/components/ContextMenu/ContextMenuComponents.tsx +10 -5
  315. package/src/components/MainComponents/ChatRoom.tsx +81 -66
  316. package/src/components/MainComponents/ChatWrapper.tsx +99 -21
  317. package/src/components/MainComponents/MediaMessage.tsx +3 -0
  318. package/src/components/MainComponents/MessageContainer.tsx +4 -2
  319. package/src/components/MainComponents/MessageList.tsx +175 -28
  320. package/src/components/MainComponents/ReduxWrapper.tsx +19 -9
  321. package/src/components/MainComponents/SystemMessage.tsx +38 -26
  322. package/src/components/MessageBubble/Message.tsx +91 -62
  323. package/src/components/MessageBubble/MessageInteractions.tsx +98 -29
  324. package/src/components/Modals/AttachSheet/AttachSheet.tsx +17 -3
  325. package/src/components/Modals/FilePreviewModal/DocumentViewer.tsx +93 -0
  326. package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +152 -25
  327. package/src/components/Modals/FilePreviewModal/PdfView.tsx +32 -4
  328. package/src/components/Modals/Modal/Modal.tsx +4 -1
  329. package/src/components/Modals/ModalWrapper/ModalWrapper.tsx +70 -58
  330. package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +19 -15
  331. package/src/components/Modals/styledModalComponents.tsx +4 -9
  332. package/src/components/styled/MediaFilePreview.tsx +46 -26
  333. package/src/components/styled/MessageImage.tsx +58 -13
  334. package/src/components/styled/NewMessageLabel.tsx +8 -5
  335. package/src/components/styled/SendInput.tsx +64 -29
  336. package/src/components/styled/StyledInputComponents/MediaComponents.tsx +15 -5
  337. package/src/components/styled/StyledInputComponents/StyledInputComponents.tsx +7 -2
  338. package/src/components/styled/UnsupportedType.tsx +7 -1
  339. package/src/components/styled/VideoMessage.tsx +59 -11
  340. package/src/context/MessageNotificationContext.tsx +8 -8
  341. package/src/context/xmppProvider.tsx +247 -30
  342. package/src/helpers/chatAutoEnterer.ts +2 -8
  343. package/src/helpers/historyPreloadScheduler.ts +4 -1
  344. package/src/helpers/insertMessageWithDelimiter.ts +22 -15
  345. package/src/helpers/keyboardLayout.ts +18 -0
  346. package/src/helpers/mediaDimensions.ts +47 -0
  347. package/src/helpers/normalizeRoomJid.ts +6 -0
  348. package/src/hooks/useChatRoomFocus.ts +95 -0
  349. package/src/hooks/useHeapSender.tsx +2 -1
  350. package/src/hooks/useLogout.tsx +3 -3
  351. package/src/hooks/usePushNotifications.ts +21 -8
  352. package/src/hooks/useRoomState.tsx +4 -0
  353. package/src/hooks/useSendMessage.tsx +258 -13
  354. package/src/hooks/useUnreadMessagesCounter.ts +13 -16
  355. package/src/main.ts +1 -0
  356. package/src/networking/api-requests/auth.api.ts +55 -1
  357. package/src/networking/apiClient.ts +2 -1
  358. package/src/networking/outboundQueue.ts +98 -0
  359. package/src/networking/xmpp/createTimeoutPromise.xmpp.ts +5 -1
  360. package/src/networking/xmpp/flushLastViewedToPrivateStore.ts +11 -13
  361. package/src/networking/xmpp/getRoomsPaged.xmpp.ts +27 -3
  362. package/src/networking/xmpp/presenceInRoom.xmpp.ts +24 -9
  363. package/src/networking/xmpp/sendTextMessage.xmpp.ts +2 -1
  364. package/src/networking/xmppClient.ts +317 -43
  365. package/src/roomStore/Middleware/unreadMidlleware.tsx +23 -5
  366. package/src/roomStore/roomsSlice.ts +177 -27
  367. package/src/types/models/media.model.ts +3 -0
  368. package/src/types/models/xmpp.model.ts +2 -1
  369. package/src/types/types.ts +15 -0
  370. package/src/utils/installPromiseRejectionTracker.ts +91 -0
  371. package/src/utils/resendMessage.ts +2 -1
@@ -6,9 +6,11 @@ import { useDispatch } from 'react-redux';
6
6
  import MessageList from './MessageList';
7
7
  import SendInput from '../styled/SendInput';
8
8
  import {
9
+ clearVisibleRoom,
9
10
  deleteRoomMessage,
10
11
  setEditAction,
11
12
  setLastViewedTimestamp,
13
+ setVisibleRoom,
12
14
  } from '../../roomStore/roomsSlice';
13
15
  import Loader from '../styled/Loader';
14
16
  import { useXmppClient } from '../../context/xmppProvider';
@@ -36,6 +38,12 @@ import {
36
38
  } from 'react-native';
37
39
  import { KeyboardAvoidingView } from 'react-native-keyboard-controller';
38
40
  import useComposing from '../../hooks/useComposing';
41
+ import { store } from '../../roomStore';
42
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
43
+ import {
44
+ getInputDockPaddingBottom,
45
+ getKeyboardVerticalOffset,
46
+ } from '../../helpers/keyboardLayout';
39
47
 
40
48
  interface ChatRoomProps {
41
49
  CustomMessageComponent?: any;
@@ -59,6 +67,7 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
59
67
  }) => {
60
68
  const { client } = useXmppClient();
61
69
  const dispatch = useDispatch();
70
+ const insets = useSafeAreaInsets();
62
71
 
63
72
  const [isLoadingMore, setIsLoadingMore] = useState<boolean>(false);
64
73
 
@@ -99,15 +108,9 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
99
108
  if (!activeRoomJID) {
100
109
  return;
101
110
  }
102
- dispatch(
103
- setLastViewedTimestamp({
104
- chatJID: activeRoomJID,
105
- timestamp: 0,
106
- }),
107
- );
108
111
  sendMs(message, activeRoomJID);
109
112
  },
110
- [activeRoomJID],
113
+ [activeRoomJID, sendMs]
111
114
  );
112
115
 
113
116
  const sendMedia = useCallback(
@@ -156,36 +159,28 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
156
159
  return;
157
160
  }
158
161
 
159
- dispatch(
160
- setLastViewedTimestamp({
161
- chatJID: activeRoomJID,
162
- timestamp: 0,
163
- }),
164
- );
162
+ dispatch(setVisibleRoom({ roomJID: activeRoomJID }));
165
163
  setIsLoadingMore(false);
166
164
  return () => {
167
- if (client) {
168
- client.actionSetTimestampToPrivateStoreStanza(
169
- activeRoomJID,
170
- new Date().getTime(),
171
- Object.keys(roomsList),
172
- );
173
- }
165
+ const timestamp = new Date().getTime();
174
166
  dispatch(
175
167
  setLastViewedTimestamp({
176
168
  chatJID: activeRoomJID,
177
- timestamp: new Date().getTime(),
178
- }),
179
- );
180
- dispatch(
181
- deleteRoomMessage({
182
- roomJID: activeRoomJID,
183
- messageId: 'delimiter-new',
169
+ timestamp,
184
170
  }),
185
171
  );
172
+ dispatch(clearVisibleRoom());
173
+ if (client) {
174
+ client
175
+ .flushLastViewedToPrivateStoreStanza(store.getState().rooms?.rooms, {
176
+ visibleRoomJID: activeRoomJID,
177
+ })
178
+ .catch(() => {});
179
+ }
180
+ dispatch(deleteRoomMessage({ roomJID: activeRoomJID, messageId: 'delimiter-new' }));
186
181
  setIsLoadingMore(false);
187
182
  };
188
- }, [activeRoomJID]);
183
+ }, [activeRoomJID, client, dispatch]);
189
184
 
190
185
  // hooks useEffects
191
186
  // useRoomUrl(activeRoomJID || "", roomsList, config);
@@ -210,16 +205,34 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
210
205
  return <ChooseChatMessage />;
211
206
  }
212
207
 
208
+ const keyboardVerticalOffset = getKeyboardVerticalOffset({
209
+ platform: Platform.OS,
210
+ configuredOffset: configWithEventHandlers?.keyboardVerticalOffset ?? 0,
211
+ bottomInset: insets.bottom,
212
+ });
213
+ const inputDockPaddingBottom = getInputDockPaddingBottom({
214
+ platform: Platform.OS,
215
+ bottomInset: insets.bottom,
216
+ });
217
+
213
218
  return (
214
219
  <KeyboardAvoidingView
215
220
  style={{ flex: 1 }}
216
- // Android: rely on the manifest's `adjustResize` (default). KAV
217
- // behavior="height" on top of adjustResize double-handles the
218
- // resize and causes a visible message-list flicker every time
219
- // the keyboard opens (bug #6). `undefined` makes KAV a no-op on
220
- // Android — the system resize alone shows the input correctly.
221
- behavior={Platform.OS === 'ios' ? 'padding' : undefined}
222
- keyboardVerticalOffset={configWithEventHandlers?.keyboardVerticalOffset ?? 0}
221
+ // Bug #6 history:
222
+ // - Original code: behavior="height" on Android — caused
223
+ // flicker because Android's adjustResize already shrinks
224
+ // the window; KAV resizing on top of that double-resized
225
+ // every keyboard open.
226
+ // - 26.5.6 attempt: behavior={undefined} on Android — input
227
+ // got completely blocked because some host apps disable
228
+ // adjustResize via the activity's softInputMode.
229
+ // - 26.5.8 fix: behavior="padding" on BOTH platforms. Padding
230
+ // adds bottom-padding equal to the keyboard height without
231
+ // changing the layout's height prop — no double-resize on
232
+ // Android, no flicker, and the input is always lifted above
233
+ // the keyboard regardless of the host's softInputMode.
234
+ behavior="padding"
235
+ keyboardVerticalOffset={keyboardVerticalOffset}
223
236
  >
224
237
  <ChatContainer
225
238
  style={
@@ -342,37 +355,39 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
342
355
  {editAction && editAction.isEdit && (
343
356
  <EditWrapper text={editAction.text || ''} onClose={onCloseEdit} />
344
357
  )}
345
- {CustomInputComponent ? (
346
- <CustomInputComponent
347
- sendMessage={
348
- editAction && editAction.isEdit ? sendEditMessage : sendMessage
349
- }
350
- sendMedia={sendMedia}
351
- config={configWithEventHandlers}
352
- isLoading={loading}
353
- onFocus={sendStartComposing}
354
- onBlur={sendEndComposing}
355
- isMessageProcessing={isLastMessageFromUserAndProcessing(
356
- activeRoomJID,
357
- )}
358
- editMessage={editAction && editAction.text}
359
- />
360
- ) : (
361
- <SendInput
362
- editMessage={editAction && editAction.text}
363
- sendMessage={
364
- editAction && editAction.isEdit ? sendEditMessage : sendMessage
365
- }
366
- sendMedia={sendMedia}
367
- config={configWithEventHandlers}
368
- isLoading={loading}
369
- onFocus={sendStartComposing}
370
- onBlur={sendEndComposing}
371
- isMessageProcessing={isLastMessageFromUserAndProcessing(
372
- activeRoomJID,
373
- )}
374
- />
375
- )}
358
+ <View style={{ paddingBottom: inputDockPaddingBottom, backgroundColor: '#fff' }}>
359
+ {CustomInputComponent ? (
360
+ <CustomInputComponent
361
+ sendMessage={
362
+ editAction && editAction.isEdit ? sendEditMessage : sendMessage
363
+ }
364
+ sendMedia={sendMedia}
365
+ config={configWithEventHandlers}
366
+ isLoading={loading}
367
+ onFocus={sendStartComposing}
368
+ onBlur={sendEndComposing}
369
+ isMessageProcessing={isLastMessageFromUserAndProcessing(
370
+ activeRoomJID,
371
+ )}
372
+ editMessage={editAction && editAction.text}
373
+ />
374
+ ) : (
375
+ <SendInput
376
+ editMessage={editAction && editAction.text}
377
+ sendMessage={
378
+ editAction && editAction.isEdit ? sendEditMessage : sendMessage
379
+ }
380
+ sendMedia={sendMedia}
381
+ config={configWithEventHandlers}
382
+ isLoading={loading}
383
+ onFocus={sendStartComposing}
384
+ onBlur={sendEndComposing}
385
+ isMessageProcessing={isLastMessageFromUserAndProcessing(
386
+ activeRoomJID,
387
+ )}
388
+ />
389
+ )}
390
+ </View>
376
391
 
377
392
  {configWithEventHandlers?.customTypingIndicator?.enabled &&
378
393
  (configWithEventHandlers.customTypingIndicator.position ===
@@ -9,6 +9,7 @@ import {
9
9
  } from '../../roomStore/chatSettingsSlice';
10
10
  import {ChatWrapperBox} from '../styled/ChatWrapperBox';
11
11
  import {Overlay, StyledModal} from '../styled/MediaModal';
12
+ import ConnectionBanner from './ConnectionBanner';
12
13
  import {Message} from '../MessageBubble/Message';
13
14
  import {IConfig, IRoom, MessageProps, ModalType, User} from '../../types/types';
14
15
  import {useXmppClient} from '../../context/xmppProvider';
@@ -30,6 +31,7 @@ import {ModalWrapper} from '../Modals/ModalWrapper/ModalWrapper';
30
31
  import {useChatSettingState} from '../../hooks/useChatSettingState';
31
32
  import {DeviceEventEmitter, Pressable, Text, View} from 'react-native';
32
33
  import {pushLog as devPushLog} from '../../utils/devLogger';
34
+ import {normalizeRoomJid} from '../../helpers/normalizeRoomJid';
33
35
 
34
36
  interface ChatWrapperProps {
35
37
  token?: string;
@@ -126,7 +128,11 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
126
128
 
127
129
  useEffect(() => {
128
130
  if (roomJID) {
129
- dispatch(setCurrentRoom({roomJID: roomJID}));
131
+ dispatch(
132
+ setCurrentRoom({
133
+ roomJID: normalizeRoomJid(roomJID, config?.xmppSettings?.conference),
134
+ }),
135
+ );
130
136
  }
131
137
 
132
138
  const initXmmpClient = async () => {
@@ -186,45 +192,79 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
186
192
 
187
193
  if (!client && !storedClient) {
188
194
  devPushLog('rn', 'ChatWrapper: initing xmpp client (legacy path)');
189
- await initializeClient(
190
- user.xmppUsername || user.defaultWallet?.walletAddress,
191
- user.xmppPassword,
192
- config?.xmppSettings
193
- ).then(c => {
194
- c.getRoomsStanza()
195
- .then(() => {
196
- c.getChatsPrivateStoreRequestStanza();
197
- dispatch(setStoreClient(c));
198
- setClient(c);
199
- })
200
- .catch((err: unknown) => console.warn('getRoomsStanza failed', err));
201
- });
195
+ // The outer `.then(c => {...})` used to lack a `.catch()` —
196
+ // if initializeClient rejected (network / SASL), the outer
197
+ // try/catch couldn't see it because the rejection happens in
198
+ // the .then handler, not in the awaited promise itself.
199
+ // Convert to await + try/catch.
200
+ try {
201
+ const c = await initializeClient(
202
+ user.xmppUsername || user.defaultWallet?.walletAddress,
203
+ user.xmppPassword,
204
+ config?.xmppSettings
205
+ );
206
+ try {
207
+ await c.getRoomsStanza();
208
+ c.getChatsPrivateStoreRequestStanza().catch((err: unknown) =>
209
+ console.warn('getChatsPrivateStoreRequestStanza failed', err)
210
+ );
211
+ dispatch(setStoreClient(c));
212
+ setClient(c);
213
+ } catch (err) {
214
+ console.warn('getRoomsStanza failed', err);
215
+ }
216
+ } catch (err) {
217
+ devPushLog('warn', 'initializeClient failed (legacy path)', err);
218
+ }
202
219
  setInited(true);
203
- if (config?.refreshTokens?.enabled) {refresh();}
220
+ if (config?.refreshTokens?.enabled) {
221
+ // refresh() is fire-and-forget but rejects on bad
222
+ // refreshToken / network — surface via .catch instead of
223
+ // leaving the rejection unhandled (was bug #4, id:2).
224
+ refresh().catch((err) =>
225
+ console.warn('refresh failed', err)
226
+ );
227
+ }
204
228
  } else if (storedClient) {
205
229
  devPushLog('rn', 'ChatWrapper: reusing storedClient');
206
230
  setClient(storedClient);
207
231
  if (!activeRoomJID) {
208
232
  storedClient.getRoomsStanza()
209
233
  .then(() => {
210
- storedClient.getChatsPrivateStoreRequestStanza();
234
+ storedClient.getChatsPrivateStoreRequestStanza().catch(
235
+ (err: unknown) =>
236
+ console.warn('getChatsPrivateStoreRequestStanza failed', err)
237
+ );
211
238
  })
212
239
  .catch((err: unknown) => console.warn('getRoomsStanza failed', err));
213
240
  }
214
241
  setInited(true);
215
- if (config?.refreshTokens?.enabled) {refresh();}
242
+ if (config?.refreshTokens?.enabled) {
243
+ refresh().catch((err) =>
244
+ console.warn('refresh failed', err)
245
+ );
246
+ }
216
247
  } else if (client) {
217
248
  devPushLog('rn', 'ChatWrapper: reusing provider client');
218
249
  if (!activeRoomJID) {
219
250
  client.getRoomsStanza()
220
251
  .then(() => {
221
- client.getChatsPrivateStoreRequestStanza();
252
+ client.getChatsPrivateStoreRequestStanza().catch(
253
+ (err: unknown) =>
254
+ console.warn('getChatsPrivateStoreRequestStanza failed', err)
255
+ );
222
256
  })
223
257
  .catch((err: unknown) => console.warn('getRoomsStanza failed', err));
224
258
  }
225
- client.getChatsPrivateStoreRequestStanza();
259
+ client.getChatsPrivateStoreRequestStanza().catch((err: unknown) =>
260
+ console.warn('getChatsPrivateStoreRequestStanza failed', err)
261
+ );
226
262
  setInited(true);
227
- if (config?.refreshTokens?.enabled) {refresh();}
263
+ if (config?.refreshTokens?.enabled) {
264
+ refresh().catch((err) =>
265
+ console.warn('refresh failed', err)
266
+ );
267
+ }
228
268
  }
229
269
 
230
270
  dispatch(setIsLoading({loading: false}));
@@ -250,6 +290,38 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
250
290
  config?.initBeforeLoad,
251
291
  ]);
252
292
 
293
+ // Cache-first display (initBeforeLoad). The main effect above only marks
294
+ // the chat `inited` once the provider bootstrap reaches 'ready' — which
295
+ // waits on the cold XMPP connect. On re-entry that left the user staring
296
+ // at a loader while fully-cached rooms/messages sat in redux-persist
297
+ // ("pulls a new connection for 100 years"). Here we render the cached
298
+ // content the instant rehydration lands; the live client gets wired by
299
+ // the main effect when the connect completes (send/loadMore activate
300
+ // then). Mirrors web showing cached rooms immediately + refreshing in
301
+ // the background.
302
+ useEffect(() => {
303
+ if (!config?.initBeforeLoad || initMode !== 'provider') {return;}
304
+ if (isInited || showModal) {return;}
305
+ if (providerBootstrapStatus === 'failed') {return;}
306
+ const haveCachedRooms = !!rooms && Object.keys(rooms).length > 0;
307
+ const haveUser =
308
+ !!user?.xmppUsername || !!user?.defaultWallet?.walletAddress;
309
+ if (haveCachedRooms && haveUser) {
310
+ devPushLog('rn', 'ChatWrapper: cache-first — showing persisted rooms while provider connects');
311
+ setShowModal(false);
312
+ setInited(true);
313
+ }
314
+ }, [
315
+ config?.initBeforeLoad,
316
+ initMode,
317
+ isInited,
318
+ showModal,
319
+ providerBootstrapStatus,
320
+ rooms,
321
+ user?.xmppUsername,
322
+ user?.defaultWallet?.walletAddress,
323
+ ]);
324
+
253
325
  // Skip the legacy email/password LoginForm entirely when XmppProvider
254
326
  // is driving auth via initBeforeLoad — the bootstrap effect will
255
327
  // populate the user shortly. Showing LoginForm here causes a flicker
@@ -270,7 +342,13 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
270
342
 
271
343
  return (
272
344
  <>
273
- {showModal && (
345
+ {/* Connection/bootstrap error UI. For patient-facing apps the
346
+ full-screen dark overlay reads as a crash, so
347
+ `disableConnectionErrorOverlay` swaps it for a subtle inline
348
+ "Connection lost. Retrying…" banner (and reconnect + re-join now
349
+ recover automatically). */}
350
+ {showModal && config?.disableConnectionErrorOverlay && <ConnectionBanner />}
351
+ {showModal && !config?.disableConnectionErrorOverlay && (
274
352
  <Overlay>
275
353
  <View
276
354
  style={{
@@ -12,6 +12,7 @@ interface MediaMessageProps {
12
12
  message?: IMessage;
13
13
  location?: string;
14
14
  messageText?: string;
15
+ isUser: boolean;
15
16
  }
16
17
 
17
18
  const MediaMessage: React.FC<MediaMessageProps> = ({
@@ -19,6 +20,7 @@ const MediaMessage: React.FC<MediaMessageProps> = ({
19
20
  location,
20
21
  messageText,
21
22
  message,
23
+ isUser,
22
24
  }) => {
23
25
  if (mimeType) {
24
26
  const displayName = deriveDisplayFilename({
@@ -61,6 +63,7 @@ const MediaMessage: React.FC<MediaMessageProps> = ({
61
63
  fileURL={location ? location : ''}
62
64
  fileName={displayName}
63
65
  mimetype={mimeType}
66
+ isUser={isUser}
64
67
  />
65
68
  );
66
69
  }
@@ -73,7 +73,7 @@ export const MessageContainer: FC<MessageContainerProps> = ({
73
73
  );
74
74
  }
75
75
 
76
- if (message?.id === 'delimiter-new') {
76
+ if (String(message?.id || '').startsWith('delimiter-new')) {
77
77
  return CustomNewMessageLabel ? (
78
78
  <CustomNewMessageLabel color={config?.colors?.primary} />
79
79
  ) : (
@@ -85,7 +85,9 @@ export const MessageContainer: FC<MessageContainerProps> = ({
85
85
 
86
86
  return (
87
87
  <View key={message.id}>
88
- {showDateLabel && !activeMessage && message.id !== 'delimiter-new' ? (
88
+ {showDateLabel &&
89
+ !activeMessage &&
90
+ !String(message.id || '').startsWith('delimiter-new') ? (
89
91
  CustomDaySeparator ? (
90
92
  <CustomDaySeparator
91
93
  date={messageDate}