@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
@@ -6,12 +6,10 @@ import { useDispatch } from 'react-redux';
6
6
  import MessageList from './MessageList';
7
7
  import SendInput from '../styled/SendInput';
8
8
  import {
9
- clearReadBoundary,
10
9
  clearVisibleRoom,
11
10
  deleteRoomMessage,
12
11
  setEditAction,
13
12
  setLastViewedTimestamp,
14
- setReadBoundary,
15
13
  setVisibleRoom,
16
14
  } from '../../roomStore/roomsSlice';
17
15
  import Loader from '../styled/Loader';
@@ -22,7 +20,6 @@ import NewChatModal from '../Modals/NewChatModal/NewChatModal';
22
20
  import { EditWrapper } from './EditWrapper';
23
21
  import { EmptyChatIllustration } from '../../assets/EmptyChatIllustration';
24
22
  import { getIconColor } from '../../helpers/getIconColor';
25
- import { getChatBackgroundColor } from '../../helpers/getChatBackground';
26
23
  import { ChooseChatMessage } from './ChooseChatMessage';
27
24
  import { useRoomUrl } from '../../hooks/useRoomUrl';
28
25
  import { useSendMessage } from '../../hooks/useSendMessage';
@@ -30,14 +27,10 @@ import { IConfig } from '../../types/models/config.model';
30
27
  import { useRoomInitialization } from '../../hooks/useRoomInitialization';
31
28
  import { useRoomState } from '../../hooks/useRoomState';
32
29
  import { useChatSettingState } from '../../hooks/useChatSettingState';
33
- import { isOwnMessage } from '../../helpers/isOwnMessage';
34
30
  import CustomTypingIndicator from '../styled/StyledInputComponents/CustomTypingIndicator';
35
31
  // import {PanGestureHandler} from 'react-native-gesture-handler';
36
32
  import { FlatList } from 'react-native';
37
33
  import {
38
- AppState,
39
- AppStateStatus,
40
- Keyboard,
41
34
  Platform,
42
35
  TouchableWithoutFeedback,
43
36
  View,
@@ -49,10 +42,6 @@ import {
49
42
  } from 'react-native-keyboard-controller';
50
43
  import useComposing from '../../hooks/useComposing';
51
44
  import { store } from '../../roomStore';
52
- import {
53
- getFlushBoundaryTs,
54
- getReadMarkerTimestamp,
55
- } from '../../helpers/getServerReadTimestamp';
56
45
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
57
46
  import {
58
47
  getInputDockPaddingBottom,
@@ -117,45 +106,6 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
117
106
  configWithEventHandlers || storeConfig,
118
107
  );
119
108
 
120
- // Under the sticky keyboard strategy, the input dock's position is
121
- // driven by KeyboardStickyView's native-animated offset. If the app
122
- // is backgrounded while the keyboard-close animation hasn't finished,
123
- // the OS removes the keyboard from the app-switcher snapshot but the
124
- // shared value hasn't caught up to "closed" yet, so the input appears
125
- // to float in that preview.
126
- //
127
- // NOTE on what this does and doesn't fix: iOS actually captures that
128
- // preview during the active→inactive transition, BEFORE 'background'
129
- // fires — so dismissing here on 'background' lands too late to affect
130
- // the snapshot already taken, and is effectively a no-op for the exact
131
- // iOS symptom in bug #37. An earlier version keyed this off 'inactive'
132
- // instead, which does land in time, but 'inactive' also fires for
133
- // Control Center, share sheets, and permission prompts — none of which
134
- // should close the user's keyboard — so that traded a rare cosmetic
135
- // preview glitch for a much more common false dismissal. Kept on
136
- // 'background': it still resets the offset for genuine backgrounding
137
- // (home button, app switch) and for Android's recents preview (RN's
138
- // AppState has no 'inactive' there), at the cost of leaving the iOS
139
- // switcher-preview glitch itself unresolved. Both symptoms are cosmetic
140
- // per the QA report, which explicitly accepted leaving this imperfect
141
- // rather than risk destabilizing the sticky strategy. Sticky-only;
142
- // doesn't touch the other keyboard strategies.
143
- const stickyInputEnabled =
144
- !configWithEventHandlers?.disableKeyboardAvoidingView &&
145
- !!configWithEventHandlers?.keyboardStickyInput;
146
- useEffect(() => {
147
- if (!stickyInputEnabled) {
148
- return;
149
- }
150
- const onAppStateChange = (nextState: AppStateStatus) => {
151
- if (nextState === 'background') {
152
- Keyboard.dismiss();
153
- }
154
- };
155
- const subscription = AppState.addEventListener('change', onAppStateChange);
156
- return () => subscription.remove();
157
- }, [stickyInputEnabled]);
158
-
159
109
  const sendMessage = useCallback(
160
110
  (message: string) => {
161
111
  if (!activeRoomJID) {
@@ -220,103 +170,31 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
220
170
  clientRef.current = client;
221
171
  }, [client]);
222
172
 
223
- // Tracks what the user actually saw: `null` while they're at the
224
- // bottom (safe to mark everything read), or the timestamp of the
225
- // newest message visible when they scrolled away from it. Reported
226
- // by MessageList via onReadBoundaryChange, and mirrored into redux
227
- // (`rooms.readBoundaries`) rather than kept only in a local ref - it
228
- // is the single source of truth every "leaving this room" path
229
- // consults (xmppProvider's AppState background handler, its
230
- // `isVisible=false` handler, the live `advance()` effect, and
231
- // `useChatRoomFocus`'s `leaveRoom`), not just this component's own
232
- // unmount cleanup below. Without a boundary, leaving a room (or
233
- // backgrounding) while scrolled up stamped `now()` (bug #33) or,
234
- // after the #38 fix, the newest acked message regardless of scroll
235
- // position (bug #42) - both silently discard genuinely-unread
236
- // messages.
237
- //
238
- // MessageList reports the boundary from onScroll, which fires on
239
- // every frame of a drag (the "back at the bottom" branch re-reports
240
- // `null` each time). Mirror only actual CHANGES into redux: an
241
- // unconditional dispatch per scroll frame would run the whole
242
- // middleware chain and, worse, reset persistenceMiddleware's 200 ms
243
- // debounce on every frame, starving the persisted write for as long
244
- // as the user keeps scrolling.
245
- const lastBoundarySentRef = useRef<number | null>(null);
246
- const handleReadBoundaryChange = useCallback((boundaryTs: number | null) => {
247
- if (!activeRoomJID) {
248
- return;
249
- }
250
- const next = boundaryTs && boundaryTs > 0 ? boundaryTs : null;
251
- if (lastBoundarySentRef.current === next) {
252
- return;
253
- }
254
- lastBoundarySentRef.current = next;
255
- dispatch(setReadBoundary({ jid: activeRoomJID, ts: next }));
256
- }, [activeRoomJID, dispatch]);
257
-
258
173
  useEffect(() => {
259
174
  if (!activeRoomJID) {
260
175
  return;
261
176
  }
262
177
 
263
- lastBoundarySentRef.current = null;
264
- dispatch(setReadBoundary({ jid: activeRoomJID, ts: null }));
265
178
  dispatch(setVisibleRoom({ roomJID: activeRoomJID }));
266
179
  setIsLoadingMore(false);
267
180
  return () => {
268
- const state = store.getState();
269
- const rooms = state.rooms?.rooms;
270
- const heapState = state.roomHeapSlice;
271
- const boundaryTs = state.rooms?.readBoundaries?.[activeRoomJID] ?? null;
272
- // getReadMarkerTimestamp honours the boundary (the newest message
273
- // the user actually reached) when one is set, and otherwise falls
274
- // back to the newest server-acked message - never the device
275
- // clock: a fast device clock would write a future marker that the
276
- // forward-only private-store merge could never correct (bug #38).
277
- const timestamp = getReadMarkerTimestamp(
278
- rooms?.[activeRoomJID],
279
- heapState,
280
- boundaryTs,
181
+ const timestamp = new Date().getTime();
182
+ dispatch(
183
+ setLastViewedTimestamp({
184
+ chatJID: activeRoomJID,
185
+ timestamp,
186
+ }),
281
187
  );
282
- if (timestamp > 0) {
283
- dispatch(
284
- setLastViewedTimestamp({
285
- chatJID: activeRoomJID,
286
- timestamp,
287
- }),
288
- );
289
- }
290
188
  dispatch(clearVisibleRoom());
291
189
  const liveClient = clientRef.current;
292
190
  if (liveClient) {
293
191
  liveClient
294
- .flushLastViewedToPrivateStoreStanza(rooms, {
192
+ .flushLastViewedToPrivateStoreStanza(store.getState().rooms?.rooms, {
295
193
  visibleRoomJID: activeRoomJID,
296
- // Carry the same boundary to the SERVER marker. Without
297
- // this the flush defaults to "everything" for the visible
298
- // room, so messages the user never scrolled down to come
299
- // back as read on the next login - the local count was
300
- // right but the server overrode it.
301
- // Clamped through the same helper as the local stamp -
302
- // an unclamped boundary would bypass the newest-acked
303
- // ceiling on the one path where a bad value is permanent
304
- // (the private-store merge is forward-only, bug #38).
305
- visibleRoomTs: getFlushBoundaryTs(
306
- rooms?.[activeRoomJID],
307
- heapState,
308
- boundaryTs,
309
- ),
310
194
  })
311
195
  .catch(() => {});
312
196
  }
313
197
  dispatch(deleteRoomMessage({ roomJID: activeRoomJID, messageId: 'delimiter-new' }));
314
- // The room is genuinely being left (unmount, or activeRoomJID
315
- // changed to a different room) - release the boundary now that
316
- // it's been consumed, so a stale value can't leak into the next
317
- // time this room becomes visible.
318
- dispatch(clearReadBoundary({ jid: activeRoomJID }));
319
- lastBoundarySentRef.current = null;
320
198
  setIsLoadingMore(false);
321
199
  };
322
200
  }, [activeRoomJID, dispatch]);
@@ -352,8 +230,6 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
352
230
  const inputDockPaddingBottom = getInputDockPaddingBottom({
353
231
  platform: Platform.OS,
354
232
  bottomInset: insets.bottom,
355
- configuredPadding: configWithEventHandlers?.inputDockPaddingBottom,
356
- hostOwnsLayout: !!configWithEventHandlers?.disableKeyboardAvoidingView,
357
233
  });
358
234
 
359
235
  // Keyboard avoidance is delegated to react-native-keyboard-controller's
@@ -403,20 +279,7 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
403
279
  ? KeyboardStickyView
404
280
  : View;
405
281
  const inputDockProps: any = {
406
- // The dock carries the composer's white surface all the way to the
407
- // bottom edge, so it needs the same rounded top and upward shadow —
408
- // a square white block behind a rounded composer just hid the corners.
409
- style: {
410
- paddingBottom: inputDockPaddingBottom,
411
- backgroundColor: '#fff',
412
- borderTopLeftRadius: 20,
413
- borderTopRightRadius: 20,
414
- shadowColor: '#101828',
415
- shadowOffset: { width: 0, height: -4 },
416
- shadowOpacity: 0.06,
417
- shadowRadius: 12,
418
- elevation: 8,
419
- },
282
+ style: { paddingBottom: inputDockPaddingBottom, backgroundColor: '#fff' },
420
283
  ...(stickyInput
421
284
  ? { offset: { closed: 0, opened: keyboardVerticalOffset } }
422
285
  : {}),
@@ -425,15 +288,11 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
425
288
  return (
426
289
  <KeyboardWrapper {...keyboardWrapperProps}>
427
290
  <ChatContainer
428
- // The conversation's own colour, not white: the header's rounded
429
- // bottom corners and the composer's rounded top corners reveal
430
- // THIS view, so a white parent made both look square.
431
- style={[
432
- { backgroundColor: getChatBackgroundColor(configWithEventHandlers) },
433
- configWithEventHandlers?.chatRoomStyles as
434
- | import('react-native').ViewStyle
435
- | undefined,
436
- ]}
291
+ style={
292
+ configWithEventHandlers?.chatRoomStyles
293
+ ? (configWithEventHandlers.chatRoomStyles as import('react-native').ViewStyle)
294
+ : undefined
295
+ }
437
296
  >
438
297
  {!configWithEventHandlers?.disableHeader && (
439
298
  <ChatHeader
@@ -472,11 +331,7 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
472
331
  flex: 1,
473
332
  justifyContent: 'center',
474
333
  alignItems: 'center',
475
- // Empty rooms used to flip to white, which broke the
476
- // header's rounded corners in exactly the same way.
477
- backgroundColor: getChatBackgroundColor(
478
- configWithEventHandlers
479
- ),
334
+ backgroundColor: '#ffffff',
480
335
  }}
481
336
  >
482
337
  <NoMessagesPlaceholder />
@@ -502,7 +357,7 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
502
357
  CustomMessageComponent ? (
503
358
  <CustomMessageComponent
504
359
  message={decorated.message}
505
- isUser={isOwnMessage(decorated.message, user)}
360
+ isUser={decorated.message.user.id === user.xmppUsername}
506
361
  isReply={false}
507
362
  />
508
363
  ) : null
@@ -549,7 +404,6 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
549
404
  config={configWithEventHandlers}
550
405
  loading={isLoadingMore}
551
406
  isReply={false}
552
- onReadBoundaryChange={handleReadBoundaryChange}
553
407
  />
554
408
  )}
555
409
  </View>
@@ -1,12 +1,17 @@
1
- import React, {FC, useEffect, useMemo, useRef, useState} from 'react';
1
+ import React, {FC, useEffect, useMemo, useState} from 'react';
2
2
  import {useDispatch, useSelector} from 'react-redux';
3
3
  import ChatRoom from './ChatRoom';
4
4
  import {
5
5
  setActiveModal,
6
6
  setConfig,
7
7
  setDeleteModal,
8
+ setLangSource,
8
9
  setStoreClient,
9
10
  } from '../../roomStore/chatSettingsSlice';
11
+ import {
12
+ resolveExternalReaderLocaleLangSource,
13
+ resolveLegacyTranslatesLangSource,
14
+ } from '../../helpers/resolveLangSource';
10
15
  import {ChatWrapperBox} from '../styled/ChatWrapperBox';
11
16
  import {Overlay, StyledModal} from '../styled/MediaModal';
12
17
  import ConnectionBanner from './ConnectionBanner';
@@ -23,19 +28,17 @@ import {
23
28
  setIsLoading,
24
29
  setLastViewedTimestamp,
25
30
  } from '../../roomStore/roomsSlice';
26
- import {refreshAuthTokensQuietly} from '../../networking/authRefresh';
31
+ import {refresh} from '../../networking/apiClient';
27
32
  import RoomList from './RoomList';
28
33
  import {StyledLoaderWrapper} from '../styled/StyledComponents';
29
34
  import Modal from '../Modals/Modal/Modal';
30
35
  import ThreadWrapper from '../Thread/ThreadWrapper';
31
36
  import {ModalWrapper} from '../Modals/ModalWrapper/ModalWrapper';
32
37
  import {useChatSettingState} from '../../hooks/useChatSettingState';
33
- import { usePendingNotification } from '../../hooks/usePendingNotification';
34
38
  import {DeviceEventEmitter, Pressable, Text, View} from 'react-native';
35
39
  import {pushLog as devPushLog} from '../../utils/devLogger';
36
40
  import {normalizeRoomJid} from '../../helpers/normalizeRoomJid';
37
41
  import {buildSeedRoom} from '../../helpers/buildSeedRoom';
38
- import {shallowEqual} from '../../helpers/shallowEqual';
39
42
  import {InteractionsOverlayProvider} from '../MessageBubble/InteractionsOverlay';
40
43
 
41
44
  interface ChatWrapperProps {
@@ -62,8 +65,6 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
62
65
  client: storedClient,
63
66
  } = useChatSettingState();
64
67
 
65
- usePendingNotification();
66
-
67
68
  const [isInited, setInited] = useState(false);
68
69
  const [showModal, setShowModal] = useState(false);
69
70
  const [errorMsg, setErrorMsg] = useState<string | null>(null);
@@ -116,6 +117,26 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
116
117
  dispatch(setDeleteModal({isDeleteModal: false}));
117
118
  };
118
119
 
120
+ // A host drives the reader's language from OUTSIDE the component through
121
+ // `config.translates.readerLocale` (their own switcher, or the testbed's
122
+ // Setup tab). Nothing was syncing it into `langSource`, so pinning it only
123
+ // redirected the incoming-translation lookup while the UI captions and the
124
+ // `<translate source>` on outgoing messages kept following the unset
125
+ // langSource — which is why picking a language appeared to do nothing.
126
+ //
127
+ // Its own effect, not part of init: it has to re-fire whenever the host
128
+ // changes the value mid-session. And it dispatches only when the value is
129
+ // actually set, so a host that leaves it unset never clobbers what the
130
+ // reader picked from the globe.
131
+ useEffect(() => {
132
+ const resolved = resolveExternalReaderLocaleLangSource(
133
+ config?.translates?.readerLocale
134
+ );
135
+ if (resolved) {
136
+ dispatch(setLangSource(resolved));
137
+ }
138
+ }, [config?.translates?.readerLocale, dispatch]);
139
+
119
140
  useEffect(() => {
120
141
  return () => {
121
142
  if (client && user.xmppPassword === '') {
@@ -165,23 +186,6 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
165
186
  dispatch(addRoom({roomData: buildSeedRoom(seededRoomJID)}));
166
187
  }, [seededRoomJID, seededRoomMissing, dispatch]);
167
188
 
168
- // Presentational config flags (e.g. `disableHeader`) can change while the
169
- // chat stays mounted — sync them to redux whenever `config` actually
170
- // changes, not just at init. Kept separate from the init effect below so
171
- // toggling a flag doesn't re-run client/token setup. Guarded with a
172
- // shallow-equal check (not just the `config` reference) because hosts
173
- // commonly pass an inline object literal (`<Chat config={{...}}/>`) that
174
- // is a new reference on every render even when nothing in it changed —
175
- // dispatching unconditionally there would re-render every config
176
- // consumer (ChatRoom, modals, ...) on every host render.
177
- const lastSyncedConfigRef = useRef<IConfig | undefined>(undefined);
178
- useEffect(() => {
179
- if (config && !shallowEqual(lastSyncedConfigRef.current, config)) {
180
- lastSyncedConfigRef.current = config;
181
- dispatch(setConfig(config));
182
- }
183
- }, [config, dispatch]);
184
-
185
189
  useEffect(() => {
186
190
  if (roomJID) {
187
191
  dispatch(
@@ -191,20 +195,18 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
191
195
  );
192
196
  }
193
197
 
194
- // Top-up rotation after the client is up. Deduped inside
195
- // `refreshAuthTokensQuietly`, so it can no longer race the 401
196
- // interceptor into a second, parallel rotation — which the backend
197
- // would read as reuse. Never rejects, hence no `.catch` here.
198
- const ensureFreshTokens = () => {
199
- if (config?.refreshTokens?.enabled) {
200
- refreshAuthTokensQuietly();
201
- }
202
- };
203
-
204
198
  const initXmmpClient = async () => {
205
199
  // Only sync config to redux if we have one — passing `undefined`
206
200
  // wipes whatever XmppProvider already set up.
207
201
  if (config) {dispatch(setConfig(config));}
202
+ // Seeds only when the host actually set the legacy single-locale
203
+ // field, never on mere `enabled` — see resolveLangSource.
204
+ const legacyLangSource = resolveLegacyTranslatesLangSource(
205
+ config?.translates
206
+ );
207
+ if (legacyLangSource) {
208
+ dispatch(setLangSource(legacyLangSource));
209
+ }
208
210
  try {
209
211
  const hasUser =
210
212
  !!user?.defaultWallet?.walletAddress &&
@@ -283,7 +285,14 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
283
285
  devPushLog('warn', 'initializeClient failed (legacy path)', err);
284
286
  }
285
287
  setInited(true);
286
- ensureFreshTokens();
288
+ if (config?.refreshTokens?.enabled) {
289
+ // refresh() is fire-and-forget but rejects on bad
290
+ // refreshToken / network — surface via .catch instead of
291
+ // leaving the rejection unhandled (was bug #4, id:2).
292
+ refresh().catch((err) =>
293
+ console.warn('refresh failed', err)
294
+ );
295
+ }
287
296
  } else if (storedClient) {
288
297
  devPushLog('rn', 'ChatWrapper: reusing storedClient');
289
298
  setClient(storedClient);
@@ -298,7 +307,11 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
298
307
  .catch((err: unknown) => console.warn('getRoomsStanza failed', err));
299
308
  }
300
309
  setInited(true);
301
- ensureFreshTokens();
310
+ if (config?.refreshTokens?.enabled) {
311
+ refresh().catch((err) =>
312
+ console.warn('refresh failed', err)
313
+ );
314
+ }
302
315
  } else if (client) {
303
316
  devPushLog('rn', 'ChatWrapper: reusing provider client');
304
317
  if (!activeRoomJID) {
@@ -315,7 +328,11 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
315
328
  console.warn('getChatsPrivateStoreRequestStanza failed', err)
316
329
  );
317
330
  setInited(true);
318
- ensureFreshTokens();
331
+ if (config?.refreshTokens?.enabled) {
332
+ refresh().catch((err) =>
333
+ console.warn('refresh failed', err)
334
+ );
335
+ }
319
336
  }
320
337
 
321
338
  dispatch(setIsLoading({loading: false}));
@@ -36,7 +36,6 @@ const LoginWrapper: React.FC<LoginWrapperProps> = ({...props}) => {
36
36
  ...authData.data.user,
37
37
  token: authData.data.token,
38
38
  refreshToken: authData.data.refreshToken,
39
- fileToken: (authData.data as any).fileToken || '',
40
39
  };
41
40
  } catch (error) {
42
41
  console.error('Login failed:', error);
@@ -11,13 +11,10 @@ import {
11
11
  Text,
12
12
  View,
13
13
  } from 'react-native';
14
- import { isLikelyAudio } from '../../helpers/mimeToExtension';
15
- import { getDisplayFileName } from '../../helpers/getDisplayFileName';
14
+ import { deriveDisplayFilename, isLikelyAudio } from '../../helpers/mimeToExtension';
16
15
  import { FileIcon, PlayIcon } from '../../assets/icons';
17
16
  import { defaultMediaDims } from '../../helpers/mediaDimensions';
18
17
  import { useChatSettingState } from '../../hooks/useChatSettingState';
19
- import { useFileToken } from '../../hooks/useFileToken';
20
- import { appendFileToken } from '../../helpers/secureFileUrl';
21
18
 
22
19
  interface MediaMessageProps {
23
20
  mimeType?: string;
@@ -139,26 +136,22 @@ const PendingMediaMessage: React.FC<{
139
136
 
140
137
  const MediaMessage: React.FC<MediaMessageProps> = ({
141
138
  mimeType,
142
- location: rawLocation,
143
- messageText: rawMessageText,
139
+ location,
140
+ messageText,
144
141
  message,
145
142
  isUser,
146
143
  }) => {
147
- const fileToken = useFileToken();
148
- const location = appendFileToken(rawLocation, fileToken);
149
- const messageText = appendFileToken(rawMessageText, fileToken);
150
-
151
144
  if (mimeType) {
152
- const displayName = getDisplayFileName({
153
- originalName: (message as any)?.originalName,
145
+ const displayName = deriveDisplayFilename({
154
146
  fileName: message?.fileName,
155
- location: rawLocation || rawMessageText,
156
- mimetype: mimeType,
147
+ originalName: (message as any)?.originalName,
148
+ url: location || messageText,
149
+ mime: mimeType,
157
150
  });
158
151
  const isAudioPayload = isLikelyAudio(
159
152
  mimeType,
160
153
  displayName,
161
- rawLocation,
154
+ location,
162
155
  {
163
156
  duration: (message as any)?.duration,
164
157
  waveForm: (message as any)?.waveForm,
@@ -181,12 +174,7 @@ const MediaMessage: React.FC<MediaMessageProps> = ({
181
174
  return (
182
175
  <CustomMessageImage
183
176
  fileName={displayName}
184
- originalName={(message as any)?.originalName}
185
- // Full-size original: opened by the preview modal.
186
177
  fileURL={location || messageText || ''}
187
- // ...and the thumbnail the bubble actually renders, which is
188
- // what the web client shows too.
189
- locationPreview={messageText}
190
178
  mimetype={mimeType}
191
179
  />
192
180
  );
@@ -194,13 +182,7 @@ const MediaMessage: React.FC<MediaMessageProps> = ({
194
182
  return (
195
183
  <CustomMessageVideo
196
184
  fileName={displayName}
197
- originalName={(message as any)?.originalName}
198
185
  fileURL={location || ''}
199
- // `messageText` is the message's locationPreview — the poster
200
- // frame the backend generated for this video. Handing it over
201
- // lets the bubble render as a still + play badge instead of
202
- // mounting a video surface per row (see VideoMessage).
203
- previewURL={messageText}
204
186
  mimetype={mimeType}
205
187
  />
206
188
  );
@@ -1,6 +1,5 @@
1
1
  import React, { FC, Fragment, useMemo } from 'react';
2
2
  import { IConfig, IMessage } from '../../types/types';
3
- import { isOwnMessage } from '../../helpers/isOwnMessage';
4
3
  import DateLabel from '../styled/DateLabel';
5
4
  import SystemMessage from './SystemMessage';
6
5
  import NewMessageLabel from '../styled/NewMessageLabel';
@@ -47,10 +46,7 @@ export const MessageContainer: FC<MessageContainerProps> = ({
47
46
  isReply,
48
47
  className,
49
48
  }) => {
50
- // Bug #41: `message.user.id === walletAddress` used to treat two
51
- // empty/undefined ids as a match, briefly rendering catch-up messages
52
- // from other users as our own. isOwnMessage() never does that.
53
- const isUser = isOwnMessage(message, walletAddress);
49
+ const isUser = message.user.id === walletAddress;
54
50
 
55
51
  const messageDate = new Date(message.date);
56
52
 
@@ -28,8 +28,6 @@ import Loader from '../styled/Loader';
28
28
  import { ArowDownIcon } from '../../assets/icons';
29
29
  import CustomTypingIndicator from '../styled/StyledInputComponents/CustomTypingIndicator';
30
30
  import { getIconColor } from '../../helpers/getIconColor';
31
- import { getChatBackgroundColor } from '../../helpers/getChatBackground';
32
- import { isOwnMessage } from '../../helpers/isOwnMessage';
33
31
 
34
32
  interface MessageListProps<TMessage extends IMessage> {
35
33
  CustomMessage?: React.ComponentType<{
@@ -55,15 +53,6 @@ interface MessageListProps<TMessage extends IMessage> {
55
53
  config?: IConfig;
56
54
  isReply: boolean;
57
55
  activeMessage?: IMessage;
58
- /**
59
- * Fired whenever the "read up to" boundary changes: `null` while the
60
- * user is at the bottom (everything is read), or the timestamp of the
61
- * newest message they'd actually seen when they scrolled away from it.
62
- * Lets the host mark only what was actually viewed as read instead of
63
- * stamping "now" on unmount/leave, which would wrongly clear unread
64
- * messages the user scrolled up and never got back down to.
65
- */
66
- onReadBoundaryChange?: (boundaryTs: number | null) => void;
67
56
  }
68
57
 
69
58
  const MessageList = <TMessage extends IMessage>({
@@ -77,7 +66,6 @@ const MessageList = <TMessage extends IMessage>({
77
66
  loading,
78
67
  isReply,
79
68
  activeMessage,
80
- onReadBoundaryChange,
81
69
  }: MessageListProps<TMessage>) => {
82
70
  const { composing, messages, composingList } = useRoomState(roomJID)
83
71
  .room! as IRoom;
@@ -344,7 +332,6 @@ const MessageList = <TMessage extends IMessage>({
344
332
  // counter so the badge disappears with the arrow.
345
333
  setUnreadWhileScrolledUp(0);
346
334
  newestSeenTsRef.current = null;
347
- onReadBoundaryChange?.(null);
348
335
  } else {
349
336
  isUserAtBottomRef.current = false;
350
337
  if (hasUserScrolledRef.current) {
@@ -362,12 +349,11 @@ const MessageList = <TMessage extends IMessage>({
362
349
  },
363
350
  0
364
351
  );
365
- onReadBoundaryChange?.(newestSeenTsRef.current);
366
352
  }
367
353
  setIsUserAtBottom(false);
368
354
  }
369
355
  },
370
- [memoizedMessages, onReadBoundaryChange]
356
+ [memoizedMessages]
371
357
  );
372
358
 
373
359
  // Keep the badge in sync with messages that arrive while the user is
@@ -396,7 +382,6 @@ const MessageList = <TMessage extends IMessage>({
396
382
  setIsUserAtBottom(true);
397
383
  setUnreadWhileScrolledUp(0);
398
384
  newestSeenTsRef.current = null;
399
- onReadBoundaryChange?.(null);
400
385
  scrollToBottom();
401
386
  };
402
387
 
@@ -407,8 +392,6 @@ const MessageList = <TMessage extends IMessage>({
407
392
  setIsUserAtBottom(true);
408
393
  setUnreadWhileScrolledUp(0);
409
394
  newestSeenTsRef.current = null;
410
- onReadBoundaryChange?.(null);
411
- // eslint-disable-next-line react-hooks/exhaustive-deps
412
395
  }, [roomJID]);
413
396
 
414
397
  const BackgroundImage = useMemo(() => {
@@ -430,7 +413,7 @@ const MessageList = <TMessage extends IMessage>({
430
413
  <View
431
414
  style={[
432
415
  styles.container,
433
- { backgroundColor: getChatBackgroundColor(config) },
416
+ { backgroundColor: config?.backgroundChat?.color || '#F3F6FC' },
434
417
  ]}
435
418
  >
436
419
  <View style={styles.backgroundImageContainer}>{BackgroundImage}</View>
@@ -439,7 +422,7 @@ const MessageList = <TMessage extends IMessage>({
439
422
  {CustomMessage && (
440
423
  <CustomMessage
441
424
  message={activeMessage}
442
- isUser={isOwnMessage(activeMessage, user)}
425
+ isUser={activeMessage.user.id === user.walletAddress}
443
426
  isReply={isReply}
444
427
  />
445
428
  )}
@@ -459,9 +442,7 @@ const MessageList = <TMessage extends IMessage>({
459
442
  onLayout={handleLayout}
460
443
  inverted={true}
461
444
  keyboardShouldPersistTaps="handled"
462
- keyboardDismissMode={
463
- config?.keepKeyboardOpenOnScroll ? 'none' : 'interactive'
464
- }
445
+ keyboardDismissMode="interactive"
465
446
  contentContainerStyle={styles.flatListContent}
466
447
  ListFooterComponent={
467
448
  loading && memoizedMessages.length > 15 ? (