@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
@@ -14,12 +14,25 @@ function deepMerge(target, source) {
14
14
  export function insertMessageWithDelimiter(roomMessages, message, lastViewedTimestamp) {
15
15
  const existingIndex = roomMessages.findIndex(msg => msg.id === message.id || message.xmppId && msg.id === message.xmppId || msg.xmppId && msg.xmppId === message.id);
16
16
  if (existingIndex !== -1) {
17
- roomMessages[existingIndex] = deepMerge({
18
- ...roomMessages[existingIndex]
17
+ const existing = roomMessages[existingIndex];
18
+ // Preserve the sender identity captured on first insert. The MUC echo
19
+ // parses user.id from the stanza's `from`/senderJID (the room nick or
20
+ // bare-jid local part), which often differs from the optimistic
21
+ // sender id (xmppUsername / walletAddress) set when WE sent it.
22
+ // deepMerge would overwrite it, flipping an own message to the "other"
23
+ // side (rendered on the left, "as if someone else wrote it"). Keep the
24
+ // original id so ownership (user.id === self) stays correct.
25
+ const preservedUserId = existing?.user?.id || message?.user?.id;
26
+ const merged = deepMerge({
27
+ ...existing
19
28
  }, {
20
29
  ...message,
21
30
  pending: false
22
31
  });
32
+ if (merged.user && preservedUserId) {
33
+ merged.user.id = preservedUserId;
34
+ }
35
+ roomMessages[existingIndex] = merged;
23
36
  return;
24
37
  }
25
38
  const newMessageDate = message.date;
@@ -51,9 +64,6 @@ export function insertMessageWithDelimiter(roomMessages, message, lastViewedTime
51
64
  body: 'New Messages',
52
65
  roomJid: ''
53
66
  });
54
- if (lastViewedTimestamp.toString() === '0') {
55
- roomMessages.splice(delimiterIndex, 1);
56
- }
57
67
  }
58
68
  }
59
69
  } else if (isDateBefore(newMessageDate.toString(), firstMessage?.date?.toString() ?? '')) {
@@ -1 +1 @@
1
- {"version":3,"names":["isDateAfter","isDateBefore","deepMerge","target","source","key","Array","isArray","insertMessageWithDelimiter","roomMessages","message","lastViewedTimestamp","existingIndex","findIndex","msg","id","xmppId","pending","newMessageDate","date","lastMessage","length","firstMessage","toString","index","push","some","delimiterIndex","splice","user","name","undefined","token","refreshToken","Date","body","roomJid","unshift","i"],"sourceRoot":"../../../src","sources":["helpers/insertMessageWithDelimiter.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isDateAfter","isDateBefore","deepMerge","target","source","key","Array","isArray","insertMessageWithDelimiter","roomMessages","message","lastViewedTimestamp","existingIndex","findIndex","msg","id","xmppId","existing","preservedUserId","user","merged","pending","newMessageDate","date","lastMessage","length","firstMessage","toString","index","push","some","delimiterIndex","splice","name","undefined","token","refreshToken","Date","body","roomJid","unshift","i"],"sourceRoot":"../../../src","sources":["helpers/insertMessageWithDelimiter.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ export const getKeyboardVerticalOffset = ({
4
+ platform,
5
+ configuredOffset = 0,
6
+ bottomInset = 0
7
+ }) => configuredOffset + (platform === 'ios' ? bottomInset : 0);
8
+ export const getInputDockPaddingBottom = ({
9
+ platform,
10
+ bottomInset = 0
11
+ }) => platform === 'ios' ? bottomInset : 0;
12
+ //# sourceMappingURL=keyboardLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getKeyboardVerticalOffset","platform","configuredOffset","bottomInset","getInputDockPaddingBottom"],"sourceRoot":"../../../src","sources":["helpers/keyboardLayout.ts"],"mappings":";;AAMA,OAAO,MAAMA,yBAAyB,GAAGA,CAAC;EACxCC,QAAQ;EACRC,gBAAgB,GAAG,CAAC;EACpBC,WAAW,GAAG;AACI,CAAC,KACnBD,gBAAgB,IAAID,QAAQ,KAAK,KAAK,GAAGE,WAAW,GAAG,CAAC,CAAC;AAE3D,OAAO,MAAMC,yBAAyB,GAAGA,CAAC;EACxCH,QAAQ;EACRE,WAAW,GAAG;AAC8B,CAAC,KAC7CF,QAAQ,KAAK,KAAK,GAAGE,WAAW,GAAG,CAAC","ignoreList":[]}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ import { Dimensions } from 'react-native';
4
+
5
+ // Shared sizing for inline media bubbles (images + video posters).
6
+ // Goal: show the media UNCROPPED, just scaled, preserving aspect ratio —
7
+ // portrait stays portrait, landscape stays landscape.
8
+ const screenW = Dimensions.get('window').width;
9
+
10
+ // Box the media must fit inside. Width adapts to the screen so it never
11
+ // blows past the bubble's max-width on small phones, but caps on tablets.
12
+ export const MEDIA_MAX_W = Math.min(260, Math.round(screenW * 0.64));
13
+ export const MEDIA_MAX_H = 320;
14
+ // Keep thumbnails from collapsing into a sliver (very wide/tall media).
15
+ const MEDIA_MIN_W = 140;
16
+ const MEDIA_MIN_H = 120;
17
+ // Neutral 4:3 placeholder used before the natural size is known.
18
+ export const defaultMediaDims = () => ({
19
+ width: MEDIA_MAX_W,
20
+ height: Math.round(MEDIA_MAX_W * 0.75)
21
+ });
22
+
23
+ // Fit (natW × natH) inside the box, preserving aspect ratio. Never
24
+ // upscales beyond the source resolution (avoids blur), but bumps very
25
+ // small media up to a sensible minimum so it stays tappable.
26
+ export const fitMediaDimensions = (natW, natH) => {
27
+ if (!natW || !natH) {
28
+ return defaultMediaDims();
29
+ }
30
+ let scale = Math.min(MEDIA_MAX_W / natW, MEDIA_MAX_H / natH);
31
+ if (scale > 1) {
32
+ scale = 1;
33
+ }
34
+ let width = Math.round(natW * scale);
35
+ let height = Math.round(natH * scale);
36
+ if (width < MEDIA_MIN_W || height < MEDIA_MIN_H) {
37
+ const up = Math.max(MEDIA_MIN_W / width, MEDIA_MIN_H / height);
38
+ width = Math.min(MEDIA_MAX_W, Math.round(width * up));
39
+ height = Math.min(MEDIA_MAX_H, Math.round(height * up));
40
+ }
41
+ return {
42
+ width,
43
+ height
44
+ };
45
+ };
46
+ //# sourceMappingURL=mediaDimensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Dimensions","screenW","get","width","MEDIA_MAX_W","Math","min","round","MEDIA_MAX_H","MEDIA_MIN_W","MEDIA_MIN_H","defaultMediaDims","height","fitMediaDimensions","natW","natH","scale","up","max"],"sourceRoot":"../../../src","sources":["helpers/mediaDimensions.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;;AAEzC;AACA;AACA;AACA,MAAMC,OAAO,GAAGD,UAAU,CAACE,GAAG,CAAC,QAAQ,CAAC,CAACC,KAAK;;AAE9C;AACA;AACA,OAAO,MAAMC,WAAW,GAAGC,IAAI,CAACC,GAAG,CAAC,GAAG,EAAED,IAAI,CAACE,KAAK,CAACN,OAAO,GAAG,IAAI,CAAC,CAAC;AACpE,OAAO,MAAMO,WAAW,GAAG,GAAG;AAC9B;AACA,MAAMC,WAAW,GAAG,GAAG;AACvB,MAAMC,WAAW,GAAG,GAAG;AAOvB;AACA,OAAO,MAAMC,gBAAgB,GAAGA,CAAA,MAAkB;EAChDR,KAAK,EAAEC,WAAW;EAClBQ,MAAM,EAAEP,IAAI,CAACE,KAAK,CAACH,WAAW,GAAG,IAAI;AACvC,CAAC,CAAC;;AAEF;AACA;AACA;AACA,OAAO,MAAMS,kBAAkB,GAAGA,CAACC,IAAY,EAAEC,IAAY,KAAgB;EAC3E,IAAI,CAACD,IAAI,IAAI,CAACC,IAAI,EAAE;IAClB,OAAOJ,gBAAgB,CAAC,CAAC;EAC3B;EACA,IAAIK,KAAK,GAAGX,IAAI,CAACC,GAAG,CAACF,WAAW,GAAGU,IAAI,EAAEN,WAAW,GAAGO,IAAI,CAAC;EAC5D,IAAIC,KAAK,GAAG,CAAC,EAAE;IACbA,KAAK,GAAG,CAAC;EACX;EACA,IAAIb,KAAK,GAAGE,IAAI,CAACE,KAAK,CAACO,IAAI,GAAGE,KAAK,CAAC;EACpC,IAAIJ,MAAM,GAAGP,IAAI,CAACE,KAAK,CAACQ,IAAI,GAAGC,KAAK,CAAC;EAErC,IAAIb,KAAK,GAAGM,WAAW,IAAIG,MAAM,GAAGF,WAAW,EAAE;IAC/C,MAAMO,EAAE,GAAGZ,IAAI,CAACa,GAAG,CAACT,WAAW,GAAGN,KAAK,EAAEO,WAAW,GAAGE,MAAM,CAAC;IAC9DT,KAAK,GAAGE,IAAI,CAACC,GAAG,CAACF,WAAW,EAAEC,IAAI,CAACE,KAAK,CAACJ,KAAK,GAAGc,EAAE,CAAC,CAAC;IACrDL,MAAM,GAAGP,IAAI,CAACC,GAAG,CAACE,WAAW,EAAEH,IAAI,CAACE,KAAK,CAACK,MAAM,GAAGK,EAAE,CAAC,CAAC;EACzD;EACA,OAAO;IAAEd,KAAK;IAAES;EAAO,CAAC;AAC1B,CAAC","ignoreList":[]}
@@ -59,6 +59,61 @@ const MIME_TO_EXT = {
59
59
  };
60
60
  const VALID_EXT_RE = /\.[a-z0-9]{1,8}$/i;
61
61
 
62
+ // Audio file extensions we recognise across the SDK. Used for the
63
+ // "looks like audio even when the mimetype is application/octet-stream"
64
+ // heuristic in MediaMessage / FilePreviewModal. Voice-message senders
65
+ // (web app, push voice memos) sometimes ship audio as octet-stream with
66
+ // no audio mime — sniffing the extension lets us still play it.
67
+ // `.bin` is intentionally NOT here: it's our own fallback extension for
68
+ // truly unknown payloads (see getExtensionForMime), not a real format.
69
+ const AUDIO_EXTENSIONS = ['.mp3', '.m4a', '.wav', '.aac', '.ogg', '.flac', '.weba', '.webm', '.opus', '.amr', '.3gp', '.3gpp'];
70
+ const AUDIO_EXT_RE = new RegExp(`(${AUDIO_EXTENSIONS.map(e => e.replace('.', '\\.')).join('|')})$`, 'i');
71
+ // Filename / URL substrings that strongly indicate a voice / audio
72
+ // payload even without an explicit audio extension — e.g. a web-app
73
+ // voicemail uploaded as application/octet-stream named "voicemail-…".
74
+ const AUDIO_NAME_HINT_RE = /(?:^|[_\-./])(voice|voicemail|audio|audio-message|audiomessage|recording|voice-?note)(?:[_\-./]|$)/i;
75
+
76
+ /**
77
+ * Returns true when the (mime, fileName, url) triple looks like an
78
+ * audio payload — either by mime, by recognised extension on the
79
+ * filename or URL path, or by a voice-message naming hint. The hint
80
+ * branch is what catches voicemails sent as `application/octet-stream`
81
+ * with a generic `.bin` filename (customer-reported #9 voicemail).
82
+ */
83
+ export function isLikelyAudio(mime, fileName, url) {
84
+ const m = (mime || '').toLowerCase();
85
+ if (m.startsWith('audio/')) {
86
+ return true;
87
+ }
88
+ // For octet-stream (and any other non-audio mime) fall through to the
89
+ // filename / URL heuristics. We don't restrict to octet-stream — some
90
+ // backends send no mime at all, or send text/plain by accident.
91
+ const name = (fileName || '').toLowerCase();
92
+ const urlLast = filenameFromUrl(url).toLowerCase();
93
+ if (AUDIO_EXT_RE.test(name) || AUDIO_EXT_RE.test(urlLast)) {
94
+ return true;
95
+ }
96
+ // Last resort: voice-message naming hint anywhere in the filename, the
97
+ // URL's last segment, OR the URL's full path. Voicemails are commonly
98
+ // hosted under `/voice/abc-123` or `/voicemail/abc-123` where the last
99
+ // segment is an opaque id with no hint by itself.
100
+ const urlPath = (() => {
101
+ if (!url) {
102
+ return '';
103
+ }
104
+ try {
105
+ const noQuery = url.split('?')[0].split('#')[0];
106
+ return decodeURIComponent(noQuery).toLowerCase();
107
+ } catch {
108
+ return '';
109
+ }
110
+ })();
111
+ if (AUDIO_NAME_HINT_RE.test(name) || AUDIO_NAME_HINT_RE.test(urlLast) || AUDIO_NAME_HINT_RE.test(urlPath)) {
112
+ return true;
113
+ }
114
+ return false;
115
+ }
116
+
62
117
  /**
63
118
  * Returns the conventional extension (including the leading dot) for a
64
119
  * MIME type, or `.bin` as a last-resort fallback so callers never end up
@@ -1 +1 @@
1
- {"version":3,"names":["MIME_TO_EXT","VALID_EXT_RE","getExtensionForMime","mime","normalized","toLowerCase","split","trim","filenameFromUrl","url","noQuery","last","pop","decodeURIComponent","ensureFilenameHasExtension","fileName","base","Date","now","test","deriveDisplayFilename","opts","candidate","originalName"],"sourceRoot":"../../../src","sources":["helpers/mimeToExtension.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["MIME_TO_EXT","VALID_EXT_RE","AUDIO_EXTENSIONS","AUDIO_EXT_RE","RegExp","map","e","replace","join","AUDIO_NAME_HINT_RE","isLikelyAudio","mime","fileName","url","m","toLowerCase","startsWith","name","urlLast","filenameFromUrl","test","urlPath","noQuery","split","decodeURIComponent","getExtensionForMime","normalized","trim","last","pop","ensureFilenameHasExtension","base","Date","now","deriveDisplayFilename","opts","candidate","originalName"],"sourceRoot":"../../../src","sources":["helpers/mimeToExtension.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ export const normalizeRoomJid = (roomJID, conference) => {
4
+ if (!roomJID) {
5
+ return roomJID;
6
+ }
7
+ if (roomJID.includes('@')) {
8
+ return roomJID;
9
+ }
10
+ if (!conference) {
11
+ return roomJID;
12
+ }
13
+ return `${roomJID}@${conference}`;
14
+ };
15
+ //# sourceMappingURL=normalizeRoomJid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["normalizeRoomJid","roomJID","conference","includes"],"sourceRoot":"../../../src","sources":["helpers/normalizeRoomJid.ts"],"mappings":";;AAAA,OAAO,MAAMA,gBAAgB,GAAGA,CAACC,OAAe,EAAEC,UAAmB,KAAK;EACxE,IAAI,CAACD,OAAO,EAAE;IAAC,OAAOA,OAAO;EAAC;EAC9B,IAAIA,OAAO,CAACE,QAAQ,CAAC,GAAG,CAAC,EAAE;IAAC,OAAOF,OAAO;EAAC;EAC3C,IAAI,CAACC,UAAU,EAAE;IAAC,OAAOD,OAAO;EAAC;EACjC,OAAO,GAAGA,OAAO,IAAIC,UAAU,EAAE;AACnC,CAAC","ignoreList":[]}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useRef } from 'react';
4
+ import { useDispatch } from 'react-redux';
5
+ import { clearVisibleRoom, setCurrentRoom, setLastViewedTimestamp, setVisibleRoom } from '../roomStore/roomsSlice';
6
+ import { store } from '../roomStore';
7
+ /**
8
+ * Public hook for consumers embedding `<ChatRoom>` inside a tab-based
9
+ * navigator. Mirrors the mount/unmount unread-tracking that ChatRoom
10
+ * does internally — but driven by an explicit focus signal so the
11
+ * unread counter behaves correctly when the chat tab is not focused
12
+ * but the component is still mounted.
13
+ *
14
+ * Without this hook, `useUnread()` will always return 0 for the chat
15
+ * room because the SDK assumes "mounted == active". With this hook,
16
+ * focus marks the room visible (clearing the badge) and blur stamps
17
+ * `lastViewedTimestamp = Date.now()` so future messages count as unread.
18
+ *
19
+ * Usage with React Navigation:
20
+ *
21
+ * ```tsx
22
+ * import { useIsFocused } from '@react-navigation/native';
23
+ *
24
+ * function ChatTab() {
25
+ * const isFocused = useIsFocused();
26
+ * useChatRoomFocus({ roomJID: 'general@conference.host', isFocused });
27
+ * return <Chat config={...} />;
28
+ * }
29
+ * ```
30
+ *
31
+ * Bug #18-adjacent / unread-tracking bug from sdk-bug-tracker.md.
32
+ */
33
+ export const useChatRoomFocus = ({
34
+ roomJID,
35
+ isFocused
36
+ }) => {
37
+ const dispatch = useDispatch();
38
+ const prevRef = useRef({
39
+ roomJID: null,
40
+ isFocused: false
41
+ });
42
+ const leaveRoom = jid => {
43
+ const timestamp = Date.now();
44
+ dispatch(setLastViewedTimestamp({
45
+ chatJID: jid,
46
+ timestamp
47
+ }));
48
+ dispatch(clearVisibleRoom());
49
+ const rooms = store.getState().rooms?.rooms;
50
+ store.getState().chatSettingStore?.client?.flushLastViewedToPrivateStoreStanza(rooms, {
51
+ visibleRoomJID: jid
52
+ }).catch(() => {});
53
+ };
54
+ useEffect(() => {
55
+ const prev = prevRef.current;
56
+ if (prev.isFocused && prev.roomJID && (prev.roomJID !== roomJID || !isFocused)) {
57
+ leaveRoom(prev.roomJID);
58
+ }
59
+ if (roomJID && isFocused) {
60
+ dispatch(setCurrentRoom({
61
+ roomJID
62
+ }));
63
+ dispatch(setVisibleRoom({
64
+ roomJID
65
+ }));
66
+ }
67
+ prevRef.current = {
68
+ roomJID: roomJID || null,
69
+ isFocused
70
+ };
71
+ }, [roomJID, isFocused, dispatch]);
72
+ useEffect(() => {
73
+ return () => {
74
+ const prev = prevRef.current;
75
+ if (prev.isFocused && prev.roomJID) {
76
+ leaveRoom(prev.roomJID);
77
+ }
78
+ };
79
+ }, []);
80
+ };
81
+ export default useChatRoomFocus;
82
+ //# sourceMappingURL=useChatRoomFocus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","useDispatch","clearVisibleRoom","setCurrentRoom","setLastViewedTimestamp","setVisibleRoom","store","useChatRoomFocus","roomJID","isFocused","dispatch","prevRef","leaveRoom","jid","timestamp","Date","now","chatJID","rooms","getState","chatSettingStore","client","flushLastViewedToPrivateStoreStanza","visibleRoomJID","catch","prev","current"],"sourceRoot":"../../../src","sources":["hooks/useChatRoomFocus.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACzC,SAASC,WAAW,QAAQ,aAAa;AACzC,SACEC,gBAAgB,EAChBC,cAAc,EACdC,sBAAsB,EACtBC,cAAc,QACT,yBAAyB;AAChC,SAASC,KAAK,QAAQ,cAAc;AAgBpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAGA,CAAC;EAC/BC,OAAO;EACPC;AACuB,CAAC,KAAK;EAC7B,MAAMC,QAAQ,GAAGT,WAAW,CAAC,CAAC;EAC9B,MAAMU,OAAO,GAAGX,MAAM,CAAiD;IACrEQ,OAAO,EAAE,IAAI;IACbC,SAAS,EAAE;EACb,CAAC,CAAC;EAEF,MAAMG,SAAS,GAAIC,GAAW,IAAK;IACjC,MAAMC,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;IAC5BN,QAAQ,CAACN,sBAAsB,CAAC;MAAEa,OAAO,EAAEJ,GAAG;MAAEC;IAAU,CAAC,CAAC,CAAC;IAC7DJ,QAAQ,CAACR,gBAAgB,CAAC,CAAC,CAAC;IAC5B,MAAMgB,KAAK,GAAGZ,KAAK,CAACa,QAAQ,CAAC,CAAC,CAACD,KAAK,EAAEA,KAAK;IAC1CZ,KAAK,CAACa,QAAQ,CAAC,CAAC,CAACC,gBAAgB,EAAUC,MAAM,EAC9CC,mCAAmC,CAACJ,KAAK,EAAE;MAAEK,cAAc,EAAEV;IAAI,CAAC,CAAC,CACpEW,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;EACpB,CAAC;EAEDzB,SAAS,CAAC,MAAM;IACd,MAAM0B,IAAI,GAAGd,OAAO,CAACe,OAAO;IAC5B,IAAID,IAAI,CAAChB,SAAS,IAAIgB,IAAI,CAACjB,OAAO,KAAKiB,IAAI,CAACjB,OAAO,KAAKA,OAAO,IAAI,CAACC,SAAS,CAAC,EAAE;MAC9EG,SAAS,CAACa,IAAI,CAACjB,OAAO,CAAC;IACzB;IAEA,IAAIA,OAAO,IAAIC,SAAS,EAAE;MACxBC,QAAQ,CAACP,cAAc,CAAC;QAAEK;MAAQ,CAAC,CAAC,CAAC;MACrCE,QAAQ,CAACL,cAAc,CAAC;QAAEG;MAAQ,CAAC,CAAC,CAAC;IACvC;IAEAG,OAAO,CAACe,OAAO,GAAG;MAAElB,OAAO,EAAEA,OAAO,IAAI,IAAI;MAAEC;IAAU,CAAC;EAC3D,CAAC,EAAE,CAACD,OAAO,EAAEC,SAAS,EAAEC,QAAQ,CAAC,CAAC;EAElCX,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACX,MAAM0B,IAAI,GAAGd,OAAO,CAACe,OAAO;MAC5B,IAAID,IAAI,CAAChB,SAAS,IAAIgB,IAAI,CAACjB,OAAO,EAAE;QAClCI,SAAS,CAACa,IAAI,CAACjB,OAAO,CAAC;MACzB;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAED,eAAeD,gBAAgB","ignoreList":[]}
@@ -31,7 +31,7 @@ export const useHeapSender = client => {
31
31
  inFlightRef.current.set(msg.id, Date.now());
32
32
  try {
33
33
  if (msg.langSource) {
34
- await client.sendTextMessageWithTranslateTagStanza(msg.roomJid, msg.user.firstName || msg.user.name?.split(' ')[0] || '', msg.user.lastName || msg.user.name?.split(' ')[1] || '', '', msg.user.walletAddress || '', msg.body, '', !!msg.isReply, msg.showInChannel === 'true', msg.mainMessage || '', msg.langSource);
34
+ await client.sendTextMessageWithTranslateTagStanza(msg.roomJid, msg.user.firstName || msg.user.name?.split(' ')[0] || '', msg.user.lastName || msg.user.name?.split(' ')[1] || '', '', msg.user.walletAddress || '', msg.body, '', !!msg.isReply, msg.showInChannel === 'true', msg.mainMessage || '', msg.langSource, msg.id);
35
35
  } else {
36
36
  await client.sendMessage(msg.roomJid, msg.user.firstName || msg.user.name?.split(' ')[0] || '', msg.user.lastName || msg.user.name?.split(' ')[1] || '', '', msg.user.walletAddress || '', msg.body, '', !!msg.isReply, !!msg.showInChannel, msg.mainMessage, msg.id);
37
37
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useRef","useDispatch","useMessageHeapState","useHeapSender","client","dispatch","queue","sendingRef","inFlightRef","Map","sendHeapMessages","length","presencesReady","console","warn","current","msg","lastAttempt","get","id","Date","now","set","langSource","sendTextMessageWithTranslateTagStanza","roomJid","user","firstName","name","split","lastName","walletAddress","body","isReply","showInChannel","mainMessage","sendMessage","err","delete","prevReadyRef","nowReady","wasReady","currentIds","Set","map","m","Array","from","keys","has"],"sourceRoot":"../../../src","sources":["hooks/useHeapSender.tsx"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACtD,SAASC,WAAW,QAAQ,aAAa;AACzC,SAASC,mBAAmB,QAAQ,uBAAuB;AAI3D,OAAO,MAAMC,aAAa,GAAIC,MAAyB,IAAK;EAC1D,MAAMC,QAAQ,GAAGJ,WAAW,CAAC,CAAC;EAC9B,MAAM;IAAEK;EAAM,CAAC,GAAGJ,mBAAmB,CAAC,CAAC;EACvC,MAAMK,UAAU,GAAGP,MAAM,CAAC,KAAK,CAAC;EAChC,MAAMQ,WAAW,GAAGR,MAAM,CAAsB,IAAIS,GAAG,CAAC,CAAC,CAAC;EAE1D,MAAMC,gBAAgB,GAAGZ,WAAW,CAAC,YAAY;IAC/C,IAAI,CAACM,MAAM,IAAIE,KAAK,CAACK,MAAM,KAAK,CAAC,EAAE;MAAC;IAAO;IAC3C,IAAI,CAACP,MAAM,CAACQ,cAAc,EAAE;MAC1BC,OAAO,CAACC,IAAI,CAAC,yCAAyC,CAAC;MACvD;IACF;IACA,IAAIP,UAAU,CAACQ,OAAO,EAAE;MAAC;IAAO;IAChCR,UAAU,CAACQ,OAAO,GAAG,IAAI;IACzB,IAAI;MACF,KAAK,MAAMC,GAAG,IAAIV,KAAK,EAAE;QACvB,MAAMW,WAAW,GAAGT,WAAW,CAACO,OAAO,CAACG,GAAG,CAACF,GAAG,CAACG,EAAE,CAAC;QACnD,IAAIF,WAAW,IAAIG,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGJ,WAAW,GAAG,KAAK,EAAE;UACnD;QACF;QACAT,WAAW,CAACO,OAAO,CAACO,GAAG,CAACN,GAAG,CAACG,EAAE,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI;UACF,IAAIL,GAAG,CAACO,UAAU,EAAE;YAClB,MAAMnB,MAAM,CAACoB,qCAAqC,CAChDR,GAAG,CAACS,OAAO,EACXT,GAAG,CAACU,IAAI,CAACC,SAAS,IAAIX,GAAG,CAACU,IAAI,CAACE,IAAI,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EACxDb,GAAG,CAACU,IAAI,CAACI,QAAQ,IAAId,GAAG,CAACU,IAAI,CAACE,IAAI,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EACvD,EAAE,EACFb,GAAG,CAACU,IAAI,CAACK,aAAa,IAAI,EAAE,EAC5Bf,GAAG,CAACgB,IAAI,EACR,EAAE,EACF,CAAC,CAAChB,GAAG,CAACiB,OAAO,EACbjB,GAAG,CAACkB,aAAa,KAAK,MAAM,EAC5BlB,GAAG,CAACmB,WAAW,IAAI,EAAE,EACrBnB,GAAG,CAACO,UACN,CAAC;UACH,CAAC,MAAM;YACL,MAAMnB,MAAM,CAACgC,WAAW,CACtBpB,GAAG,CAACS,OAAO,EACXT,GAAG,CAACU,IAAI,CAACC,SAAS,IAAIX,GAAG,CAACU,IAAI,CAACE,IAAI,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EACxDb,GAAG,CAACU,IAAI,CAACI,QAAQ,IAAId,GAAG,CAACU,IAAI,CAACE,IAAI,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EACvD,EAAE,EACFb,GAAG,CAACU,IAAI,CAACK,aAAa,IAAI,EAAE,EAC5Bf,GAAG,CAACgB,IAAI,EACR,EAAE,EACF,CAAC,CAAChB,GAAG,CAACiB,OAAO,EACb,CAAC,CAACjB,GAAG,CAACkB,aAAa,EACnBlB,GAAG,CAACmB,WAAW,EACfnB,GAAG,CAACG,EACN,CAAC;UACH;QACF,CAAC,CAAC,OAAOkB,GAAG,EAAE;UACZxB,OAAO,CAACC,IAAI,CAAC,6BAA6B,EAAEE,GAAG,EAAEqB,GAAG,CAAC;UACrD7B,WAAW,CAACO,OAAO,CAACuB,MAAM,CAACtB,GAAG,CAACG,EAAE,CAAC;QACpC;MACF;IACF,CAAC,SAAS;MACRZ,UAAU,CAACQ,OAAO,GAAG,KAAK;IAC5B;EACF,CAAC,EAAE,CAACX,MAAM,EAAEE,KAAK,EAAED,QAAQ,CAAC,CAAC;EAE7B,MAAMkC,YAAY,GAAGvC,MAAM,CAAU,KAAK,CAAC;EAC3CD,SAAS,CAAC,MAAM;IACd,MAAMyC,QAAQ,GAAG,CAAC,CAACpC,MAAM,EAAEQ,cAAc;IACzC,MAAM6B,QAAQ,GAAGF,YAAY,CAACxB,OAAO;IACrCwB,YAAY,CAACxB,OAAO,GAAGyB,QAAQ;IAC/B,IAAI,CAACC,QAAQ,IAAID,QAAQ,IAAIlC,KAAK,CAACK,MAAM,GAAG,CAAC,EAAE;MAC7CD,gBAAgB,CAAC,CAAC;IACpB;EACF,CAAC,EAAE,CAACN,MAAM,EAAEQ,cAAc,EAAEN,KAAK,CAACK,MAAM,EAAED,gBAAgB,CAAC,CAAC;EAE5DX,SAAS,CAAC,MAAM;IACd,MAAM2C,UAAU,GAAG,IAAIC,GAAG,CAACrC,KAAK,CAACsC,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAAC1B,EAAE,CAAC,CAAC;IAClD,KAAK,MAAMA,EAAE,IAAI2B,KAAK,CAACC,IAAI,CAACvC,WAAW,CAACO,OAAO,CAACiC,IAAI,CAAC,CAAC,CAAC,EAAE;MACvD,IAAI,CAACN,UAAU,CAACO,GAAG,CAAC9B,EAAE,CAAC,EAAE;QACvBX,WAAW,CAACO,OAAO,CAACuB,MAAM,CAACnB,EAAE,CAAC;MAChC;IACF;EACF,CAAC,EAAE,CAACb,KAAK,CAAC,CAAC;EAEX,OAAO;IAAEI;EAAiB,CAAC;AAC7B,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useRef","useDispatch","useMessageHeapState","useHeapSender","client","dispatch","queue","sendingRef","inFlightRef","Map","sendHeapMessages","length","presencesReady","console","warn","current","msg","lastAttempt","get","id","Date","now","set","langSource","sendTextMessageWithTranslateTagStanza","roomJid","user","firstName","name","split","lastName","walletAddress","body","isReply","showInChannel","mainMessage","sendMessage","err","delete","prevReadyRef","nowReady","wasReady","currentIds","Set","map","m","Array","from","keys","has"],"sourceRoot":"../../../src","sources":["hooks/useHeapSender.tsx"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACtD,SAASC,WAAW,QAAQ,aAAa;AACzC,SAASC,mBAAmB,QAAQ,uBAAuB;AAI3D,OAAO,MAAMC,aAAa,GAAIC,MAAyB,IAAK;EAC1D,MAAMC,QAAQ,GAAGJ,WAAW,CAAC,CAAC;EAC9B,MAAM;IAAEK;EAAM,CAAC,GAAGJ,mBAAmB,CAAC,CAAC;EACvC,MAAMK,UAAU,GAAGP,MAAM,CAAC,KAAK,CAAC;EAChC,MAAMQ,WAAW,GAAGR,MAAM,CAAsB,IAAIS,GAAG,CAAC,CAAC,CAAC;EAE1D,MAAMC,gBAAgB,GAAGZ,WAAW,CAAC,YAAY;IAC/C,IAAI,CAACM,MAAM,IAAIE,KAAK,CAACK,MAAM,KAAK,CAAC,EAAE;MAAC;IAAO;IAC3C,IAAI,CAACP,MAAM,CAACQ,cAAc,EAAE;MAC1BC,OAAO,CAACC,IAAI,CAAC,yCAAyC,CAAC;MACvD;IACF;IACA,IAAIP,UAAU,CAACQ,OAAO,EAAE;MAAC;IAAO;IAChCR,UAAU,CAACQ,OAAO,GAAG,IAAI;IACzB,IAAI;MACF,KAAK,MAAMC,GAAG,IAAIV,KAAK,EAAE;QACvB,MAAMW,WAAW,GAAGT,WAAW,CAACO,OAAO,CAACG,GAAG,CAACF,GAAG,CAACG,EAAE,CAAC;QACnD,IAAIF,WAAW,IAAIG,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGJ,WAAW,GAAG,KAAK,EAAE;UACnD;QACF;QACAT,WAAW,CAACO,OAAO,CAACO,GAAG,CAACN,GAAG,CAACG,EAAE,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI;UACF,IAAIL,GAAG,CAACO,UAAU,EAAE;YAClB,MAAMnB,MAAM,CAACoB,qCAAqC,CAChDR,GAAG,CAACS,OAAO,EACXT,GAAG,CAACU,IAAI,CAACC,SAAS,IAAIX,GAAG,CAACU,IAAI,CAACE,IAAI,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EACxDb,GAAG,CAACU,IAAI,CAACI,QAAQ,IAAId,GAAG,CAACU,IAAI,CAACE,IAAI,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EACvD,EAAE,EACFb,GAAG,CAACU,IAAI,CAACK,aAAa,IAAI,EAAE,EAC5Bf,GAAG,CAACgB,IAAI,EACR,EAAE,EACF,CAAC,CAAChB,GAAG,CAACiB,OAAO,EACbjB,GAAG,CAACkB,aAAa,KAAK,MAAM,EAC5BlB,GAAG,CAACmB,WAAW,IAAI,EAAE,EACrBnB,GAAG,CAACO,UAAU,EACdP,GAAG,CAACG,EACN,CAAC;UACH,CAAC,MAAM;YACL,MAAMf,MAAM,CAACgC,WAAW,CACtBpB,GAAG,CAACS,OAAO,EACXT,GAAG,CAACU,IAAI,CAACC,SAAS,IAAIX,GAAG,CAACU,IAAI,CAACE,IAAI,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EACxDb,GAAG,CAACU,IAAI,CAACI,QAAQ,IAAId,GAAG,CAACU,IAAI,CAACE,IAAI,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EACvD,EAAE,EACFb,GAAG,CAACU,IAAI,CAACK,aAAa,IAAI,EAAE,EAC5Bf,GAAG,CAACgB,IAAI,EACR,EAAE,EACF,CAAC,CAAChB,GAAG,CAACiB,OAAO,EACb,CAAC,CAACjB,GAAG,CAACkB,aAAa,EACnBlB,GAAG,CAACmB,WAAW,EACfnB,GAAG,CAACG,EACN,CAAC;UACH;QACF,CAAC,CAAC,OAAOkB,GAAG,EAAE;UACZxB,OAAO,CAACC,IAAI,CAAC,6BAA6B,EAAEE,GAAG,EAAEqB,GAAG,CAAC;UACrD7B,WAAW,CAACO,OAAO,CAACuB,MAAM,CAACtB,GAAG,CAACG,EAAE,CAAC;QACpC;MACF;IACF,CAAC,SAAS;MACRZ,UAAU,CAACQ,OAAO,GAAG,KAAK;IAC5B;EACF,CAAC,EAAE,CAACX,MAAM,EAAEE,KAAK,EAAED,QAAQ,CAAC,CAAC;EAE7B,MAAMkC,YAAY,GAAGvC,MAAM,CAAU,KAAK,CAAC;EAC3CD,SAAS,CAAC,MAAM;IACd,MAAMyC,QAAQ,GAAG,CAAC,CAACpC,MAAM,EAAEQ,cAAc;IACzC,MAAM6B,QAAQ,GAAGF,YAAY,CAACxB,OAAO;IACrCwB,YAAY,CAACxB,OAAO,GAAGyB,QAAQ;IAC/B,IAAI,CAACC,QAAQ,IAAID,QAAQ,IAAIlC,KAAK,CAACK,MAAM,GAAG,CAAC,EAAE;MAC7CD,gBAAgB,CAAC,CAAC;IACpB;EACF,CAAC,EAAE,CAACN,MAAM,EAAEQ,cAAc,EAAEN,KAAK,CAACK,MAAM,EAAED,gBAAgB,CAAC,CAAC;EAE5DX,SAAS,CAAC,MAAM;IACd,MAAM2C,UAAU,GAAG,IAAIC,GAAG,CAACrC,KAAK,CAACsC,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAAC1B,EAAE,CAAC,CAAC;IAClD,KAAK,MAAMA,EAAE,IAAI2B,KAAK,CAACC,IAAI,CAACvC,WAAW,CAACO,OAAO,CAACiC,IAAI,CAAC,CAAC,CAAC,EAAE;MACvD,IAAI,CAACN,UAAU,CAACO,GAAG,CAAC9B,EAAE,CAAC,EAAE;QACvBX,WAAW,CAACO,OAAO,CAACuB,MAAM,CAACnB,EAAE,CAAC;MAChC;IACF;EACF,CAAC,EAAE,CAACb,KAAK,CAAC,CAAC;EAEX,OAAO;IAAEI;EAAiB,CAAC;AAC7B,CAAC","ignoreList":[]}
@@ -49,7 +49,7 @@ const logoutService = {
49
49
  performLogout: async () => {
50
50
  // 0. Flush lastViewedTimestamp to the server's private store BEFORE
51
51
  // we close XMPP. Only rooms with no outstanding unread (plus the
52
- // active room) get their entries updated — rooms with unread
52
+ // visible room) get their entries updated — rooms with unread
53
53
  // keep their old marker so the next login still surfaces those
54
54
  // messages as unread. Without this, an active-room view at
55
55
  // logout would still appear unread on next login because we
@@ -58,10 +58,10 @@ const logoutService = {
58
58
  const state = store.getState();
59
59
  const client = state.chatSettingStore?.client;
60
60
  const rooms = state.rooms?.rooms;
61
- const activeRoomJID = state.rooms?.activeRoomJID || null;
61
+ const visibleRoomJID = state.rooms?.visibleRoomJID || null;
62
62
  if (client?.flushLastViewedToPrivateStoreStanza) {
63
63
  await Promise.race([client.flushLastViewedToPrivateStoreStanza(rooms, {
64
- activeRoomJID,
64
+ visibleRoomJID,
65
65
  onlyIfNoUnread: true
66
66
  }), new Promise(res => setTimeout(res, 2000))]);
67
67
  }
@@ -128,16 +128,41 @@ const logoutService = {
128
128
  }
129
129
  }
130
130
  };
131
+
132
+ /**
133
+ * Hook that returns an awaitable logout function.
134
+ *
135
+ * ```tsx
136
+ * const logout = useLogout();
137
+ * await logout();
138
+ * navigation.replace('SignIn'); // disk is provably clean here
139
+ * ```
140
+ *
141
+ * The returned function resolves AFTER all teardown work has landed:
142
+ * XMPP disconnect, redux reset, persisted slices wiped, stray
143
+ * AsyncStorage keys removed, REST cache cleared. It never rejects —
144
+ * any internal failure is logged via console.warn so a fire-and-forget
145
+ * `logout()` call (no `await`) still won't crash the host.
146
+ *
147
+ * Why awaitable: the persistence middleware debounces writes by 200ms,
148
+ * and the chat-slice `logout` reducer removes ETHORA_USER fire-and-
149
+ * forget. If the host navigated / re-mounted `<Chat>` immediately
150
+ * after a non-awaited call, the next bootstrap could occasionally
151
+ * read stale persisted state ("old chats reappear"). Awaiting the
152
+ * returned promise eliminates that race entirely.
153
+ */
131
154
  export const useLogout = () => {
132
- const dispatch = useDispatch();
133
- const handleLogout = useCallback(() => {
134
- // The hook fires-and-forgets — consumers that need to await the
135
- // teardown should call `logoutService.performLogout()` directly.
136
- logoutService.performLogout().catch(err => {
137
- console.warn('useLogout: performLogout rejected', err);
138
- });
155
+ // dispatch is kept for backward-compat with consumers who treat the
156
+ // hook's presence as a redux-context requirement; not used directly
157
+ // here because the work happens through the module-level service.
158
+ useDispatch();
159
+ return useCallback(async () => {
160
+ try {
161
+ await logoutService.performLogout();
162
+ } catch (err) {
163
+ console.warn('useLogout: performLogout failed', err);
164
+ }
139
165
  }, []);
140
- return handleLogout;
141
166
  };
142
167
  export { logoutService };
143
168
  //# sourceMappingURL=useLogout.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useDispatch","DeviceEventEmitter","AsyncStorage","store","logout","setLogoutState","useCallback","clearHeap","pushSubscriptionService","clearRoomsRestCache","clearPersistedState","localStorageConstants","LIBRARY_STRAY_KEYS","logoutService","performLogout","state","getState","client","chatSettingStore","rooms","activeRoomJID","flushLastViewedToPrivateStoreStanza","Promise","race","onlyIfNoUnread","res","setTimeout","e","console","warn","emit","reset","dispatch","multiRemove","ETHORA_USER","useLogout","handleLogout","catch","err"],"sourceRoot":"../../../src","sources":["hooks/useLogout.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useDispatch","DeviceEventEmitter","AsyncStorage","store","logout","setLogoutState","useCallback","clearHeap","pushSubscriptionService","clearRoomsRestCache","clearPersistedState","localStorageConstants","LIBRARY_STRAY_KEYS","logoutService","performLogout","state","getState","client","chatSettingStore","rooms","visibleRoomJID","flushLastViewedToPrivateStoreStanza","Promise","race","onlyIfNoUnread","res","setTimeout","e","console","warn","emit","reset","dispatch","multiRemove","ETHORA_USER","useLogout","err"],"sourceRoot":"../../../src","sources":["hooks/useLogout.tsx"],"mappings":"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","ignoreList":[]}
@@ -44,7 +44,11 @@ export function usePushNotifications() {
44
44
  }
45
45
  };
46
46
  useEffect(() => {
47
- initToken();
47
+ // initToken is async — `initToken()` without `.catch` leaves any
48
+ // rejection unhandled (showed as `Uncaught (in promise, id: X)` red
49
+ // screen in dev). The inner try/catch covers most paths but any
50
+ // synchronous throw before the try-block ran would still leak.
51
+ initToken().catch(err => console.warn('[usePushNotifications] initToken rejected', err));
48
52
  const unsubscribeForeground = onForegroundMessage(message => {
49
53
  setNotification(message);
50
54
  const {
@@ -71,7 +75,7 @@ export function usePushNotifications() {
71
75
  setNotification(message);
72
76
  handleNotificationPress(message);
73
77
  }
74
- });
78
+ }).catch(err => console.warn('[usePushNotifications] getInitialNotification failed', err));
75
79
  return () => {
76
80
  unsubscribeForeground();
77
81
  unsubscribeOpened();
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useState","Alert","initPushNotifications","onForegroundMessage","onNotificationOpenedApp","getInitialNotification","pushSubscriptionService","useSelector","useDispatch","useLocalStorage","setPendingNotificationJid","usePushNotifications","fcmToken","setFcmToken","notification","setNotification","user","config","state","chatSettingStore","rooms","dispatch","set","get","handleNotificationPress","remoteMessage","console","log","JSON","stringify","jid","data","chatJid","warn","initToken","token","newToken","error","unsubscribeForeground","message","notif","alert","title","body","text","onPress","unsubscribeOpened","then","xmppPassword","defaultWallet","walletAddress","subscribeToPush","projectName","catch"],"sourceRoot":"../../../src","sources":["hooks/usePushNotifications.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useState","Alert","initPushNotifications","onForegroundMessage","onNotificationOpenedApp","getInitialNotification","pushSubscriptionService","useSelector","useDispatch","useLocalStorage","setPendingNotificationJid","usePushNotifications","fcmToken","setFcmToken","notification","setNotification","user","config","state","chatSettingStore","rooms","dispatch","set","get","handleNotificationPress","remoteMessage","console","log","JSON","stringify","jid","data","chatJid","warn","initToken","token","newToken","error","catch","err","unsubscribeForeground","message","notif","alert","title","body","text","onPress","unsubscribeOpened","then","xmppPassword","defaultWallet","walletAddress","subscribeToPush","projectName"],"sourceRoot":"../../../src","sources":["hooks/usePushNotifications.ts"],"mappings":"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","ignoreList":[]}
@@ -8,6 +8,7 @@ export const useRoomState = roomJID => {
8
8
  const room = useSelector(state => roomJID ? state.rooms.rooms[roomJID] : undefined);
9
9
  const roomsList = useSelector(state => state.rooms.rooms);
10
10
  const activeRoomJID = useSelector(state => state.rooms.activeRoomJID);
11
+ const visibleRoomJID = useSelector(state => state.rooms.visibleRoomJID);
11
12
  const editAction = useSelector(state => state.rooms.editAction);
12
13
  const globalLoading = useSelector(state => state.rooms.isLoading);
13
14
  const loading = useSelector(state => {
@@ -21,6 +22,7 @@ export const useRoomState = roomJID => {
21
22
  room,
22
23
  roomsList,
23
24
  activeRoomJID,
25
+ visibleRoomJID,
24
26
  editAction,
25
27
  globalLoading,
26
28
  loadingText,
@@ -1 +1 @@
1
- {"version":3,"names":["useMemo","useSelector","useRoomState","roomJID","room","state","rooms","undefined","roomsList","activeRoomJID","editAction","globalLoading","isLoading","loading","activeJID","loadingText","usersSet","roomMessages","messages"],"sourceRoot":"../../../src","sources":["hooks/useRoomState.tsx"],"mappings":";;AAAA;;AAEA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SAASC,WAAW,QAAQ,aAAa;AAGzC,OAAO,MAAMC,YAAY,GAAIC,OAAgB,IAAK;EAChD,MAAMC,IAAI,GAAGH,WAAW,CAAEI,KAAgB,IACxCF,OAAO,GAAGE,KAAK,CAACC,KAAK,CAACA,KAAK,CAACH,OAAO,CAAC,GAAGI,SACzC,CAAC;EACD,MAAMC,SAAS,GAAGP,WAAW,CAAEI,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACA,KAAK,CAAC;EACtE,MAAMG,aAAa,GAAGR,WAAW,CAC9BI,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACG,aACpC,CAAC;EACD,MAAMC,UAAU,GAAGT,WAAW,CAAEI,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACI,UAAU,CAAC;EAC5E,MAAMC,aAAa,GAAGV,WAAW,CAC9BI,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACM,SACpC,CAAC;EACD,MAAMC,OAAO,GAAGZ,WAAW,CAAEI,KAAgB,IAAK;IAChD,MAAMS,SAAS,GAAGT,KAAK,CAACC,KAAK,CAACG,aAAa;IAC3C,OAAOK,SAAS,GAAGT,KAAK,CAACC,KAAK,CAACA,KAAK,CAACQ,SAAS,CAAC,EAAEF,SAAS,IAAI,KAAK,GAAG,KAAK;EAC7E,CAAC,CAAC;EACF,MAAMG,WAAW,GAAGd,WAAW,CAC5BI,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACS,WACpC,CAAC;EACD,MAAMC,QAAQ,GAAGf,WAAW,CAAEI,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACU,QAAQ,CAAC;EAExE,MAAMC,YAAY,GAAGjB,OAAO,CAC1B,MACES,aAAa,IAAID,SAAS,CAACC,aAAa,CAAC,GACrCD,SAAS,CAACC,aAAa,CAAC,CAACS,QAAQ,IAAI,EAAE,GACvC,EAAE,EACR,CAACV,SAAS,EAAEC,aAAa,CAC3B,CAAC;EAED,OAAO;IACLL,IAAI;IACJI,SAAS;IACTC,aAAa;IACbC,UAAU;IACVC,aAAa;IACbI,WAAW;IACXF,OAAO;IACPI,YAAY;IACZD;EACF,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useMemo","useSelector","useRoomState","roomJID","room","state","rooms","undefined","roomsList","activeRoomJID","visibleRoomJID","editAction","globalLoading","isLoading","loading","activeJID","loadingText","usersSet","roomMessages","messages"],"sourceRoot":"../../../src","sources":["hooks/useRoomState.tsx"],"mappings":";;AAAA;;AAEA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SAASC,WAAW,QAAQ,aAAa;AAGzC,OAAO,MAAMC,YAAY,GAAIC,OAAgB,IAAK;EAChD,MAAMC,IAAI,GAAGH,WAAW,CAAEI,KAAgB,IACxCF,OAAO,GAAGE,KAAK,CAACC,KAAK,CAACA,KAAK,CAACH,OAAO,CAAC,GAAGI,SACzC,CAAC;EACD,MAAMC,SAAS,GAAGP,WAAW,CAAEI,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACA,KAAK,CAAC;EACtE,MAAMG,aAAa,GAAGR,WAAW,CAC9BI,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACG,aACpC,CAAC;EACD,MAAMC,cAAc,GAAGT,WAAW,CAC/BI,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACI,cACpC,CAAC;EACD,MAAMC,UAAU,GAAGV,WAAW,CAAEI,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACK,UAAU,CAAC;EAC5E,MAAMC,aAAa,GAAGX,WAAW,CAC9BI,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACO,SACpC,CAAC;EACD,MAAMC,OAAO,GAAGb,WAAW,CAAEI,KAAgB,IAAK;IAChD,MAAMU,SAAS,GAAGV,KAAK,CAACC,KAAK,CAACG,aAAa;IAC3C,OAAOM,SAAS,GAAGV,KAAK,CAACC,KAAK,CAACA,KAAK,CAACS,SAAS,CAAC,EAAEF,SAAS,IAAI,KAAK,GAAG,KAAK;EAC7E,CAAC,CAAC;EACF,MAAMG,WAAW,GAAGf,WAAW,CAC5BI,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACU,WACpC,CAAC;EACD,MAAMC,QAAQ,GAAGhB,WAAW,CAAEI,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACW,QAAQ,CAAC;EAExE,MAAMC,YAAY,GAAGlB,OAAO,CAC1B,MACES,aAAa,IAAID,SAAS,CAACC,aAAa,CAAC,GACrCD,SAAS,CAACC,aAAa,CAAC,CAACU,QAAQ,IAAI,EAAE,GACvC,EAAE,EACR,CAACX,SAAS,EAAEC,aAAa,CAC3B,CAAC;EAED,OAAO;IACLL,IAAI;IACJI,SAAS;IACTC,aAAa;IACbC,cAAc;IACdC,UAAU;IACVC,aAAa;IACbI,WAAW;IACXF,OAAO;IACPI,YAAY;IACZD;EACF,CAAC;AACH,CAAC","ignoreList":[]}