@ethora/chat-component-rn 26.7.9 → 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 (652) hide show
  1. package/CHANGELOG.md +0 -93
  2. package/README.md +10 -33
  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 +13 -101
  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 +54 -128
  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 +13 -0
  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/mimeToExtension.js +14 -6
  106. package/lib/commonjs/helpers/mimeToExtension.js.map +1 -1
  107. package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js +17 -130
  108. package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js.map +1 -1
  109. package/lib/commonjs/helpers/resolveLangSource.js +38 -0
  110. package/lib/commonjs/helpers/resolveLangSource.js.map +1 -0
  111. package/lib/commonjs/helpers/xmppUsername.js +39 -0
  112. package/lib/commonjs/helpers/xmppUsername.js.map +1 -0
  113. package/lib/commonjs/hooks/useChatRoomFocus.js +8 -17
  114. package/lib/commonjs/hooks/useChatRoomFocus.js.map +1 -1
  115. package/lib/commonjs/hooks/useChatWrapperInit.js +14 -32
  116. package/lib/commonjs/hooks/useChatWrapperInit.js.map +1 -1
  117. package/lib/commonjs/hooks/useComposing.js +0 -27
  118. package/lib/commonjs/hooks/useComposing.js.map +1 -1
  119. package/lib/commonjs/hooks/useLogout.js +7 -15
  120. package/lib/commonjs/hooks/useLogout.js.map +1 -1
  121. package/lib/commonjs/hooks/usePendingNotification.js +11 -8
  122. package/lib/commonjs/hooks/usePendingNotification.js.map +1 -1
  123. package/lib/commonjs/hooks/useSendMessage.js +14 -50
  124. package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
  125. package/lib/commonjs/hooks/useUnreadMessagesCounter.js +1 -6
  126. package/lib/commonjs/hooks/useUnreadMessagesCounter.js.map +1 -1
  127. package/lib/commonjs/i18n/strings.js +133 -121
  128. package/lib/commonjs/i18n/strings.js.map +1 -1
  129. package/lib/commonjs/i18n/useT.js +1 -1
  130. package/lib/commonjs/main.js +0 -44
  131. package/lib/commonjs/main.js.map +1 -1
  132. package/lib/commonjs/networking/api-requests/auth.api.js +60 -134
  133. package/lib/commonjs/networking/api-requests/auth.api.js.map +1 -1
  134. package/lib/commonjs/networking/api-requests/roomMembers.api.js +1 -1
  135. package/lib/commonjs/networking/api-requests/roomMembers.api.js.map +1 -1
  136. package/lib/commonjs/networking/api-requests/rooms.api.js +9 -9
  137. package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
  138. package/lib/commonjs/networking/api-requests/user.api.js +9 -68
  139. package/lib/commonjs/networking/api-requests/user.api.js.map +1 -1
  140. package/lib/commonjs/networking/apiClient.js +112 -62
  141. package/lib/commonjs/networking/apiClient.js.map +1 -1
  142. package/lib/commonjs/networking/stanzaHandlers.js +51 -93
  143. package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
  144. package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js +8 -46
  145. package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
  146. package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js +1 -8
  147. package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
  148. package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js +1 -5
  149. package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
  150. package/lib/commonjs/networking/xmppClient.js +8 -124
  151. package/lib/commonjs/networking/xmppClient.js.map +1 -1
  152. package/lib/commonjs/roomStore/chatSettingsSlice.js +7 -26
  153. package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
  154. package/lib/commonjs/roomStore/index.js +2 -35
  155. package/lib/commonjs/roomStore/index.js.map +1 -1
  156. package/lib/commonjs/roomStore/persistence.js +39 -226
  157. package/lib/commonjs/roomStore/persistence.js.map +1 -1
  158. package/lib/commonjs/roomStore/roomsSlice.js +8 -87
  159. package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
  160. package/lib/commonjs/services/pushSubscriptionService.js +13 -15
  161. package/lib/commonjs/services/pushSubscriptionService.js.map +1 -1
  162. package/lib/commonjs/version.js +3 -1
  163. package/lib/commonjs/version.js.map +1 -1
  164. package/lib/module/assets/icons.js +1 -6
  165. package/lib/module/assets/icons.js.map +1 -1
  166. package/lib/module/components/AuthForms/Login.js +4 -4
  167. package/lib/module/components/AuthForms/Login.js.map +1 -1
  168. package/lib/module/components/Header/HeaderRoomList.js +7 -26
  169. package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
  170. package/lib/module/components/MainComponents/ChatHeader.js +3 -9
  171. package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
  172. package/lib/module/components/MainComponents/ChatRoom.js +14 -102
  173. package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
  174. package/lib/module/components/MainComponents/ChatWrapper.js +40 -36
  175. package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
  176. package/lib/module/components/MainComponents/LoginWrapper.js +1 -2
  177. package/lib/module/components/MainComponents/LoginWrapper.js.map +1 -1
  178. package/lib/module/components/MainComponents/MediaMessage.js +10 -30
  179. package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
  180. package/lib/module/components/MainComponents/MessageContainer.js +1 -5
  181. package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
  182. package/lib/module/components/MainComponents/MessageList.js +5 -13
  183. package/lib/module/components/MainComponents/MessageList.js.map +1 -1
  184. package/lib/module/components/MainComponents/ProfileImagePlaceholder.js +13 -14
  185. package/lib/module/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
  186. package/lib/module/components/MainComponents/ReduxWrapper.js +26 -5
  187. package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
  188. package/lib/module/components/MainComponents/RoomList.js +35 -207
  189. package/lib/module/components/MainComponents/RoomList.js.map +1 -1
  190. package/lib/module/components/Menu/HeaderRoomListMenu.js +101 -319
  191. package/lib/module/components/Menu/HeaderRoomListMenu.js.map +1 -1
  192. package/lib/module/components/MessageBubble/MessageTranslate.js +16 -7
  193. package/lib/module/components/MessageBubble/MessageTranslate.js.map +1 -1
  194. package/lib/module/components/Modals/AttachSheet/AttachSheet.js +115 -311
  195. package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
  196. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +219 -559
  197. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  198. package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js +9 -7
  199. package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
  200. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +28 -70
  201. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  202. package/lib/module/components/Modals/FilePreviewModal/PdfView.js +1 -2
  203. package/lib/module/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
  204. package/lib/module/components/Modals/Modal/Modal.js +1 -9
  205. package/lib/module/components/Modals/Modal/Modal.js.map +1 -1
  206. package/lib/module/components/Modals/NewChatModal/ModalContent.js +1 -2
  207. package/lib/module/components/Modals/NewChatModal/ModalContent.js.map +1 -1
  208. package/lib/module/components/Modals/NewChatModal/NewChatModal.js +111 -208
  209. package/lib/module/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
  210. package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js +0 -8
  211. package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
  212. package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js +2 -4
  213. package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
  214. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js +23 -9
  215. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
  216. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +248 -509
  217. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  218. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js +48 -76
  219. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
  220. package/lib/module/components/Modals/styledModalComponents.js +2 -9
  221. package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
  222. package/lib/module/components/RoomComponents/ChatRoomItem.js +40 -24
  223. package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
  224. package/lib/module/components/RoomComponents/styled/LastMessageFile.js +3 -22
  225. package/lib/module/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
  226. package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js +3 -17
  227. package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
  228. package/lib/module/components/RoomComponents/styled/LastMessageVideo.js +3 -17
  229. package/lib/module/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
  230. package/lib/module/components/VideoCalls/VideoCallSession.js +3 -6
  231. package/lib/module/components/VideoCalls/VideoCallSession.js.map +1 -1
  232. package/lib/module/components/styled/AudioMessage.js +1 -2
  233. package/lib/module/components/styled/AudioMessage.js.map +1 -1
  234. package/lib/module/components/styled/DateLabel.js +10 -3
  235. package/lib/module/components/styled/DateLabel.js.map +1 -1
  236. package/lib/module/components/styled/MessageImage.js +9 -37
  237. package/lib/module/components/styled/MessageImage.js.map +1 -1
  238. package/lib/module/components/styled/NewMessageLabel.js +3 -1
  239. package/lib/module/components/styled/NewMessageLabel.js.map +1 -1
  240. package/lib/module/components/styled/SendInput.js +18 -87
  241. package/lib/module/components/styled/SendInput.js.map +1 -1
  242. package/lib/module/components/styled/StyledComponents.js +3 -9
  243. package/lib/module/components/styled/StyledComponents.js.map +1 -1
  244. package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js +4 -11
  245. package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
  246. package/lib/module/components/styled/UnsupportedType.js +4 -14
  247. package/lib/module/components/styled/UnsupportedType.js.map +1 -1
  248. package/lib/module/components/styled/VideoMessage.js +62 -120
  249. package/lib/module/components/styled/VideoMessage.js.map +1 -1
  250. package/lib/module/context/xmppProvider.js +55 -128
  251. package/lib/module/context/xmppProvider.js.map +1 -1
  252. package/lib/module/helpers/createMessageFromXml.js +1 -19
  253. package/lib/module/helpers/createMessageFromXml.js.map +1 -1
  254. package/lib/module/helpers/ensureScopedChatCache.js +2 -2
  255. package/lib/module/helpers/ensureScopedChatCache.js.map +1 -1
  256. package/lib/module/helpers/getDataFromXml.js +23 -1
  257. package/lib/module/helpers/getDataFromXml.js.map +1 -1
  258. package/lib/module/helpers/historyPreloadScheduler.js +3 -66
  259. package/lib/module/helpers/historyPreloadScheduler.js.map +1 -1
  260. package/lib/module/helpers/initXmppRooms.js +8 -14
  261. package/lib/module/helpers/initXmppRooms.js.map +1 -1
  262. package/lib/module/helpers/insertMessageWithDelimiter.js +13 -0
  263. package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
  264. package/lib/module/helpers/isUnresolvedSenderId.js +6 -1
  265. package/lib/module/helpers/isUnresolvedSenderId.js.map +1 -1
  266. package/lib/module/helpers/mimeToExtension.js +13 -6
  267. package/lib/module/helpers/mimeToExtension.js.map +1 -1
  268. package/lib/module/helpers/resolveInitBeforeLoadUser.js +16 -130
  269. package/lib/module/helpers/resolveInitBeforeLoadUser.js.map +1 -1
  270. package/lib/module/helpers/resolveLangSource.js +32 -0
  271. package/lib/module/helpers/resolveLangSource.js.map +1 -0
  272. package/lib/module/helpers/xmppUsername.js +35 -0
  273. package/lib/module/helpers/xmppUsername.js.map +1 -0
  274. package/lib/module/hooks/useChatRoomFocus.js +8 -17
  275. package/lib/module/hooks/useChatRoomFocus.js.map +1 -1
  276. package/lib/module/hooks/useChatWrapperInit.js +14 -32
  277. package/lib/module/hooks/useChatWrapperInit.js.map +1 -1
  278. package/lib/module/hooks/useComposing.js +1 -28
  279. package/lib/module/hooks/useComposing.js.map +1 -1
  280. package/lib/module/hooks/useLogout.js +7 -15
  281. package/lib/module/hooks/useLogout.js.map +1 -1
  282. package/lib/module/hooks/usePendingNotification.js +11 -8
  283. package/lib/module/hooks/usePendingNotification.js.map +1 -1
  284. package/lib/module/hooks/useSendMessage.js +16 -52
  285. package/lib/module/hooks/useSendMessage.js.map +1 -1
  286. package/lib/module/hooks/useUnreadMessagesCounter.js +1 -6
  287. package/lib/module/hooks/useUnreadMessagesCounter.js.map +1 -1
  288. package/lib/module/i18n/strings.js +133 -121
  289. package/lib/module/i18n/strings.js.map +1 -1
  290. package/lib/module/i18n/useT.js +1 -1
  291. package/lib/module/main.js +2 -14
  292. package/lib/module/main.js.map +1 -1
  293. package/lib/module/networking/api-requests/auth.api.js +59 -131
  294. package/lib/module/networking/api-requests/auth.api.js.map +1 -1
  295. package/lib/module/networking/api-requests/roomMembers.api.js +1 -1
  296. package/lib/module/networking/api-requests/roomMembers.api.js.map +1 -1
  297. package/lib/module/networking/api-requests/rooms.api.js +9 -9
  298. package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
  299. package/lib/module/networking/api-requests/user.api.js +7 -64
  300. package/lib/module/networking/api-requests/user.api.js.map +1 -1
  301. package/lib/module/networking/apiClient.js +113 -61
  302. package/lib/module/networking/apiClient.js.map +1 -1
  303. package/lib/module/networking/stanzaHandlers.js +52 -94
  304. package/lib/module/networking/stanzaHandlers.js.map +1 -1
  305. package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js +8 -46
  306. package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
  307. package/lib/module/networking/xmpp/presenceInRoom.xmpp.js +1 -8
  308. package/lib/module/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
  309. package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js +1 -5
  310. package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
  311. package/lib/module/networking/xmppClient.js +8 -124
  312. package/lib/module/networking/xmppClient.js.map +1 -1
  313. package/lib/module/roomStore/chatSettingsSlice.js +7 -26
  314. package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
  315. package/lib/module/roomStore/index.js +4 -37
  316. package/lib/module/roomStore/index.js.map +1 -1
  317. package/lib/module/roomStore/persistence.js +38 -223
  318. package/lib/module/roomStore/persistence.js.map +1 -1
  319. package/lib/module/roomStore/roomsSlice.js +7 -86
  320. package/lib/module/roomStore/roomsSlice.js.map +1 -1
  321. package/lib/module/services/pushSubscriptionService.js +13 -15
  322. package/lib/module/services/pushSubscriptionService.js.map +1 -1
  323. package/lib/module/version.js +3 -1
  324. package/lib/module/version.js.map +1 -1
  325. package/lib/typescript/assets/icons.d.ts +0 -16
  326. package/lib/typescript/assets/icons.d.ts.map +1 -1
  327. package/lib/typescript/components/AuthForms/Login.d.ts.map +1 -1
  328. package/lib/typescript/components/Header/HeaderRoomList.d.ts.map +1 -1
  329. package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
  330. package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
  331. package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
  332. package/lib/typescript/components/MainComponents/LoginWrapper.d.ts.map +1 -1
  333. package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
  334. package/lib/typescript/components/MainComponents/MessageContainer.d.ts.map +1 -1
  335. package/lib/typescript/components/MainComponents/MessageList.d.ts +1 -10
  336. package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
  337. package/lib/typescript/components/MainComponents/ProfileImagePlaceholder.d.ts.map +1 -1
  338. package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
  339. package/lib/typescript/components/MainComponents/RoomList.d.ts +0 -7
  340. package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
  341. package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts +0 -3
  342. package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts.map +1 -1
  343. package/lib/typescript/components/MessageBubble/MessageTranslate.d.ts.map +1 -1
  344. package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts +0 -9
  345. package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
  346. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts +0 -10
  347. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
  348. package/lib/typescript/components/Modals/ChatProfileModal/DeleteChatModal.d.ts.map +1 -1
  349. package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
  350. package/lib/typescript/components/Modals/FilePreviewModal/PdfView.d.ts.map +1 -1
  351. package/lib/typescript/components/Modals/Modal/Modal.d.ts.map +1 -1
  352. package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts +2 -4
  353. package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts.map +1 -1
  354. package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts +1 -1
  355. package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts.map +1 -1
  356. package/lib/typescript/components/Modals/NewChatModal/UpdNewChatModal.d.ts.map +1 -1
  357. package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts +1 -6
  358. package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts.map +1 -1
  359. package/lib/typescript/components/Modals/UserProfileModal/EditUserModal.d.ts.map +1 -1
  360. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts +0 -16
  361. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
  362. package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts +0 -1
  363. package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts.map +1 -1
  364. package/lib/typescript/components/Modals/styledModalComponents.d.ts.map +1 -1
  365. package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts.map +1 -1
  366. package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts +1 -1
  367. package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts.map +1 -1
  368. package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts +1 -1
  369. package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts.map +1 -1
  370. package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts +1 -1
  371. package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts.map +1 -1
  372. package/lib/typescript/components/VideoCalls/VideoCallSession.d.ts.map +1 -1
  373. package/lib/typescript/components/styled/AudioMessage.d.ts.map +1 -1
  374. package/lib/typescript/components/styled/DateLabel.d.ts.map +1 -1
  375. package/lib/typescript/components/styled/MessageImage.d.ts +0 -14
  376. package/lib/typescript/components/styled/MessageImage.d.ts.map +1 -1
  377. package/lib/typescript/components/styled/NewMessageLabel.d.ts.map +1 -1
  378. package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
  379. package/lib/typescript/components/styled/StyledComponents.d.ts.map +1 -1
  380. package/lib/typescript/components/styled/StyledInputComponents/StyledInputComponents.d.ts.map +1 -1
  381. package/lib/typescript/components/styled/UnsupportedType.d.ts.map +1 -1
  382. package/lib/typescript/components/styled/VideoMessage.d.ts +0 -8
  383. package/lib/typescript/components/styled/VideoMessage.d.ts.map +1 -1
  384. package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
  385. package/lib/typescript/helpers/createMessageFromXml.d.ts.map +1 -1
  386. package/lib/typescript/helpers/getDataFromXml.d.ts.map +1 -1
  387. package/lib/typescript/helpers/historyPreloadScheduler.d.ts.map +1 -1
  388. package/lib/typescript/helpers/initXmppRooms.d.ts.map +1 -1
  389. package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
  390. package/lib/typescript/helpers/isUnresolvedSenderId.d.ts.map +1 -1
  391. package/lib/typescript/helpers/mimeToExtension.d.ts +15 -0
  392. package/lib/typescript/helpers/mimeToExtension.d.ts.map +1 -1
  393. package/lib/typescript/helpers/resolveInitBeforeLoadUser.d.ts.map +1 -1
  394. package/lib/typescript/helpers/resolveLangSource.d.ts +30 -0
  395. package/lib/typescript/helpers/resolveLangSource.d.ts.map +1 -0
  396. package/lib/typescript/helpers/xmppUsername.d.ts +13 -0
  397. package/lib/typescript/helpers/xmppUsername.d.ts.map +1 -0
  398. package/lib/typescript/hooks/useChatRoomFocus.d.ts +1 -4
  399. package/lib/typescript/hooks/useChatRoomFocus.d.ts.map +1 -1
  400. package/lib/typescript/hooks/useChatWrapperInit.d.ts.map +1 -1
  401. package/lib/typescript/hooks/useComposing.d.ts.map +1 -1
  402. package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
  403. package/lib/typescript/hooks/usePendingNotification.d.ts.map +1 -1
  404. package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
  405. package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts +0 -1
  406. package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts.map +1 -1
  407. package/lib/typescript/i18n/strings.d.ts.map +1 -1
  408. package/lib/typescript/i18n/useT.d.ts +1 -1
  409. package/lib/typescript/main.d.ts +2 -9
  410. package/lib/typescript/main.d.ts.map +1 -1
  411. package/lib/typescript/networking/api-requests/auth.api.d.ts +1 -3
  412. package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
  413. package/lib/typescript/networking/api-requests/user.api.d.ts +0 -27
  414. package/lib/typescript/networking/api-requests/user.api.d.ts.map +1 -1
  415. package/lib/typescript/networking/apiClient.d.ts +6 -12
  416. package/lib/typescript/networking/apiClient.d.ts.map +1 -1
  417. package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
  418. package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts +2 -10
  419. package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts.map +1 -1
  420. package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts.map +1 -1
  421. package/lib/typescript/networking/xmpp/subscribeToRoomMessages.xmpp.d.ts.map +1 -1
  422. package/lib/typescript/networking/xmppClient.d.ts +0 -14
  423. package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
  424. package/lib/typescript/roomStore/chatSettingsSlice.d.ts +0 -16
  425. package/lib/typescript/roomStore/chatSettingsSlice.d.ts.map +1 -1
  426. package/lib/typescript/roomStore/index.d.ts.map +1 -1
  427. package/lib/typescript/roomStore/persistence.d.ts +1 -18
  428. package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
  429. package/lib/typescript/roomStore/roomsSlice.d.ts +1 -14
  430. package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
  431. package/lib/typescript/services/pushSubscriptionService.d.ts +1 -1
  432. package/lib/typescript/services/pushSubscriptionService.d.ts.map +1 -1
  433. package/lib/typescript/types/types.d.ts +5 -49
  434. package/lib/typescript/types/types.d.ts.map +1 -1
  435. package/lib/typescript/version.d.ts +1 -1
  436. package/lib/typescript/version.d.ts.map +1 -1
  437. package/package.json +29 -41
  438. package/src/assets/icons.tsx +9 -48
  439. package/src/components/AuthForms/Login.tsx +3 -3
  440. package/src/components/Header/HeaderRoomList.tsx +6 -24
  441. package/src/components/MainComponents/ChatHeader.tsx +3 -9
  442. package/src/components/MainComponents/ChatRoom.tsx +16 -111
  443. package/src/components/MainComponents/ChatWrapper.tsx +53 -36
  444. package/src/components/MainComponents/LoginWrapper.tsx +0 -1
  445. package/src/components/MainComponents/MediaMessage.tsx +8 -26
  446. package/src/components/MainComponents/MessageContainer.tsx +1 -5
  447. package/src/components/MainComponents/MessageList.tsx +4 -23
  448. package/src/components/MainComponents/ProfileImagePlaceholder.tsx +14 -21
  449. package/src/components/MainComponents/ReduxWrapper.tsx +18 -1
  450. package/src/components/MainComponents/RoomList.tsx +39 -236
  451. package/src/components/Menu/HeaderRoomListMenu.tsx +75 -328
  452. package/src/components/MessageBubble/MessageTranslate.tsx +17 -12
  453. package/src/components/Modals/AttachSheet/AttachSheet.tsx +99 -331
  454. package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +293 -611
  455. package/src/components/Modals/ChatProfileModal/DeleteChatModal.tsx +9 -7
  456. package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +38 -79
  457. package/src/components/Modals/FilePreviewModal/PdfView.tsx +1 -2
  458. package/src/components/Modals/Modal/Modal.tsx +0 -7
  459. package/src/components/Modals/NewChatModal/ModalContent.tsx +3 -6
  460. package/src/components/Modals/NewChatModal/NewChatModal.tsx +126 -223
  461. package/src/components/Modals/NewChatModal/UpdNewChatModal.tsx +1 -12
  462. package/src/components/Modals/SelectUsersModal/SelectUsersModal.tsx +4 -14
  463. package/src/components/Modals/UserProfileModal/EditUserModal.tsx +25 -9
  464. package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +307 -617
  465. package/src/components/Modals/UserSettingsModal/UserSettingsModal.tsx +58 -75
  466. package/src/components/Modals/styledModalComponents.tsx +2 -9
  467. package/src/components/RoomComponents/ChatRoomItem.tsx +50 -21
  468. package/src/components/RoomComponents/styled/LastMessageFile.tsx +4 -28
  469. package/src/components/RoomComponents/styled/LastMessagePhoto.tsx +3 -18
  470. package/src/components/RoomComponents/styled/LastMessageVideo.tsx +3 -18
  471. package/src/components/VideoCalls/VideoCallSession.tsx +3 -8
  472. package/src/components/styled/AudioMessage.tsx +1 -2
  473. package/src/components/styled/DateLabel.tsx +10 -3
  474. package/src/components/styled/MessageImage.tsx +7 -53
  475. package/src/components/styled/NewMessageLabel.tsx +3 -1
  476. package/src/components/styled/SendInput.tsx +18 -91
  477. package/src/components/styled/StyledComponents.ts +3 -9
  478. package/src/components/styled/StyledInputComponents/StyledInputComponents.tsx +4 -11
  479. package/src/components/styled/UnsupportedType.tsx +4 -14
  480. package/src/components/styled/VideoMessage.tsx +54 -131
  481. package/src/context/xmppProvider.tsx +51 -134
  482. package/src/helpers/createMessageFromXml.ts +1 -20
  483. package/src/helpers/ensureScopedChatCache.ts +2 -2
  484. package/src/helpers/getDataFromXml.ts +25 -1
  485. package/src/helpers/historyPreloadScheduler.ts +3 -80
  486. package/src/helpers/initXmppRooms.tsx +10 -14
  487. package/src/helpers/insertMessageWithDelimiter.ts +13 -0
  488. package/src/helpers/isUnresolvedSenderId.ts +9 -1
  489. package/src/helpers/mimeToExtension.ts +22 -6
  490. package/src/helpers/resolveInitBeforeLoadUser.ts +18 -125
  491. package/src/helpers/resolveLangSource.ts +40 -0
  492. package/src/helpers/xmppUsername.ts +38 -0
  493. package/src/hooks/useChatRoomFocus.ts +5 -14
  494. package/src/hooks/useChatWrapperInit.ts +16 -32
  495. package/src/hooks/useComposing.tsx +1 -37
  496. package/src/hooks/useLogout.tsx +9 -15
  497. package/src/hooks/usePendingNotification.ts +11 -5
  498. package/src/hooks/useSendMessage.tsx +15 -60
  499. package/src/hooks/useUnreadMessagesCounter.ts +0 -11
  500. package/src/i18n/strings.ts +133 -121
  501. package/src/i18n/useT.ts +1 -1
  502. package/src/main.ts +2 -26
  503. package/src/networking/api-requests/auth.api.ts +48 -156
  504. package/src/networking/api-requests/roomMembers.api.ts +1 -1
  505. package/src/networking/api-requests/rooms.api.ts +9 -9
  506. package/src/networking/api-requests/user.api.ts +7 -79
  507. package/src/networking/apiClient.ts +123 -68
  508. package/src/networking/stanzaHandlers.ts +51 -92
  509. package/src/networking/xmpp/flushLastViewedToPrivateStore.ts +10 -71
  510. package/src/networking/xmpp/presenceInRoom.xmpp.ts +1 -6
  511. package/src/networking/xmpp/subscribeToRoomMessages.xmpp.ts +1 -12
  512. package/src/networking/xmppClient.ts +9 -141
  513. package/src/roomStore/chatSettingsSlice.ts +10 -34
  514. package/src/roomStore/index.ts +4 -40
  515. package/src/roomStore/persistence.ts +40 -234
  516. package/src/roomStore/roomsSlice.ts +7 -87
  517. package/src/services/pushSubscriptionService.ts +13 -18
  518. package/src/types/types.ts +5 -58
  519. package/src/version.ts +3 -1
  520. package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js +0 -226
  521. package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js.map +0 -1
  522. package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js +0 -556
  523. package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js.map +0 -1
  524. package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js +0 -210
  525. package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js.map +0 -1
  526. package/lib/commonjs/helpers/getChatBackground.js +0 -23
  527. package/lib/commonjs/helpers/getChatBackground.js.map +0 -1
  528. package/lib/commonjs/helpers/getDisplayFileName.js +0 -79
  529. package/lib/commonjs/helpers/getDisplayFileName.js.map +0 -1
  530. package/lib/commonjs/helpers/getServerReadTimestamp.js +0 -125
  531. package/lib/commonjs/helpers/getServerReadTimestamp.js.map +0 -1
  532. package/lib/commonjs/helpers/isOwnMessage.js +0 -75
  533. package/lib/commonjs/helpers/isOwnMessage.js.map +0 -1
  534. package/lib/commonjs/helpers/mediaLibraryRuntime.js +0 -31
  535. package/lib/commonjs/helpers/mediaLibraryRuntime.js.map +0 -1
  536. package/lib/commonjs/helpers/persistCrypto.js +0 -122
  537. package/lib/commonjs/helpers/persistCrypto.js.map +0 -1
  538. package/lib/commonjs/helpers/pickImageAsset.js +0 -68
  539. package/lib/commonjs/helpers/pickImageAsset.js.map +0 -1
  540. package/lib/commonjs/helpers/pushPayload.js +0 -71
  541. package/lib/commonjs/helpers/pushPayload.js.map +0 -1
  542. package/lib/commonjs/helpers/secureFileUrl.js +0 -101
  543. package/lib/commonjs/helpers/secureFileUrl.js.map +0 -1
  544. package/lib/commonjs/helpers/secureKeyValue.js +0 -83
  545. package/lib/commonjs/helpers/secureKeyValue.js.map +0 -1
  546. package/lib/commonjs/helpers/secureStoreRuntime.js +0 -59
  547. package/lib/commonjs/helpers/secureStoreRuntime.js.map +0 -1
  548. package/lib/commonjs/helpers/secureUserStorage.js +0 -75
  549. package/lib/commonjs/helpers/secureUserStorage.js.map +0 -1
  550. package/lib/commonjs/helpers/shallowEqual.js +0 -36
  551. package/lib/commonjs/helpers/shallowEqual.js.map +0 -1
  552. package/lib/commonjs/helpers/sheetGestures.js +0 -32
  553. package/lib/commonjs/helpers/sheetGestures.js.map +0 -1
  554. package/lib/commonjs/hooks/useFileToken.js +0 -10
  555. package/lib/commonjs/hooks/useFileToken.js.map +0 -1
  556. package/lib/commonjs/networking/authRefresh.js +0 -332
  557. package/lib/commonjs/networking/authRefresh.js.map +0 -1
  558. package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js +0 -223
  559. package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js.map +0 -1
  560. package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js +0 -548
  561. package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js.map +0 -1
  562. package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js +0 -205
  563. package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js.map +0 -1
  564. package/lib/module/helpers/getChatBackground.js +0 -18
  565. package/lib/module/helpers/getChatBackground.js.map +0 -1
  566. package/lib/module/helpers/getDisplayFileName.js +0 -73
  567. package/lib/module/helpers/getDisplayFileName.js.map +0 -1
  568. package/lib/module/helpers/getServerReadTimestamp.js +0 -120
  569. package/lib/module/helpers/getServerReadTimestamp.js.map +0 -1
  570. package/lib/module/helpers/isOwnMessage.js +0 -70
  571. package/lib/module/helpers/isOwnMessage.js.map +0 -1
  572. package/lib/module/helpers/mediaLibraryRuntime.js +0 -25
  573. package/lib/module/helpers/mediaLibraryRuntime.js.map +0 -1
  574. package/lib/module/helpers/persistCrypto.js +0 -115
  575. package/lib/module/helpers/persistCrypto.js.map +0 -1
  576. package/lib/module/helpers/pickImageAsset.js +0 -63
  577. package/lib/module/helpers/pickImageAsset.js.map +0 -1
  578. package/lib/module/helpers/pushPayload.js +0 -63
  579. package/lib/module/helpers/pushPayload.js.map +0 -1
  580. package/lib/module/helpers/secureFileUrl.js +0 -91
  581. package/lib/module/helpers/secureFileUrl.js.map +0 -1
  582. package/lib/module/helpers/secureKeyValue.js +0 -75
  583. package/lib/module/helpers/secureKeyValue.js.map +0 -1
  584. package/lib/module/helpers/secureStoreRuntime.js +0 -52
  585. package/lib/module/helpers/secureStoreRuntime.js.map +0 -1
  586. package/lib/module/helpers/secureUserStorage.js +0 -72
  587. package/lib/module/helpers/secureUserStorage.js.map +0 -1
  588. package/lib/module/helpers/shallowEqual.js +0 -31
  589. package/lib/module/helpers/shallowEqual.js.map +0 -1
  590. package/lib/module/helpers/sheetGestures.js +0 -26
  591. package/lib/module/helpers/sheetGestures.js.map +0 -1
  592. package/lib/module/hooks/useFileToken.js +0 -5
  593. package/lib/module/hooks/useFileToken.js.map +0 -1
  594. package/lib/module/networking/authRefresh.js +0 -321
  595. package/lib/module/networking/authRefresh.js.map +0 -1
  596. package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts +0 -9
  597. package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts.map +0 -1
  598. package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts +0 -75
  599. package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts.map +0 -1
  600. package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts +0 -25
  601. package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts.map +0 -1
  602. package/lib/typescript/helpers/getChatBackground.d.ts +0 -15
  603. package/lib/typescript/helpers/getChatBackground.d.ts.map +0 -1
  604. package/lib/typescript/helpers/getDisplayFileName.d.ts +0 -49
  605. package/lib/typescript/helpers/getDisplayFileName.d.ts.map +0 -1
  606. package/lib/typescript/helpers/getServerReadTimestamp.d.ts +0 -69
  607. package/lib/typescript/helpers/getServerReadTimestamp.d.ts.map +0 -1
  608. package/lib/typescript/helpers/isOwnMessage.d.ts +0 -36
  609. package/lib/typescript/helpers/isOwnMessage.d.ts.map +0 -1
  610. package/lib/typescript/helpers/mediaLibraryRuntime.d.ts +0 -3
  611. package/lib/typescript/helpers/mediaLibraryRuntime.d.ts.map +0 -1
  612. package/lib/typescript/helpers/persistCrypto.d.ts +0 -13
  613. package/lib/typescript/helpers/persistCrypto.d.ts.map +0 -1
  614. package/lib/typescript/helpers/pickImageAsset.d.ts +0 -27
  615. package/lib/typescript/helpers/pickImageAsset.d.ts.map +0 -1
  616. package/lib/typescript/helpers/pushPayload.d.ts +0 -7
  617. package/lib/typescript/helpers/pushPayload.d.ts.map +0 -1
  618. package/lib/typescript/helpers/secureFileUrl.d.ts +0 -7
  619. package/lib/typescript/helpers/secureFileUrl.d.ts.map +0 -1
  620. package/lib/typescript/helpers/secureKeyValue.d.ts +0 -13
  621. package/lib/typescript/helpers/secureKeyValue.d.ts.map +0 -1
  622. package/lib/typescript/helpers/secureStoreRuntime.d.ts +0 -29
  623. package/lib/typescript/helpers/secureStoreRuntime.d.ts.map +0 -1
  624. package/lib/typescript/helpers/secureUserStorage.d.ts +0 -23
  625. package/lib/typescript/helpers/secureUserStorage.d.ts.map +0 -1
  626. package/lib/typescript/helpers/shallowEqual.d.ts +0 -11
  627. package/lib/typescript/helpers/shallowEqual.d.ts.map +0 -1
  628. package/lib/typescript/helpers/sheetGestures.d.ts +0 -20
  629. package/lib/typescript/helpers/sheetGestures.d.ts.map +0 -1
  630. package/lib/typescript/hooks/useFileToken.d.ts +0 -2
  631. package/lib/typescript/hooks/useFileToken.d.ts.map +0 -1
  632. package/lib/typescript/networking/authRefresh.d.ts +0 -95
  633. package/lib/typescript/networking/authRefresh.d.ts.map +0 -1
  634. package/src/components/Modals/ChatProfileModal/ReportChatModal.tsx +0 -244
  635. package/src/components/Modals/ProfileHeader/ProfileHeader.tsx +0 -615
  636. package/src/components/Modals/ProfileHeader/ProfileMenu.tsx +0 -217
  637. package/src/helpers/getChatBackground.ts +0 -18
  638. package/src/helpers/getDisplayFileName.ts +0 -87
  639. package/src/helpers/getServerReadTimestamp.ts +0 -120
  640. package/src/helpers/isOwnMessage.ts +0 -90
  641. package/src/helpers/mediaLibraryRuntime.ts +0 -25
  642. package/src/helpers/persistCrypto.ts +0 -127
  643. package/src/helpers/pickImageAsset.ts +0 -68
  644. package/src/helpers/pushPayload.ts +0 -62
  645. package/src/helpers/secureFileUrl.ts +0 -103
  646. package/src/helpers/secureKeyValue.ts +0 -80
  647. package/src/helpers/secureStoreRuntime.ts +0 -62
  648. package/src/helpers/secureUserStorage.ts +0 -80
  649. package/src/helpers/shallowEqual.ts +0 -33
  650. package/src/helpers/sheetGestures.ts +0 -25
  651. package/src/hooks/useFileToken.ts +0 -7
  652. package/src/networking/authRefresh.ts +0 -451
@@ -14,7 +14,7 @@ import { VideoCallOverlay } from '../components/VideoCalls/VideoCallOverlay';
14
14
  import XmppClient, {
15
15
  XmppCredentialsProvider,
16
16
  } from '../networking/xmppClient';
17
- import { refreshAuthTokensQuietly } from '../networking/authRefresh';
17
+ import { refreshTokens } from '../roomStore/chatSettingsSlice';
18
18
  import {
19
19
  IConfig,
20
20
  ProviderBootstrapStatus,
@@ -37,7 +37,6 @@ import {
37
37
  import { ensureScopedChatCache } from '../helpers/ensureScopedChatCache';
38
38
  import { getRooms as prefetchRoomsViaRest } from '../networking/api-requests/rooms.api';
39
39
  import { allRoomPresences } from '../networking/xmpp/allRoomPresences.xmpp';
40
- import { pushSubscriptionService } from '../services/pushSubscriptionService';
41
40
  import { store } from '../roomStore';
42
41
  import { logout, setStoreClient, setConfig } from '../roomStore/chatSettingsSlice';
43
42
  import {
@@ -46,12 +45,12 @@ import {
46
45
  clearVisibleRoom,
47
46
  setLastViewedTimestamp,
48
47
  deleteRoomMessage,
48
+ msgSortableMs,
49
49
  setUnreadSyncing,
50
50
  } from '../roomStore/roomsSlice';
51
- import { getServerReadTimestamp } from '../helpers/getServerReadTimestamp';
52
51
  import { runHistoryPreloadScheduler } from '../helpers/historyPreloadScheduler';
53
- import { updateMessagesTillLast } from '../helpers/updateMessagesTillLast';
54
- import { secureUserStorage } from '../helpers/secureUserStorage';
52
+ import { asyncLocalStorage } from '../hooks/useLocalStorage';
53
+ import { localStorageConstants } from '../helpers/constants/LOCAL_STORAGE';
55
54
  import { clearPersistedState } from '../roomStore/persistence';
56
55
  import { pushLog as devPushLog } from '../utils/devLogger';
57
56
 
@@ -84,16 +83,6 @@ interface XmppProviderProps {
84
83
 
85
84
  const LOGOUT_EVENT = 'ethora-xmpp-logout';
86
85
 
87
- const subscribeAllRoomsForPush = (client: any, reason: string) => {
88
- const rooms = Object.keys(store.getState().rooms.rooms || {});
89
- if (!client || !rooms.length) {return;}
90
- const nick = client.jid?.getLocal();
91
- pushSubscriptionService
92
- .subscribeToRooms(client, rooms, nick)
93
- .then(() => devPushLog('xmpp', `${reason}: mucsub ok for ${rooms.length} rooms`))
94
- .catch((e) => devPushLog('warn', `${reason}: mucsub subscribe failed`, e));
95
- };
96
-
97
86
  export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, isVisible }) => {
98
87
  const [client, setClient] = useState<XmppClient | null>(null);
99
88
  const [providerBootstrapStatus, setProviderBootstrapStatus] =
@@ -118,25 +107,23 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
118
107
  // the XmppClient at least doesn't crash on `undefined.password`.
119
108
  const credentialsProvider = useMemo<XmppCredentialsProvider>(() => {
120
109
  return async () => {
121
- // 1. Make sure the REST tokens are fresh before re-minting XMPP
122
- // creds. This used to call `config.refreshTokens.refreshFunction`
123
- // directly and then fall into step 2, which refreshes again —
124
- // two rotations back to back, which the new backend scheme
125
- // reads as a race at best and token reuse at worst. One call to
126
- // the shared rotation point covers both the consumer-supplied
127
- // function and the built-in endpoint.
128
- if (config?.refreshTokens?.enabled) {
129
- const rotated = await refreshAuthTokensQuietly({ force: true });
130
-
131
- if (rotated?.xmppPassword) {
132
- const rotatedUser = store.getState().chatSettingStore.user;
133
- return {
134
- username:
135
- rotatedUser?.xmppUsername ||
136
- rotatedUser?.defaultWallet?.walletAddress ||
137
- '',
138
- password: rotated.xmppPassword,
139
- };
110
+ // 1. Consumer-supplied REST refresh (when wired). This runs
111
+ // before the SDK's own refresh chain so non-Ethora backends
112
+ // can keep auth state in sync with their own token endpoint.
113
+ const customRefresh = config?.refreshTokens?.refreshFunction;
114
+ if (customRefresh) {
115
+ try {
116
+ const result = await customRefresh();
117
+ if (result?.accessToken) {
118
+ store.dispatch(
119
+ refreshTokens({
120
+ token: result.accessToken,
121
+ refreshToken: result.refreshToken || '',
122
+ })
123
+ );
124
+ }
125
+ } catch (err) {
126
+ devPushLog('warn', 'XMPP creds refresh: customRefresh failed', err);
140
127
  }
141
128
  }
142
129
 
@@ -176,7 +163,7 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
176
163
  }, [
177
164
  config?.jwtLogin?.enabled,
178
165
  config?.jwtLogin?.token,
179
- config?.refreshTokens?.enabled,
166
+ config?.refreshTokens?.refreshFunction,
180
167
  config?.userLogin?.enabled,
181
168
  config?.customLogin?.enabled,
182
169
  config?.initBeforeLoadAuth?.myEndpoint,
@@ -240,11 +227,9 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
240
227
  created.setOnOnline(() => {
241
228
  const underlying = (created as any).client;
242
229
  if (!underlying) {return;}
243
- allRoomPresences(underlying)
244
- .catch((e) =>
245
- devPushLog('warn', 'reconnect: allRoomPresences re-join failed', e)
246
- )
247
- .finally(() => subscribeAllRoomsForPush(underlying, 'reconnect'));
230
+ allRoomPresences(underlying).catch((e) =>
231
+ devPushLog('warn', 'reconnect: allRoomPresences re-join failed', e)
232
+ );
248
233
  // Also refresh the private store so unread / lastViewed markers
249
234
  // are accurate after a long reconnect — the MUC re-join above only
250
235
  // restores delivery, not unread state. Idempotent on first connect.
@@ -253,19 +238,6 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
253
238
  .catch((e: unknown) =>
254
239
  devPushLog('warn', 'reconnect: privateStore refresh failed', e)
255
240
  );
256
- // Pull whatever landed in each room's archive while the stream was
257
- // down. MUC presence re-join above only restores delivery for
258
- // messages sent AFTER this reconnect — anything sent during the
259
- // offline window has no live stanza to catch, and previously only
260
- // came back on a full app restart (fresh useChatWrapperInit mount
261
- // re-running its own one-shot boot sync). Safe on the very first
262
- // connect too: rooms have no `lastMessageTimestamp` yet at that
263
- // point, so this is a no-op until the bootstrap's own history load
264
- // populates it. Customer-reported #32.
265
- const rooms = store.getState().rooms?.rooms || {};
266
- updateMessagesTillLast(rooms, created).catch((e: unknown) =>
267
- devPushLog('warn', 'reconnect: offline catch-up sync failed', e)
268
- );
269
241
  });
270
242
 
271
243
  setClient(created);
@@ -350,7 +322,7 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
350
322
  devPushLog('rn', 'initBeforeLoad: clearStoreBeforeInit');
351
323
  store.dispatch(setLogoutState());
352
324
  store.dispatch(logout());
353
- await secureUserStorage().remove().catch(() => undefined);
325
+ await asyncLocalStorage(localStorageConstants.ETHORA_USER).remove().catch(() => undefined);
354
326
  }
355
327
 
356
328
  await ensureScopedChatCache(config);
@@ -381,29 +353,6 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
381
353
  store.dispatch(setConfig(config));
382
354
  }
383
355
 
384
- // Rotate BEFORE the first XMPP connect. On the rotating backend
385
- // the xmpp password is a short-lived JWT that only the newest
386
- // rotation knows, and each rotation invalidates its predecessors
387
- // — so a snapshot's password (a host's cached `userLogin.user`,
388
- // a persisted session) is usually already dead at boot. Without
389
- // this, the first SASL attempt fails `not-authorized`, all three
390
- // bootstrap retries re-present the same dead password, and the
391
- // user dead-ends on the Connection error modal even though one
392
- // rotation away a perfectly good session existed. The rotation
393
- // also lands the fileToken pre-render, so secure media never
394
- // paints blank first. Quiet + deduped; when it can't rotate
395
- // (no refresh material, non-rotating backend) we just connect
396
- // with what the snapshot has, exactly as before.
397
- // jwtLogin is skipped: /users/client just minted fresh creds.
398
- let connectPassword = resolved.xmppPassword;
399
- if (config?.refreshTokens?.enabled && !config?.jwtLogin?.enabled) {
400
- const rotated = await refreshAuthTokensQuietly({ force: true });
401
- if (cancelled) {return;}
402
- if (rotated?.xmppPassword) {
403
- connectPassword = rotated.xmppPassword;
404
- }
405
- }
406
-
407
356
  // Kick off REST /chats/my; allRoomPresences below needs the
408
357
  // room list to be in redux, otherwise it joins 0 MUCs and the
409
358
  // user receives zero realtime messages until they manually tap
@@ -413,7 +362,7 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
413
362
 
414
363
  const c = await initializeClient(
415
364
  resolved.xmppUsername!,
416
- connectPassword,
365
+ resolved.xmppPassword,
417
366
  config?.xmppSettings
418
367
  );
419
368
  if (cancelled) {return;}
@@ -449,7 +398,6 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
449
398
  } catch (e) {
450
399
  devPushLog('warn', 'initBeforeLoad: allRoomPresences failed', e);
451
400
  }
452
- subscribeAllRoomsForPush((c as any).client, 'initBeforeLoad');
453
401
 
454
402
  store.dispatch(setStoreClient(c));
455
403
  completedBootstrapKeyRef.current = key;
@@ -594,14 +542,9 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
594
542
  // be re-marked visible on return. Lives in the effect closure (one per
595
543
  // client) — persists across the listener's many invocations.
596
544
  let visibleBeforeBackground: string | null = null;
597
- const suspendInBackground = !config?.xmppSettings?.keepAliveInBackground;
598
545
  const sub = AppState.addEventListener('change', (next) => {
599
546
  const c = client;
600
547
  if (next === 'active') {
601
- if (c?.isSuspended) {
602
- devPushLog('rn', 'AppState active: resuming suspended XMPP client');
603
- c.resume();
604
- }
605
548
  // Returned to foreground. If the socket died while backgrounded
606
549
  // (iOS suspends the WebSocket; long background kills it), the
607
550
  // status may still read 'online' until xmpp.js notices the dead
@@ -629,39 +572,22 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
629
572
  }
630
573
  // Going to background/inactive (sleep / app switcher / tray):
631
574
  if (!c) {return;}
632
- if (next === 'background' && suspendInBackground) {
633
- c.suspend().catch(() => undefined);
634
- }
635
575
  const state = store.getState();
636
576
  const rooms = state.rooms?.rooms;
637
577
  const visibleRoomJID = state.rooms?.visibleRoomJID || null;
638
578
  // Mark the open room "not visible" while backgrounded so messages
639
579
  // that arrive (or MAM-replay on reconnect) count as unread instead
640
580
  // of being silently treated as read — the "mounted == visible ==
641
- // read" gap. Stamp lastViewed=<newest server-acked message>, not
642
- // Date.now(), as the read baseline: a device clock running ahead
643
- // would otherwise write a future marker that the forward-only
644
- // private-store merge can never correct again (bug #38). Then
645
- // clear visibility and flush that marker to the server private
646
- // store. Restored on the next 'active' transition above. Handled
647
- // here in the provider so consumers using the component as a
648
- // package get correct unread without reaching into the chat store
649
- // themselves.
581
+ // read" gap. Stamp lastViewed=now as the read baseline, clear
582
+ // visibility, then flush that marker to the server private store.
583
+ // Restored on the next 'active' transition above. Handled here in
584
+ // the provider so consumers using the component as a package get
585
+ // correct unread without reaching into the chat store themselves.
650
586
  visibleBeforeBackground = visibleRoomJID;
651
587
  if (visibleRoomJID) {
652
- const readTs = getServerReadTimestamp(
653
- rooms?.[visibleRoomJID],
654
- state.roomHeapSlice
588
+ store.dispatch(
589
+ setLastViewedTimestamp({ chatJID: visibleRoomJID, timestamp: Date.now() })
655
590
  );
656
- // Nothing to anchor to yet (no known messages, no prior marker)
657
- // - skip the local stamp rather than fall back to the device
658
- // clock. The flush below still runs so the visibility clear
659
- // isn't blocked on this.
660
- if (readTs > 0) {
661
- store.dispatch(
662
- setLastViewedTimestamp({ chatJID: visibleRoomJID, timestamp: readTs })
663
- );
664
- }
665
591
  // Drop the "New messages" divider for the room we're leaving so it
666
592
  // doesn't linger when the user comes back (mirrors ChatRoom's
667
593
  // unmount cleanup, which never runs while the pane stays mounted).
@@ -677,7 +603,7 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
677
603
  );
678
604
  });
679
605
  return () => sub.remove();
680
- }, [client, config?.xmppSettings?.keepAliveInBackground]);
606
+ }, [client]);
681
607
 
682
608
  // -----------------------------------------------------------
683
609
  // Consumer visibility signal (`isVisible` prop). For hosts that keep
@@ -686,11 +612,11 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
686
612
  // "shown" from "hidden", so the unread middleware would keep the open
687
613
  // room's badge at 0 and messages arriving while you're elsewhere look
688
614
  // already-read. When the host passes `isVisible`, mirror the AppState
689
- // background/foreground handling: hidden → stamp lastViewed=<newest
690
- // server-acked message> + clear room visibility (so later messages
691
- // count) + flush; shown → restore visibility for the open room. Doing
692
- // it here means consumers never touch the chat store themselves.
693
- // (Undefined = host unmounts on hide, nothing to do.)
615
+ // background/foreground handling: hidden → stamp lastViewed=now + clear
616
+ // room visibility (so later messages count) + flush; shown → restore
617
+ // visibility for the open room. Doing it here means consumers never
618
+ // touch the chat store themselves. (Undefined = host unmounts on hide,
619
+ // nothing to do.)
694
620
  // -----------------------------------------------------------
695
621
  const chatWasVisibleRef = useRef(false);
696
622
  useEffect(() => {
@@ -706,18 +632,9 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
706
632
  }
707
633
  } else {
708
634
  if (wasVisible && activeRoomJID) {
709
- // Never Date.now(): a fast device clock would write a future
710
- // marker that the forward-only private-store merge could then
711
- // never correct (bug #38).
712
- const readTs = getServerReadTimestamp(
713
- rooms?.[activeRoomJID],
714
- state.roomHeapSlice
635
+ store.dispatch(
636
+ setLastViewedTimestamp({ chatJID: activeRoomJID, timestamp: Date.now() })
715
637
  );
716
- if (readTs > 0) {
717
- store.dispatch(
718
- setLastViewedTimestamp({ chatJID: activeRoomJID, timestamp: readTs })
719
- );
720
- }
721
638
  // Drop the "New messages" divider so it's gone when the user
722
639
  // returns to the chat (mirrors ChatRoom's unmount cleanup).
723
640
  store.dispatch(
@@ -749,18 +666,18 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
749
666
  if (room.messages === lastMessagesRef) {return;}
750
667
  lastMessagesRef = room.messages;
751
668
 
752
- // getServerReadTimestamp (not a hand-rolled scan + Date.now()):
753
- // it excludes pending/optimistic messages, which carry the DEVICE
754
- // send time via `date` until the server echoes them back - a
755
- // manual scan without that exclusion could pick up a pending
756
- // message's device timestamp here and write a future marker the
757
- // same way a raw Date.now() would (bug #38).
758
- const newest = getServerReadTimestamp(room, s.roomHeapSlice);
759
- if (!newest || newest <= lastStampedMs) {return;}
669
+ let newest = 0;
670
+ const list = room.messages || [];
671
+ for (const m of list) {
672
+ if (!m || m.id === 'delimiter-new') {continue;}
673
+ const ms = msgSortableMs(m);
674
+ if (ms > newest) {newest = ms;}
675
+ }
676
+ if (newest <= lastStampedMs) {return;}
760
677
  lastStampedMs = newest;
761
678
 
762
679
  store.dispatch(
763
- setLastViewedTimestamp({ chatJID: jid, timestamp: newest })
680
+ setLastViewedTimestamp({ chatJID: jid, timestamp: Date.now() })
764
681
  );
765
682
 
766
683
  if (flushTimer) {clearTimeout(flushTimer);}
@@ -93,25 +93,6 @@ export const createMessageFromXml = async (
93
93
  const senderLocal = senderJID.includes('@')
94
94
  ? senderJID.split('@')[0]
95
95
  : senderJID;
96
-
97
- // Bug #41 root cause: the resource of the MUC `from` (room@conference/
98
- // occupant-id) is the SAME field getDataFromXml uses to derive
99
- // `user.id` for live messages and for the wrapped MAM convention
100
- // (getHistory.xmpp.ts) - it's stamped by the server itself when the
101
- // sender joined the room, so it's always present and always correct.
102
- // The positional convention (onMessageHistory's MAM catch-up path)
103
- // never called getDataFromXml, so it fell back to splitting the
104
- // sender-supplied `<data senderJID>` attr on '@' instead - usually the
105
- // same value, but WRONG (picks up the room's own id, not the
106
- // sender's) whenever senderJID is absent from the stanza, and simply a
107
- // different derivation than the live path even when it happens to
108
- // agree. Prefer the resource-of-`from` here too so every path that
109
- // reaches this function resolves the same sender identity the same
110
- // way, instead of MAM catch-up rows needing a later correction once
111
- // the "official" fetch lands.
112
- const xmppFrom = (merged.xmppFrom || '').toString();
113
- const fromResource = xmppFrom.includes('/') ? xmppFrom.split('/')[1] : '';
114
-
115
96
  const composed = [firstName, lastName].filter(Boolean).join(' ').trim();
116
97
  const existingName = String(merged?.user?.name || '').trim();
117
98
  const resolvedName =
@@ -126,7 +107,7 @@ export const createMessageFromXml = async (
126
107
  ...merged,
127
108
  user: {
128
109
  ...(merged.user || {}),
129
- id: merged?.user?.id || fromResource || senderLocal,
110
+ id: merged?.user?.id || senderLocal,
130
111
  name: resolvedName,
131
112
  firstName: firstName || merged?.user?.firstName,
132
113
  lastName: lastName || merged?.user?.lastName,
@@ -3,7 +3,7 @@ import { store } from '../roomStore';
3
3
  import { logout } from '../roomStore/chatSettingsSlice';
4
4
  import { setLogoutState } from '../roomStore/roomsSlice';
5
5
  import { asyncLocalStorage } from '../hooks/useLocalStorage';
6
- import { secureUserStorage } from './secureUserStorage';
6
+ import { localStorageConstants } from './constants/LOCAL_STORAGE';
7
7
  import { clearRoomsRestCache } from '../networking/api-requests/rooms.api';
8
8
  import { clearPersistedState } from '../roomStore/persistence';
9
9
  import {
@@ -53,7 +53,7 @@ export async function ensureScopedChatCache(config?: IConfig): Promise<void> {
53
53
  clearRoomsRestCache();
54
54
  store.dispatch(setLogoutState());
55
55
  store.dispatch(logout());
56
- await secureUserStorage().remove();
56
+ await asyncLocalStorage(localStorageConstants.ETHORA_USER).remove();
57
57
  await clearPersistedState();
58
58
  }
59
59
 
@@ -1,6 +1,13 @@
1
1
  import { Element } from 'ltx';
2
2
  import { Iso639_1Codes, IUser } from '../types/types';
3
3
  import { transformArrayToObject } from './transformTranslatations';
4
+ import { normalizeXmppUsername } from './xmppUsername';
5
+
6
+ const getLocalpartFromJid = (jid?: string): string | undefined => {
7
+ const value = String(jid || '').trim();
8
+ if (!value) {return undefined;}
9
+ return value.split('@')[0] || undefined;
10
+ };
4
11
 
5
12
  // Tolerant JSON parse: a malformed `translations` attr must not reject the
6
13
  // whole stanza (which would silently drop the message). Mirrors the web
@@ -64,7 +71,7 @@ export const getDataFromXml = async (stanza: Element): Promise<DataXml | undefin
64
71
 
65
72
  const xmppId = fullData?.attrs.id;
66
73
  const xmppFrom = fullData?.attrs?.from;
67
- const [roomJid, userWallet] = (xmppFrom || '').split('/');
74
+ const [roomJid, userWalletFromResource] = (xmppFrom || '').split('/');
68
75
  let id =
69
76
  stanza.getChild('result')?.attrs.id ||
70
77
  extractTimestamp(stanza?.getChild('stanza-id')?.attrs?.id, stanza);
@@ -93,6 +100,23 @@ export const getDataFromXml = async (stanza: Element): Promise<DataXml | undefin
93
100
  const data = fullData?.getChild('data') || stanza?.getChild('data');
94
101
  const photoURL = data?.attrs?.photo;
95
102
 
103
+ // Sender identity, resolved the way the web SDK does it: the occupant
104
+ // RESOURCE of `from` first, then the localpart of `<data senderJID>`.
105
+ //
106
+ // RN only had the first. The translate-tagged send path arrives with no
107
+ // occupant resource and no senderJID either, so `user.id` came out
108
+ // undefined and every downstream fallback landed on the bare room jid's
109
+ // localpart — which for a 1:1 room is `<appId>_<userA>-<appId>_<userB>`.
110
+ // That composite id is what got rendered as the sender's name.
111
+ //
112
+ // normalizeXmppUsername collapses a doubled `<appId>_` prefix so the key
113
+ // matches what usersSet is indexed by.
114
+ const rawUserWallet =
115
+ userWalletFromResource ||
116
+ getLocalpartFromJid(data?.attrs?.senderJID) ||
117
+ undefined;
118
+ const userWallet = normalizeXmppUsername(rawUserWallet) || rawUserWallet;
119
+
96
120
  const user = {
97
121
  id: userWallet,
98
122
  photoURL,
@@ -1,11 +1,7 @@
1
1
  import { AppState } from 'react-native';
2
2
  import XmppClient from '../networking/xmppClient';
3
3
  import { store } from '../roomStore';
4
- import {
5
- applyRoomsPreloadBatch,
6
- setUnreadSyncing,
7
- RUNTIME_MESSAGE_LIMIT,
8
- } from '../roomStore/roomsSlice';
4
+ import { applyRoomsPreloadBatch, setUnreadSyncing } from '../roomStore/roomsSlice';
9
5
  import { IMessage, IRoom } from '../types/types';
10
6
 
11
7
  interface HistoryPreloadSchedulerOptions {
@@ -34,13 +30,6 @@ const DEFAULT_CONCURRENCY = 3;
34
30
  // `mergeHistoryIntoCache` rarely has to fall back to clear-and-replace.
35
31
  const DEFAULT_PAGE_SIZE = 20;
36
32
  const DEFAULT_RETRY_LIMIT = 2;
37
- // When the first page is entirely unread (every fetched message is newer
38
- // than `lastViewedTimestamp`), the true unread count could be far bigger
39
- // than `pageSize` — `useUnread()` only ever sees what's been loaded. Page
40
- // further back, up to this many extra fetches, until we either find the
41
- // boundary or give up (`unreadCapped` then stays true so callers at least
42
- // know the count is a floor, not exact). Customer-reported #34.
43
- const MAX_UNREAD_CATCHUP_PAGES = 8;
44
33
 
45
34
  const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
46
35
 
@@ -237,75 +226,9 @@ export const runHistoryPreloadScheduler = async (
237
226
  }
238
227
 
239
228
  const nextRoom = store.getState().rooms.rooms[item.jid];
240
- let combined: IMessage[] = fetchedMessages || [];
241
- const lastViewed = Number(nextRoom?.lastViewedTimestamp) || 0;
242
-
243
- // The first page was entirely unread — keep paging older until
244
- // we find a message at/before `lastViewedTimestamp` (the true
245
- // boundary) or run out of catch-up budget, so the count isn't
246
- // silently truncated at `pageSize`.
247
- if (lastViewed > 0 && computeUnreadCapped(nextRoom, combined, pageSize)) {
248
- let lastPageLen = combined.length;
249
- let extraPages = 0;
250
- while (
251
- extraPages < MAX_UNREAD_CATCHUP_PAGES &&
252
- lastPageLen >= pageSize &&
253
- !signal?.aborted
254
- ) {
255
- const oldestId = combined.reduce<number | null>((min, m) => {
256
- const idNum = Number((m as any)?.id);
257
- if (!Number.isFinite(idNum)) {return min;}
258
- return min === null || idNum < min ? idNum : min;
259
- }, null);
260
- if (oldestId === null) {break;}
261
-
262
- let older: IMessage[] | undefined;
263
- try {
264
- older = await client.getHistoryStanza(
265
- item.jid,
266
- pageSize,
267
- oldestId,
268
- undefined,
269
- {
270
- coalesceRoom: true,
271
- skipIfPreloaded: !forceReload,
272
- source: 'background',
273
- }
274
- );
275
- } catch {
276
- break;
277
- }
278
- if (!older || !older.length) {break;}
279
-
280
- combined = [...older, ...combined];
281
- lastPageLen = older.length;
282
- extraPages++;
283
-
284
- const oldestTs = combined.reduce<number>((minTs, m) => {
285
- const ts = messageTimestamp(m);
286
- return ts > 0 ? Math.min(minTs, ts) : minTs;
287
- }, Number.MAX_SAFE_INTEGER);
288
- if (oldestTs !== Number.MAX_SAFE_INTEGER && oldestTs <= lastViewed) {
289
- break;
290
- }
291
- }
292
- }
293
-
294
- // `mergeHistoryIntoCache` (roomsSlice) caps whatever we dispatch
295
- // here to the newest RUNTIME_MESSAGE_LIMIT messages before it
296
- // ever reaches `unreadMiddleware` — so a catch-up fetch that
297
- // pulled the true boundary can still have it silently dropped
298
- // by that cap, leaving a falsely-confident `unreadCapped:false`
299
- // (bug #34's failure mode again, just one layer downstream).
300
- // Simulate that cap here so the flag reflects what will
301
- // actually survive, not just what this fetch retrieved.
302
- const simulatedStored =
303
- combined.length > RUNTIME_MESSAGE_LIMIT
304
- ? combined.slice(-RUNTIME_MESSAGE_LIMIT)
305
- : combined;
306
229
  const unreadCapped = computeUnreadCapped(
307
230
  nextRoom,
308
- simulatedStored,
231
+ fetchedMessages || [],
309
232
  pageSize
310
233
  );
311
234
 
@@ -314,7 +237,7 @@ export const runHistoryPreloadScheduler = async (
314
237
  rooms: [
315
238
  {
316
239
  jid: item.jid,
317
- messages: combined,
240
+ messages: fetchedMessages || [],
318
241
  unreadCapped,
319
242
  historyPreloadState: 'done',
320
243
  },
@@ -1,9 +1,9 @@
1
1
  import { setCurrentRoom, setIsLoading } from '../roomStore/roomsSlice';
2
+ import { updatedChatLastTimestamps } from './updatedChatLastTimestamps';
2
3
  import { initRoomsPresence } from './initRoomsPresence';
3
4
  import XmppClient from '../networking/xmppClient';
4
5
  import { IConfig, IRoom, User } from '../types/types';
5
6
  import { store } from '../roomStore';
6
- import { refreshAuthTokensQuietly } from '../networking/authRefresh';
7
7
 
8
8
  const initXmppRooms = async (
9
9
  user: User,
@@ -47,23 +47,19 @@ const initXmppRooms = async (
47
47
  console.log(res);
48
48
  }
49
49
 
50
- // getChatsPrivateStoreRequestStanza hydrates redux itself
51
- // (dispatch(applyPrivateStoreMarkers(...)) internally, clamped +
52
- // forward-only) - do not also apply the raw return value here. That
53
- // used to double-dispatch via updatedChatLastTimestamps' unconditional
54
- // setLastViewedTimestamp, which has neither the forward-only guard
55
- // nor the future-marker clamp, so it could silently re-clobber a
56
- // value the clamp had just corrected (bug #38).
57
- await (xmmpClient as any as XmppClient).getChatsPrivateStoreRequestStanza();
50
+ //@ts-ignore
51
+ const roomTimestampObject: [jid: string, timestamp: string] =
52
+ await (xmmpClient as any as XmppClient).getChatsPrivateStoreRequestStanza();
53
+ updatedChatLastTimestamps(roomTimestampObject, store.dispatch);
58
54
  } else {
59
- await xmmpClient.getChatsPrivateStoreRequestStanza();
55
+ //@ts-ignore
56
+ const roomTimestampObject: [jid: string, timestamp: string] =
57
+ await xmmpClient.getChatsPrivateStoreRequestStanza();
58
+ updatedChatLastTimestamps(roomTimestampObject, store.dispatch);
60
59
  }
61
60
 
62
61
  if (config?.refreshTokens?.enabled) {
63
- // Was a bare call to the consumer-supplied refreshFunction, i.e. a
64
- // rotation completely outside the SDK's lock. Routed through the
65
- // one rotation point, which calls that same function internally.
66
- refreshAuthTokensQuietly();
62
+ config?.refreshTokens?.refreshFunction?.();
67
63
  }
68
64
  } catch (error) {
69
65
  console.error(error);
@@ -3,6 +3,19 @@ import { isDateAfter, isDateBefore } from './dateComparison';
3
3
 
4
4
  function deepMerge(target: any, source: any): any {
5
5
  for (const key in source) {
6
+ if (source[key] === undefined) {
7
+ // `for...in` visits a key even when its value is `undefined` — every
8
+ // stanza parser (getDataFromXml/createMessageFromXml) returns an
9
+ // object literal with `translations` always present, explicitly
10
+ // `undefined` whenever the wire message didn't carry a
11
+ // <translations> element. Without this guard, merging THAT message
12
+ // over an existing row would blow away a translation the row
13
+ // already had (e.g. a MAM/live echo of a message arriving without
14
+ // its translation re-attached) — a real message flips from
15
+ // translated back to original text for no reason. Absence on the
16
+ // incoming side must mean "leave it alone", never "clear it".
17
+ continue;
18
+ }
6
19
  if (
7
20
  source[key] &&
8
21
  typeof source[key] === 'object' &&
@@ -14,7 +14,15 @@
14
14
  * matches. A raw objectId on its own is matched too, since some senders
15
15
  * carry only that half.
16
16
  */
17
- const ETHORA_ID = /^[0-9a-f]{24}(_[0-9a-f]{24})?$/i;
17
+ const ETHORA_ID_PART = '[0-9a-f]{24}(?:_[0-9a-f]{24})?';
18
+ // A private (1:1) room's own id is two of those joined by a hyphen —
19
+ // `<appId>_<userA>-<appId>_<userB>` — and that is what a message whose
20
+ // `from` carries no occupant resource resolves to. Matched as well, so a
21
+ // bubble is never captioned with a room id.
22
+ const ETHORA_ID = new RegExp(
23
+ `^${ETHORA_ID_PART}(?:-${ETHORA_ID_PART})?$`,
24
+ 'i'
25
+ );
18
26
 
19
27
  export const isUnresolvedSenderId = (name?: string): boolean => {
20
28
  const trimmed = String(name || '').trim();