@ethora/chat-component-rn 26.5.7 → 26.5.11

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 (417) hide show
  1. package/CHANGELOG.md +191 -0
  2. package/README.md +95 -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/ChatHeader.js +31 -16
  9. package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
  10. package/lib/commonjs/components/MainComponents/ChatRoom.js +78 -38
  11. package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
  12. package/lib/commonjs/components/MainComponents/ChatWrapper.js +74 -27
  13. package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
  14. package/lib/commonjs/components/MainComponents/MediaMessage.js +16 -11
  15. package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
  16. package/lib/commonjs/components/MainComponents/MessageContainer.js +2 -2
  17. package/lib/commonjs/components/MainComponents/MessageContainer.js.map +1 -1
  18. package/lib/commonjs/components/MainComponents/MessageList.js +165 -28
  19. package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
  20. package/lib/commonjs/components/MainComponents/ReduxWrapper.js +17 -8
  21. package/lib/commonjs/components/MainComponents/ReduxWrapper.js.map +1 -1
  22. package/lib/commonjs/components/MainComponents/SystemMessage.js +34 -22
  23. package/lib/commonjs/components/MainComponents/SystemMessage.js.map +1 -1
  24. package/lib/commonjs/components/MessageBubble/InteractionsOverlay.js +119 -0
  25. package/lib/commonjs/components/MessageBubble/InteractionsOverlay.js.map +1 -0
  26. package/lib/commonjs/components/MessageBubble/Message.js +122 -41
  27. package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
  28. package/lib/commonjs/components/MessageBubble/MessageInteractions.js +132 -44
  29. package/lib/commonjs/components/MessageBubble/MessageInteractions.js.map +1 -1
  30. package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +155 -52
  31. package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
  32. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +20 -5
  33. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  34. package/lib/commonjs/components/Modals/FilePreviewModal/DocumentViewer.js +104 -0
  35. package/lib/commonjs/components/Modals/FilePreviewModal/DocumentViewer.js.map +1 -0
  36. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +144 -24
  37. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  38. package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js +29 -1
  39. package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
  40. package/lib/commonjs/components/Modals/Modal/Modal.js +5 -1
  41. package/lib/commonjs/components/Modals/Modal/Modal.js.map +1 -1
  42. package/lib/commonjs/components/Modals/ModalHeaderComponent.js +10 -0
  43. package/lib/commonjs/components/Modals/ModalHeaderComponent.js.map +1 -1
  44. package/lib/commonjs/components/Modals/ModalWrapper/ModalWrapper.js +77 -47
  45. package/lib/commonjs/components/Modals/ModalWrapper/ModalWrapper.js.map +1 -1
  46. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +3 -3
  47. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  48. package/lib/commonjs/components/Modals/styledModalComponents.js +17 -13
  49. package/lib/commonjs/components/Modals/styledModalComponents.js.map +1 -1
  50. package/lib/commonjs/components/styled/MediaFilePreview.js +47 -28
  51. package/lib/commonjs/components/styled/MediaFilePreview.js.map +1 -1
  52. package/lib/commonjs/components/styled/MessageImage.js +49 -9
  53. package/lib/commonjs/components/styled/MessageImage.js.map +1 -1
  54. package/lib/commonjs/components/styled/NewMessageLabel.js +8 -6
  55. package/lib/commonjs/components/styled/NewMessageLabel.js.map +1 -1
  56. package/lib/commonjs/components/styled/SendInput.js +49 -27
  57. package/lib/commonjs/components/styled/SendInput.js.map +1 -1
  58. package/lib/commonjs/components/styled/StyledComponents.js +6 -3
  59. package/lib/commonjs/components/styled/StyledComponents.js.map +1 -1
  60. package/lib/commonjs/components/styled/StyledInputComponents/MediaComponents.js +14 -4
  61. package/lib/commonjs/components/styled/StyledInputComponents/MediaComponents.js.map +1 -1
  62. package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js +7 -2
  63. package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
  64. package/lib/commonjs/components/styled/UnsupportedType.js +5 -1
  65. package/lib/commonjs/components/styled/UnsupportedType.js.map +1 -1
  66. package/lib/commonjs/components/styled/VideoMessage.js +81 -16
  67. package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
  68. package/lib/commonjs/context/MessageNotificationContext.js +7 -7
  69. package/lib/commonjs/context/MessageNotificationContext.js.map +1 -1
  70. package/lib/commonjs/context/xmppProvider.js +244 -32
  71. package/lib/commonjs/context/xmppProvider.js.map +1 -1
  72. package/lib/commonjs/helpers/chatAutoEnterer.js +2 -7
  73. package/lib/commonjs/helpers/chatAutoEnterer.js.map +1 -1
  74. package/lib/commonjs/helpers/historyPreloadScheduler.js +4 -1
  75. package/lib/commonjs/helpers/historyPreloadScheduler.js.map +1 -1
  76. package/lib/commonjs/helpers/insertMessageWithDelimiter.js +15 -5
  77. package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
  78. package/lib/commonjs/helpers/keyboardLayout.js +18 -0
  79. package/lib/commonjs/helpers/keyboardLayout.js.map +1 -0
  80. package/lib/commonjs/helpers/mediaDimensions.js +51 -0
  81. package/lib/commonjs/helpers/mediaDimensions.js.map +1 -0
  82. package/lib/commonjs/helpers/mimeToExtension.js +56 -0
  83. package/lib/commonjs/helpers/mimeToExtension.js.map +1 -1
  84. package/lib/commonjs/helpers/normalizeRoomJid.js +20 -0
  85. package/lib/commonjs/helpers/normalizeRoomJid.js.map +1 -0
  86. package/lib/commonjs/hooks/useChatRoomFocus.js +87 -0
  87. package/lib/commonjs/hooks/useChatRoomFocus.js.map +1 -0
  88. package/lib/commonjs/hooks/useHeapSender.js +1 -1
  89. package/lib/commonjs/hooks/useHeapSender.js.map +1 -1
  90. package/lib/commonjs/hooks/useLogout.js +36 -11
  91. package/lib/commonjs/hooks/useLogout.js.map +1 -1
  92. package/lib/commonjs/hooks/usePushNotifications.js +6 -2
  93. package/lib/commonjs/hooks/usePushNotifications.js.map +1 -1
  94. package/lib/commonjs/hooks/useRoomState.js +2 -0
  95. package/lib/commonjs/hooks/useRoomState.js.map +1 -1
  96. package/lib/commonjs/hooks/useSendMessage.js +201 -10
  97. package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
  98. package/lib/commonjs/hooks/useUnreadMessagesCounter.js +12 -14
  99. package/lib/commonjs/hooks/useUnreadMessagesCounter.js.map +1 -1
  100. package/lib/commonjs/main.js +7 -0
  101. package/lib/commonjs/main.js.map +1 -1
  102. package/lib/commonjs/networking/api-requests/auth.api.js +67 -0
  103. package/lib/commonjs/networking/api-requests/auth.api.js.map +1 -1
  104. package/lib/commonjs/networking/api-requests/rooms.api.js +29 -4
  105. package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
  106. package/lib/commonjs/networking/apiClient.js +2 -1
  107. package/lib/commonjs/networking/apiClient.js.map +1 -1
  108. package/lib/commonjs/networking/outboundQueue.js +92 -0
  109. package/lib/commonjs/networking/outboundQueue.js.map +1 -0
  110. package/lib/commonjs/networking/xmpp/createTimeoutPromise.xmpp.js +4 -1
  111. package/lib/commonjs/networking/xmpp/createTimeoutPromise.xmpp.js.map +1 -1
  112. package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js +7 -8
  113. package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
  114. package/lib/commonjs/networking/xmpp/getRoomsPaged.xmpp.js +26 -3
  115. package/lib/commonjs/networking/xmpp/getRoomsPaged.xmpp.js.map +1 -1
  116. package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js +26 -8
  117. package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
  118. package/lib/commonjs/networking/xmpp/sendTextMessage.xmpp.js +2 -1
  119. package/lib/commonjs/networking/xmpp/sendTextMessage.xmpp.js.map +1 -1
  120. package/lib/commonjs/networking/xmppClient.js +294 -35
  121. package/lib/commonjs/networking/xmppClient.js.map +1 -1
  122. package/lib/commonjs/roomStore/Middleware/unreadMidlleware.js +22 -6
  123. package/lib/commonjs/roomStore/Middleware/unreadMidlleware.js.map +1 -1
  124. package/lib/commonjs/roomStore/roomsSlice.js +157 -23
  125. package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
  126. package/lib/commonjs/utils/installPromiseRejectionTracker.js +83 -0
  127. package/lib/commonjs/utils/installPromiseRejectionTracker.js.map +1 -0
  128. package/lib/commonjs/utils/resendMessage.js +1 -1
  129. package/lib/commonjs/utils/resendMessage.js.map +1 -1
  130. package/lib/module/assets/icons.js +5 -1
  131. package/lib/module/assets/icons.js.map +1 -1
  132. package/lib/module/components/ContextMenu/ContextMenuComponents.js +11 -5
  133. package/lib/module/components/ContextMenu/ContextMenuComponents.js.map +1 -1
  134. package/lib/module/components/MainComponents/ChatHeader.js +31 -16
  135. package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
  136. package/lib/module/components/MainComponents/ChatRoom.js +80 -40
  137. package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
  138. package/lib/module/components/MainComponents/ChatWrapper.js +74 -27
  139. package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
  140. package/lib/module/components/MainComponents/MediaMessage.js +17 -12
  141. package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
  142. package/lib/module/components/MainComponents/MessageContainer.js +2 -2
  143. package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
  144. package/lib/module/components/MainComponents/MessageList.js +166 -29
  145. package/lib/module/components/MainComponents/MessageList.js.map +1 -1
  146. package/lib/module/components/MainComponents/ReduxWrapper.js +18 -8
  147. package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
  148. package/lib/module/components/MainComponents/SystemMessage.js +33 -21
  149. package/lib/module/components/MainComponents/SystemMessage.js.map +1 -1
  150. package/lib/module/components/MessageBubble/InteractionsOverlay.js +112 -0
  151. package/lib/module/components/MessageBubble/InteractionsOverlay.js.map +1 -0
  152. package/lib/module/components/MessageBubble/Message.js +123 -42
  153. package/lib/module/components/MessageBubble/Message.js.map +1 -1
  154. package/lib/module/components/MessageBubble/MessageInteractions.js +134 -46
  155. package/lib/module/components/MessageBubble/MessageInteractions.js.map +1 -1
  156. package/lib/module/components/Modals/AttachSheet/AttachSheet.js +155 -52
  157. package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
  158. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +20 -5
  159. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  160. package/lib/module/components/Modals/FilePreviewModal/DocumentViewer.js +99 -0
  161. package/lib/module/components/Modals/FilePreviewModal/DocumentViewer.js.map +1 -0
  162. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +148 -26
  163. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  164. package/lib/module/components/Modals/FilePreviewModal/PdfView.js +31 -3
  165. package/lib/module/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
  166. package/lib/module/components/Modals/Modal/Modal.js +5 -1
  167. package/lib/module/components/Modals/Modal/Modal.js.map +1 -1
  168. package/lib/module/components/Modals/ModalHeaderComponent.js +10 -0
  169. package/lib/module/components/Modals/ModalHeaderComponent.js.map +1 -1
  170. package/lib/module/components/Modals/ModalWrapper/ModalWrapper.js +79 -49
  171. package/lib/module/components/Modals/ModalWrapper/ModalWrapper.js.map +1 -1
  172. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +3 -3
  173. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  174. package/lib/module/components/Modals/styledModalComponents.js +17 -13
  175. package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
  176. package/lib/module/components/styled/MediaFilePreview.js +47 -28
  177. package/lib/module/components/styled/MediaFilePreview.js.map +1 -1
  178. package/lib/module/components/styled/MessageImage.js +51 -11
  179. package/lib/module/components/styled/MessageImage.js.map +1 -1
  180. package/lib/module/components/styled/NewMessageLabel.js +8 -6
  181. package/lib/module/components/styled/NewMessageLabel.js.map +1 -1
  182. package/lib/module/components/styled/SendInput.js +50 -28
  183. package/lib/module/components/styled/SendInput.js.map +1 -1
  184. package/lib/module/components/styled/StyledComponents.js +6 -3
  185. package/lib/module/components/styled/StyledComponents.js.map +1 -1
  186. package/lib/module/components/styled/StyledInputComponents/MediaComponents.js +14 -4
  187. package/lib/module/components/styled/StyledInputComponents/MediaComponents.js.map +1 -1
  188. package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js +7 -2
  189. package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
  190. package/lib/module/components/styled/UnsupportedType.js +5 -1
  191. package/lib/module/components/styled/UnsupportedType.js.map +1 -1
  192. package/lib/module/components/styled/VideoMessage.js +82 -17
  193. package/lib/module/components/styled/VideoMessage.js.map +1 -1
  194. package/lib/module/context/MessageNotificationContext.js +7 -7
  195. package/lib/module/context/MessageNotificationContext.js.map +1 -1
  196. package/lib/module/context/xmppProvider.js +246 -34
  197. package/lib/module/context/xmppProvider.js.map +1 -1
  198. package/lib/module/helpers/chatAutoEnterer.js +2 -7
  199. package/lib/module/helpers/chatAutoEnterer.js.map +1 -1
  200. package/lib/module/helpers/historyPreloadScheduler.js +4 -1
  201. package/lib/module/helpers/historyPreloadScheduler.js.map +1 -1
  202. package/lib/module/helpers/insertMessageWithDelimiter.js +15 -5
  203. package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
  204. package/lib/module/helpers/keyboardLayout.js +12 -0
  205. package/lib/module/helpers/keyboardLayout.js.map +1 -0
  206. package/lib/module/helpers/mediaDimensions.js +46 -0
  207. package/lib/module/helpers/mediaDimensions.js.map +1 -0
  208. package/lib/module/helpers/mimeToExtension.js +55 -0
  209. package/lib/module/helpers/mimeToExtension.js.map +1 -1
  210. package/lib/module/helpers/normalizeRoomJid.js +15 -0
  211. package/lib/module/helpers/normalizeRoomJid.js.map +1 -0
  212. package/lib/module/hooks/useChatRoomFocus.js +82 -0
  213. package/lib/module/hooks/useChatRoomFocus.js.map +1 -0
  214. package/lib/module/hooks/useHeapSender.js +1 -1
  215. package/lib/module/hooks/useHeapSender.js.map +1 -1
  216. package/lib/module/hooks/useLogout.js +36 -11
  217. package/lib/module/hooks/useLogout.js.map +1 -1
  218. package/lib/module/hooks/usePushNotifications.js +6 -2
  219. package/lib/module/hooks/usePushNotifications.js.map +1 -1
  220. package/lib/module/hooks/useRoomState.js +2 -0
  221. package/lib/module/hooks/useRoomState.js.map +1 -1
  222. package/lib/module/hooks/useSendMessage.js +203 -12
  223. package/lib/module/hooks/useSendMessage.js.map +1 -1
  224. package/lib/module/hooks/useUnreadMessagesCounter.js +12 -14
  225. package/lib/module/hooks/useUnreadMessagesCounter.js.map +1 -1
  226. package/lib/module/main.js +1 -0
  227. package/lib/module/main.js.map +1 -1
  228. package/lib/module/networking/api-requests/auth.api.js +67 -1
  229. package/lib/module/networking/api-requests/auth.api.js.map +1 -1
  230. package/lib/module/networking/api-requests/rooms.api.js +29 -4
  231. package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
  232. package/lib/module/networking/apiClient.js +2 -1
  233. package/lib/module/networking/apiClient.js.map +1 -1
  234. package/lib/module/networking/outboundQueue.js +84 -0
  235. package/lib/module/networking/outboundQueue.js.map +1 -0
  236. package/lib/module/networking/xmpp/createTimeoutPromise.xmpp.js +4 -1
  237. package/lib/module/networking/xmpp/createTimeoutPromise.xmpp.js.map +1 -1
  238. package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js +7 -8
  239. package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
  240. package/lib/module/networking/xmpp/getRoomsPaged.xmpp.js +26 -3
  241. package/lib/module/networking/xmpp/getRoomsPaged.xmpp.js.map +1 -1
  242. package/lib/module/networking/xmpp/presenceInRoom.xmpp.js +26 -8
  243. package/lib/module/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
  244. package/lib/module/networking/xmpp/sendTextMessage.xmpp.js +2 -1
  245. package/lib/module/networking/xmpp/sendTextMessage.xmpp.js.map +1 -1
  246. package/lib/module/networking/xmppClient.js +294 -35
  247. package/lib/module/networking/xmppClient.js.map +1 -1
  248. package/lib/module/roomStore/Middleware/unreadMidlleware.js +22 -6
  249. package/lib/module/roomStore/Middleware/unreadMidlleware.js.map +1 -1
  250. package/lib/module/roomStore/roomsSlice.js +154 -22
  251. package/lib/module/roomStore/roomsSlice.js.map +1 -1
  252. package/lib/module/utils/installPromiseRejectionTracker.js +78 -0
  253. package/lib/module/utils/installPromiseRejectionTracker.js.map +1 -0
  254. package/lib/module/utils/resendMessage.js +1 -1
  255. package/lib/module/utils/resendMessage.js.map +1 -1
  256. package/lib/typescript/assets/icons.d.ts +8 -4
  257. package/lib/typescript/assets/icons.d.ts.map +1 -1
  258. package/lib/typescript/components/ContextMenu/ContextMenuComponents.d.ts.map +1 -1
  259. package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
  260. package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
  261. package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
  262. package/lib/typescript/components/MainComponents/MediaMessage.d.ts +1 -0
  263. package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
  264. package/lib/typescript/components/MainComponents/MessageContainer.d.ts.map +1 -1
  265. package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
  266. package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts +1 -0
  267. package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
  268. package/lib/typescript/components/MainComponents/SystemMessage.d.ts +0 -7
  269. package/lib/typescript/components/MainComponents/SystemMessage.d.ts.map +1 -1
  270. package/lib/typescript/components/MessageBubble/InteractionsOverlay.d.ts +13 -0
  271. package/lib/typescript/components/MessageBubble/InteractionsOverlay.d.ts.map +1 -0
  272. package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
  273. package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts +4 -2
  274. package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts.map +1 -1
  275. package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
  276. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
  277. package/lib/typescript/components/Modals/FilePreviewModal/DocumentViewer.d.ts +29 -0
  278. package/lib/typescript/components/Modals/FilePreviewModal/DocumentViewer.d.ts.map +1 -0
  279. package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts +0 -1
  280. package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
  281. package/lib/typescript/components/Modals/FilePreviewModal/PdfView.d.ts.map +1 -1
  282. package/lib/typescript/components/Modals/Modal/Modal.d.ts.map +1 -1
  283. package/lib/typescript/components/Modals/ModalHeaderComponent.d.ts.map +1 -1
  284. package/lib/typescript/components/Modals/ModalWrapper/ModalWrapper.d.ts.map +1 -1
  285. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
  286. package/lib/typescript/components/Modals/styledModalComponents.d.ts.map +1 -1
  287. package/lib/typescript/components/styled/MediaFilePreview.d.ts.map +1 -1
  288. package/lib/typescript/components/styled/MessageImage.d.ts.map +1 -1
  289. package/lib/typescript/components/styled/NewMessageLabel.d.ts +1 -5
  290. package/lib/typescript/components/styled/NewMessageLabel.d.ts.map +1 -1
  291. package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
  292. package/lib/typescript/components/styled/StyledComponents.d.ts.map +1 -1
  293. package/lib/typescript/components/styled/StyledInputComponents/MediaComponents.d.ts +9 -1
  294. package/lib/typescript/components/styled/StyledInputComponents/MediaComponents.d.ts.map +1 -1
  295. package/lib/typescript/components/styled/StyledInputComponents/StyledInputComponents.d.ts.map +1 -1
  296. package/lib/typescript/components/styled/UnsupportedType.d.ts +1 -0
  297. package/lib/typescript/components/styled/UnsupportedType.d.ts.map +1 -1
  298. package/lib/typescript/components/styled/VideoMessage.d.ts.map +1 -1
  299. package/lib/typescript/context/xmppProvider.d.ts +1 -0
  300. package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
  301. package/lib/typescript/helpers/chatAutoEnterer.d.ts.map +1 -1
  302. package/lib/typescript/helpers/historyPreloadScheduler.d.ts.map +1 -1
  303. package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
  304. package/lib/typescript/helpers/keyboardLayout.d.ts +9 -0
  305. package/lib/typescript/helpers/keyboardLayout.d.ts.map +1 -0
  306. package/lib/typescript/helpers/mediaDimensions.d.ts +9 -0
  307. package/lib/typescript/helpers/mediaDimensions.d.ts.map +1 -0
  308. package/lib/typescript/helpers/mimeToExtension.d.ts +8 -0
  309. package/lib/typescript/helpers/mimeToExtension.d.ts.map +1 -1
  310. package/lib/typescript/helpers/normalizeRoomJid.d.ts +2 -0
  311. package/lib/typescript/helpers/normalizeRoomJid.d.ts.map +1 -0
  312. package/lib/typescript/hooks/useChatRoomFocus.d.ts +42 -0
  313. package/lib/typescript/hooks/useChatRoomFocus.d.ts.map +1 -0
  314. package/lib/typescript/hooks/useHeapSender.d.ts.map +1 -1
  315. package/lib/typescript/hooks/useLogout.d.ts +23 -1
  316. package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
  317. package/lib/typescript/hooks/usePushNotifications.d.ts.map +1 -1
  318. package/lib/typescript/hooks/useRoomState.d.ts +1 -0
  319. package/lib/typescript/hooks/useRoomState.d.ts.map +1 -1
  320. package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
  321. package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts.map +1 -1
  322. package/lib/typescript/main.d.ts +1 -0
  323. package/lib/typescript/main.d.ts.map +1 -1
  324. package/lib/typescript/networking/api-requests/auth.api.d.ts +3 -0
  325. package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
  326. package/lib/typescript/networking/api-requests/rooms.api.d.ts.map +1 -1
  327. package/lib/typescript/networking/apiClient.d.ts.map +1 -1
  328. package/lib/typescript/networking/outboundQueue.d.ts +57 -0
  329. package/lib/typescript/networking/outboundQueue.d.ts.map +1 -0
  330. package/lib/typescript/networking/xmpp/createTimeoutPromise.xmpp.d.ts.map +1 -1
  331. package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts +1 -1
  332. package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts.map +1 -1
  333. package/lib/typescript/networking/xmpp/getRoomsPaged.xmpp.d.ts +1 -1
  334. package/lib/typescript/networking/xmpp/getRoomsPaged.xmpp.d.ts.map +1 -1
  335. package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts.map +1 -1
  336. package/lib/typescript/networking/xmpp/sendTextMessage.xmpp.d.ts.map +1 -1
  337. package/lib/typescript/networking/xmppClient.d.ts +33 -4
  338. package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
  339. package/lib/typescript/roomStore/Middleware/unreadMidlleware.d.ts.map +1 -1
  340. package/lib/typescript/roomStore/roomsSlice.d.ts +8 -1
  341. package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
  342. package/lib/typescript/types/models/media.model.d.ts +1 -0
  343. package/lib/typescript/types/models/media.model.d.ts.map +1 -1
  344. package/lib/typescript/types/models/xmpp.model.d.ts +1 -1
  345. package/lib/typescript/types/models/xmpp.model.d.ts.map +1 -1
  346. package/lib/typescript/types/types.d.ts +20 -0
  347. package/lib/typescript/types/types.d.ts.map +1 -1
  348. package/lib/typescript/utils/installPromiseRejectionTracker.d.ts +20 -0
  349. package/lib/typescript/utils/installPromiseRejectionTracker.d.ts.map +1 -0
  350. package/lib/typescript/utils/resendMessage.d.ts.map +1 -1
  351. package/package.json +23 -4
  352. package/src/assets/icons.tsx +23 -14
  353. package/src/components/ContextMenu/ContextMenuComponents.tsx +10 -5
  354. package/src/components/MainComponents/ChatHeader.tsx +46 -15
  355. package/src/components/MainComponents/ChatRoom.tsx +95 -66
  356. package/src/components/MainComponents/ChatWrapper.tsx +127 -42
  357. package/src/components/MainComponents/MediaMessage.tsx +14 -8
  358. package/src/components/MainComponents/MessageContainer.tsx +4 -2
  359. package/src/components/MainComponents/MessageList.tsx +175 -28
  360. package/src/components/MainComponents/ReduxWrapper.tsx +19 -9
  361. package/src/components/MainComponents/SystemMessage.tsx +38 -26
  362. package/src/components/MessageBubble/InteractionsOverlay.tsx +121 -0
  363. package/src/components/MessageBubble/Message.tsx +133 -63
  364. package/src/components/MessageBubble/MessageInteractions.tsx +146 -58
  365. package/src/components/Modals/AttachSheet/AttachSheet.tsx +146 -39
  366. package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +25 -3
  367. package/src/components/Modals/FilePreviewModal/DocumentViewer.tsx +93 -0
  368. package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +161 -26
  369. package/src/components/Modals/FilePreviewModal/PdfView.tsx +32 -4
  370. package/src/components/Modals/Modal/Modal.tsx +4 -1
  371. package/src/components/Modals/ModalHeaderComponent.tsx +8 -1
  372. package/src/components/Modals/ModalWrapper/ModalWrapper.tsx +70 -58
  373. package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +19 -15
  374. package/src/components/Modals/styledModalComponents.tsx +17 -13
  375. package/src/components/styled/MediaFilePreview.tsx +46 -26
  376. package/src/components/styled/MessageImage.tsx +58 -13
  377. package/src/components/styled/NewMessageLabel.tsx +8 -5
  378. package/src/components/styled/SendInput.tsx +64 -29
  379. package/src/components/styled/StyledComponents.ts +6 -3
  380. package/src/components/styled/StyledInputComponents/MediaComponents.tsx +15 -5
  381. package/src/components/styled/StyledInputComponents/StyledInputComponents.tsx +7 -2
  382. package/src/components/styled/UnsupportedType.tsx +7 -1
  383. package/src/components/styled/VideoMessage.tsx +76 -12
  384. package/src/context/MessageNotificationContext.tsx +8 -8
  385. package/src/context/xmppProvider.tsx +247 -30
  386. package/src/helpers/chatAutoEnterer.ts +2 -8
  387. package/src/helpers/historyPreloadScheduler.ts +4 -1
  388. package/src/helpers/insertMessageWithDelimiter.ts +22 -15
  389. package/src/helpers/keyboardLayout.ts +18 -0
  390. package/src/helpers/mediaDimensions.ts +47 -0
  391. package/src/helpers/mimeToExtension.ts +64 -0
  392. package/src/helpers/normalizeRoomJid.ts +6 -0
  393. package/src/hooks/useChatRoomFocus.ts +95 -0
  394. package/src/hooks/useHeapSender.tsx +2 -1
  395. package/src/hooks/useLogout.tsx +36 -13
  396. package/src/hooks/usePushNotifications.ts +21 -8
  397. package/src/hooks/useRoomState.tsx +4 -0
  398. package/src/hooks/useSendMessage.tsx +258 -13
  399. package/src/hooks/useUnreadMessagesCounter.ts +13 -16
  400. package/src/main.ts +1 -0
  401. package/src/networking/api-requests/auth.api.ts +55 -1
  402. package/src/networking/api-requests/rooms.api.ts +31 -7
  403. package/src/networking/apiClient.ts +2 -1
  404. package/src/networking/outboundQueue.ts +98 -0
  405. package/src/networking/xmpp/createTimeoutPromise.xmpp.ts +5 -1
  406. package/src/networking/xmpp/flushLastViewedToPrivateStore.ts +11 -13
  407. package/src/networking/xmpp/getRoomsPaged.xmpp.ts +27 -3
  408. package/src/networking/xmpp/presenceInRoom.xmpp.ts +24 -9
  409. package/src/networking/xmpp/sendTextMessage.xmpp.ts +2 -1
  410. package/src/networking/xmppClient.ts +317 -43
  411. package/src/roomStore/Middleware/unreadMidlleware.tsx +23 -5
  412. package/src/roomStore/roomsSlice.ts +177 -27
  413. package/src/types/models/media.model.ts +3 -0
  414. package/src/types/models/xmpp.model.ts +2 -1
  415. package/src/types/types.ts +31 -0
  416. package/src/utils/installPromiseRejectionTracker.ts +91 -0
  417. package/src/utils/resendMessage.ts +2 -1
@@ -6,6 +6,7 @@ import ChatRoom from './ChatRoom';
6
6
  import { setActiveModal, setConfig, setDeleteModal, setStoreClient } from '../../roomStore/chatSettingsSlice';
7
7
  import { ChatWrapperBox } from '../styled/ChatWrapperBox';
8
8
  import { Overlay } from '../styled/MediaModal';
9
+ import ConnectionBanner from './ConnectionBanner';
9
10
  import { Message } from '../MessageBubble/Message';
10
11
  import { useXmppClient } from '../../context/xmppProvider';
11
12
  import LoginForm from '../AuthForms/Login';
@@ -19,6 +20,8 @@ import { ModalWrapper } from '../Modals/ModalWrapper/ModalWrapper';
19
20
  import { useChatSettingState } from '../../hooks/useChatSettingState';
20
21
  import { DeviceEventEmitter, Pressable, Text, View } from 'react-native';
21
22
  import { pushLog as devPushLog } from '../../utils/devLogger';
23
+ import { normalizeRoomJid } from '../../helpers/normalizeRoomJid';
24
+ import { InteractionsOverlayProvider } from '../MessageBubble/InteractionsOverlay';
22
25
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
23
26
  const ChatWrapper = ({
24
27
  MainComponentStyles,
@@ -111,7 +114,7 @@ const ChatWrapper = ({
111
114
  useEffect(() => {
112
115
  if (roomJID) {
113
116
  dispatch(setCurrentRoom({
114
- roomJID: roomJID
117
+ roomJID: normalizeRoomJid(roomJID, config?.xmppSettings?.conference)
115
118
  }));
116
119
  }
117
120
  const initXmmpClient = async () => {
@@ -159,40 +162,54 @@ const ChatWrapper = ({
159
162
  setErrorMsg(null);
160
163
  if (!client && !storedClient) {
161
164
  devPushLog('rn', 'ChatWrapper: initing xmpp client (legacy path)');
162
- await initializeClient(user.xmppUsername || user.defaultWallet?.walletAddress, user.xmppPassword, config?.xmppSettings).then(c => {
163
- c.getRoomsStanza().then(() => {
164
- c.getChatsPrivateStoreRequestStanza();
165
+ // The outer `.then(c => {...})` used to lack a `.catch()` —
166
+ // if initializeClient rejected (network / SASL), the outer
167
+ // try/catch couldn't see it because the rejection happens in
168
+ // the .then handler, not in the awaited promise itself.
169
+ // Convert to await + try/catch.
170
+ try {
171
+ const c = await initializeClient(user.xmppUsername || user.defaultWallet?.walletAddress, user.xmppPassword, config?.xmppSettings);
172
+ try {
173
+ await c.getRoomsStanza();
174
+ c.getChatsPrivateStoreRequestStanza().catch(err => console.warn('getChatsPrivateStoreRequestStanza failed', err));
165
175
  dispatch(setStoreClient(c));
166
176
  setClient(c);
167
- }).catch(err => console.warn('getRoomsStanza failed', err));
168
- });
177
+ } catch (err) {
178
+ console.warn('getRoomsStanza failed', err);
179
+ }
180
+ } catch (err) {
181
+ devPushLog('warn', 'initializeClient failed (legacy path)', err);
182
+ }
169
183
  setInited(true);
170
184
  if (config?.refreshTokens?.enabled) {
171
- refresh();
185
+ // refresh() is fire-and-forget but rejects on bad
186
+ // refreshToken / network — surface via .catch instead of
187
+ // leaving the rejection unhandled (was bug #4, id:2).
188
+ refresh().catch(err => console.warn('refresh failed', err));
172
189
  }
173
190
  } else if (storedClient) {
174
191
  devPushLog('rn', 'ChatWrapper: reusing storedClient');
175
192
  setClient(storedClient);
176
193
  if (!activeRoomJID) {
177
194
  storedClient.getRoomsStanza().then(() => {
178
- storedClient.getChatsPrivateStoreRequestStanza();
195
+ storedClient.getChatsPrivateStoreRequestStanza().catch(err => console.warn('getChatsPrivateStoreRequestStanza failed', err));
179
196
  }).catch(err => console.warn('getRoomsStanza failed', err));
180
197
  }
181
198
  setInited(true);
182
199
  if (config?.refreshTokens?.enabled) {
183
- refresh();
200
+ refresh().catch(err => console.warn('refresh failed', err));
184
201
  }
185
202
  } else if (client) {
186
203
  devPushLog('rn', 'ChatWrapper: reusing provider client');
187
204
  if (!activeRoomJID) {
188
205
  client.getRoomsStanza().then(() => {
189
- client.getChatsPrivateStoreRequestStanza();
206
+ client.getChatsPrivateStoreRequestStanza().catch(err => console.warn('getChatsPrivateStoreRequestStanza failed', err));
190
207
  }).catch(err => console.warn('getRoomsStanza failed', err));
191
208
  }
192
- client.getChatsPrivateStoreRequestStanza();
209
+ client.getChatsPrivateStoreRequestStanza().catch(err => console.warn('getChatsPrivateStoreRequestStanza failed', err));
193
210
  setInited(true);
194
211
  if (config?.refreshTokens?.enabled) {
195
- refresh();
212
+ refresh().catch(err => console.warn('refresh failed', err));
196
213
  }
197
214
  }
198
215
  dispatch(setIsLoading({
@@ -212,6 +229,34 @@ const ChatWrapper = ({
212
229
  initXmmpClient();
213
230
  }, [user.xmppPassword, user.defaultWallet, providerBootstrapStatus, initMode, config?.initBeforeLoad]);
214
231
 
232
+ // Cache-first display (initBeforeLoad). The main effect above only marks
233
+ // the chat `inited` once the provider bootstrap reaches 'ready' — which
234
+ // waits on the cold XMPP connect. On re-entry that left the user staring
235
+ // at a loader while fully-cached rooms/messages sat in redux-persist
236
+ // ("pulls a new connection for 100 years"). Here we render the cached
237
+ // content the instant rehydration lands; the live client gets wired by
238
+ // the main effect when the connect completes (send/loadMore activate
239
+ // then). Mirrors web showing cached rooms immediately + refreshing in
240
+ // the background.
241
+ useEffect(() => {
242
+ if (!config?.initBeforeLoad || initMode !== 'provider') {
243
+ return;
244
+ }
245
+ if (isInited || showModal) {
246
+ return;
247
+ }
248
+ if (providerBootstrapStatus === 'failed') {
249
+ return;
250
+ }
251
+ const haveCachedRooms = !!rooms && Object.keys(rooms).length > 0;
252
+ const haveUser = !!user?.xmppUsername || !!user?.defaultWallet?.walletAddress;
253
+ if (haveCachedRooms && haveUser) {
254
+ devPushLog('rn', 'ChatWrapper: cache-first — showing persisted rooms while provider connects');
255
+ setShowModal(false);
256
+ setInited(true);
257
+ }
258
+ }, [config?.initBeforeLoad, initMode, isInited, showModal, providerBootstrapStatus, rooms, user?.xmppUsername, user?.defaultWallet?.walletAddress]);
259
+
215
260
  // Skip the legacy email/password LoginForm entirely when XmppProvider
216
261
  // is driving auth via initBeforeLoad — the bootstrap effect will
217
262
  // populate the user shortly. Showing LoginForm here causes a flicker
@@ -228,7 +273,7 @@ const ChatWrapper = ({
228
273
  // the list. With `roomJID` or `disableRooms`, skip the list entirely.
229
274
  const showRoomList = !config?.disableRooms && !roomJID && !activeRoomJID;
230
275
  return /*#__PURE__*/_jsxs(_Fragment, {
231
- children: [showModal && /*#__PURE__*/_jsx(Overlay, {
276
+ children: [showModal && config?.disableConnectionErrorOverlay && /*#__PURE__*/_jsx(ConnectionBanner, {}), showModal && !config?.disableConnectionErrorOverlay && /*#__PURE__*/_jsx(Overlay, {
232
277
  children: /*#__PURE__*/_jsxs(View, {
233
278
  style: {
234
279
  padding: 20,
@@ -285,20 +330,22 @@ const ChatWrapper = ({
285
330
  style: {
286
331
  ...MainComponentStyles
287
332
  },
288
- children: [showRoomList ? /*#__PURE__*/_jsx(RoomList, {
289
- chats: Object.values(rooms),
290
- onRoomClick: handleChangeChat
291
- }) : /*#__PURE__*/_jsx(ChatWrapperBox, {
292
- style: {
293
- ...MainComponentStyles
294
- },
295
- children: /*#__PURE__*/_jsx(ChatRoom, {
296
- CustomMessageComponent: CustomMessageComponent || Message,
297
- handleBackClick: roomJID || config?.disableRooms ? undefined : () => {
298
- dispatch(setCurrentRoom({
299
- roomJID: ''
300
- }));
301
- }
333
+ children: [/*#__PURE__*/_jsx(InteractionsOverlayProvider, {
334
+ children: showRoomList ? /*#__PURE__*/_jsx(RoomList, {
335
+ chats: Object.values(rooms),
336
+ onRoomClick: handleChangeChat
337
+ }) : /*#__PURE__*/_jsx(ChatWrapperBox, {
338
+ style: {
339
+ ...MainComponentStyles
340
+ },
341
+ children: /*#__PURE__*/_jsx(ChatRoom, {
342
+ CustomMessageComponent: CustomMessageComponent || Message,
343
+ handleBackClick: roomJID || config?.disableRooms ? undefined : () => {
344
+ dispatch(setCurrentRoom({
345
+ roomJID: ''
346
+ }));
347
+ }
348
+ })
302
349
  })
303
350
  }), /*#__PURE__*/_jsx(Modal, {
304
351
  modal: activeModal,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useMemo","useState","useDispatch","useSelector","ChatRoom","setActiveModal","setConfig","setDeleteModal","setStoreClient","ChatWrapperBox","Overlay","Message","useXmppClient","LoginForm","Loader","setCurrentRoom","setEditAction","setIsLoading","refresh","RoomList","StyledLoaderWrapper","Modal","ModalWrapper","useChatSettingState","DeviceEventEmitter","Pressable","Text","View","pushLog","devPushLog","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ChatWrapper","MainComponentStyles","CustomMessageComponent","room","config","roomJID","user","activeModal","deleteModal","client","storedClient","isInited","setInited","showModal","setShowModal","errorMsg","setErrorMsg","isChatVisible","setIsChatVisible","isSmallScreen","setIsSmallScreen","handleItemClick","value","dispatch","initializeClient","setClient","providerBootstrapStatus","initMode","rooms","activeRoomJID","state","activeMessage","messages","find","message","handleChangeChat","chat","jid","chatJID","loading","isEdit","handleDeleteClick","roomJid","messageId","isDeleteModal","deleteMessageStanza","handleCloseDeleteModal","xmppPassword","console","log","close","setActiveRoomJid","initXmmpClient","hasUser","defaultWallet","walletAddress","initBeforeLoad","xmppUsername","xmppSettings","then","c","getRoomsStanza","getChatsPrivateStoreRequestStanza","catch","err","warn","refreshTokens","enabled","error","msg","response","data","String","showRoomList","disableRooms","children","style","padding","backgroundColor","borderRadius","maxWidth","alignItems","fontSize","fontWeight","marginBottom","color","onPress","emit","pressed","paddingVertical","paddingHorizontal","chats","Object","values","onRoomClick","handleBackClick","undefined","modal","setOpenModal","title","description","buttonText","backgroundColorButton","handleClick","handleCloseModal","compact","colors","primary"],"sourceRoot":"../../../../src","sources":["components/MainComponents/ChatWrapper.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useMemo","useState","useDispatch","useSelector","ChatRoom","setActiveModal","setConfig","setDeleteModal","setStoreClient","ChatWrapperBox","Overlay","ConnectionBanner","Message","useXmppClient","LoginForm","Loader","setCurrentRoom","setEditAction","setIsLoading","refresh","RoomList","StyledLoaderWrapper","Modal","ModalWrapper","useChatSettingState","DeviceEventEmitter","Pressable","Text","View","pushLog","devPushLog","normalizeRoomJid","InteractionsOverlayProvider","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ChatWrapper","MainComponentStyles","CustomMessageComponent","room","config","roomJID","user","activeModal","deleteModal","client","storedClient","isInited","setInited","showModal","setShowModal","errorMsg","setErrorMsg","isChatVisible","setIsChatVisible","isSmallScreen","setIsSmallScreen","handleItemClick","value","dispatch","initializeClient","setClient","providerBootstrapStatus","initMode","rooms","activeRoomJID","state","activeMessage","messages","find","message","handleChangeChat","chat","jid","chatJID","loading","isEdit","handleDeleteClick","roomJid","messageId","isDeleteModal","deleteMessageStanza","handleCloseDeleteModal","xmppPassword","console","log","close","setActiveRoomJid","xmppSettings","conference","initXmmpClient","hasUser","defaultWallet","walletAddress","initBeforeLoad","c","xmppUsername","getRoomsStanza","getChatsPrivateStoreRequestStanza","catch","err","warn","refreshTokens","enabled","then","error","msg","response","data","String","haveCachedRooms","Object","keys","length","haveUser","showRoomList","disableRooms","children","disableConnectionErrorOverlay","style","padding","backgroundColor","borderRadius","maxWidth","alignItems","fontSize","fontWeight","marginBottom","color","onPress","emit","pressed","paddingVertical","paddingHorizontal","chats","values","onRoomClick","handleBackClick","undefined","modal","setOpenModal","title","description","buttonText","backgroundColorButton","handleClick","handleCloseModal","compact","colors","primary"],"sourceRoot":"../../../../src","sources":["components/MainComponents/ChatWrapper.tsx"],"mappings":"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","ignoreList":[]}
@@ -6,13 +6,14 @@ import CustomMessageImage from '../styled/MessageImage';
6
6
  import CustomMessageVideo from '../styled/VideoMessage';
7
7
  import AudioMessage from '../styled/AudioMessage';
8
8
  import { Text } from 'react-native';
9
- import { deriveDisplayFilename } from '../../helpers/mimeToExtension';
9
+ import { deriveDisplayFilename, isLikelyAudio } from '../../helpers/mimeToExtension';
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
11
  const MediaMessage = ({
12
12
  mimeType,
13
13
  location,
14
14
  messageText,
15
- message
15
+ message,
16
+ isUser
16
17
  }) => {
17
18
  if (mimeType) {
18
19
  const displayName = deriveDisplayFilename({
@@ -42,20 +43,24 @@ const MediaMessage = ({
42
43
  }
43
44
  default:
44
45
  {
45
- // Many backends tag binary payloads (PDFs, DOCX, archives) as
46
- // application/octet-stream; sniff the filename extension for the
47
- // legitimate audio case before falling through to FileDownload.
48
- if (mimeType.includes('application/octet-stream')) {
49
- if (/\.(mp3|m4a|wav|aac|ogg|flac)$/i.test(displayName)) {
50
- return /*#__PURE__*/_jsx(AudioMessage, {
51
- src: location || ''
52
- });
53
- }
46
+ // Some senders (notably the web app's voice-message uploader)
47
+ // ship audio as `application/octet-stream` with no audio file
48
+ // extension. `isLikelyAudio` recognises those via the URL path,
49
+ // filename, or voice-message naming hints (voicemail-,
50
+ // voice-note-, recording-, …) so we still render the AudioMessage
51
+ // player instead of falling through to the generic FileDownload
52
+ // card (where the voicemail rendered as a broken `.bin`
53
+ // attachment). Customer-reported #9 voicemail fix.
54
+ if (isLikelyAudio(mimeType, displayName, location)) {
55
+ return /*#__PURE__*/_jsx(AudioMessage, {
56
+ src: location || ''
57
+ });
54
58
  }
55
59
  return /*#__PURE__*/_jsx(FileDownload, {
56
60
  fileURL: location ? location : '',
57
61
  fileName: displayName,
58
- mimetype: mimeType
62
+ mimetype: mimeType,
63
+ isUser: isUser
59
64
  });
60
65
  }
61
66
  }
@@ -1 +1 @@
1
- {"version":3,"names":["React","FileDownload","CustomMessageImage","CustomMessageVideo","AudioMessage","Text","deriveDisplayFilename","jsx","_jsx","MediaMessage","mimeType","location","messageText","message","displayName","fileName","originalName","url","mime","startsWith","fileURL","mimetype","src","includes","test","children"],"sourceRoot":"../../../../src","sources":["components/MainComponents/MediaMessage.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAOC,YAAY,MAAM,2BAA2B;AACpD,OAAOC,kBAAkB,MAAM,wBAAwB;AACvD,OAAOC,kBAAkB,MAAM,wBAAwB;AACvD,OAAOC,YAAY,MAAM,wBAAwB;AACjD,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,qBAAqB,QAAQ,+BAA+B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAStE,MAAMC,YAAyC,GAAGA,CAAC;EACjDC,QAAQ;EACRC,QAAQ;EACRC,WAAW;EACXC;AACF,CAAC,KAAK;EACJ,IAAIH,QAAQ,EAAE;IACZ,MAAMI,WAAW,GAAGR,qBAAqB,CAAC;MACxCS,QAAQ,EAAEF,OAAO,EAAEE,QAAQ;MAC3BC,YAAY,EAAGH,OAAO,EAAUG,YAAY;MAC5CC,GAAG,EAAEN,QAAQ,IAAIC,WAAW;MAC5BM,IAAI,EAAER;IACR,CAAC,CAAC;IACF,QAAQ,IAAI;MACV,KAAKA,QAAQ,CAACS,UAAU,CAAC,QAAQ,CAAC;QAChC,oBACEX,IAAA,CAACN,kBAAkB;UACjBa,QAAQ,EAAED,WAAY;UACtBM,OAAO,EAAER,WAAW,IAAI,EAAG;UAC3BS,QAAQ,EAAEX;QAAS,CACpB,CAAC;MAEN,KAAKA,QAAQ,CAACS,UAAU,CAAC,QAAQ,CAAC;QAChC,oBACEX,IAAA,CAACL,kBAAkB;UACjBY,QAAQ,EAAED,WAAY;UACtBM,OAAO,EAAET,QAAQ,IAAI,EAAG;UACxBU,QAAQ,EAAEX;QAAS,CACpB,CAAC;MAEN,KAAKA,QAAQ,CAACS,UAAU,CAAC,QAAQ,CAAC;QAAE;UAClC,oBAAOX,IAAA,CAACJ,YAAY;YAACkB,GAAG,EAAEX,QAAQ,IAAI;UAAG,CAAE,CAAC;QAC9C;MACA;QAAS;UACP;UACA;UACA;UACA,IAAID,QAAQ,CAACa,QAAQ,CAAC,0BAA0B,CAAC,EAAE;YACjD,IAAI,gCAAgC,CAACC,IAAI,CAACV,WAAW,CAAC,EAAE;cACtD,oBAAON,IAAA,CAACJ,YAAY;gBAACkB,GAAG,EAAEX,QAAQ,IAAI;cAAG,CAAE,CAAC;YAC9C;UACF;UACA,oBACEH,IAAA,CAACP,YAAY;YACXmB,OAAO,EAAET,QAAQ,GAAGA,QAAQ,GAAG,EAAG;YAClCI,QAAQ,EAAED,WAAY;YACtBO,QAAQ,EAAEX;UAAS,CACpB,CAAC;QAEN;IACF;EACF;EACA,oBAAOF,IAAA,CAACH,IAAI;IAAAoB,QAAA,EAAC;EAAsB,CAAM,CAAC;AAC5C,CAAC;AAED,eAAehB,YAAY","ignoreList":[]}
1
+ {"version":3,"names":["React","FileDownload","CustomMessageImage","CustomMessageVideo","AudioMessage","Text","deriveDisplayFilename","isLikelyAudio","jsx","_jsx","MediaMessage","mimeType","location","messageText","message","isUser","displayName","fileName","originalName","url","mime","startsWith","fileURL","mimetype","src","children"],"sourceRoot":"../../../../src","sources":["components/MainComponents/MediaMessage.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAOC,YAAY,MAAM,2BAA2B;AACpD,OAAOC,kBAAkB,MAAM,wBAAwB;AACvD,OAAOC,kBAAkB,MAAM,wBAAwB;AACvD,OAAOC,YAAY,MAAM,wBAAwB;AACjD,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,qBAAqB,EAAEC,aAAa,QAAQ,+BAA+B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAUrF,MAAMC,YAAyC,GAAGA,CAAC;EACjDC,QAAQ;EACRC,QAAQ;EACRC,WAAW;EACXC,OAAO;EACPC;AACF,CAAC,KAAK;EACJ,IAAIJ,QAAQ,EAAE;IACZ,MAAMK,WAAW,GAAGV,qBAAqB,CAAC;MACxCW,QAAQ,EAAEH,OAAO,EAAEG,QAAQ;MAC3BC,YAAY,EAAGJ,OAAO,EAAUI,YAAY;MAC5CC,GAAG,EAAEP,QAAQ,IAAIC,WAAW;MAC5BO,IAAI,EAAET;IACR,CAAC,CAAC;IACF,QAAQ,IAAI;MACV,KAAKA,QAAQ,CAACU,UAAU,CAAC,QAAQ,CAAC;QAChC,oBACEZ,IAAA,CAACP,kBAAkB;UACjBe,QAAQ,EAAED,WAAY;UACtBM,OAAO,EAAET,WAAW,IAAI,EAAG;UAC3BU,QAAQ,EAAEZ;QAAS,CACpB,CAAC;MAEN,KAAKA,QAAQ,CAACU,UAAU,CAAC,QAAQ,CAAC;QAChC,oBACEZ,IAAA,CAACN,kBAAkB;UACjBc,QAAQ,EAAED,WAAY;UACtBM,OAAO,EAAEV,QAAQ,IAAI,EAAG;UACxBW,QAAQ,EAAEZ;QAAS,CACpB,CAAC;MAEN,KAAKA,QAAQ,CAACU,UAAU,CAAC,QAAQ,CAAC;QAAE;UAClC,oBAAOZ,IAAA,CAACL,YAAY;YAACoB,GAAG,EAAEZ,QAAQ,IAAI;UAAG,CAAE,CAAC;QAC9C;MACA;QAAS;UACP;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA,IAAIL,aAAa,CAACI,QAAQ,EAAEK,WAAW,EAAEJ,QAAQ,CAAC,EAAE;YAClD,oBAAOH,IAAA,CAACL,YAAY;cAACoB,GAAG,EAAEZ,QAAQ,IAAI;YAAG,CAAE,CAAC;UAC9C;UACA,oBACEH,IAAA,CAACR,YAAY;YACXqB,OAAO,EAAEV,QAAQ,GAAGA,QAAQ,GAAG,EAAG;YAClCK,QAAQ,EAAED,WAAY;YACtBO,QAAQ,EAAEZ,QAAS;YACnBI,MAAM,EAAEA;UAAO,CAChB,CAAC;QAEN;IACF;EACF;EACA,oBAAON,IAAA,CAACJ,IAAI;IAAAoB,QAAA,EAAC;EAAsB,CAAM,CAAC;AAC5C,CAAC;AAED,eAAef,YAAY","ignoreList":[]}
@@ -40,7 +40,7 @@ export const MessageContainer = ({
40
40
  })]
41
41
  }, message.id);
42
42
  }
43
- if (message?.id === 'delimiter-new') {
43
+ if (String(message?.id || '').startsWith('delimiter-new')) {
44
44
  return CustomNewMessageLabel ? /*#__PURE__*/_jsx(CustomNewMessageLabel, {
45
45
  color: config?.colors?.primary
46
46
  }) : /*#__PURE__*/_jsx(NewMessageLabel, {
@@ -49,7 +49,7 @@ export const MessageContainer = ({
49
49
  }
50
50
  const MessageComponent = CustomMessage || Message;
51
51
  return /*#__PURE__*/_jsxs(View, {
52
- children: [showDateLabel && !activeMessage && message.id !== 'delimiter-new' ? CustomDaySeparator ? /*#__PURE__*/_jsx(CustomDaySeparator, {
52
+ children: [showDateLabel && !activeMessage && !String(message.id || '').startsWith('delimiter-new') ? CustomDaySeparator ? /*#__PURE__*/_jsx(CustomDaySeparator, {
53
53
  date: messageDate,
54
54
  formattedDate: messageDate.toLocaleDateString()
55
55
  }) : /*#__PURE__*/_jsx(DateLabel, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","Fragment","DateLabel","SystemMessage","NewMessageLabel","Message","MessageText","MessageTimestamp","UserName","View","jsx","_jsx","jsxs","_jsxs","_Fragment","MessageContainer","CustomMessage","CustomDaySeparator","CustomNewMessageLabel","message","activeMessage","config","walletAddress","showDateLabel","isReply","className","isUser","user","id","messageDate","Date","date","isSystemMessage","SystemMessageComponent","customSystemMessage","children","formattedDate","toLocaleDateString","colors","messageText","body","color","primary","MessageComponent","toLocaleTimeString","name"],"sourceRoot":"../../../../src","sources":["components/MainComponents/MessageContainer.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","Fragment","DateLabel","SystemMessage","NewMessageLabel","Message","MessageText","MessageTimestamp","UserName","View","jsx","_jsx","jsxs","_jsxs","_Fragment","MessageContainer","CustomMessage","CustomDaySeparator","CustomNewMessageLabel","message","activeMessage","config","walletAddress","showDateLabel","isReply","className","isUser","user","id","messageDate","Date","date","isSystemMessage","SystemMessageComponent","customSystemMessage","children","formattedDate","toLocaleDateString","colors","messageText","body","String","startsWith","color","primary","MessageComponent","toLocaleTimeString","name"],"sourceRoot":"../../../../src","sources":["components/MainComponents/MessageContainer.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAQC,QAAQ,QAAiB,OAAO;AAEpD,OAAOC,SAAS,MAAM,qBAAqB;AAC3C,OAAOC,aAAa,MAAM,iBAAiB;AAC3C,OAAOC,eAAe,MAAM,2BAA2B;AACvD,SACEC,OAAO,EACPC,WAAW,EACXC,gBAAgB,EAChBC,QAAQ,QACH,4BAA4B;AACnC,SAASC,IAAI,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAZ,QAAA,IAAAa,SAAA;AAyBpC,OAAO,MAAMC,gBAA2C,GAAGA,CAAC;EAC1DC,aAAa;EACbC,kBAAkB;EAClBC,qBAAqB;EACrBC,OAAO;EACPC,aAAa;EACbC,MAAM;EACNC,aAAa;EACbC,aAAa;EACbC,OAAO;EACPC;AACF,CAAC,KAAK;EACJ,MAAMC,MAAM,GAAGP,OAAO,CAACQ,IAAI,CAACC,EAAE,KAAKN,aAAa;EAEhD,MAAMO,WAAW,GAAG,IAAIC,IAAI,CAACX,OAAO,CAACY,IAAI,CAAC;EAE1C,IAAIZ,OAAO,EAAEa,eAAe,KAAK,MAAM,EAAE;IACvC,MAAMC,sBAAsB,GAAGZ,MAAM,EAAEa,mBAAmB;IAC1D,oBACErB,KAAA,CAACZ,QAAQ;MAAAkC,QAAA,GACNZ,aAAa,KACZN,kBAAkB,gBAChBN,IAAA,CAACM,kBAAkB;QACjBc,IAAI,EAAEF,WAAY;QAClBO,aAAa,EAAEP,WAAW,CAACQ,kBAAkB,CAAC;MAAE,CACjD,CAAC,gBAEF1B,IAAA,CAACT,SAAS;QAAC6B,IAAI,EAAEF,WAAY;QAACS,MAAM,EAAEjB,MAAM,EAAEiB;MAAO,CAAE,CACxD,CACF,EACAL,sBAAsB,gBACrBtB,IAAA,CAACsB,sBAAsB;QAACd,OAAO,EAAEA,OAAQ;QAACO,MAAM,EAAE,KAAM;QAACF,OAAO,EAAE;MAAM,CAAE,CAAC,gBAE3Eb,IAAA,CAACR,aAAa;QAACoC,WAAW,EAAEpB,OAAO,CAACqB,IAAK;QAACF,MAAM,EAAEjB,MAAM,EAAEiB;MAAO,CAAE,CACpE;IAAA,GAfYnB,OAAO,CAACS,EAgBb,CAAC;EAEf;EAEA,IAAIa,MAAM,CAACtB,OAAO,EAAES,EAAE,IAAI,EAAE,CAAC,CAACc,UAAU,CAAC,eAAe,CAAC,EAAE;IACzD,OAAOxB,qBAAqB,gBAC1BP,IAAA,CAACO,qBAAqB;MAACyB,KAAK,EAAEtB,MAAM,EAAEiB,MAAM,EAAEM;IAAQ,CAAE,CAAC,gBAEzDjC,IAAA,CAACP,eAAe;MAACuC,KAAK,EAAEtB,MAAM,EAAEiB,MAAM,EAAEM;IAAQ,CAAE,CACnD;EACH;EAEA,MAAMC,gBAAgB,GAAG7B,aAAa,IAAIX,OAAO;EAEjD,oBACEQ,KAAA,CAACJ,IAAI;IAAA0B,QAAA,GACFZ,aAAa,IACd,CAACH,aAAa,IACd,CAACqB,MAAM,CAACtB,OAAO,CAACS,EAAE,IAAI,EAAE,CAAC,CAACc,UAAU,CAAC,eAAe,CAAC,GACnDzB,kBAAkB,gBAChBN,IAAA,CAACM,kBAAkB;MACjBc,IAAI,EAAEF,WAAY;MAClBO,aAAa,EAAEP,WAAW,CAACQ,kBAAkB,CAAC;IAAE,CACjD,CAAC,gBAEF1B,IAAA,CAACT,SAAS;MAAC6B,IAAI,EAAEF,WAAY;MAACS,MAAM,EAAEjB,MAAM,EAAEiB;IAAO,CAAE,CACxD,GACC,IAAI,eACR3B,IAAA,CAACkC,gBAAgB;MACf1B,OAAO,EAAEA,OAAQ;MACjBO,MAAM,EAAEA,MAAO;MACfF,OAAO,EAAEA,OAAQ;MACjBC,SAAS,EAAEA,SAAU;MAAAU,QAAA,EAEpB,CAACnB,aAAa,gBACbH,KAAA,CAAAC,SAAA;QAAAqB,QAAA,gBACExB,IAAA,CAACJ,gBAAgB;UAAA4B,QAAA,EACdN,WAAW,CAACiB,kBAAkB,CAAC;QAAC,CACjB,CAAC,eACnBjC,KAAA,CAACL,QAAQ;UAAA2B,QAAA,GAAEhB,OAAO,CAACQ,IAAI,CAACoB,IAAI,EAAC,IAAE;QAAA,CAAU,CAAC,eAC1CpC,IAAA,CAACL,WAAW;UAAA6B,QAAA,EAAEhB,OAAO,CAACqB;QAAI,CAAc,CAAC;MAAA,CACzC,CAAC,gBAEH7B,IAAA,CAACkC,gBAAgB;QACf1B,OAAO,EAAEA,OAAQ;QACjBO,MAAM,EAAEA,MAAO;QACfF,OAAO,EAAEA;MAAQ,CAClB;IACF,CACe,CAAC;EAAA,GAlCVL,OAAO,CAACS,EAmCb,CAAC;AAEX,CAAC","ignoreList":[]}
@@ -3,7 +3,8 @@
3
3
  /** @format */
4
4
 
5
5
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
6
- import { View, StyleSheet, FlatList, Image, TouchableOpacity } from 'react-native';
6
+ import { View, Text, StyleSheet, FlatList, Image, TouchableOpacity } from 'react-native';
7
+ import { msgSortableMs } from '../../roomStore/roomsSlice';
7
8
  import Composing from '../styled/StyledInputComponents/Composing';
8
9
  import TreadLabel from '../styled/TreadLabel';
9
10
  import { MessageContainer } from './MessageContainer';
@@ -31,10 +32,24 @@ const MessageList = ({
31
32
  } = useRoomState(roomJID).room;
32
33
  const [isUserAtBottom, setIsUserAtBottom] = useState(true);
33
34
  const [showNewMessageIndicator, setShowNewMessageIndicator] = useState(false);
34
- const [isContentOffset, setIsContentOffset] = useState(false);
35
35
  const [isLoadingMore, setIsLoadingMore] = useState(false);
36
36
  const [isScrollBlocked, setIsScrollBlocked] = useState(false);
37
- const [hasUserScrolled, setHasUserScrolled] = useState(false);
37
+ // Count of messages that arrived while the user was scrolled up.
38
+ // Renders as a badge on the scroll-to-bottom arrow so they know how
39
+ // much they're missing without having to scroll to find out.
40
+ const [unreadWhileScrolledUp, setUnreadWhileScrolledUp] = useState(0);
41
+ // Newest message timestamp at the moment the user scrolled away from
42
+ // the bottom. The badge counts only messages NEWER than this, so
43
+ // back-pagination (loading OLDER history while scrolled up) never
44
+ // inflates the count. Was previously a message-COUNT snapshot, which
45
+ // wrongly counted back-paginated old messages as "new" (Android repro).
46
+ const newestSeenTsRef = useRef(null);
47
+ // Refs mirror the viewport state synchronously. The auto-follow logic
48
+ // runs from FlatList callbacks where setState hasn't necessarily
49
+ // committed yet; relying on stale React state is what caused the chat
50
+ // to jump back to the bottom when a new message landed mid-scroll.
51
+ const isUserAtBottomRef = useRef(true);
52
+ const hasUserScrolledRef = useRef(false);
38
53
  const flatListRef = useRef(null);
39
54
  const addReplyMessages = useMemo(() => {
40
55
  return messages.map(message => {
@@ -94,15 +109,64 @@ const MessageList = ({
94
109
  }
95
110
  }, [memoizedMessages, loadMoreMessages, loading, isLoadingMore, isScrollBlocked, roomJID]);
96
111
  const dataMessages = useMemo(() => {
97
- return memoizedMessages.slice().reverse();
98
- }, [memoizedMessages]);
112
+ const base = memoizedMessages.slice().reverse();
113
+ const boundaryTs = newestSeenTsRef.current;
114
+ if (isUserAtBottomRef.current || boundaryTs === null || unreadWhileScrolledUp === 0) {
115
+ return base;
116
+ }
117
+ let lastNewIndex = -1;
118
+ for (let i = 0; i < base.length; i++) {
119
+ if (msgSortableMs(base[i]) > boundaryTs) {
120
+ lastNewIndex = i;
121
+ } else {
122
+ break;
123
+ }
124
+ }
125
+ if (lastNewIndex === -1) {
126
+ return base;
127
+ }
128
+ const withDivider = base.slice();
129
+ withDivider.splice(lastNewIndex + 1, 0, {
130
+ id: 'delimiter-new-local',
131
+ user: {
132
+ id: 'system',
133
+ name: undefined,
134
+ token: '',
135
+ refreshToken: ''
136
+ },
137
+ date: new Date(boundaryTs).toISOString(),
138
+ body: 'New Messages',
139
+ roomJid: roomJID
140
+ });
141
+ return withDivider;
142
+ }, [memoizedMessages, isUserAtBottom, roomJID, unreadWhileScrolledUp]);
99
143
  const renderMessage = useCallback(({
100
144
  item,
101
145
  index
102
146
  }) => {
147
+ if (String(item.id).startsWith('delimiter-new')) {
148
+ return /*#__PURE__*/_jsx(MessageContainer, {
149
+ CustomMessage: CustomMessage,
150
+ CustomDaySeparator: CustomDaySeparator,
151
+ CustomNewMessageLabel: CustomNewMessageLabel,
152
+ message: item,
153
+ activeMessage: activeMessage,
154
+ config: config,
155
+ walletAddress: user.xmppUsername || user.walletAddress,
156
+ isReply: isReply,
157
+ showDateLabel: false
158
+ });
159
+ }
103
160
  const messageDate = new Date(item.date).toDateString();
104
161
  let showDateLabel = false;
105
- const nextMessage = index < dataMessages.length - 1 ? dataMessages[index + 1] : null;
162
+ let nextMessage = null;
163
+ for (let i = index + 1; i < dataMessages.length; i++) {
164
+ const candidate = dataMessages[i];
165
+ if (!String(candidate.id).startsWith('delimiter-new')) {
166
+ nextMessage = candidate;
167
+ break;
168
+ }
169
+ }
106
170
  const nextMessageDate = nextMessage ? new Date(nextMessage.date).toDateString() : null;
107
171
  if (!nextMessage || messageDate !== nextMessageDate) {
108
172
  showDateLabel = true;
@@ -118,7 +182,7 @@ const MessageList = ({
118
182
  isReply: isReply,
119
183
  showDateLabel: showDateLabel
120
184
  });
121
- }, [activeMessage, config, user.xmppUsername, user.walletAddress, isReply, memoizedMessages.length]);
185
+ }, [activeMessage, config, CustomDaySeparator, CustomMessage, CustomNewMessageLabel, dataMessages, isReply, user.xmppUsername, user.walletAddress]);
122
186
  const scrollToBottom = useCallback(() => {
123
187
  if (flatListRef.current) {
124
188
  flatListRef.current.scrollToOffset({
@@ -128,16 +192,12 @@ const MessageList = ({
128
192
  }
129
193
  }, [flatListRef]);
130
194
  const handleContentSizeChange = useCallback(() => {
131
- if (isContentOffset) {
132
- scrollToBottom();
133
- setIsContentOffset(false);
134
- }
135
- if (!isLoadingMore && flatListRef.current && isUserAtBottom) {
195
+ if (!isLoadingMore && flatListRef.current && isUserAtBottomRef.current) {
136
196
  scrollToBottom();
137
- } else if (!isLoadingMore && hasUserScrolled) {
197
+ } else if (!isLoadingMore && hasUserScrolledRef.current) {
138
198
  setShowNewMessageIndicator(true);
139
199
  }
140
- }, [isUserAtBottom, scrollToBottom, isLoadingMore, hasUserScrolled]);
200
+ }, [scrollToBottom, isLoadingMore]);
141
201
  const handleScroll = useCallback(event => {
142
202
  const contentOffset = event.nativeEvent.contentOffset.y;
143
203
 
@@ -146,34 +206,70 @@ const MessageList = ({
146
206
  // to a long thread feel broken. Drag-to-dismiss still works via
147
207
  // FlatList's keyboardDismissMode="interactive" below.
148
208
 
149
- if (contentOffset > 150 && !hasUserScrolled) {
150
- setHasUserScrolled(true);
209
+ if (contentOffset > 150 && !hasUserScrolledRef.current) {
210
+ hasUserScrolledRef.current = true;
151
211
  }
152
212
  if (contentOffset < 150) {
153
- setIsContentOffset(true);
213
+ isUserAtBottomRef.current = true;
154
214
  setShowNewMessageIndicator(false);
155
215
  setIsUserAtBottom(true);
216
+ // Back at the bottom — clear the unread-while-scrolled-up
217
+ // counter so the badge disappears with the arrow.
218
+ setUnreadWhileScrolledUp(0);
219
+ newestSeenTsRef.current = null;
156
220
  } else {
157
- setIsContentOffset(false);
158
- if (hasUserScrolled) {
221
+ isUserAtBottomRef.current = false;
222
+ if (hasUserScrolledRef.current) {
159
223
  setShowNewMessageIndicator(true);
160
224
  }
225
+ if (newestSeenTsRef.current === null) {
226
+ // Snapshot the NEWEST message's timestamp the moment the user
227
+ // first leaves the bottom. Anything newer than this that
228
+ // arrives later is genuinely "new"; older history loaded by
229
+ // back-pagination is < this and never counts.
230
+ newestSeenTsRef.current = memoizedMessages.reduce((mx, m) => {
231
+ const t = msgSortableMs(m);
232
+ return t > mx ? t : mx;
233
+ }, 0);
234
+ }
161
235
  setIsUserAtBottom(false);
162
236
  }
163
- }, [hasUserScrolled]);
237
+ }, [memoizedMessages]);
238
+
239
+ // Keep the badge in sync with messages that arrive while the user is
240
+ // scrolled up. Count ONLY messages newer than the newest-seen snapshot
241
+ // — so loading older history (back-pagination) doesn't inflate it.
242
+ useEffect(() => {
243
+ if (isUserAtBottomRef.current) {
244
+ return;
245
+ }
246
+ if (newestSeenTsRef.current === null) {
247
+ return;
248
+ }
249
+ const since = newestSeenTsRef.current;
250
+ const count = memoizedMessages.reduce((n, m) => msgSortableMs(m) > since ? n + 1 : n, 0);
251
+ setUnreadWhileScrolledUp(count);
252
+ }, [memoizedMessages, isUserAtBottom]);
164
253
  const handleLayout = () => {
165
- setIsContentOffset(true);
254
+ isUserAtBottomRef.current = true;
255
+ hasUserScrolledRef.current = false;
166
256
  setIsUserAtBottom(true);
167
257
  };
168
258
  const handleNewMessageIndicatorPress = () => {
259
+ isUserAtBottomRef.current = true;
169
260
  setShowNewMessageIndicator(false);
170
261
  setIsUserAtBottom(true);
262
+ setUnreadWhileScrolledUp(0);
263
+ newestSeenTsRef.current = null;
171
264
  scrollToBottom();
172
265
  };
173
266
  useEffect(() => {
174
- setHasUserScrolled(false);
267
+ hasUserScrolledRef.current = false;
268
+ isUserAtBottomRef.current = true;
175
269
  setShowNewMessageIndicator(false);
176
270
  setIsUserAtBottom(true);
271
+ setUnreadWhileScrolledUp(0);
272
+ newestSeenTsRef.current = null;
177
273
  }, [roomJID]);
178
274
  const BackgroundImage = useMemo(() => {
179
275
  const image = config?.backgroundChat?.image;
@@ -209,7 +305,7 @@ const MessageList = ({
209
305
  })]
210
306
  }), /*#__PURE__*/_jsx(FlatList, {
211
307
  ref: flatListRef,
212
- data: memoizedMessages.slice().reverse(),
308
+ data: dataMessages,
213
309
  renderItem: renderMessage,
214
310
  keyExtractor: item => item.id.toString(),
215
311
  onEndReached: handleLoadMore,
@@ -225,12 +321,22 @@ const MessageList = ({
225
321
  ListFooterComponent: loading && memoizedMessages.length > 15 ? /*#__PURE__*/_jsx(Loader, {
226
322
  color: config?.colors?.primary
227
323
  }) : null
228
- }), showNewMessageIndicator && /*#__PURE__*/_jsx(TouchableOpacity, {
324
+ }), showNewMessageIndicator && /*#__PURE__*/_jsxs(TouchableOpacity, {
229
325
  style: [styles.newMessageIndicator, {
230
- backgroundColor: config?.colors?.secondary
326
+ backgroundColor: config?.colors?.primary || '#0052CD'
231
327
  }],
232
328
  onPress: handleNewMessageIndicatorPress,
233
- children: /*#__PURE__*/_jsx(ArowDownIcon, {})
329
+ children: [/*#__PURE__*/_jsx(ArowDownIcon, {
330
+ color: "#FFFFFF",
331
+ width: 22,
332
+ height: 22
333
+ }), unreadWhileScrolledUp > 0 && /*#__PURE__*/_jsx(View, {
334
+ style: styles.newMessageBadge,
335
+ children: /*#__PURE__*/_jsx(Text, {
336
+ style: styles.newMessageBadgeText,
337
+ children: unreadWhileScrolledUp > 99 ? '99+' : unreadWhileScrolledUp
338
+ })
339
+ })]
234
340
  }), config?.customTypingIndicator?.enabled && composing && /*#__PURE__*/_jsx(CustomTypingIndicator, {
235
341
  usersTyping: composingList || ['User'],
236
342
  text: config.customTypingIndicator.text,
@@ -280,13 +386,44 @@ const styles = StyleSheet.create({
280
386
  height: 40,
281
387
  bottom: 20,
282
388
  right: 20,
283
- backgroundColor: '#007AFF',
284
- padding: 10,
285
- borderRadius: 20
389
+ backgroundColor: '#0052CD',
390
+ borderRadius: 20,
391
+ justifyContent: 'center',
392
+ alignItems: 'center',
393
+ // Lift the FAB off the chat background so it reads as a button.
394
+ shadowColor: '#000',
395
+ shadowOffset: {
396
+ width: 0,
397
+ height: 2
398
+ },
399
+ shadowOpacity: 0.2,
400
+ shadowRadius: 3,
401
+ elevation: 4
286
402
  },
287
403
  newMessageText: {
288
404
  color: '#fff',
289
405
  fontWeight: 'bold'
406
+ },
407
+ newMessageBadge: {
408
+ position: 'absolute',
409
+ top: -6,
410
+ right: -6,
411
+ minWidth: 20,
412
+ height: 20,
413
+ paddingHorizontal: 6,
414
+ borderRadius: 10,
415
+ justifyContent: 'center',
416
+ alignItems: 'center',
417
+ // Fixed red so it stays distinct from the (primary-coloured) FAB,
418
+ // with a white ring to separate the two.
419
+ backgroundColor: '#E53935',
420
+ borderWidth: 2,
421
+ borderColor: '#fff'
422
+ },
423
+ newMessageBadgeText: {
424
+ color: '#fff',
425
+ fontWeight: 'bold',
426
+ fontSize: 11
290
427
  }
291
428
  });
292
429
  //# sourceMappingURL=MessageList.js.map