@ethora/chat-component-rn 26.7.10 → 26.8.1

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 (667) hide show
  1. package/CHANGELOG.md +0 -96
  2. package/README.md +10 -43
  3. package/lib/commonjs/assets/icons.js +2 -7
  4. package/lib/commonjs/assets/icons.js.map +1 -1
  5. package/lib/commonjs/components/AuthForms/Login.js +4 -4
  6. package/lib/commonjs/components/AuthForms/Login.js.map +1 -1
  7. package/lib/commonjs/components/Header/HeaderRoomList.js +7 -26
  8. package/lib/commonjs/components/Header/HeaderRoomList.js.map +1 -1
  9. package/lib/commonjs/components/MainComponents/ChatHeader.js +3 -9
  10. package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
  11. package/lib/commonjs/components/MainComponents/ChatRoom.js +14 -150
  12. package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
  13. package/lib/commonjs/components/MainComponents/ChatWrapper.js +38 -34
  14. package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
  15. package/lib/commonjs/components/MainComponents/LoginWrapper.js +1 -2
  16. package/lib/commonjs/components/MainComponents/LoginWrapper.js.map +1 -1
  17. package/lib/commonjs/components/MainComponents/MediaMessage.js +9 -29
  18. package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
  19. package/lib/commonjs/components/MainComponents/MessageContainer.js +1 -5
  20. package/lib/commonjs/components/MainComponents/MessageContainer.js.map +1 -1
  21. package/lib/commonjs/components/MainComponents/MessageList.js +5 -13
  22. package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
  23. package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js +13 -14
  24. package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
  25. package/lib/commonjs/components/MainComponents/ReduxWrapper.js +24 -3
  26. package/lib/commonjs/components/MainComponents/ReduxWrapper.js.map +1 -1
  27. package/lib/commonjs/components/MainComponents/RoomList.js +35 -208
  28. package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
  29. package/lib/commonjs/components/Menu/HeaderRoomListMenu.js +98 -317
  30. package/lib/commonjs/components/Menu/HeaderRoomListMenu.js.map +1 -1
  31. package/lib/commonjs/components/MessageBubble/MessageTranslate.js +16 -7
  32. package/lib/commonjs/components/MessageBubble/MessageTranslate.js.map +1 -1
  33. package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +112 -320
  34. package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
  35. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +215 -556
  36. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  37. package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js +9 -7
  38. package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
  39. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +27 -69
  40. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  41. package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js +1 -2
  42. package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
  43. package/lib/commonjs/components/Modals/Modal/Modal.js +0 -8
  44. package/lib/commonjs/components/Modals/Modal/Modal.js.map +1 -1
  45. package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js +1 -2
  46. package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js.map +1 -1
  47. package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js +109 -205
  48. package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
  49. package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js +0 -8
  50. package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
  51. package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js +2 -4
  52. package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
  53. package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js +21 -7
  54. package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
  55. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +244 -507
  56. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  57. package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js +46 -74
  58. package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
  59. package/lib/commonjs/components/Modals/styledModalComponents.js +2 -9
  60. package/lib/commonjs/components/Modals/styledModalComponents.js.map +1 -1
  61. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +39 -23
  62. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
  63. package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js +3 -22
  64. package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
  65. package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js +3 -17
  66. package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
  67. package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js +3 -17
  68. package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
  69. package/lib/commonjs/components/VideoCalls/VideoCallSession.js +3 -6
  70. package/lib/commonjs/components/VideoCalls/VideoCallSession.js.map +1 -1
  71. package/lib/commonjs/components/styled/AudioMessage.js +1 -2
  72. package/lib/commonjs/components/styled/AudioMessage.js.map +1 -1
  73. package/lib/commonjs/components/styled/DateLabel.js +10 -3
  74. package/lib/commonjs/components/styled/DateLabel.js.map +1 -1
  75. package/lib/commonjs/components/styled/MessageImage.js +9 -37
  76. package/lib/commonjs/components/styled/MessageImage.js.map +1 -1
  77. package/lib/commonjs/components/styled/NewMessageLabel.js +3 -1
  78. package/lib/commonjs/components/styled/NewMessageLabel.js.map +1 -1
  79. package/lib/commonjs/components/styled/SendInput.js +17 -86
  80. package/lib/commonjs/components/styled/SendInput.js.map +1 -1
  81. package/lib/commonjs/components/styled/StyledComponents.js +3 -9
  82. package/lib/commonjs/components/styled/StyledComponents.js.map +1 -1
  83. package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js +4 -11
  84. package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
  85. package/lib/commonjs/components/styled/UnsupportedType.js +4 -14
  86. package/lib/commonjs/components/styled/UnsupportedType.js.map +1 -1
  87. package/lib/commonjs/components/styled/VideoMessage.js +61 -119
  88. package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
  89. package/lib/commonjs/context/xmppProvider.js +59 -177
  90. package/lib/commonjs/context/xmppProvider.js.map +1 -1
  91. package/lib/commonjs/helpers/createMessageFromXml.js +1 -19
  92. package/lib/commonjs/helpers/createMessageFromXml.js.map +1 -1
  93. package/lib/commonjs/helpers/ensureScopedChatCache.js +2 -2
  94. package/lib/commonjs/helpers/ensureScopedChatCache.js.map +1 -1
  95. package/lib/commonjs/helpers/getDataFromXml.js +24 -1
  96. package/lib/commonjs/helpers/getDataFromXml.js.map +1 -1
  97. package/lib/commonjs/helpers/historyPreloadScheduler.js +2 -65
  98. package/lib/commonjs/helpers/historyPreloadScheduler.js.map +1 -1
  99. package/lib/commonjs/helpers/initXmppRooms.js +8 -14
  100. package/lib/commonjs/helpers/initXmppRooms.js.map +1 -1
  101. package/lib/commonjs/helpers/insertMessageWithDelimiter.js +22 -51
  102. package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
  103. package/lib/commonjs/helpers/isUnresolvedSenderId.js +6 -1
  104. package/lib/commonjs/helpers/isUnresolvedSenderId.js.map +1 -1
  105. package/lib/commonjs/helpers/keyboardLayout.js +2 -12
  106. package/lib/commonjs/helpers/keyboardLayout.js.map +1 -1
  107. package/lib/commonjs/helpers/mimeToExtension.js +14 -6
  108. package/lib/commonjs/helpers/mimeToExtension.js.map +1 -1
  109. package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js +17 -130
  110. package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js.map +1 -1
  111. package/lib/commonjs/helpers/resolveLangSource.js +38 -0
  112. package/lib/commonjs/helpers/resolveLangSource.js.map +1 -0
  113. package/lib/commonjs/helpers/xmppUsername.js +39 -0
  114. package/lib/commonjs/helpers/xmppUsername.js.map +1 -0
  115. package/lib/commonjs/hooks/useChatRoomFocus.js +12 -45
  116. package/lib/commonjs/hooks/useChatRoomFocus.js.map +1 -1
  117. package/lib/commonjs/hooks/useChatWrapperInit.js +14 -32
  118. package/lib/commonjs/hooks/useChatWrapperInit.js.map +1 -1
  119. package/lib/commonjs/hooks/useComposing.js +0 -27
  120. package/lib/commonjs/hooks/useComposing.js.map +1 -1
  121. package/lib/commonjs/hooks/useLogout.js +7 -23
  122. package/lib/commonjs/hooks/useLogout.js.map +1 -1
  123. package/lib/commonjs/hooks/usePendingNotification.js +11 -8
  124. package/lib/commonjs/hooks/usePendingNotification.js.map +1 -1
  125. package/lib/commonjs/hooks/useSendMessage.js +14 -50
  126. package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
  127. package/lib/commonjs/hooks/useUnreadMessagesCounter.js +1 -6
  128. package/lib/commonjs/hooks/useUnreadMessagesCounter.js.map +1 -1
  129. package/lib/commonjs/i18n/strings.js +133 -121
  130. package/lib/commonjs/i18n/strings.js.map +1 -1
  131. package/lib/commonjs/i18n/useT.js +1 -1
  132. package/lib/commonjs/main.js +0 -44
  133. package/lib/commonjs/main.js.map +1 -1
  134. package/lib/commonjs/networking/api-requests/auth.api.js +60 -134
  135. package/lib/commonjs/networking/api-requests/auth.api.js.map +1 -1
  136. package/lib/commonjs/networking/api-requests/roomMembers.api.js +1 -1
  137. package/lib/commonjs/networking/api-requests/roomMembers.api.js.map +1 -1
  138. package/lib/commonjs/networking/api-requests/rooms.api.js +9 -9
  139. package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
  140. package/lib/commonjs/networking/api-requests/user.api.js +9 -68
  141. package/lib/commonjs/networking/api-requests/user.api.js.map +1 -1
  142. package/lib/commonjs/networking/apiClient.js +112 -62
  143. package/lib/commonjs/networking/apiClient.js.map +1 -1
  144. package/lib/commonjs/networking/stanzaHandlers.js +51 -93
  145. package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
  146. package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js +8 -46
  147. package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
  148. package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js +1 -8
  149. package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
  150. package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js +1 -5
  151. package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
  152. package/lib/commonjs/networking/xmppClient.js +8 -124
  153. package/lib/commonjs/networking/xmppClient.js.map +1 -1
  154. package/lib/commonjs/roomStore/chatSettingsSlice.js +7 -26
  155. package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
  156. package/lib/commonjs/roomStore/index.js +2 -35
  157. package/lib/commonjs/roomStore/index.js.map +1 -1
  158. package/lib/commonjs/roomStore/persistence.js +39 -226
  159. package/lib/commonjs/roomStore/persistence.js.map +1 -1
  160. package/lib/commonjs/roomStore/roomsSlice.js +38 -151
  161. package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
  162. package/lib/commonjs/services/pushSubscriptionService.js +13 -15
  163. package/lib/commonjs/services/pushSubscriptionService.js.map +1 -1
  164. package/lib/commonjs/version.js +3 -1
  165. package/lib/commonjs/version.js.map +1 -1
  166. package/lib/module/assets/icons.js +1 -6
  167. package/lib/module/assets/icons.js.map +1 -1
  168. package/lib/module/components/AuthForms/Login.js +4 -4
  169. package/lib/module/components/AuthForms/Login.js.map +1 -1
  170. package/lib/module/components/Header/HeaderRoomList.js +7 -26
  171. package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
  172. package/lib/module/components/MainComponents/ChatHeader.js +3 -9
  173. package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
  174. package/lib/module/components/MainComponents/ChatRoom.js +16 -152
  175. package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
  176. package/lib/module/components/MainComponents/ChatWrapper.js +40 -36
  177. package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
  178. package/lib/module/components/MainComponents/LoginWrapper.js +1 -2
  179. package/lib/module/components/MainComponents/LoginWrapper.js.map +1 -1
  180. package/lib/module/components/MainComponents/MediaMessage.js +10 -30
  181. package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
  182. package/lib/module/components/MainComponents/MessageContainer.js +1 -5
  183. package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
  184. package/lib/module/components/MainComponents/MessageList.js +5 -13
  185. package/lib/module/components/MainComponents/MessageList.js.map +1 -1
  186. package/lib/module/components/MainComponents/ProfileImagePlaceholder.js +13 -14
  187. package/lib/module/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
  188. package/lib/module/components/MainComponents/ReduxWrapper.js +26 -5
  189. package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
  190. package/lib/module/components/MainComponents/RoomList.js +35 -207
  191. package/lib/module/components/MainComponents/RoomList.js.map +1 -1
  192. package/lib/module/components/Menu/HeaderRoomListMenu.js +101 -319
  193. package/lib/module/components/Menu/HeaderRoomListMenu.js.map +1 -1
  194. package/lib/module/components/MessageBubble/MessageTranslate.js +16 -7
  195. package/lib/module/components/MessageBubble/MessageTranslate.js.map +1 -1
  196. package/lib/module/components/Modals/AttachSheet/AttachSheet.js +115 -311
  197. package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
  198. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +219 -559
  199. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  200. package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js +9 -7
  201. package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
  202. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +28 -70
  203. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  204. package/lib/module/components/Modals/FilePreviewModal/PdfView.js +1 -2
  205. package/lib/module/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
  206. package/lib/module/components/Modals/Modal/Modal.js +1 -9
  207. package/lib/module/components/Modals/Modal/Modal.js.map +1 -1
  208. package/lib/module/components/Modals/NewChatModal/ModalContent.js +1 -2
  209. package/lib/module/components/Modals/NewChatModal/ModalContent.js.map +1 -1
  210. package/lib/module/components/Modals/NewChatModal/NewChatModal.js +111 -208
  211. package/lib/module/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
  212. package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js +0 -8
  213. package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
  214. package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js +2 -4
  215. package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
  216. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js +23 -9
  217. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
  218. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +248 -509
  219. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  220. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js +48 -76
  221. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
  222. package/lib/module/components/Modals/styledModalComponents.js +2 -9
  223. package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
  224. package/lib/module/components/RoomComponents/ChatRoomItem.js +40 -24
  225. package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
  226. package/lib/module/components/RoomComponents/styled/LastMessageFile.js +3 -22
  227. package/lib/module/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
  228. package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js +3 -17
  229. package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
  230. package/lib/module/components/RoomComponents/styled/LastMessageVideo.js +3 -17
  231. package/lib/module/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
  232. package/lib/module/components/VideoCalls/VideoCallSession.js +3 -6
  233. package/lib/module/components/VideoCalls/VideoCallSession.js.map +1 -1
  234. package/lib/module/components/styled/AudioMessage.js +1 -2
  235. package/lib/module/components/styled/AudioMessage.js.map +1 -1
  236. package/lib/module/components/styled/DateLabel.js +10 -3
  237. package/lib/module/components/styled/DateLabel.js.map +1 -1
  238. package/lib/module/components/styled/MessageImage.js +9 -37
  239. package/lib/module/components/styled/MessageImage.js.map +1 -1
  240. package/lib/module/components/styled/NewMessageLabel.js +3 -1
  241. package/lib/module/components/styled/NewMessageLabel.js.map +1 -1
  242. package/lib/module/components/styled/SendInput.js +18 -87
  243. package/lib/module/components/styled/SendInput.js.map +1 -1
  244. package/lib/module/components/styled/StyledComponents.js +3 -9
  245. package/lib/module/components/styled/StyledComponents.js.map +1 -1
  246. package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js +4 -11
  247. package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
  248. package/lib/module/components/styled/UnsupportedType.js +4 -14
  249. package/lib/module/components/styled/UnsupportedType.js.map +1 -1
  250. package/lib/module/components/styled/VideoMessage.js +62 -120
  251. package/lib/module/components/styled/VideoMessage.js.map +1 -1
  252. package/lib/module/context/xmppProvider.js +60 -177
  253. package/lib/module/context/xmppProvider.js.map +1 -1
  254. package/lib/module/helpers/createMessageFromXml.js +1 -19
  255. package/lib/module/helpers/createMessageFromXml.js.map +1 -1
  256. package/lib/module/helpers/ensureScopedChatCache.js +2 -2
  257. package/lib/module/helpers/ensureScopedChatCache.js.map +1 -1
  258. package/lib/module/helpers/getDataFromXml.js +23 -1
  259. package/lib/module/helpers/getDataFromXml.js.map +1 -1
  260. package/lib/module/helpers/historyPreloadScheduler.js +3 -66
  261. package/lib/module/helpers/historyPreloadScheduler.js.map +1 -1
  262. package/lib/module/helpers/initXmppRooms.js +8 -14
  263. package/lib/module/helpers/initXmppRooms.js.map +1 -1
  264. package/lib/module/helpers/insertMessageWithDelimiter.js +22 -52
  265. package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
  266. package/lib/module/helpers/isUnresolvedSenderId.js +6 -1
  267. package/lib/module/helpers/isUnresolvedSenderId.js.map +1 -1
  268. package/lib/module/helpers/keyboardLayout.js +2 -12
  269. package/lib/module/helpers/keyboardLayout.js.map +1 -1
  270. package/lib/module/helpers/mimeToExtension.js +13 -6
  271. package/lib/module/helpers/mimeToExtension.js.map +1 -1
  272. package/lib/module/helpers/resolveInitBeforeLoadUser.js +16 -130
  273. package/lib/module/helpers/resolveInitBeforeLoadUser.js.map +1 -1
  274. package/lib/module/helpers/resolveLangSource.js +32 -0
  275. package/lib/module/helpers/resolveLangSource.js.map +1 -0
  276. package/lib/module/helpers/xmppUsername.js +35 -0
  277. package/lib/module/helpers/xmppUsername.js.map +1 -0
  278. package/lib/module/hooks/useChatRoomFocus.js +13 -46
  279. package/lib/module/hooks/useChatRoomFocus.js.map +1 -1
  280. package/lib/module/hooks/useChatWrapperInit.js +14 -32
  281. package/lib/module/hooks/useChatWrapperInit.js.map +1 -1
  282. package/lib/module/hooks/useComposing.js +1 -28
  283. package/lib/module/hooks/useComposing.js.map +1 -1
  284. package/lib/module/hooks/useLogout.js +7 -23
  285. package/lib/module/hooks/useLogout.js.map +1 -1
  286. package/lib/module/hooks/usePendingNotification.js +11 -8
  287. package/lib/module/hooks/usePendingNotification.js.map +1 -1
  288. package/lib/module/hooks/useSendMessage.js +16 -52
  289. package/lib/module/hooks/useSendMessage.js.map +1 -1
  290. package/lib/module/hooks/useUnreadMessagesCounter.js +1 -6
  291. package/lib/module/hooks/useUnreadMessagesCounter.js.map +1 -1
  292. package/lib/module/i18n/strings.js +133 -121
  293. package/lib/module/i18n/strings.js.map +1 -1
  294. package/lib/module/i18n/useT.js +1 -1
  295. package/lib/module/main.js +2 -14
  296. package/lib/module/main.js.map +1 -1
  297. package/lib/module/networking/api-requests/auth.api.js +59 -131
  298. package/lib/module/networking/api-requests/auth.api.js.map +1 -1
  299. package/lib/module/networking/api-requests/roomMembers.api.js +1 -1
  300. package/lib/module/networking/api-requests/roomMembers.api.js.map +1 -1
  301. package/lib/module/networking/api-requests/rooms.api.js +9 -9
  302. package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
  303. package/lib/module/networking/api-requests/user.api.js +7 -64
  304. package/lib/module/networking/api-requests/user.api.js.map +1 -1
  305. package/lib/module/networking/apiClient.js +113 -61
  306. package/lib/module/networking/apiClient.js.map +1 -1
  307. package/lib/module/networking/stanzaHandlers.js +52 -94
  308. package/lib/module/networking/stanzaHandlers.js.map +1 -1
  309. package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js +8 -46
  310. package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
  311. package/lib/module/networking/xmpp/presenceInRoom.xmpp.js +1 -8
  312. package/lib/module/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
  313. package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js +1 -5
  314. package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
  315. package/lib/module/networking/xmppClient.js +8 -124
  316. package/lib/module/networking/xmppClient.js.map +1 -1
  317. package/lib/module/roomStore/chatSettingsSlice.js +7 -26
  318. package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
  319. package/lib/module/roomStore/index.js +4 -37
  320. package/lib/module/roomStore/index.js.map +1 -1
  321. package/lib/module/roomStore/persistence.js +38 -223
  322. package/lib/module/roomStore/persistence.js.map +1 -1
  323. package/lib/module/roomStore/roomsSlice.js +34 -139
  324. package/lib/module/roomStore/roomsSlice.js.map +1 -1
  325. package/lib/module/services/pushSubscriptionService.js +13 -15
  326. package/lib/module/services/pushSubscriptionService.js.map +1 -1
  327. package/lib/module/version.js +3 -1
  328. package/lib/module/version.js.map +1 -1
  329. package/lib/typescript/assets/icons.d.ts +0 -16
  330. package/lib/typescript/assets/icons.d.ts.map +1 -1
  331. package/lib/typescript/components/AuthForms/Login.d.ts.map +1 -1
  332. package/lib/typescript/components/Header/HeaderRoomList.d.ts.map +1 -1
  333. package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
  334. package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
  335. package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
  336. package/lib/typescript/components/MainComponents/LoginWrapper.d.ts.map +1 -1
  337. package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
  338. package/lib/typescript/components/MainComponents/MessageContainer.d.ts.map +1 -1
  339. package/lib/typescript/components/MainComponents/MessageList.d.ts +1 -10
  340. package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
  341. package/lib/typescript/components/MainComponents/ProfileImagePlaceholder.d.ts.map +1 -1
  342. package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
  343. package/lib/typescript/components/MainComponents/RoomList.d.ts +0 -7
  344. package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
  345. package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts +0 -3
  346. package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts.map +1 -1
  347. package/lib/typescript/components/MessageBubble/MessageTranslate.d.ts.map +1 -1
  348. package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts +0 -9
  349. package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
  350. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts +0 -10
  351. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
  352. package/lib/typescript/components/Modals/ChatProfileModal/DeleteChatModal.d.ts.map +1 -1
  353. package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
  354. package/lib/typescript/components/Modals/FilePreviewModal/PdfView.d.ts.map +1 -1
  355. package/lib/typescript/components/Modals/Modal/Modal.d.ts.map +1 -1
  356. package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts +2 -4
  357. package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts.map +1 -1
  358. package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts +1 -1
  359. package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts.map +1 -1
  360. package/lib/typescript/components/Modals/NewChatModal/UpdNewChatModal.d.ts.map +1 -1
  361. package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts +1 -6
  362. package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts.map +1 -1
  363. package/lib/typescript/components/Modals/UserProfileModal/EditUserModal.d.ts.map +1 -1
  364. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts +0 -16
  365. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
  366. package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts +0 -1
  367. package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts.map +1 -1
  368. package/lib/typescript/components/Modals/styledModalComponents.d.ts.map +1 -1
  369. package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts.map +1 -1
  370. package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts +1 -1
  371. package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts.map +1 -1
  372. package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts +1 -1
  373. package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts.map +1 -1
  374. package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts +1 -1
  375. package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts.map +1 -1
  376. package/lib/typescript/components/VideoCalls/VideoCallSession.d.ts.map +1 -1
  377. package/lib/typescript/components/styled/AudioMessage.d.ts.map +1 -1
  378. package/lib/typescript/components/styled/DateLabel.d.ts.map +1 -1
  379. package/lib/typescript/components/styled/MessageImage.d.ts +0 -14
  380. package/lib/typescript/components/styled/MessageImage.d.ts.map +1 -1
  381. package/lib/typescript/components/styled/NewMessageLabel.d.ts.map +1 -1
  382. package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
  383. package/lib/typescript/components/styled/StyledComponents.d.ts.map +1 -1
  384. package/lib/typescript/components/styled/StyledInputComponents/StyledInputComponents.d.ts.map +1 -1
  385. package/lib/typescript/components/styled/UnsupportedType.d.ts.map +1 -1
  386. package/lib/typescript/components/styled/VideoMessage.d.ts +0 -8
  387. package/lib/typescript/components/styled/VideoMessage.d.ts.map +1 -1
  388. package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
  389. package/lib/typescript/helpers/createMessageFromXml.d.ts.map +1 -1
  390. package/lib/typescript/helpers/getDataFromXml.d.ts.map +1 -1
  391. package/lib/typescript/helpers/historyPreloadScheduler.d.ts.map +1 -1
  392. package/lib/typescript/helpers/initXmppRooms.d.ts.map +1 -1
  393. package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts +1 -1
  394. package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
  395. package/lib/typescript/helpers/isUnresolvedSenderId.d.ts.map +1 -1
  396. package/lib/typescript/helpers/keyboardLayout.d.ts +1 -5
  397. package/lib/typescript/helpers/keyboardLayout.d.ts.map +1 -1
  398. package/lib/typescript/helpers/mimeToExtension.d.ts +15 -0
  399. package/lib/typescript/helpers/mimeToExtension.d.ts.map +1 -1
  400. package/lib/typescript/helpers/resolveInitBeforeLoadUser.d.ts.map +1 -1
  401. package/lib/typescript/helpers/resolveLangSource.d.ts +30 -0
  402. package/lib/typescript/helpers/resolveLangSource.d.ts.map +1 -0
  403. package/lib/typescript/helpers/xmppUsername.d.ts +13 -0
  404. package/lib/typescript/helpers/xmppUsername.d.ts.map +1 -0
  405. package/lib/typescript/hooks/useChatRoomFocus.d.ts +1 -4
  406. package/lib/typescript/hooks/useChatRoomFocus.d.ts.map +1 -1
  407. package/lib/typescript/hooks/useChatWrapperInit.d.ts.map +1 -1
  408. package/lib/typescript/hooks/useComposing.d.ts.map +1 -1
  409. package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
  410. package/lib/typescript/hooks/usePendingNotification.d.ts.map +1 -1
  411. package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
  412. package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts +0 -1
  413. package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts.map +1 -1
  414. package/lib/typescript/i18n/strings.d.ts.map +1 -1
  415. package/lib/typescript/i18n/useT.d.ts +1 -1
  416. package/lib/typescript/main.d.ts +2 -9
  417. package/lib/typescript/main.d.ts.map +1 -1
  418. package/lib/typescript/networking/api-requests/auth.api.d.ts +1 -3
  419. package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
  420. package/lib/typescript/networking/api-requests/user.api.d.ts +0 -27
  421. package/lib/typescript/networking/api-requests/user.api.d.ts.map +1 -1
  422. package/lib/typescript/networking/apiClient.d.ts +6 -12
  423. package/lib/typescript/networking/apiClient.d.ts.map +1 -1
  424. package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
  425. package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts +2 -10
  426. package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts.map +1 -1
  427. package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts.map +1 -1
  428. package/lib/typescript/networking/xmpp/subscribeToRoomMessages.xmpp.d.ts.map +1 -1
  429. package/lib/typescript/networking/xmppClient.d.ts +0 -14
  430. package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
  431. package/lib/typescript/roomStore/chatSettingsSlice.d.ts +0 -16
  432. package/lib/typescript/roomStore/chatSettingsSlice.d.ts.map +1 -1
  433. package/lib/typescript/roomStore/index.d.ts.map +1 -1
  434. package/lib/typescript/roomStore/persistence.d.ts +1 -18
  435. package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
  436. package/lib/typescript/roomStore/roomsSlice.d.ts +3 -43
  437. package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
  438. package/lib/typescript/services/pushSubscriptionService.d.ts +1 -1
  439. package/lib/typescript/services/pushSubscriptionService.d.ts.map +1 -1
  440. package/lib/typescript/types/types.d.ts +5 -50
  441. package/lib/typescript/types/types.d.ts.map +1 -1
  442. package/lib/typescript/version.d.ts +1 -1
  443. package/lib/typescript/version.d.ts.map +1 -1
  444. package/package.json +29 -41
  445. package/src/assets/icons.tsx +9 -48
  446. package/src/components/AuthForms/Login.tsx +3 -3
  447. package/src/components/Header/HeaderRoomList.tsx +6 -24
  448. package/src/components/MainComponents/ChatHeader.tsx +3 -9
  449. package/src/components/MainComponents/ChatRoom.tsx +15 -161
  450. package/src/components/MainComponents/ChatWrapper.tsx +53 -36
  451. package/src/components/MainComponents/LoginWrapper.tsx +0 -1
  452. package/src/components/MainComponents/MediaMessage.tsx +8 -26
  453. package/src/components/MainComponents/MessageContainer.tsx +1 -5
  454. package/src/components/MainComponents/MessageList.tsx +4 -23
  455. package/src/components/MainComponents/ProfileImagePlaceholder.tsx +14 -21
  456. package/src/components/MainComponents/ReduxWrapper.tsx +18 -1
  457. package/src/components/MainComponents/RoomList.tsx +39 -236
  458. package/src/components/Menu/HeaderRoomListMenu.tsx +75 -328
  459. package/src/components/MessageBubble/MessageTranslate.tsx +17 -12
  460. package/src/components/Modals/AttachSheet/AttachSheet.tsx +99 -331
  461. package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +293 -611
  462. package/src/components/Modals/ChatProfileModal/DeleteChatModal.tsx +9 -7
  463. package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +38 -79
  464. package/src/components/Modals/FilePreviewModal/PdfView.tsx +1 -2
  465. package/src/components/Modals/Modal/Modal.tsx +0 -7
  466. package/src/components/Modals/NewChatModal/ModalContent.tsx +3 -6
  467. package/src/components/Modals/NewChatModal/NewChatModal.tsx +126 -223
  468. package/src/components/Modals/NewChatModal/UpdNewChatModal.tsx +1 -12
  469. package/src/components/Modals/SelectUsersModal/SelectUsersModal.tsx +4 -14
  470. package/src/components/Modals/UserProfileModal/EditUserModal.tsx +25 -9
  471. package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +307 -617
  472. package/src/components/Modals/UserSettingsModal/UserSettingsModal.tsx +58 -75
  473. package/src/components/Modals/styledModalComponents.tsx +2 -9
  474. package/src/components/RoomComponents/ChatRoomItem.tsx +50 -21
  475. package/src/components/RoomComponents/styled/LastMessageFile.tsx +4 -28
  476. package/src/components/RoomComponents/styled/LastMessagePhoto.tsx +3 -18
  477. package/src/components/RoomComponents/styled/LastMessageVideo.tsx +3 -18
  478. package/src/components/VideoCalls/VideoCallSession.tsx +3 -8
  479. package/src/components/styled/AudioMessage.tsx +1 -2
  480. package/src/components/styled/DateLabel.tsx +10 -3
  481. package/src/components/styled/MessageImage.tsx +7 -53
  482. package/src/components/styled/NewMessageLabel.tsx +3 -1
  483. package/src/components/styled/SendInput.tsx +18 -91
  484. package/src/components/styled/StyledComponents.ts +3 -9
  485. package/src/components/styled/StyledInputComponents/StyledInputComponents.tsx +4 -11
  486. package/src/components/styled/UnsupportedType.tsx +4 -14
  487. package/src/components/styled/VideoMessage.tsx +54 -131
  488. package/src/context/xmppProvider.tsx +57 -209
  489. package/src/helpers/createMessageFromXml.ts +1 -20
  490. package/src/helpers/ensureScopedChatCache.ts +2 -2
  491. package/src/helpers/getDataFromXml.ts +25 -1
  492. package/src/helpers/historyPreloadScheduler.ts +3 -80
  493. package/src/helpers/initXmppRooms.tsx +10 -14
  494. package/src/helpers/insertMessageWithDelimiter.ts +32 -55
  495. package/src/helpers/isUnresolvedSenderId.ts +9 -1
  496. package/src/helpers/keyboardLayout.ts +2 -23
  497. package/src/helpers/mimeToExtension.ts +22 -6
  498. package/src/helpers/resolveInitBeforeLoadUser.ts +18 -125
  499. package/src/helpers/resolveLangSource.ts +40 -0
  500. package/src/helpers/xmppUsername.ts +38 -0
  501. package/src/hooks/useChatRoomFocus.ts +9 -49
  502. package/src/hooks/useChatWrapperInit.ts +16 -32
  503. package/src/hooks/useComposing.tsx +1 -37
  504. package/src/hooks/useLogout.tsx +9 -29
  505. package/src/hooks/usePendingNotification.ts +11 -5
  506. package/src/hooks/useSendMessage.tsx +15 -60
  507. package/src/hooks/useUnreadMessagesCounter.ts +0 -11
  508. package/src/i18n/strings.ts +133 -121
  509. package/src/i18n/useT.ts +1 -1
  510. package/src/main.ts +2 -26
  511. package/src/networking/api-requests/auth.api.ts +48 -156
  512. package/src/networking/api-requests/roomMembers.api.ts +1 -1
  513. package/src/networking/api-requests/rooms.api.ts +9 -9
  514. package/src/networking/api-requests/user.api.ts +7 -79
  515. package/src/networking/apiClient.ts +123 -68
  516. package/src/networking/stanzaHandlers.ts +51 -92
  517. package/src/networking/xmpp/flushLastViewedToPrivateStore.ts +10 -71
  518. package/src/networking/xmpp/presenceInRoom.xmpp.ts +1 -6
  519. package/src/networking/xmpp/subscribeToRoomMessages.xmpp.ts +1 -12
  520. package/src/networking/xmppClient.ts +9 -141
  521. package/src/roomStore/chatSettingsSlice.ts +10 -34
  522. package/src/roomStore/index.ts +4 -40
  523. package/src/roomStore/persistence.ts +40 -234
  524. package/src/roomStore/roomsSlice.ts +29 -161
  525. package/src/services/pushSubscriptionService.ts +13 -18
  526. package/src/types/types.ts +5 -72
  527. package/src/version.ts +3 -1
  528. package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js +0 -226
  529. package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js.map +0 -1
  530. package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js +0 -556
  531. package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js.map +0 -1
  532. package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js +0 -210
  533. package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js.map +0 -1
  534. package/lib/commonjs/helpers/getChatBackground.js +0 -23
  535. package/lib/commonjs/helpers/getChatBackground.js.map +0 -1
  536. package/lib/commonjs/helpers/getDisplayFileName.js +0 -79
  537. package/lib/commonjs/helpers/getDisplayFileName.js.map +0 -1
  538. package/lib/commonjs/helpers/getServerReadTimestamp.js +0 -188
  539. package/lib/commonjs/helpers/getServerReadTimestamp.js.map +0 -1
  540. package/lib/commonjs/helpers/isOwnMessage.js +0 -75
  541. package/lib/commonjs/helpers/isOwnMessage.js.map +0 -1
  542. package/lib/commonjs/helpers/mediaLibraryRuntime.js +0 -31
  543. package/lib/commonjs/helpers/mediaLibraryRuntime.js.map +0 -1
  544. package/lib/commonjs/helpers/msgSortableMs.js +0 -37
  545. package/lib/commonjs/helpers/msgSortableMs.js.map +0 -1
  546. package/lib/commonjs/helpers/persistCrypto.js +0 -122
  547. package/lib/commonjs/helpers/persistCrypto.js.map +0 -1
  548. package/lib/commonjs/helpers/pickImageAsset.js +0 -68
  549. package/lib/commonjs/helpers/pickImageAsset.js.map +0 -1
  550. package/lib/commonjs/helpers/pushPayload.js +0 -71
  551. package/lib/commonjs/helpers/pushPayload.js.map +0 -1
  552. package/lib/commonjs/helpers/secureFileUrl.js +0 -101
  553. package/lib/commonjs/helpers/secureFileUrl.js.map +0 -1
  554. package/lib/commonjs/helpers/secureKeyValue.js +0 -83
  555. package/lib/commonjs/helpers/secureKeyValue.js.map +0 -1
  556. package/lib/commonjs/helpers/secureStoreRuntime.js +0 -59
  557. package/lib/commonjs/helpers/secureStoreRuntime.js.map +0 -1
  558. package/lib/commonjs/helpers/secureUserStorage.js +0 -75
  559. package/lib/commonjs/helpers/secureUserStorage.js.map +0 -1
  560. package/lib/commonjs/helpers/shallowEqual.js +0 -36
  561. package/lib/commonjs/helpers/shallowEqual.js.map +0 -1
  562. package/lib/commonjs/helpers/sheetGestures.js +0 -32
  563. package/lib/commonjs/helpers/sheetGestures.js.map +0 -1
  564. package/lib/commonjs/hooks/useFileToken.js +0 -10
  565. package/lib/commonjs/hooks/useFileToken.js.map +0 -1
  566. package/lib/commonjs/networking/authRefresh.js +0 -332
  567. package/lib/commonjs/networking/authRefresh.js.map +0 -1
  568. package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js +0 -223
  569. package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js.map +0 -1
  570. package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js +0 -548
  571. package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js.map +0 -1
  572. package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js +0 -205
  573. package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js.map +0 -1
  574. package/lib/module/helpers/getChatBackground.js +0 -18
  575. package/lib/module/helpers/getChatBackground.js.map +0 -1
  576. package/lib/module/helpers/getDisplayFileName.js +0 -73
  577. package/lib/module/helpers/getDisplayFileName.js.map +0 -1
  578. package/lib/module/helpers/getServerReadTimestamp.js +0 -181
  579. package/lib/module/helpers/getServerReadTimestamp.js.map +0 -1
  580. package/lib/module/helpers/isOwnMessage.js +0 -70
  581. package/lib/module/helpers/isOwnMessage.js.map +0 -1
  582. package/lib/module/helpers/mediaLibraryRuntime.js +0 -25
  583. package/lib/module/helpers/mediaLibraryRuntime.js.map +0 -1
  584. package/lib/module/helpers/msgSortableMs.js +0 -32
  585. package/lib/module/helpers/msgSortableMs.js.map +0 -1
  586. package/lib/module/helpers/persistCrypto.js +0 -115
  587. package/lib/module/helpers/persistCrypto.js.map +0 -1
  588. package/lib/module/helpers/pickImageAsset.js +0 -63
  589. package/lib/module/helpers/pickImageAsset.js.map +0 -1
  590. package/lib/module/helpers/pushPayload.js +0 -63
  591. package/lib/module/helpers/pushPayload.js.map +0 -1
  592. package/lib/module/helpers/secureFileUrl.js +0 -91
  593. package/lib/module/helpers/secureFileUrl.js.map +0 -1
  594. package/lib/module/helpers/secureKeyValue.js +0 -75
  595. package/lib/module/helpers/secureKeyValue.js.map +0 -1
  596. package/lib/module/helpers/secureStoreRuntime.js +0 -52
  597. package/lib/module/helpers/secureStoreRuntime.js.map +0 -1
  598. package/lib/module/helpers/secureUserStorage.js +0 -72
  599. package/lib/module/helpers/secureUserStorage.js.map +0 -1
  600. package/lib/module/helpers/shallowEqual.js +0 -31
  601. package/lib/module/helpers/shallowEqual.js.map +0 -1
  602. package/lib/module/helpers/sheetGestures.js +0 -26
  603. package/lib/module/helpers/sheetGestures.js.map +0 -1
  604. package/lib/module/hooks/useFileToken.js +0 -5
  605. package/lib/module/hooks/useFileToken.js.map +0 -1
  606. package/lib/module/networking/authRefresh.js +0 -321
  607. package/lib/module/networking/authRefresh.js.map +0 -1
  608. package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts +0 -9
  609. package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts.map +0 -1
  610. package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts +0 -75
  611. package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts.map +0 -1
  612. package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts +0 -25
  613. package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts.map +0 -1
  614. package/lib/typescript/helpers/getChatBackground.d.ts +0 -15
  615. package/lib/typescript/helpers/getChatBackground.d.ts.map +0 -1
  616. package/lib/typescript/helpers/getDisplayFileName.d.ts +0 -49
  617. package/lib/typescript/helpers/getDisplayFileName.d.ts.map +0 -1
  618. package/lib/typescript/helpers/getServerReadTimestamp.d.ts +0 -108
  619. package/lib/typescript/helpers/getServerReadTimestamp.d.ts.map +0 -1
  620. package/lib/typescript/helpers/isOwnMessage.d.ts +0 -36
  621. package/lib/typescript/helpers/isOwnMessage.d.ts.map +0 -1
  622. package/lib/typescript/helpers/mediaLibraryRuntime.d.ts +0 -3
  623. package/lib/typescript/helpers/mediaLibraryRuntime.d.ts.map +0 -1
  624. package/lib/typescript/helpers/msgSortableMs.d.ts +0 -2
  625. package/lib/typescript/helpers/msgSortableMs.d.ts.map +0 -1
  626. package/lib/typescript/helpers/persistCrypto.d.ts +0 -13
  627. package/lib/typescript/helpers/persistCrypto.d.ts.map +0 -1
  628. package/lib/typescript/helpers/pickImageAsset.d.ts +0 -27
  629. package/lib/typescript/helpers/pickImageAsset.d.ts.map +0 -1
  630. package/lib/typescript/helpers/pushPayload.d.ts +0 -7
  631. package/lib/typescript/helpers/pushPayload.d.ts.map +0 -1
  632. package/lib/typescript/helpers/secureFileUrl.d.ts +0 -7
  633. package/lib/typescript/helpers/secureFileUrl.d.ts.map +0 -1
  634. package/lib/typescript/helpers/secureKeyValue.d.ts +0 -13
  635. package/lib/typescript/helpers/secureKeyValue.d.ts.map +0 -1
  636. package/lib/typescript/helpers/secureStoreRuntime.d.ts +0 -29
  637. package/lib/typescript/helpers/secureStoreRuntime.d.ts.map +0 -1
  638. package/lib/typescript/helpers/secureUserStorage.d.ts +0 -23
  639. package/lib/typescript/helpers/secureUserStorage.d.ts.map +0 -1
  640. package/lib/typescript/helpers/shallowEqual.d.ts +0 -11
  641. package/lib/typescript/helpers/shallowEqual.d.ts.map +0 -1
  642. package/lib/typescript/helpers/sheetGestures.d.ts +0 -20
  643. package/lib/typescript/helpers/sheetGestures.d.ts.map +0 -1
  644. package/lib/typescript/hooks/useFileToken.d.ts +0 -2
  645. package/lib/typescript/hooks/useFileToken.d.ts.map +0 -1
  646. package/lib/typescript/networking/authRefresh.d.ts +0 -95
  647. package/lib/typescript/networking/authRefresh.d.ts.map +0 -1
  648. package/src/components/Modals/ChatProfileModal/ReportChatModal.tsx +0 -244
  649. package/src/components/Modals/ProfileHeader/ProfileHeader.tsx +0 -615
  650. package/src/components/Modals/ProfileHeader/ProfileMenu.tsx +0 -217
  651. package/src/helpers/getChatBackground.ts +0 -18
  652. package/src/helpers/getDisplayFileName.ts +0 -87
  653. package/src/helpers/getServerReadTimestamp.ts +0 -197
  654. package/src/helpers/isOwnMessage.ts +0 -90
  655. package/src/helpers/mediaLibraryRuntime.ts +0 -25
  656. package/src/helpers/msgSortableMs.ts +0 -25
  657. package/src/helpers/persistCrypto.ts +0 -127
  658. package/src/helpers/pickImageAsset.ts +0 -68
  659. package/src/helpers/pushPayload.ts +0 -62
  660. package/src/helpers/secureFileUrl.ts +0 -103
  661. package/src/helpers/secureKeyValue.ts +0 -80
  662. package/src/helpers/secureStoreRuntime.ts +0 -62
  663. package/src/helpers/secureUserStorage.ts +0 -80
  664. package/src/helpers/shallowEqual.ts +0 -33
  665. package/src/helpers/sheetGestures.ts +0 -25
  666. package/src/hooks/useFileToken.ts +0 -7
  667. package/src/networking/authRefresh.ts +0 -451
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
- var _secureFileUrl = require("../../helpers/secureFileUrl");
9
8
  var _reactNative = require("react-native");
9
+ var _expoVideo = require("expo-video");
10
10
  var _reactRedux = require("react-redux");
11
11
  var _chatSettingsSlice = require("../../roomStore/chatSettingsSlice");
12
12
  var _MODAL_TYPES = require("../../helpers/constants/MODAL_TYPES");
@@ -14,136 +14,78 @@ var _icons = require("../../assets/icons");
14
14
  var _mediaDimensions = require("../../helpers/mediaDimensions");
15
15
  var _jsxRuntime = require("react/jsx-runtime");
16
16
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
17
- const PlayBadge = () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
18
- style: styles.overlay,
19
- pointerEvents: "none",
20
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
21
- style: styles.playButton,
22
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.PlayIcon, {
23
- width: 28,
24
- height: 28
25
- })
26
- })
27
- });
28
-
29
- /**
30
- * Poster path — taken whenever the message carries a `locationPreview`.
31
- *
32
- * A chat row only ever needs a still and a play affordance; actual
33
- * playback happens in the full-screen preview. Drawing that still with a
34
- * plain <Image> keeps the whole bubble inside the RN view hierarchy, so
35
- * the play badge is guaranteed to composite on top of it.
36
- */
37
- const PosterVideo = ({
38
- previewURL,
39
- onOpen,
40
- onPosterError
41
- }) => {
42
- const [dims, setDims] = (0, _react.useState)((0, _mediaDimensions.defaultMediaDims)());
43
- (0, _react.useEffect)(() => {
44
- if (!previewURL) {
45
- return;
46
- }
47
- let active = true;
48
- _reactNative.Image.getSize(previewURL, (w, h) => {
49
- if (active) {
50
- setDims((0, _mediaDimensions.fitMediaDimensions)(w, h));
51
- }
52
- }, () => {
53
- /* keep the default box if the size probe fails */
54
- });
55
- return () => {
56
- active = false;
57
- };
58
- }, [previewURL]);
59
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Pressable, {
60
- onPress: onOpen,
61
- style: [styles.wrapper, {
62
- width: dims.width,
63
- height: dims.height
64
- }],
65
- accessibilityRole: "button",
66
- accessibilityLabel: "Play video",
67
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Image, {
68
- source: {
69
- uri: previewURL
70
- },
71
- style: styles.video,
72
- resizeMode: "cover"
73
- // Not every backend returns a real still — some set
74
- // locationPreview to the video URL itself, which decodes to
75
- // nothing. Rather than show an empty box, fall back to the
76
- // static placeholder branch.
77
- ,
78
- onError: onPosterError
79
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(PlayBadge, {})]
80
- });
81
- };
82
-
83
- /**
84
- * Fallback for messages with no usable poster frame: a static dark
85
- * placeholder behind the play badge.
86
- *
87
- * This branch used to mount an expo-video player purely to paint the
88
- * first frame (`VideoView` + `surfaceType="textureView"`). That never
89
- * composited reliably: on Android (Pixel, Android 16, New Architecture)
90
- * the native video surface draws ABOVE sibling RN views, swallowing the
91
- * play badge — the video looked like a plain photo. There is no
92
- * surfaceType/zIndex combination that guarantees ordering across SDK 54
93
- * and 57, so we don't fight it: no live surface in the bubble at all.
94
- * The badge is plain RN views over a plain RN background, which cannot
95
- * be occluded, and we drop the per-row player instance as a bonus.
96
- * Actual playback (and the real first frame) happens in the full-screen
97
- * preview modal.
98
- */
99
- const PlaceholderVideo = ({
100
- onOpen
101
- }) => {
102
- const dims = (0, _mediaDimensions.defaultMediaDims)();
103
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
104
- onPress: onOpen,
105
- style: [styles.wrapper, {
106
- width: dims.width,
107
- height: dims.height
108
- }],
109
- accessibilityRole: "button",
110
- accessibilityLabel: "Play video",
111
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PlayBadge, {})
112
- });
113
- };
114
17
  const CustomMessageVideo = ({
115
18
  fileName,
116
- originalName,
117
19
  fileURL,
118
- mimetype,
119
- previewURL
20
+ mimetype
120
21
  }) => {
121
22
  const dispatch = (0, _reactRedux.useDispatch)();
122
- const [posterFailed, setPosterFailed] = (0, _react.useState)(false);
23
+ const [dims, setDims] = (0, _react.useState)((0, _mediaDimensions.defaultMediaDims)());
24
+ const player = (0, _expoVideo.useVideoPlayer)(fileURL, p => {
25
+ p.muted = true;
26
+ });
27
+ (0, _react.useEffect)(() => {
28
+ const sub = player.addListener('statusChange', () => {
29
+ const size = player.videoTrack?.size;
30
+ if (size?.width && size?.height) {
31
+ setDims((0, _mediaDimensions.fitMediaDimensions)(size.width, size.height));
32
+ }
33
+ });
34
+ return () => sub.remove();
35
+ }, [player]);
123
36
  const handleOpen = () => {
124
37
  dispatch((0, _chatSettingsSlice.setActiveFile)({
125
38
  fileName,
126
39
  fileURL,
127
- mimetype,
128
- originalName
40
+ mimetype
129
41
  }));
130
42
  dispatch((0, _chatSettingsSlice.setActiveModal)(_MODAL_TYPES.MODAL_TYPES.FILE_PREVIEW));
131
43
  };
132
- if (previewURL && !posterFailed) {
133
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(PosterVideo, {
134
- previewURL: previewURL,
135
- onOpen: handleOpen,
136
- onPosterError: () => {
137
- if ((0, _secureFileUrl.isSecureFileUrl)(previewURL)) {
138
- (0, _secureFileUrl.requestFileTokenRecovery)();
139
- }
140
- setPosterFailed(true);
141
- }
142
- });
143
- }
144
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(PlaceholderVideo, {
145
- onOpen: handleOpen
146
- });
44
+ return (
45
+ /*#__PURE__*/
46
+ // Capture-overlay pattern: VideoView sits underneath without ANY
47
+ // touch participation; a transparent absolute-fill <Pressable> on
48
+ // top owns the tap. Previously we wrapped VideoView in a
49
+ // TouchableOpacity and set `pointerEvents="none"` on the inner
50
+ // VideoView — but on some expo-video versions / iOS the native
51
+ // VideoView still intercepted gestures despite that hint, so
52
+ // tapping the poster did nothing. Customer-reported #9 (video
53
+ // preview unresponsive). The Pressable now guarantees the tap
54
+ // reaches `handleOpen`.
55
+ (0, _jsxRuntime.jsxs)(_reactNative.View, {
56
+ style: [styles.wrapper, {
57
+ width: dims.width,
58
+ height: dims.height
59
+ }],
60
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_expoVideo.VideoView, {
61
+ player: player,
62
+ style: styles.video,
63
+ contentFit: "cover",
64
+ nativeControls: false,
65
+ surfaceType: "textureView",
66
+ pointerEvents: "none"
67
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
68
+ style: styles.overlay,
69
+ pointerEvents: "none",
70
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
71
+ style: styles.playButton,
72
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.PlayIcon, {
73
+ width: 28,
74
+ height: 28
75
+ })
76
+ })
77
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
78
+ onPress: handleOpen
79
+ // Sits ON TOP of VideoView + the play-button overlay; transparent
80
+ // so the poster + play icon show through. Captures the tap and
81
+ // routes to handleOpen → setActiveModal(FILE_PREVIEW).
82
+ ,
83
+ style: _reactNative.StyleSheet.absoluteFill,
84
+ accessibilityRole: "button",
85
+ accessibilityLabel: "Play video"
86
+ })]
87
+ })
88
+ );
147
89
  };
148
90
  var _default = exports.default = CustomMessageVideo;
149
91
  const styles = _reactNative.StyleSheet.create({
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_secureFileUrl","_reactNative","_reactRedux","_chatSettingsSlice","_MODAL_TYPES","_icons","_mediaDimensions","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","PlayBadge","jsx","View","style","styles","overlay","pointerEvents","children","playButton","PlayIcon","width","height","PosterVideo","previewURL","onOpen","onPosterError","dims","setDims","useState","defaultMediaDims","useEffect","active","Image","getSize","w","h","fitMediaDimensions","jsxs","Pressable","onPress","wrapper","accessibilityRole","accessibilityLabel","source","uri","video","resizeMode","onError","PlaceholderVideo","CustomMessageVideo","fileName","originalName","fileURL","mimetype","dispatch","useDispatch","posterFailed","setPosterFailed","handleOpen","setActiveFile","setActiveModal","MODAL_TYPES","FILE_PREVIEW","isSecureFileUrl","requestFileTokenRecovery","_default","exports","StyleSheet","create","borderRadius","overflow","backgroundColor","absoluteFill","justifyContent","alignItems"],"sourceRoot":"../../../../src","sources":["components/styled/VideoMessage.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_expoVideo","_reactRedux","_chatSettingsSlice","_MODAL_TYPES","_icons","_mediaDimensions","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","CustomMessageVideo","fileName","fileURL","mimetype","dispatch","useDispatch","dims","setDims","useState","defaultMediaDims","player","useVideoPlayer","p","muted","useEffect","sub","addListener","size","videoTrack","width","height","fitMediaDimensions","remove","handleOpen","setActiveFile","setActiveModal","MODAL_TYPES","FILE_PREVIEW","jsxs","View","style","styles","wrapper","children","jsx","VideoView","video","contentFit","nativeControls","surfaceType","pointerEvents","overlay","playButton","PlayIcon","Pressable","onPress","StyleSheet","absoluteFill","accessibilityRole","accessibilityLabel","_default","exports","create","borderRadius","overflow","backgroundColor","justifyContent","alignItems"],"sourceRoot":"../../../../src","sources":["components/styled/VideoMessage.tsx"],"mappings":"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","ignoreList":[]}
@@ -11,20 +11,17 @@ var _reactNative = require("react-native");
11
11
  var _netinfo = _interopRequireDefault(require("@react-native-community/netinfo"));
12
12
  var _VideoCallOverlay = require("../components/VideoCalls/VideoCallOverlay");
13
13
  var _xmppClient = _interopRequireDefault(require("../networking/xmppClient"));
14
- var _authRefresh = require("../networking/authRefresh");
14
+ var _chatSettingsSlice = require("../roomStore/chatSettingsSlice");
15
15
  var _clientRegistry = require("../utils/clientRegistry");
16
16
  var _resolveInitBeforeLoadUser = require("../helpers/resolveInitBeforeLoadUser");
17
17
  var _ensureScopedChatCache = require("../helpers/ensureScopedChatCache");
18
18
  var _rooms = require("../networking/api-requests/rooms.api");
19
19
  var _allRoomPresences = require("../networking/xmpp/allRoomPresences.xmpp");
20
- var _pushSubscriptionService = require("../services/pushSubscriptionService");
21
20
  var _roomStore = require("../roomStore");
22
- var _chatSettingsSlice = require("../roomStore/chatSettingsSlice");
23
21
  var _roomsSlice = require("../roomStore/roomsSlice");
24
- var _getServerReadTimestamp = require("../helpers/getServerReadTimestamp");
25
22
  var _historyPreloadScheduler = require("../helpers/historyPreloadScheduler");
26
- var _updateMessagesTillLast = require("../helpers/updateMessagesTillLast");
27
- var _secureUserStorage = require("../helpers/secureUserStorage");
23
+ var _useLocalStorage = require("../hooks/useLocalStorage");
24
+ var _LOCAL_STORAGE = require("../helpers/constants/LOCAL_STORAGE");
28
25
  var _persistence = require("../roomStore/persistence");
29
26
  var _devLogger = require("../utils/devLogger");
30
27
  var _jsxRuntime = require("react/jsx-runtime");
@@ -32,14 +29,6 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
32
29
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
33
30
  const XmppContext = /*#__PURE__*/(0, _react.createContext)(null);
34
31
  const LOGOUT_EVENT = 'ethora-xmpp-logout';
35
- const subscribeAllRoomsForPush = (client, reason) => {
36
- const rooms = Object.keys(_roomStore.store.getState().rooms.rooms || {});
37
- if (!client || !rooms.length) {
38
- return;
39
- }
40
- const nick = client.jid?.getLocal();
41
- _pushSubscriptionService.pushSubscriptionService.subscribeToRooms(client, rooms, nick).then(() => (0, _devLogger.pushLog)('xmpp', `${reason}: mucsub ok for ${rooms.length} rooms`)).catch(e => (0, _devLogger.pushLog)('warn', `${reason}: mucsub subscribe failed`, e));
42
- };
43
32
  const XmppProvider = ({
44
33
  children,
45
34
  config,
@@ -66,23 +55,21 @@ const XmppProvider = ({
66
55
  // the XmppClient at least doesn't crash on `undefined.password`.
67
56
  const credentialsProvider = (0, _react.useMemo)(() => {
68
57
  return async () => {
69
- // 1. Make sure the REST tokens are fresh before re-minting XMPP
70
- // creds. This used to call `config.refreshTokens.refreshFunction`
71
- // directly and then fall into step 2, which refreshes again —
72
- // two rotations back to back, which the new backend scheme
73
- // reads as a race at best and token reuse at worst. One call to
74
- // the shared rotation point covers both the consumer-supplied
75
- // function and the built-in endpoint.
76
- if (config?.refreshTokens?.enabled) {
77
- const rotated = await (0, _authRefresh.refreshAuthTokensQuietly)({
78
- force: true
79
- });
80
- if (rotated?.xmppPassword) {
81
- const rotatedUser = _roomStore.store.getState().chatSettingStore.user;
82
- return {
83
- username: rotatedUser?.xmppUsername || rotatedUser?.defaultWallet?.walletAddress || '',
84
- password: rotated.xmppPassword
85
- };
58
+ // 1. Consumer-supplied REST refresh (when wired). This runs
59
+ // before the SDK's own refresh chain so non-Ethora backends
60
+ // can keep auth state in sync with their own token endpoint.
61
+ const customRefresh = config?.refreshTokens?.refreshFunction;
62
+ if (customRefresh) {
63
+ try {
64
+ const result = await customRefresh();
65
+ if (result?.accessToken) {
66
+ _roomStore.store.dispatch((0, _chatSettingsSlice.refreshTokens)({
67
+ token: result.accessToken,
68
+ refreshToken: result.refreshToken || ''
69
+ }));
70
+ }
71
+ } catch (err) {
72
+ (0, _devLogger.pushLog)('warn', 'XMPP creds refresh: customRefresh failed', err);
86
73
  }
87
74
  }
88
75
 
@@ -114,7 +101,7 @@ const XmppProvider = ({
114
101
  password: u?.xmppPassword || ''
115
102
  };
116
103
  };
117
- }, [config?.jwtLogin?.enabled, config?.jwtLogin?.token, config?.refreshTokens?.enabled, config?.userLogin?.enabled, config?.customLogin?.enabled, config?.initBeforeLoadAuth?.myEndpoint]);
104
+ }, [config?.jwtLogin?.enabled, config?.jwtLogin?.token, config?.refreshTokens?.refreshFunction, config?.userLogin?.enabled, config?.customLogin?.enabled, config?.initBeforeLoadAuth?.myEndpoint]);
118
105
  const initializeClient = (0, _react.useCallback)(async (username, password, xmppSettings) => {
119
106
  const settings = xmppSettings || config?.xmppSettings;
120
107
  const key = (0, _clientRegistry.buildXmppClientKey)(username, settings);
@@ -180,22 +167,11 @@ const XmppProvider = ({
180
167
  if (!underlying) {
181
168
  return;
182
169
  }
183
- (0, _allRoomPresences.allRoomPresences)(underlying).catch(e => (0, _devLogger.pushLog)('warn', 'reconnect: allRoomPresences re-join failed', e)).finally(() => subscribeAllRoomsForPush(underlying, 'reconnect'));
170
+ (0, _allRoomPresences.allRoomPresences)(underlying).catch(e => (0, _devLogger.pushLog)('warn', 'reconnect: allRoomPresences re-join failed', e));
184
171
  // Also refresh the private store so unread / lastViewed markers
185
172
  // are accurate after a long reconnect — the MUC re-join above only
186
173
  // restores delivery, not unread state. Idempotent on first connect.
187
174
  created.getChatsPrivateStoreRequestStanza().catch(e => (0, _devLogger.pushLog)('warn', 'reconnect: privateStore refresh failed', e));
188
- // Pull whatever landed in each room's archive while the stream was
189
- // down. MUC presence re-join above only restores delivery for
190
- // messages sent AFTER this reconnect — anything sent during the
191
- // offline window has no live stanza to catch, and previously only
192
- // came back on a full app restart (fresh useChatWrapperInit mount
193
- // re-running its own one-shot boot sync). Safe on the very first
194
- // connect too: rooms have no `lastMessageTimestamp` yet at that
195
- // point, so this is a no-op until the bootstrap's own history load
196
- // populates it. Customer-reported #32.
197
- const rooms = _roomStore.store.getState().rooms?.rooms || {};
198
- (0, _updateMessagesTillLast.updateMessagesTillLast)(rooms, created).catch(e => (0, _devLogger.pushLog)('warn', 'reconnect: offline catch-up sync failed', e));
199
175
  });
200
176
  setClient(created);
201
177
  lastCredsRef.current = {
@@ -268,7 +244,7 @@ const XmppProvider = ({
268
244
  (0, _devLogger.pushLog)('rn', 'initBeforeLoad: clearStoreBeforeInit');
269
245
  _roomStore.store.dispatch((0, _roomsSlice.setLogoutState)());
270
246
  _roomStore.store.dispatch((0, _chatSettingsSlice.logout)());
271
- await (0, _secureUserStorage.secureUserStorage)().remove().catch(() => undefined);
247
+ await (0, _useLocalStorage.asyncLocalStorage)(_LOCAL_STORAGE.localStorageConstants.ETHORA_USER).remove().catch(() => undefined);
272
248
  }
273
249
  await (0, _ensureScopedChatCache.ensureScopedChatCache)(config);
274
250
  (0, _devLogger.pushLog)('rn', 'initBeforeLoad: scope ok, resolving user…');
@@ -296,40 +272,13 @@ const XmppProvider = ({
296
272
  _roomStore.store.dispatch((0, _chatSettingsSlice.setConfig)(config));
297
273
  }
298
274
 
299
- // Rotate BEFORE the first XMPP connect. On the rotating backend
300
- // the xmpp password is a short-lived JWT that only the newest
301
- // rotation knows, and each rotation invalidates its predecessors
302
- // — so a snapshot's password (a host's cached `userLogin.user`,
303
- // a persisted session) is usually already dead at boot. Without
304
- // this, the first SASL attempt fails `not-authorized`, all three
305
- // bootstrap retries re-present the same dead password, and the
306
- // user dead-ends on the Connection error modal even though one
307
- // rotation away a perfectly good session existed. The rotation
308
- // also lands the fileToken pre-render, so secure media never
309
- // paints blank first. Quiet + deduped; when it can't rotate
310
- // (no refresh material, non-rotating backend) we just connect
311
- // with what the snapshot has, exactly as before.
312
- // jwtLogin is skipped: /users/client just minted fresh creds.
313
- let connectPassword = resolved.xmppPassword;
314
- if (config?.refreshTokens?.enabled && !config?.jwtLogin?.enabled) {
315
- const rotated = await (0, _authRefresh.refreshAuthTokensQuietly)({
316
- force: true
317
- });
318
- if (cancelled) {
319
- return;
320
- }
321
- if (rotated?.xmppPassword) {
322
- connectPassword = rotated.xmppPassword;
323
- }
324
- }
325
-
326
275
  // Kick off REST /chats/my; allRoomPresences below needs the
327
276
  // room list to be in redux, otherwise it joins 0 MUCs and the
328
277
  // user receives zero realtime messages until they manually tap
329
278
  // into each room. Track the promise so we can await it before
330
279
  // joining presences.
331
280
  const restRoomsPromise = (0, _rooms.getRooms)().catch(() => undefined);
332
- const c = await initializeClient(resolved.xmppUsername, connectPassword, config?.xmppSettings);
281
+ const c = await initializeClient(resolved.xmppUsername, resolved.xmppPassword, config?.xmppSettings);
333
282
  if (cancelled) {
334
283
  return;
335
284
  }
@@ -365,7 +314,6 @@ const XmppProvider = ({
365
314
  } catch (e) {
366
315
  (0, _devLogger.pushLog)('warn', 'initBeforeLoad: allRoomPresences failed', e);
367
316
  }
368
- subscribeAllRoomsForPush(c.client, 'initBeforeLoad');
369
317
  _roomStore.store.dispatch((0, _chatSettingsSlice.setStoreClient)(c));
370
318
  completedBootstrapKeyRef.current = key;
371
319
  inflightBootstrapKeyRef.current = '';
@@ -498,14 +446,9 @@ const XmppProvider = ({
498
446
  // be re-marked visible on return. Lives in the effect closure (one per
499
447
  // client) — persists across the listener's many invocations.
500
448
  let visibleBeforeBackground = null;
501
- const suspendInBackground = !config?.xmppSettings?.keepAliveInBackground;
502
449
  const sub = _reactNative.AppState.addEventListener('change', next => {
503
450
  const c = client;
504
451
  if (next === 'active') {
505
- if (c?.isSuspended) {
506
- (0, _devLogger.pushLog)('rn', 'AppState active: resuming suspended XMPP client');
507
- c.resume();
508
- }
509
452
  // Returned to foreground. If the socket died while backgrounded
510
453
  // (iOS suspends the WebSocket; long background kills it), the
511
454
  // status may still read 'online' until xmpp.js notices the dead
@@ -537,49 +480,23 @@ const XmppProvider = ({
537
480
  if (!c) {
538
481
  return;
539
482
  }
540
- if (next === 'background' && suspendInBackground) {
541
- c.suspend().catch(() => undefined);
542
- }
543
483
  const state = _roomStore.store.getState();
544
484
  const rooms = state.rooms?.rooms;
545
485
  const visibleRoomJID = state.rooms?.visibleRoomJID || null;
546
486
  // Mark the open room "not visible" while backgrounded so messages
547
487
  // that arrive (or MAM-replay on reconnect) count as unread instead
548
488
  // of being silently treated as read — the "mounted == visible ==
549
- // read" gap. Stamp lastViewed=<the read boundary, if the user left
550
- // scrolled up, else the newest server-acked message>, not
551
- // Date.now(), as the read baseline: a device clock running ahead
552
- // would otherwise write a future marker that the forward-only
553
- // private-store merge can never correct again (bug #38). Then
554
- // clear visibility and flush that marker to the server private
555
- // store. Restored on the next 'active' transition above. Handled
556
- // here in the provider so consumers using the component as a
557
- // package get correct unread without reaching into the chat store
558
- // themselves.
559
- //
560
- // The read boundary (rooms.readBoundaries) is deliberately left
561
- // untouched here - MessageList normally stays mounted through a
562
- // simple background/foreground cycle, so its own scroll-tracking
563
- // ref (the only thing that could re-derive this value) is still
564
- // intact, and clearing the redux copy would desync the two. It's
565
- // only USED here for the one-shot stamp+flush, matching customer
566
- // #42: leaving (or backgrounding) a room while scrolled up must not
567
- // mark messages the user never reached as read.
489
+ // read" gap. Stamp lastViewed=now as the read baseline, clear
490
+ // visibility, then flush that marker to the server private store.
491
+ // Restored on the next 'active' transition above. Handled here in
492
+ // the provider so consumers using the component as a package get
493
+ // correct unread without reaching into the chat store themselves.
568
494
  visibleBeforeBackground = visibleRoomJID;
569
- let boundaryTs = null;
570
495
  if (visibleRoomJID) {
571
- boundaryTs = state.rooms?.readBoundaries?.[visibleRoomJID] ?? null;
572
- const readTs = (0, _getServerReadTimestamp.getReadMarkerTimestamp)(rooms?.[visibleRoomJID], state.roomHeapSlice, boundaryTs);
573
- // Nothing to anchor to yet (no known messages, no prior marker)
574
- // - skip the local stamp rather than fall back to the device
575
- // clock. The flush below still runs so the visibility clear
576
- // isn't blocked on this.
577
- if (readTs > 0) {
578
- _roomStore.store.dispatch((0, _roomsSlice.setLastViewedTimestamp)({
579
- chatJID: visibleRoomJID,
580
- timestamp: readTs
581
- }));
582
- }
496
+ _roomStore.store.dispatch((0, _roomsSlice.setLastViewedTimestamp)({
497
+ chatJID: visibleRoomJID,
498
+ timestamp: Date.now()
499
+ }));
583
500
  // Drop the "New messages" divider for the room we're leaving so it
584
501
  // doesn't linger when the user comes back (mirrors ChatRoom's
585
502
  // unmount cleanup, which never runs while the pane stays mounted).
@@ -590,18 +507,13 @@ const XmppProvider = ({
590
507
  _roomStore.store.dispatch((0, _roomsSlice.clearVisibleRoom)());
591
508
  }
592
509
  // Fire-and-forget — we're going to the background and don't
593
- // care about the resolution path. `visibleRoomTs` carries the same
594
- // boundary to the SERVER marker - without it the flush defaults to
595
- // "everything" for the visible room, overriding a correct smaller
596
- // local count.
510
+ // care about the resolution path.
597
511
  c.flushLastViewedToPrivateStoreStanza(rooms, {
598
- visibleRoomJID,
599
- // Clamped through the same helper as the local stamp above.
600
- visibleRoomTs: visibleRoomJID ? (0, _getServerReadTimestamp.getFlushBoundaryTs)(rooms?.[visibleRoomJID], state.roomHeapSlice, boundaryTs) : undefined
512
+ visibleRoomJID
601
513
  }).catch(() => {});
602
514
  });
603
515
  return () => sub.remove();
604
- }, [client, config?.xmppSettings?.keepAliveInBackground]);
516
+ }, [client]);
605
517
 
606
518
  // -----------------------------------------------------------
607
519
  // Consumer visibility signal (`isVisible` prop). For hosts that keep
@@ -610,11 +522,11 @@ const XmppProvider = ({
610
522
  // "shown" from "hidden", so the unread middleware would keep the open
611
523
  // room's badge at 0 and messages arriving while you're elsewhere look
612
524
  // already-read. When the host passes `isVisible`, mirror the AppState
613
- // background/foreground handling: hidden → stamp lastViewed=<newest
614
- // server-acked message> + clear room visibility (so later messages
615
- // count) + flush; shown → restore visibility for the open room. Doing
616
- // it here means consumers never touch the chat store themselves.
617
- // (Undefined = host unmounts on hide, nothing to do.)
525
+ // background/foreground handling: hidden → stamp lastViewed=now + clear
526
+ // room visibility (so later messages count) + flush; shown → restore
527
+ // visibility for the open room. Doing it here means consumers never
528
+ // touch the chat store themselves. (Undefined = host unmounts on hide,
529
+ // nothing to do.)
618
530
  // -----------------------------------------------------------
619
531
  const chatWasVisibleRef = (0, _react.useRef)(false);
620
532
  (0, _react.useEffect)(() => {
@@ -633,25 +545,11 @@ const XmppProvider = ({
633
545
  }));
634
546
  }
635
547
  } else {
636
- // The read boundary (rooms.readBoundaries) is USED for the stamp
637
- // and flush below but deliberately left in place - a host using
638
- // `isVisible` keeps <Chat> mounted while hidden, so MessageList's
639
- // own scroll-tracking ref is still intact and the redux copy must
640
- // stay in sync with it. Only consumed, never Date.now(): a fast
641
- // device clock would write a future marker that the forward-only
642
- // private-store merge could then never correct (bug #38). And
643
- // never "the newest acked message" unconditionally either - that
644
- // silently marks messages the user scrolled past and never reached
645
- // as read (bug #42, a regression of #33).
646
- const boundaryTs = activeRoomJID ? state.rooms?.readBoundaries?.[activeRoomJID] ?? null : null;
647
548
  if (wasVisible && activeRoomJID) {
648
- const readTs = (0, _getServerReadTimestamp.getReadMarkerTimestamp)(rooms?.[activeRoomJID], state.roomHeapSlice, boundaryTs);
649
- if (readTs > 0) {
650
- _roomStore.store.dispatch((0, _roomsSlice.setLastViewedTimestamp)({
651
- chatJID: activeRoomJID,
652
- timestamp: readTs
653
- }));
654
- }
549
+ _roomStore.store.dispatch((0, _roomsSlice.setLastViewedTimestamp)({
550
+ chatJID: activeRoomJID,
551
+ timestamp: Date.now()
552
+ }));
655
553
  // Drop the "New messages" divider so it's gone when the user
656
554
  // returns to the chat (mirrors ChatRoom's unmount cleanup).
657
555
  _roomStore.store.dispatch((0, _roomsSlice.deleteRoomMessage)({
@@ -662,11 +560,7 @@ const XmppProvider = ({
662
560
  _roomStore.store.dispatch((0, _roomsSlice.clearVisibleRoom)());
663
561
  if (wasVisible && client?.flushLastViewedToPrivateStoreStanza) {
664
562
  client.flushLastViewedToPrivateStoreStanza(rooms, {
665
- visibleRoomJID: activeRoomJID,
666
- // Carry the same boundary to the SERVER marker - without it
667
- // the flush defaults to "everything" for the visible room.
668
- // Clamped exactly like the local stamp above.
669
- visibleRoomTs: activeRoomJID ? (0, _getServerReadTimestamp.getFlushBoundaryTs)(rooms?.[activeRoomJID], state.roomHeapSlice, boundaryTs) : undefined
563
+ visibleRoomJID: activeRoomJID
670
564
  }).catch(() => {});
671
565
  }
672
566
  }
@@ -692,44 +586,32 @@ const XmppProvider = ({
692
586
  return;
693
587
  }
694
588
  lastMessagesRef = room.messages;
695
-
696
- // getReadMarkerTimestamp (not a hand-rolled scan + Date.now()):
697
- // it excludes pending/optimistic messages, which carry the DEVICE
698
- // send time via `date` until the server echoes them back - a
699
- // manual scan without that exclusion could pick up a pending
700
- // message's device timestamp here and write a future marker the
701
- // same way a raw Date.now() would (bug #38). And when the user has
702
- // scrolled up (a boundary is set for this room), it clamps to that
703
- // boundary instead of the newest message - without this, every
704
- // incoming message while scrolled up advanced the marker to
705
- // "newest" regardless of scroll position, and the later, smaller
706
- // boundary write on leave was rejected by the forward-only
707
- // private-store merge, leaving 0 unread even after a restart
708
- // (customer #42, a regression of #33 reintroduced by #38).
709
- const boundaryTs = s.rooms?.readBoundaries?.[jid] ?? null;
710
- const newest = (0, _getServerReadTimestamp.getReadMarkerTimestamp)(room, s.roomHeapSlice, boundaryTs);
711
- if (!newest || newest <= lastStampedMs) {
589
+ let newest = 0;
590
+ const list = room.messages || [];
591
+ for (const m of list) {
592
+ if (!m || m.id === 'delimiter-new') {
593
+ continue;
594
+ }
595
+ const ms = (0, _roomsSlice.msgSortableMs)(m);
596
+ if (ms > newest) {
597
+ newest = ms;
598
+ }
599
+ }
600
+ if (newest <= lastStampedMs) {
712
601
  return;
713
602
  }
714
603
  lastStampedMs = newest;
715
604
  _roomStore.store.dispatch((0, _roomsSlice.setLastViewedTimestamp)({
716
605
  chatJID: jid,
717
- timestamp: newest
606
+ timestamp: Date.now()
718
607
  }));
719
608
  if (flushTimer) {
720
609
  clearTimeout(flushTimer);
721
610
  }
722
611
  if (client?.flushLastViewedToPrivateStoreStanza) {
723
612
  flushTimer = setTimeout(() => {
724
- // Re-read fresh state rather than closing over `boundaryTs`:
725
- // the user may have scrolled back to the bottom (clearing the
726
- // boundary) in the 2s between the stamp and this flush, and
727
- // the flush should reflect that.
728
- const freshState = _roomStore.store.getState();
729
- const freshBoundaryTs = freshState.rooms?.readBoundaries?.[jid] ?? null;
730
- client.flushLastViewedToPrivateStoreStanza(freshState.rooms?.rooms, {
731
- visibleRoomJID: jid,
732
- visibleRoomTs: (0, _getServerReadTimestamp.getFlushBoundaryTs)(freshState.rooms?.rooms?.[jid], freshState.roomHeapSlice, freshBoundaryTs)
613
+ client.flushLastViewedToPrivateStoreStanza(_roomStore.store.getState().rooms?.rooms, {
614
+ visibleRoomJID: jid
733
615
  }).catch(() => {});
734
616
  }, 2000);
735
617
  }