@ethora/chat-component-rn 26.8.1 → 26.8.3

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 (927) hide show
  1. package/CHANGELOG.md +110 -0
  2. package/README.md +70 -11
  3. package/lib/commonjs/assets/EmptyChatIllustration.js +7 -6
  4. package/lib/commonjs/assets/EmptyChatIllustration.js.map +1 -1
  5. package/lib/commonjs/assets/icons.js +7 -2
  6. package/lib/commonjs/assets/icons.js.map +1 -1
  7. package/lib/commonjs/components/AuthForms/Login.js +27 -12
  8. package/lib/commonjs/components/AuthForms/Login.js.map +1 -1
  9. package/lib/commonjs/components/ContextMenu/ContextMenuComponents.js +12 -4
  10. package/lib/commonjs/components/ContextMenu/ContextMenuComponents.js.map +1 -1
  11. package/lib/commonjs/components/DropdownMenu/DropdownMenu.js +16 -9
  12. package/lib/commonjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  13. package/lib/commonjs/components/ExampleComponents/CustomMessage.js +25 -7
  14. package/lib/commonjs/components/ExampleComponents/CustomMessage.js.map +1 -1
  15. package/lib/commonjs/components/ExampleComponents/CustomTypingIndicatorExamples.js +18 -6
  16. package/lib/commonjs/components/ExampleComponents/CustomTypingIndicatorExamples.js.map +1 -1
  17. package/lib/commonjs/components/Header/HeaderRoomList.js +34 -10
  18. package/lib/commonjs/components/Header/HeaderRoomList.js.map +1 -1
  19. package/lib/commonjs/components/InputComponents/Search.js +13 -4
  20. package/lib/commonjs/components/InputComponents/Search.js.map +1 -1
  21. package/lib/commonjs/components/MainComponents/ChatHeader.js +18 -6
  22. package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
  23. package/lib/commonjs/components/MainComponents/ChatRoom.js +154 -15
  24. package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
  25. package/lib/commonjs/components/MainComponents/ChatWrapper.js +42 -19
  26. package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
  27. package/lib/commonjs/components/MainComponents/LanguageSelectorModal.js +37 -10
  28. package/lib/commonjs/components/MainComponents/LanguageSelectorModal.js.map +1 -1
  29. package/lib/commonjs/components/MainComponents/LoginWrapper.js +2 -1
  30. package/lib/commonjs/components/MainComponents/LoginWrapper.js.map +1 -1
  31. package/lib/commonjs/components/MainComponents/MediaMessage.js +72 -28
  32. package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
  33. package/lib/commonjs/components/MainComponents/MessageContainer.js +5 -1
  34. package/lib/commonjs/components/MainComponents/MessageContainer.js.map +1 -1
  35. package/lib/commonjs/components/MainComponents/MessageList.js +22 -8
  36. package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
  37. package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js +14 -13
  38. package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
  39. package/lib/commonjs/components/MainComponents/RNStyled.js +12 -4
  40. package/lib/commonjs/components/MainComponents/RNStyled.js.map +1 -1
  41. package/lib/commonjs/components/MainComponents/ReduxWrapper.js +25 -8
  42. package/lib/commonjs/components/MainComponents/ReduxWrapper.js.map +1 -1
  43. package/lib/commonjs/components/MainComponents/RoomList.js +214 -38
  44. package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
  45. package/lib/commonjs/components/MainComponents/Select.js +29 -8
  46. package/lib/commonjs/components/MainComponents/Select.js.map +1 -1
  47. package/lib/commonjs/components/Menu/HeaderRoomListMenu.js +329 -99
  48. package/lib/commonjs/components/Menu/HeaderRoomListMenu.js.map +1 -1
  49. package/lib/commonjs/components/MessageBubble/BottomReplyContainer.js +24 -8
  50. package/lib/commonjs/components/MessageBubble/BottomReplyContainer.js.map +1 -1
  51. package/lib/commonjs/components/MessageBubble/Message.js +46 -24
  52. package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
  53. package/lib/commonjs/components/MessageBubble/MessageInteractions.js +15 -4
  54. package/lib/commonjs/components/MessageBubble/MessageInteractions.js.map +1 -1
  55. package/lib/commonjs/components/MessageBubble/MessageReaction.js +10 -5
  56. package/lib/commonjs/components/MessageBubble/MessageReaction.js.map +1 -1
  57. package/lib/commonjs/components/Modals/AddMembersModal/AddMembersModal.js +1 -5
  58. package/lib/commonjs/components/Modals/AddMembersModal/AddMembersModal.js.map +1 -1
  59. package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +345 -118
  60. package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
  61. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +599 -203
  62. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  63. package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js +5 -7
  64. package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
  65. package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js +230 -0
  66. package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js.map +1 -0
  67. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +89 -36
  68. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  69. package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js +2 -1
  70. package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
  71. package/lib/commonjs/components/Modals/Modal/Modal.js +8 -0
  72. package/lib/commonjs/components/Modals/Modal/Modal.js.map +1 -1
  73. package/lib/commonjs/components/Modals/ModalHeaderComponent.js +8 -2
  74. package/lib/commonjs/components/Modals/ModalHeaderComponent.js.map +1 -1
  75. package/lib/commonjs/components/Modals/ModalWrapper/ModalWrapper.js +8 -8
  76. package/lib/commonjs/components/Modals/ModalWrapper/ModalWrapper.js.map +1 -1
  77. package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js +3 -6
  78. package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js.map +1 -1
  79. package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js +205 -106
  80. package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
  81. package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js +8 -0
  82. package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
  83. package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js +563 -0
  84. package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js.map +1 -0
  85. package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js +215 -0
  86. package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js.map +1 -0
  87. package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js +7 -9
  88. package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
  89. package/lib/commonjs/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.js +8 -6
  90. package/lib/commonjs/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.js.map +1 -1
  91. package/lib/commonjs/components/Modals/SettingsModals/Referrals/Referrals.js +7 -2
  92. package/lib/commonjs/components/Modals/SettingsModals/Referrals/Referrals.js.map +1 -1
  93. package/lib/commonjs/components/Modals/SettingsModals/SharedStyledComponents.js +7 -3
  94. package/lib/commonjs/components/Modals/SettingsModals/SharedStyledComponents.js.map +1 -1
  95. package/lib/commonjs/components/Modals/SettingsModals/Visibility/RadioInput.js +10 -6
  96. package/lib/commonjs/components/Modals/SettingsModals/Visibility/RadioInput.js.map +1 -1
  97. package/lib/commonjs/components/Modals/SettingsModals/Visibility/VisibilityModal.js +7 -6
  98. package/lib/commonjs/components/Modals/SettingsModals/Visibility/VisibilityModal.js.map +1 -1
  99. package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js +10 -22
  100. package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
  101. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +510 -244
  102. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  103. package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js +77 -46
  104. package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
  105. package/lib/commonjs/components/Modals/styledModalComponents.js +68 -17
  106. package/lib/commonjs/components/Modals/styledModalComponents.js.map +1 -1
  107. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +30 -10
  108. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
  109. package/lib/commonjs/components/RoomComponents/styled/LastAudioMessage.js +6 -2
  110. package/lib/commonjs/components/RoomComponents/styled/LastAudioMessage.js.map +1 -1
  111. package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js +22 -3
  112. package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
  113. package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js +17 -3
  114. package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
  115. package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js +17 -3
  116. package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
  117. package/lib/commonjs/components/RoomComponents/styled/StyledRoomComponents.js +6 -0
  118. package/lib/commonjs/components/RoomComponents/styled/StyledRoomComponents.js.map +1 -1
  119. package/lib/commonjs/components/Thread/ThreadWrapper.js +9 -2
  120. package/lib/commonjs/components/Thread/ThreadWrapper.js.map +1 -1
  121. package/lib/commonjs/components/Toast/Toast.js +3 -1
  122. package/lib/commonjs/components/Toast/Toast.js.map +1 -1
  123. package/lib/commonjs/components/VideoCalls/VideoCallSession.js +6 -3
  124. package/lib/commonjs/components/VideoCalls/VideoCallSession.js.map +1 -1
  125. package/lib/commonjs/components/styled/AudioMessage.js +18 -12
  126. package/lib/commonjs/components/styled/AudioMessage.js.map +1 -1
  127. package/lib/commonjs/components/styled/Button.js +18 -9
  128. package/lib/commonjs/components/styled/Button.js.map +1 -1
  129. package/lib/commonjs/components/styled/DateLabel.js +8 -5
  130. package/lib/commonjs/components/styled/DateLabel.js.map +1 -1
  131. package/lib/commonjs/components/styled/MediaModal.js +27 -21
  132. package/lib/commonjs/components/styled/MediaModal.js.map +1 -1
  133. package/lib/commonjs/components/styled/MessageImage.js +37 -9
  134. package/lib/commonjs/components/styled/MessageImage.js.map +1 -1
  135. package/lib/commonjs/components/styled/RoomListComponents/index.js +60 -38
  136. package/lib/commonjs/components/styled/RoomListComponents/index.js.map +1 -1
  137. package/lib/commonjs/components/styled/SendInput.js +93 -19
  138. package/lib/commonjs/components/styled/SendInput.js.map +1 -1
  139. package/lib/commonjs/components/styled/StyledComponents.js +75 -25
  140. package/lib/commonjs/components/styled/StyledComponents.js.map +1 -1
  141. package/lib/commonjs/components/styled/StyledInput.js +32 -18
  142. package/lib/commonjs/components/styled/StyledInput.js.map +1 -1
  143. package/lib/commonjs/components/styled/StyledInputComponents/CustomTypingIndicator.js +13 -8
  144. package/lib/commonjs/components/styled/StyledInputComponents/CustomTypingIndicator.js.map +1 -1
  145. package/lib/commonjs/components/styled/StyledInputComponents/MediaComponents.js +20 -9
  146. package/lib/commonjs/components/styled/StyledInputComponents/MediaComponents.js.map +1 -1
  147. package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js +50 -22
  148. package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
  149. package/lib/commonjs/components/styled/TreadLabel.js +6 -3
  150. package/lib/commonjs/components/styled/TreadLabel.js.map +1 -1
  151. package/lib/commonjs/components/styled/UnsupportedType.js +14 -4
  152. package/lib/commonjs/components/styled/UnsupportedType.js.map +1 -1
  153. package/lib/commonjs/components/styled/VideoMessage.js +119 -61
  154. package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
  155. package/lib/commonjs/context/MessageNotificationContext.js +14 -3
  156. package/lib/commonjs/context/MessageNotificationContext.js.map +1 -1
  157. package/lib/commonjs/context/xmppProvider.js +184 -59
  158. package/lib/commonjs/context/xmppProvider.js.map +1 -1
  159. package/lib/commonjs/helpers/createMessageFromXml.js +19 -1
  160. package/lib/commonjs/helpers/createMessageFromXml.js.map +1 -1
  161. package/lib/commonjs/helpers/ensureScopedChatCache.js +2 -2
  162. package/lib/commonjs/helpers/ensureScopedChatCache.js.map +1 -1
  163. package/lib/commonjs/helpers/getChatBackground.js +26 -0
  164. package/lib/commonjs/helpers/getChatBackground.js.map +1 -0
  165. package/lib/commonjs/helpers/getDateLabelColor.js +3 -1
  166. package/lib/commonjs/helpers/getDateLabelColor.js.map +1 -1
  167. package/lib/commonjs/helpers/getDisplayFileName.js +79 -0
  168. package/lib/commonjs/helpers/getDisplayFileName.js.map +1 -0
  169. package/lib/commonjs/helpers/getIconColor.js +4 -1
  170. package/lib/commonjs/helpers/getIconColor.js.map +1 -1
  171. package/lib/commonjs/helpers/getSenderNameColor.js +3 -1
  172. package/lib/commonjs/helpers/getSenderNameColor.js.map +1 -1
  173. package/lib/commonjs/helpers/getServerReadTimestamp.js +188 -0
  174. package/lib/commonjs/helpers/getServerReadTimestamp.js.map +1 -0
  175. package/lib/commonjs/helpers/historyPreloadScheduler.js +65 -2
  176. package/lib/commonjs/helpers/historyPreloadScheduler.js.map +1 -1
  177. package/lib/commonjs/helpers/initXmppRooms.js +14 -8
  178. package/lib/commonjs/helpers/initXmppRooms.js.map +1 -1
  179. package/lib/commonjs/helpers/insertMessageWithDelimiter.js +51 -9
  180. package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
  181. package/lib/commonjs/helpers/isOwnMessage.js +75 -0
  182. package/lib/commonjs/helpers/isOwnMessage.js.map +1 -0
  183. package/lib/commonjs/helpers/keyboardLayout.js +12 -2
  184. package/lib/commonjs/helpers/keyboardLayout.js.map +1 -1
  185. package/lib/commonjs/helpers/markdownParser.js +27 -5
  186. package/lib/commonjs/helpers/markdownParser.js.map +1 -1
  187. package/lib/commonjs/helpers/mediaLibraryRuntime.js +31 -0
  188. package/lib/commonjs/helpers/mediaLibraryRuntime.js.map +1 -0
  189. package/lib/commonjs/helpers/mimeToExtension.js +6 -14
  190. package/lib/commonjs/helpers/mimeToExtension.js.map +1 -1
  191. package/lib/commonjs/helpers/msgSortableMs.js +37 -0
  192. package/lib/commonjs/helpers/msgSortableMs.js.map +1 -0
  193. package/lib/commonjs/helpers/parseMessageBody.js +82 -24
  194. package/lib/commonjs/helpers/parseMessageBody.js.map +1 -1
  195. package/lib/commonjs/helpers/persistCrypto.js +122 -0
  196. package/lib/commonjs/helpers/persistCrypto.js.map +1 -0
  197. package/lib/commonjs/helpers/pickImageAsset.js +68 -0
  198. package/lib/commonjs/helpers/pickImageAsset.js.map +1 -0
  199. package/lib/commonjs/helpers/pushPayload.js +71 -0
  200. package/lib/commonjs/helpers/pushPayload.js.map +1 -0
  201. package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js +130 -17
  202. package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js.map +1 -1
  203. package/lib/commonjs/helpers/secureFileUrl.js +101 -0
  204. package/lib/commonjs/helpers/secureFileUrl.js.map +1 -0
  205. package/lib/commonjs/helpers/secureKeyValue.js +83 -0
  206. package/lib/commonjs/helpers/secureKeyValue.js.map +1 -0
  207. package/lib/commonjs/helpers/secureStoreRuntime.js +59 -0
  208. package/lib/commonjs/helpers/secureStoreRuntime.js.map +1 -0
  209. package/lib/commonjs/helpers/secureUserStorage.js +75 -0
  210. package/lib/commonjs/helpers/secureUserStorage.js.map +1 -0
  211. package/lib/commonjs/helpers/shallowEqual.js +36 -0
  212. package/lib/commonjs/helpers/shallowEqual.js.map +1 -0
  213. package/lib/commonjs/helpers/sheetGestures.js +32 -0
  214. package/lib/commonjs/helpers/sheetGestures.js.map +1 -0
  215. package/lib/commonjs/hooks/useChatRoomFocus.js +45 -12
  216. package/lib/commonjs/hooks/useChatRoomFocus.js.map +1 -1
  217. package/lib/commonjs/hooks/useChatWrapperInit.js +30 -10
  218. package/lib/commonjs/hooks/useChatWrapperInit.js.map +1 -1
  219. package/lib/commonjs/hooks/useComposing.js +27 -0
  220. package/lib/commonjs/hooks/useComposing.js.map +1 -1
  221. package/lib/commonjs/hooks/useCustomTypingIndicator.js +7 -3
  222. package/lib/commonjs/hooks/useCustomTypingIndicator.js.map +1 -1
  223. package/lib/commonjs/hooks/useFileToken.js +10 -0
  224. package/lib/commonjs/hooks/useFileToken.js.map +1 -0
  225. package/lib/commonjs/hooks/useLogout.js +33 -10
  226. package/lib/commonjs/hooks/useLogout.js.map +1 -1
  227. package/lib/commonjs/hooks/usePendingNotification.js +8 -11
  228. package/lib/commonjs/hooks/usePendingNotification.js.map +1 -1
  229. package/lib/commonjs/hooks/useSendMessage.js +50 -14
  230. package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
  231. package/lib/commonjs/hooks/useTheme.js +35 -0
  232. package/lib/commonjs/hooks/useTheme.js.map +1 -0
  233. package/lib/commonjs/hooks/useUnreadMessagesCounter.js +6 -1
  234. package/lib/commonjs/hooks/useUnreadMessagesCounter.js.map +1 -1
  235. package/lib/commonjs/i18n/strings.js +163 -37
  236. package/lib/commonjs/i18n/strings.js.map +1 -1
  237. package/lib/commonjs/main.js +119 -0
  238. package/lib/commonjs/main.js.map +1 -1
  239. package/lib/commonjs/networking/api-requests/auth.api.js +134 -60
  240. package/lib/commonjs/networking/api-requests/auth.api.js.map +1 -1
  241. package/lib/commonjs/networking/api-requests/push.api.js +130 -45
  242. package/lib/commonjs/networking/api-requests/push.api.js.map +1 -1
  243. package/lib/commonjs/networking/api-requests/roomMembers.api.js +1 -1
  244. package/lib/commonjs/networking/api-requests/roomMembers.api.js.map +1 -1
  245. package/lib/commonjs/networking/api-requests/rooms.api.js +22 -9
  246. package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
  247. package/lib/commonjs/networking/api-requests/user.api.js +68 -9
  248. package/lib/commonjs/networking/api-requests/user.api.js.map +1 -1
  249. package/lib/commonjs/networking/apiClient.js +62 -112
  250. package/lib/commonjs/networking/apiClient.js.map +1 -1
  251. package/lib/commonjs/networking/authRefresh.js +332 -0
  252. package/lib/commonjs/networking/authRefresh.js.map +1 -0
  253. package/lib/commonjs/networking/stanzaHandlers.js +41 -28
  254. package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
  255. package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js +46 -8
  256. package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
  257. package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js +8 -1
  258. package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
  259. package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js +5 -1
  260. package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
  261. package/lib/commonjs/networking/xmppClient.js +124 -8
  262. package/lib/commonjs/networking/xmppClient.js.map +1 -1
  263. package/lib/commonjs/roomStore/chatSettingsSlice.js +26 -7
  264. package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
  265. package/lib/commonjs/roomStore/index.js +35 -2
  266. package/lib/commonjs/roomStore/index.js.map +1 -1
  267. package/lib/commonjs/roomStore/persistence.js +226 -23
  268. package/lib/commonjs/roomStore/persistence.js.map +1 -1
  269. package/lib/commonjs/roomStore/roomsSlice.js +151 -38
  270. package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
  271. package/lib/commonjs/services/pushRegistration.js +250 -0
  272. package/lib/commonjs/services/pushRegistration.js.map +1 -0
  273. package/lib/commonjs/services/pushSubscriptionService.js +15 -37
  274. package/lib/commonjs/services/pushSubscriptionService.js.map +1 -1
  275. package/lib/commonjs/theme/index.js +38 -0
  276. package/lib/commonjs/theme/index.js.map +1 -0
  277. package/lib/commonjs/theme/styled.d.js +4 -0
  278. package/lib/commonjs/theme/styled.d.js.map +1 -0
  279. package/lib/commonjs/theme/theme.js +137 -0
  280. package/lib/commonjs/theme/theme.js.map +1 -0
  281. package/lib/commonjs/version.js +1 -1
  282. package/lib/module/assets/EmptyChatIllustration.js +7 -6
  283. package/lib/module/assets/EmptyChatIllustration.js.map +1 -1
  284. package/lib/module/assets/icons.js +6 -1
  285. package/lib/module/assets/icons.js.map +1 -1
  286. package/lib/module/components/AuthForms/Login.js +27 -12
  287. package/lib/module/components/AuthForms/Login.js.map +1 -1
  288. package/lib/module/components/ContextMenu/ContextMenuComponents.js +12 -4
  289. package/lib/module/components/ContextMenu/ContextMenuComponents.js.map +1 -1
  290. package/lib/module/components/DropdownMenu/DropdownMenu.js +16 -9
  291. package/lib/module/components/DropdownMenu/DropdownMenu.js.map +1 -1
  292. package/lib/module/components/ExampleComponents/CustomMessage.js +25 -7
  293. package/lib/module/components/ExampleComponents/CustomMessage.js.map +1 -1
  294. package/lib/module/components/ExampleComponents/CustomTypingIndicatorExamples.js +18 -6
  295. package/lib/module/components/ExampleComponents/CustomTypingIndicatorExamples.js.map +1 -1
  296. package/lib/module/components/Header/HeaderRoomList.js +34 -10
  297. package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
  298. package/lib/module/components/InputComponents/Search.js +13 -4
  299. package/lib/module/components/InputComponents/Search.js.map +1 -1
  300. package/lib/module/components/MainComponents/ChatHeader.js +18 -6
  301. package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
  302. package/lib/module/components/MainComponents/ChatRoom.js +156 -17
  303. package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
  304. package/lib/module/components/MainComponents/ChatWrapper.js +43 -20
  305. package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
  306. package/lib/module/components/MainComponents/LanguageSelectorModal.js +37 -10
  307. package/lib/module/components/MainComponents/LanguageSelectorModal.js.map +1 -1
  308. package/lib/module/components/MainComponents/LoginWrapper.js +2 -1
  309. package/lib/module/components/MainComponents/LoginWrapper.js.map +1 -1
  310. package/lib/module/components/MainComponents/MediaMessage.js +72 -29
  311. package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
  312. package/lib/module/components/MainComponents/MessageContainer.js +5 -1
  313. package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
  314. package/lib/module/components/MainComponents/MessageList.js +22 -8
  315. package/lib/module/components/MainComponents/MessageList.js.map +1 -1
  316. package/lib/module/components/MainComponents/ProfileImagePlaceholder.js +14 -13
  317. package/lib/module/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
  318. package/lib/module/components/MainComponents/RNStyled.js +12 -4
  319. package/lib/module/components/MainComponents/RNStyled.js.map +1 -1
  320. package/lib/module/components/MainComponents/ReduxWrapper.js +25 -8
  321. package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
  322. package/lib/module/components/MainComponents/RoomList.js +213 -38
  323. package/lib/module/components/MainComponents/RoomList.js.map +1 -1
  324. package/lib/module/components/MainComponents/Select.js +29 -8
  325. package/lib/module/components/MainComponents/Select.js.map +1 -1
  326. package/lib/module/components/Menu/HeaderRoomListMenu.js +331 -102
  327. package/lib/module/components/Menu/HeaderRoomListMenu.js.map +1 -1
  328. package/lib/module/components/MessageBubble/BottomReplyContainer.js +24 -8
  329. package/lib/module/components/MessageBubble/BottomReplyContainer.js.map +1 -1
  330. package/lib/module/components/MessageBubble/Message.js +47 -25
  331. package/lib/module/components/MessageBubble/Message.js.map +1 -1
  332. package/lib/module/components/MessageBubble/MessageInteractions.js +15 -4
  333. package/lib/module/components/MessageBubble/MessageInteractions.js.map +1 -1
  334. package/lib/module/components/MessageBubble/MessageReaction.js +10 -5
  335. package/lib/module/components/MessageBubble/MessageReaction.js.map +1 -1
  336. package/lib/module/components/Modals/AddMembersModal/AddMembersModal.js +2 -6
  337. package/lib/module/components/Modals/AddMembersModal/AddMembersModal.js.map +1 -1
  338. package/lib/module/components/Modals/AttachSheet/AttachSheet.js +336 -121
  339. package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
  340. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +603 -208
  341. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  342. package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js +6 -8
  343. package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
  344. package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js +225 -0
  345. package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js.map +1 -0
  346. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +90 -37
  347. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  348. package/lib/module/components/Modals/FilePreviewModal/PdfView.js +2 -1
  349. package/lib/module/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
  350. package/lib/module/components/Modals/Modal/Modal.js +9 -1
  351. package/lib/module/components/Modals/Modal/Modal.js.map +1 -1
  352. package/lib/module/components/Modals/ModalHeaderComponent.js +8 -2
  353. package/lib/module/components/Modals/ModalHeaderComponent.js.map +1 -1
  354. package/lib/module/components/Modals/ModalWrapper/ModalWrapper.js +10 -10
  355. package/lib/module/components/Modals/ModalWrapper/ModalWrapper.js.map +1 -1
  356. package/lib/module/components/Modals/NewChatModal/ModalContent.js +4 -7
  357. package/lib/module/components/Modals/NewChatModal/ModalContent.js.map +1 -1
  358. package/lib/module/components/Modals/NewChatModal/NewChatModal.js +208 -108
  359. package/lib/module/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
  360. package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js +8 -0
  361. package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
  362. package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js +555 -0
  363. package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js.map +1 -0
  364. package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js +210 -0
  365. package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js.map +1 -0
  366. package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js +8 -10
  367. package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
  368. package/lib/module/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.js +8 -6
  369. package/lib/module/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.js.map +1 -1
  370. package/lib/module/components/Modals/SettingsModals/Referrals/Referrals.js +7 -2
  371. package/lib/module/components/Modals/SettingsModals/Referrals/Referrals.js.map +1 -1
  372. package/lib/module/components/Modals/SettingsModals/SharedStyledComponents.js +7 -3
  373. package/lib/module/components/Modals/SettingsModals/SharedStyledComponents.js.map +1 -1
  374. package/lib/module/components/Modals/SettingsModals/Visibility/RadioInput.js +10 -6
  375. package/lib/module/components/Modals/SettingsModals/Visibility/RadioInput.js.map +1 -1
  376. package/lib/module/components/Modals/SettingsModals/Visibility/VisibilityModal.js +7 -6
  377. package/lib/module/components/Modals/SettingsModals/Visibility/VisibilityModal.js.map +1 -1
  378. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js +11 -24
  379. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
  380. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +512 -248
  381. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  382. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js +79 -48
  383. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
  384. package/lib/module/components/Modals/styledModalComponents.js +67 -16
  385. package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
  386. package/lib/module/components/RoomComponents/ChatRoomItem.js +30 -10
  387. package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
  388. package/lib/module/components/RoomComponents/styled/LastAudioMessage.js +6 -2
  389. package/lib/module/components/RoomComponents/styled/LastAudioMessage.js.map +1 -1
  390. package/lib/module/components/RoomComponents/styled/LastMessageFile.js +22 -3
  391. package/lib/module/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
  392. package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js +17 -3
  393. package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
  394. package/lib/module/components/RoomComponents/styled/LastMessageVideo.js +17 -3
  395. package/lib/module/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
  396. package/lib/module/components/RoomComponents/styled/StyledRoomComponents.js +6 -0
  397. package/lib/module/components/RoomComponents/styled/StyledRoomComponents.js.map +1 -1
  398. package/lib/module/components/Thread/ThreadWrapper.js +9 -2
  399. package/lib/module/components/Thread/ThreadWrapper.js.map +1 -1
  400. package/lib/module/components/Toast/Toast.js +3 -1
  401. package/lib/module/components/Toast/Toast.js.map +1 -1
  402. package/lib/module/components/VideoCalls/VideoCallSession.js +6 -3
  403. package/lib/module/components/VideoCalls/VideoCallSession.js.map +1 -1
  404. package/lib/module/components/styled/AudioMessage.js +18 -12
  405. package/lib/module/components/styled/AudioMessage.js.map +1 -1
  406. package/lib/module/components/styled/Button.js +17 -9
  407. package/lib/module/components/styled/Button.js.map +1 -1
  408. package/lib/module/components/styled/DateLabel.js +8 -5
  409. package/lib/module/components/styled/DateLabel.js.map +1 -1
  410. package/lib/module/components/styled/MediaModal.js +29 -23
  411. package/lib/module/components/styled/MediaModal.js.map +1 -1
  412. package/lib/module/components/styled/MessageImage.js +37 -9
  413. package/lib/module/components/styled/MessageImage.js.map +1 -1
  414. package/lib/module/components/styled/RoomListComponents/index.js +62 -39
  415. package/lib/module/components/styled/RoomListComponents/index.js.map +1 -1
  416. package/lib/module/components/styled/SendInput.js +94 -20
  417. package/lib/module/components/styled/SendInput.js.map +1 -1
  418. package/lib/module/components/styled/StyledComponents.js +75 -25
  419. package/lib/module/components/styled/StyledComponents.js.map +1 -1
  420. package/lib/module/components/styled/StyledInput.js +32 -18
  421. package/lib/module/components/styled/StyledInput.js.map +1 -1
  422. package/lib/module/components/styled/StyledInputComponents/CustomTypingIndicator.js +13 -8
  423. package/lib/module/components/styled/StyledInputComponents/CustomTypingIndicator.js.map +1 -1
  424. package/lib/module/components/styled/StyledInputComponents/MediaComponents.js +20 -9
  425. package/lib/module/components/styled/StyledInputComponents/MediaComponents.js.map +1 -1
  426. package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js +50 -22
  427. package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
  428. package/lib/module/components/styled/TreadLabel.js +6 -3
  429. package/lib/module/components/styled/TreadLabel.js.map +1 -1
  430. package/lib/module/components/styled/UnsupportedType.js +14 -4
  431. package/lib/module/components/styled/UnsupportedType.js.map +1 -1
  432. package/lib/module/components/styled/VideoMessage.js +120 -62
  433. package/lib/module/components/styled/VideoMessage.js.map +1 -1
  434. package/lib/module/context/MessageNotificationContext.js +14 -3
  435. package/lib/module/context/MessageNotificationContext.js.map +1 -1
  436. package/lib/module/context/xmppProvider.js +184 -60
  437. package/lib/module/context/xmppProvider.js.map +1 -1
  438. package/lib/module/helpers/createMessageFromXml.js +19 -1
  439. package/lib/module/helpers/createMessageFromXml.js.map +1 -1
  440. package/lib/module/helpers/ensureScopedChatCache.js +2 -2
  441. package/lib/module/helpers/ensureScopedChatCache.js.map +1 -1
  442. package/lib/module/helpers/getChatBackground.js +22 -0
  443. package/lib/module/helpers/getChatBackground.js.map +1 -0
  444. package/lib/module/helpers/getDateLabelColor.js +4 -1
  445. package/lib/module/helpers/getDateLabelColor.js.map +1 -1
  446. package/lib/module/helpers/getDisplayFileName.js +73 -0
  447. package/lib/module/helpers/getDisplayFileName.js.map +1 -0
  448. package/lib/module/helpers/getIconColor.js +5 -1
  449. package/lib/module/helpers/getIconColor.js.map +1 -1
  450. package/lib/module/helpers/getSenderNameColor.js +4 -1
  451. package/lib/module/helpers/getSenderNameColor.js.map +1 -1
  452. package/lib/module/helpers/getServerReadTimestamp.js +181 -0
  453. package/lib/module/helpers/getServerReadTimestamp.js.map +1 -0
  454. package/lib/module/helpers/historyPreloadScheduler.js +66 -3
  455. package/lib/module/helpers/historyPreloadScheduler.js.map +1 -1
  456. package/lib/module/helpers/initXmppRooms.js +14 -8
  457. package/lib/module/helpers/initXmppRooms.js.map +1 -1
  458. package/lib/module/helpers/insertMessageWithDelimiter.js +52 -9
  459. package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
  460. package/lib/module/helpers/isOwnMessage.js +70 -0
  461. package/lib/module/helpers/isOwnMessage.js.map +1 -0
  462. package/lib/module/helpers/keyboardLayout.js +12 -2
  463. package/lib/module/helpers/keyboardLayout.js.map +1 -1
  464. package/lib/module/helpers/markdownParser.js +27 -5
  465. package/lib/module/helpers/markdownParser.js.map +1 -1
  466. package/lib/module/helpers/mediaLibraryRuntime.js +25 -0
  467. package/lib/module/helpers/mediaLibraryRuntime.js.map +1 -0
  468. package/lib/module/helpers/mimeToExtension.js +6 -13
  469. package/lib/module/helpers/mimeToExtension.js.map +1 -1
  470. package/lib/module/helpers/msgSortableMs.js +32 -0
  471. package/lib/module/helpers/msgSortableMs.js.map +1 -0
  472. package/lib/module/helpers/parseMessageBody.js +82 -24
  473. package/lib/module/helpers/parseMessageBody.js.map +1 -1
  474. package/lib/module/helpers/persistCrypto.js +115 -0
  475. package/lib/module/helpers/persistCrypto.js.map +1 -0
  476. package/lib/module/helpers/pickImageAsset.js +63 -0
  477. package/lib/module/helpers/pickImageAsset.js.map +1 -0
  478. package/lib/module/helpers/pushPayload.js +63 -0
  479. package/lib/module/helpers/pushPayload.js.map +1 -0
  480. package/lib/module/helpers/resolveInitBeforeLoadUser.js +130 -16
  481. package/lib/module/helpers/resolveInitBeforeLoadUser.js.map +1 -1
  482. package/lib/module/helpers/secureFileUrl.js +91 -0
  483. package/lib/module/helpers/secureFileUrl.js.map +1 -0
  484. package/lib/module/helpers/secureKeyValue.js +75 -0
  485. package/lib/module/helpers/secureKeyValue.js.map +1 -0
  486. package/lib/module/helpers/secureStoreRuntime.js +52 -0
  487. package/lib/module/helpers/secureStoreRuntime.js.map +1 -0
  488. package/lib/module/helpers/secureUserStorage.js +72 -0
  489. package/lib/module/helpers/secureUserStorage.js.map +1 -0
  490. package/lib/module/helpers/shallowEqual.js +31 -0
  491. package/lib/module/helpers/shallowEqual.js.map +1 -0
  492. package/lib/module/helpers/sheetGestures.js +26 -0
  493. package/lib/module/helpers/sheetGestures.js.map +1 -0
  494. package/lib/module/hooks/useChatRoomFocus.js +46 -13
  495. package/lib/module/hooks/useChatRoomFocus.js.map +1 -1
  496. package/lib/module/hooks/useChatWrapperInit.js +30 -10
  497. package/lib/module/hooks/useChatWrapperInit.js.map +1 -1
  498. package/lib/module/hooks/useComposing.js +28 -1
  499. package/lib/module/hooks/useComposing.js.map +1 -1
  500. package/lib/module/hooks/useCustomTypingIndicator.js +8 -3
  501. package/lib/module/hooks/useCustomTypingIndicator.js.map +1 -1
  502. package/lib/module/hooks/useFileToken.js +5 -0
  503. package/lib/module/hooks/useFileToken.js.map +1 -0
  504. package/lib/module/hooks/useLogout.js +33 -10
  505. package/lib/module/hooks/useLogout.js.map +1 -1
  506. package/lib/module/hooks/usePendingNotification.js +8 -11
  507. package/lib/module/hooks/usePendingNotification.js.map +1 -1
  508. package/lib/module/hooks/useSendMessage.js +52 -16
  509. package/lib/module/hooks/useSendMessage.js.map +1 -1
  510. package/lib/module/hooks/useTheme.js +30 -0
  511. package/lib/module/hooks/useTheme.js.map +1 -0
  512. package/lib/module/hooks/useUnreadMessagesCounter.js +6 -1
  513. package/lib/module/hooks/useUnreadMessagesCounter.js.map +1 -1
  514. package/lib/module/i18n/strings.js +163 -37
  515. package/lib/module/i18n/strings.js.map +1 -1
  516. package/lib/module/main.js +17 -2
  517. package/lib/module/main.js.map +1 -1
  518. package/lib/module/networking/api-requests/auth.api.js +131 -59
  519. package/lib/module/networking/api-requests/auth.api.js.map +1 -1
  520. package/lib/module/networking/api-requests/push.api.js +119 -45
  521. package/lib/module/networking/api-requests/push.api.js.map +1 -1
  522. package/lib/module/networking/api-requests/roomMembers.api.js +1 -1
  523. package/lib/module/networking/api-requests/roomMembers.api.js.map +1 -1
  524. package/lib/module/networking/api-requests/rooms.api.js +21 -9
  525. package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
  526. package/lib/module/networking/api-requests/user.api.js +64 -7
  527. package/lib/module/networking/api-requests/user.api.js.map +1 -1
  528. package/lib/module/networking/apiClient.js +61 -113
  529. package/lib/module/networking/apiClient.js.map +1 -1
  530. package/lib/module/networking/authRefresh.js +321 -0
  531. package/lib/module/networking/authRefresh.js.map +1 -0
  532. package/lib/module/networking/stanzaHandlers.js +41 -28
  533. package/lib/module/networking/stanzaHandlers.js.map +1 -1
  534. package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js +46 -8
  535. package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
  536. package/lib/module/networking/xmpp/presenceInRoom.xmpp.js +8 -1
  537. package/lib/module/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
  538. package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js +5 -1
  539. package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
  540. package/lib/module/networking/xmppClient.js +124 -8
  541. package/lib/module/networking/xmppClient.js.map +1 -1
  542. package/lib/module/roomStore/chatSettingsSlice.js +26 -7
  543. package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
  544. package/lib/module/roomStore/index.js +37 -4
  545. package/lib/module/roomStore/index.js.map +1 -1
  546. package/lib/module/roomStore/persistence.js +223 -22
  547. package/lib/module/roomStore/persistence.js.map +1 -1
  548. package/lib/module/roomStore/roomsSlice.js +139 -34
  549. package/lib/module/roomStore/roomsSlice.js.map +1 -1
  550. package/lib/module/services/pushRegistration.js +239 -0
  551. package/lib/module/services/pushRegistration.js.map +1 -0
  552. package/lib/module/services/pushSubscriptionService.js +15 -37
  553. package/lib/module/services/pushSubscriptionService.js.map +1 -1
  554. package/lib/module/theme/index.js +7 -0
  555. package/lib/module/theme/index.js.map +1 -0
  556. package/lib/module/theme/styled.d.js +6 -0
  557. package/lib/module/theme/styled.d.js.map +1 -0
  558. package/lib/module/theme/theme.js +131 -0
  559. package/lib/module/theme/theme.js.map +1 -0
  560. package/lib/module/version.js +1 -1
  561. package/lib/typescript/assets/EmptyChatIllustration.d.ts +1 -0
  562. package/lib/typescript/assets/EmptyChatIllustration.d.ts.map +1 -1
  563. package/lib/typescript/assets/icons.d.ts +24 -0
  564. package/lib/typescript/assets/icons.d.ts.map +1 -1
  565. package/lib/typescript/components/AuthForms/Login.d.ts.map +1 -1
  566. package/lib/typescript/components/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  567. package/lib/typescript/components/ExampleComponents/CustomMessage.d.ts.map +1 -1
  568. package/lib/typescript/components/Header/HeaderRoomList.d.ts.map +1 -1
  569. package/lib/typescript/components/InputComponents/Search.d.ts.map +1 -1
  570. package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
  571. package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
  572. package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
  573. package/lib/typescript/components/MainComponents/LanguageSelectorModal.d.ts.map +1 -1
  574. package/lib/typescript/components/MainComponents/LoginWrapper.d.ts.map +1 -1
  575. package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
  576. package/lib/typescript/components/MainComponents/MessageContainer.d.ts.map +1 -1
  577. package/lib/typescript/components/MainComponents/MessageList.d.ts +10 -1
  578. package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
  579. package/lib/typescript/components/MainComponents/ProfileImagePlaceholder.d.ts.map +1 -1
  580. package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
  581. package/lib/typescript/components/MainComponents/RoomList.d.ts +7 -0
  582. package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
  583. package/lib/typescript/components/MainComponents/Select.d.ts.map +1 -1
  584. package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts +3 -0
  585. package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts.map +1 -1
  586. package/lib/typescript/components/MessageBubble/BottomReplyContainer.d.ts.map +1 -1
  587. package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
  588. package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts.map +1 -1
  589. package/lib/typescript/components/MessageBubble/MessageReaction.d.ts.map +1 -1
  590. package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts +9 -0
  591. package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
  592. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts +10 -0
  593. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
  594. package/lib/typescript/components/Modals/ChatProfileModal/DeleteChatModal.d.ts.map +1 -1
  595. package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts +9 -0
  596. package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts.map +1 -0
  597. package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
  598. package/lib/typescript/components/Modals/FilePreviewModal/PdfView.d.ts.map +1 -1
  599. package/lib/typescript/components/Modals/Modal/Modal.d.ts.map +1 -1
  600. package/lib/typescript/components/Modals/ModalHeaderComponent.d.ts.map +1 -1
  601. package/lib/typescript/components/Modals/ModalWrapper/ModalWrapper.d.ts.map +1 -1
  602. package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts +4 -2
  603. package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts.map +1 -1
  604. package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts +1 -1
  605. package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts.map +1 -1
  606. package/lib/typescript/components/Modals/NewChatModal/UpdNewChatModal.d.ts.map +1 -1
  607. package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts +75 -0
  608. package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts.map +1 -0
  609. package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts +25 -0
  610. package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts.map +1 -0
  611. package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts +6 -1
  612. package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts.map +1 -1
  613. package/lib/typescript/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.d.ts.map +1 -1
  614. package/lib/typescript/components/Modals/SettingsModals/Referrals/Referrals.d.ts.map +1 -1
  615. package/lib/typescript/components/Modals/SettingsModals/SharedStyledComponents.d.ts +2 -2
  616. package/lib/typescript/components/Modals/SettingsModals/SharedStyledComponents.d.ts.map +1 -1
  617. package/lib/typescript/components/Modals/SettingsModals/Visibility/RadioInput.d.ts.map +1 -1
  618. package/lib/typescript/components/Modals/SettingsModals/Visibility/VisibilityModal.d.ts.map +1 -1
  619. package/lib/typescript/components/Modals/UserProfileModal/EditUserModal.d.ts.map +1 -1
  620. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts +16 -0
  621. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
  622. package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts +1 -0
  623. package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts.map +1 -1
  624. package/lib/typescript/components/Modals/styledModalComponents.d.ts +2 -0
  625. package/lib/typescript/components/Modals/styledModalComponents.d.ts.map +1 -1
  626. package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts.map +1 -1
  627. package/lib/typescript/components/RoomComponents/styled/LastAudioMessage.d.ts.map +1 -1
  628. package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts +1 -1
  629. package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts.map +1 -1
  630. package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts +1 -1
  631. package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts.map +1 -1
  632. package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts +1 -1
  633. package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts.map +1 -1
  634. package/lib/typescript/components/RoomComponents/styled/StyledRoomComponents.d.ts.map +1 -1
  635. package/lib/typescript/components/Thread/ThreadWrapper.d.ts.map +1 -1
  636. package/lib/typescript/components/VideoCalls/VideoCallSession.d.ts.map +1 -1
  637. package/lib/typescript/components/styled/AudioMessage.d.ts.map +1 -1
  638. package/lib/typescript/components/styled/Button.d.ts.map +1 -1
  639. package/lib/typescript/components/styled/DateLabel.d.ts.map +1 -1
  640. package/lib/typescript/components/styled/MediaModal.d.ts +2 -2
  641. package/lib/typescript/components/styled/MediaModal.d.ts.map +1 -1
  642. package/lib/typescript/components/styled/MessageImage.d.ts +14 -0
  643. package/lib/typescript/components/styled/MessageImage.d.ts.map +1 -1
  644. package/lib/typescript/components/styled/RoomListComponents/index.d.ts.map +1 -1
  645. package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
  646. package/lib/typescript/components/styled/StyledComponents.d.ts.map +1 -1
  647. package/lib/typescript/components/styled/StyledInput.d.ts.map +1 -1
  648. package/lib/typescript/components/styled/StyledInputComponents/MediaComponents.d.ts.map +1 -1
  649. package/lib/typescript/components/styled/StyledInputComponents/StyledInputComponents.d.ts.map +1 -1
  650. package/lib/typescript/components/styled/TreadLabel.d.ts.map +1 -1
  651. package/lib/typescript/components/styled/UnsupportedType.d.ts.map +1 -1
  652. package/lib/typescript/components/styled/VideoMessage.d.ts +8 -0
  653. package/lib/typescript/components/styled/VideoMessage.d.ts.map +1 -1
  654. package/lib/typescript/context/MessageNotificationContext.d.ts.map +1 -1
  655. package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
  656. package/lib/typescript/helpers/createMessageFromXml.d.ts.map +1 -1
  657. package/lib/typescript/helpers/getAvatarColor.d.ts +1 -1
  658. package/lib/typescript/helpers/getChatBackground.d.ts +15 -0
  659. package/lib/typescript/helpers/getChatBackground.d.ts.map +1 -0
  660. package/lib/typescript/helpers/getDateLabelColor.d.ts +3 -7
  661. package/lib/typescript/helpers/getDateLabelColor.d.ts.map +1 -1
  662. package/lib/typescript/helpers/getDisplayFileName.d.ts +49 -0
  663. package/lib/typescript/helpers/getDisplayFileName.d.ts.map +1 -0
  664. package/lib/typescript/helpers/getIconColor.d.ts +4 -7
  665. package/lib/typescript/helpers/getIconColor.d.ts.map +1 -1
  666. package/lib/typescript/helpers/getSenderNameColor.d.ts +3 -7
  667. package/lib/typescript/helpers/getSenderNameColor.d.ts.map +1 -1
  668. package/lib/typescript/helpers/getServerReadTimestamp.d.ts +108 -0
  669. package/lib/typescript/helpers/getServerReadTimestamp.d.ts.map +1 -0
  670. package/lib/typescript/helpers/historyPreloadScheduler.d.ts.map +1 -1
  671. package/lib/typescript/helpers/initXmppRooms.d.ts.map +1 -1
  672. package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts +1 -1
  673. package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
  674. package/lib/typescript/helpers/isOwnMessage.d.ts +36 -0
  675. package/lib/typescript/helpers/isOwnMessage.d.ts.map +1 -0
  676. package/lib/typescript/helpers/keyboardLayout.d.ts +5 -1
  677. package/lib/typescript/helpers/keyboardLayout.d.ts.map +1 -1
  678. package/lib/typescript/helpers/markdownParser.d.ts +8 -1
  679. package/lib/typescript/helpers/markdownParser.d.ts.map +1 -1
  680. package/lib/typescript/helpers/mediaLibraryRuntime.d.ts +3 -0
  681. package/lib/typescript/helpers/mediaLibraryRuntime.d.ts.map +1 -0
  682. package/lib/typescript/helpers/mimeToExtension.d.ts +0 -15
  683. package/lib/typescript/helpers/mimeToExtension.d.ts.map +1 -1
  684. package/lib/typescript/helpers/msgSortableMs.d.ts +2 -0
  685. package/lib/typescript/helpers/msgSortableMs.d.ts.map +1 -0
  686. package/lib/typescript/helpers/parseMessageBody.d.ts +8 -1
  687. package/lib/typescript/helpers/parseMessageBody.d.ts.map +1 -1
  688. package/lib/typescript/helpers/persistCrypto.d.ts +13 -0
  689. package/lib/typescript/helpers/persistCrypto.d.ts.map +1 -0
  690. package/lib/typescript/helpers/pickImageAsset.d.ts +27 -0
  691. package/lib/typescript/helpers/pickImageAsset.d.ts.map +1 -0
  692. package/lib/typescript/helpers/pushPayload.d.ts +7 -0
  693. package/lib/typescript/helpers/pushPayload.d.ts.map +1 -0
  694. package/lib/typescript/helpers/resolveInitBeforeLoadUser.d.ts.map +1 -1
  695. package/lib/typescript/helpers/secureFileUrl.d.ts +7 -0
  696. package/lib/typescript/helpers/secureFileUrl.d.ts.map +1 -0
  697. package/lib/typescript/helpers/secureKeyValue.d.ts +13 -0
  698. package/lib/typescript/helpers/secureKeyValue.d.ts.map +1 -0
  699. package/lib/typescript/helpers/secureStoreRuntime.d.ts +29 -0
  700. package/lib/typescript/helpers/secureStoreRuntime.d.ts.map +1 -0
  701. package/lib/typescript/helpers/secureUserStorage.d.ts +23 -0
  702. package/lib/typescript/helpers/secureUserStorage.d.ts.map +1 -0
  703. package/lib/typescript/helpers/shallowEqual.d.ts +11 -0
  704. package/lib/typescript/helpers/shallowEqual.d.ts.map +1 -0
  705. package/lib/typescript/helpers/sheetGestures.d.ts +20 -0
  706. package/lib/typescript/helpers/sheetGestures.d.ts.map +1 -0
  707. package/lib/typescript/hooks/useChatRoomFocus.d.ts +4 -1
  708. package/lib/typescript/hooks/useChatRoomFocus.d.ts.map +1 -1
  709. package/lib/typescript/hooks/useChatWrapperInit.d.ts.map +1 -1
  710. package/lib/typescript/hooks/useComposing.d.ts.map +1 -1
  711. package/lib/typescript/hooks/useCustomTypingIndicator.d.ts +2 -0
  712. package/lib/typescript/hooks/useCustomTypingIndicator.d.ts.map +1 -1
  713. package/lib/typescript/hooks/useFileToken.d.ts +2 -0
  714. package/lib/typescript/hooks/useFileToken.d.ts.map +1 -0
  715. package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
  716. package/lib/typescript/hooks/usePendingNotification.d.ts.map +1 -1
  717. package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
  718. package/lib/typescript/hooks/useTheme.d.ts +16 -0
  719. package/lib/typescript/hooks/useTheme.d.ts.map +1 -0
  720. package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts +1 -0
  721. package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts.map +1 -1
  722. package/lib/typescript/i18n/strings.d.ts.map +1 -1
  723. package/lib/typescript/main.d.ts +16 -2
  724. package/lib/typescript/main.d.ts.map +1 -1
  725. package/lib/typescript/networking/api-requests/auth.api.d.ts +3 -1
  726. package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
  727. package/lib/typescript/networking/api-requests/push.api.d.ts +46 -3
  728. package/lib/typescript/networking/api-requests/push.api.d.ts.map +1 -1
  729. package/lib/typescript/networking/api-requests/rooms.api.d.ts +1 -0
  730. package/lib/typescript/networking/api-requests/rooms.api.d.ts.map +1 -1
  731. package/lib/typescript/networking/api-requests/user.api.d.ts +27 -0
  732. package/lib/typescript/networking/api-requests/user.api.d.ts.map +1 -1
  733. package/lib/typescript/networking/apiClient.d.ts +12 -6
  734. package/lib/typescript/networking/apiClient.d.ts.map +1 -1
  735. package/lib/typescript/networking/authRefresh.d.ts +95 -0
  736. package/lib/typescript/networking/authRefresh.d.ts.map +1 -0
  737. package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
  738. package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts +10 -2
  739. package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts.map +1 -1
  740. package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts.map +1 -1
  741. package/lib/typescript/networking/xmpp/subscribeToRoomMessages.xmpp.d.ts.map +1 -1
  742. package/lib/typescript/networking/xmppClient.d.ts +14 -0
  743. package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
  744. package/lib/typescript/roomStore/chatSettingsSlice.d.ts +16 -0
  745. package/lib/typescript/roomStore/chatSettingsSlice.d.ts.map +1 -1
  746. package/lib/typescript/roomStore/index.d.ts.map +1 -1
  747. package/lib/typescript/roomStore/persistence.d.ts +18 -1
  748. package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
  749. package/lib/typescript/roomStore/roomsSlice.d.ts +43 -3
  750. package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
  751. package/lib/typescript/services/pushRegistration.d.ts +21 -0
  752. package/lib/typescript/services/pushRegistration.d.ts.map +1 -0
  753. package/lib/typescript/services/pushSubscriptionService.d.ts +1 -5
  754. package/lib/typescript/services/pushSubscriptionService.d.ts.map +1 -1
  755. package/lib/typescript/theme/index.d.ts +5 -0
  756. package/lib/typescript/theme/index.d.ts.map +1 -0
  757. package/lib/typescript/theme/theme.d.ts +113 -0
  758. package/lib/typescript/theme/theme.d.ts.map +1 -0
  759. package/lib/typescript/types/models/room.model.d.ts +1 -0
  760. package/lib/typescript/types/models/room.model.d.ts.map +1 -1
  761. package/lib/typescript/types/types.d.ts +70 -5
  762. package/lib/typescript/types/types.d.ts.map +1 -1
  763. package/lib/typescript/version.d.ts +1 -1
  764. package/package.json +41 -28
  765. package/src/assets/EmptyChatIllustration.tsx +7 -5
  766. package/src/assets/icons.tsx +72 -9
  767. package/src/components/AuthForms/Login.tsx +14 -12
  768. package/src/components/ContextMenu/ContextMenuComponents.tsx +4 -4
  769. package/src/components/DropdownMenu/DropdownMenu.tsx +14 -6
  770. package/src/components/ExampleComponents/CustomMessage.tsx +9 -8
  771. package/src/components/ExampleComponents/CustomTypingIndicatorExamples.tsx +6 -6
  772. package/src/components/Header/HeaderRoomList.tsx +35 -8
  773. package/src/components/InputComponents/Search.tsx +7 -4
  774. package/src/components/MainComponents/ChatHeader.tsx +18 -6
  775. package/src/components/MainComponents/ChatRoom.tsx +164 -15
  776. package/src/components/MainComponents/ChatWrapper.tsx +44 -26
  777. package/src/components/MainComponents/LanguageSelectorModal.tsx +33 -7
  778. package/src/components/MainComponents/LoginWrapper.tsx +1 -0
  779. package/src/components/MainComponents/MediaMessage.tsx +63 -26
  780. package/src/components/MainComponents/MessageContainer.tsx +5 -1
  781. package/src/components/MainComponents/MessageList.tsx +36 -7
  782. package/src/components/MainComponents/ProfileImagePlaceholder.tsx +21 -14
  783. package/src/components/MainComponents/RNStyled.tsx +4 -4
  784. package/src/components/MainComponents/ReduxWrapper.tsx +23 -7
  785. package/src/components/MainComponents/RoomList.tsx +243 -40
  786. package/src/components/MainComponents/Select.tsx +13 -8
  787. package/src/components/Menu/HeaderRoomListMenu.tsx +347 -77
  788. package/src/components/MessageBubble/BottomReplyContainer.tsx +16 -11
  789. package/src/components/MessageBubble/Message.tsx +48 -25
  790. package/src/components/MessageBubble/MessageInteractions.tsx +17 -4
  791. package/src/components/MessageBubble/MessageReaction.tsx +9 -4
  792. package/src/components/Modals/AddMembersModal/AddMembersModal.tsx +2 -2
  793. package/src/components/Modals/AttachSheet/AttachSheet.tsx +376 -106
  794. package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +639 -283
  795. package/src/components/Modals/ChatProfileModal/DeleteChatModal.tsx +6 -4
  796. package/src/components/Modals/ChatProfileModal/ReportChatModal.tsx +248 -0
  797. package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +93 -47
  798. package/src/components/Modals/FilePreviewModal/PdfView.tsx +2 -1
  799. package/src/components/Modals/Modal/Modal.tsx +7 -0
  800. package/src/components/Modals/ModalHeaderComponent.tsx +9 -2
  801. package/src/components/Modals/ModalWrapper/ModalWrapper.tsx +14 -6
  802. package/src/components/Modals/NewChatModal/ModalContent.tsx +8 -5
  803. package/src/components/Modals/NewChatModal/NewChatModal.tsx +223 -119
  804. package/src/components/Modals/NewChatModal/UpdNewChatModal.tsx +12 -1
  805. package/src/components/Modals/ProfileHeader/ProfileHeader.tsx +624 -0
  806. package/src/components/Modals/ProfileHeader/ProfileMenu.tsx +224 -0
  807. package/src/components/Modals/SelectUsersModal/SelectUsersModal.tsx +16 -7
  808. package/src/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.tsx +8 -6
  809. package/src/components/Modals/SettingsModals/Referrals/Referrals.tsx +5 -3
  810. package/src/components/Modals/SettingsModals/SharedStyledComponents.ts +4 -4
  811. package/src/components/Modals/SettingsModals/Visibility/RadioInput.tsx +9 -5
  812. package/src/components/Modals/SettingsModals/Visibility/VisibilityModal.tsx +7 -7
  813. package/src/components/Modals/UserProfileModal/EditUserModal.tsx +12 -26
  814. package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +621 -307
  815. package/src/components/Modals/UserSettingsModal/UserSettingsModal.tsx +84 -58
  816. package/src/components/Modals/styledModalComponents.tsx +31 -16
  817. package/src/components/RoomComponents/ChatRoomItem.tsx +30 -6
  818. package/src/components/RoomComponents/styled/LastAudioMessage.tsx +4 -2
  819. package/src/components/RoomComponents/styled/LastMessageFile.tsx +28 -4
  820. package/src/components/RoomComponents/styled/LastMessagePhoto.tsx +18 -3
  821. package/src/components/RoomComponents/styled/LastMessageVideo.tsx +18 -3
  822. package/src/components/RoomComponents/styled/StyledRoomComponents.ts +2 -0
  823. package/src/components/Thread/ThreadWrapper.tsx +6 -5
  824. package/src/components/Toast/Toast.tsx +1 -1
  825. package/src/components/VideoCalls/VideoCallSession.tsx +8 -3
  826. package/src/components/styled/AudioMessage.tsx +14 -10
  827. package/src/components/styled/Button.tsx +15 -8
  828. package/src/components/styled/DateLabel.tsx +7 -3
  829. package/src/components/styled/MediaModal.tsx +30 -25
  830. package/src/components/styled/MessageImage.tsx +53 -7
  831. package/src/components/styled/RoomListComponents/index.tsx +60 -35
  832. package/src/components/styled/SendInput.tsx +106 -20
  833. package/src/components/styled/StyledComponents.ts +38 -25
  834. package/src/components/styled/StyledInput.tsx +35 -21
  835. package/src/components/styled/StyledInputComponents/CustomTypingIndicator.tsx +8 -8
  836. package/src/components/styled/StyledInputComponents/MediaComponents.tsx +20 -7
  837. package/src/components/styled/StyledInputComponents/StyledInputComponents.tsx +26 -23
  838. package/src/components/styled/TreadLabel.tsx +9 -3
  839. package/src/components/styled/UnsupportedType.tsx +14 -4
  840. package/src/components/styled/VideoMessage.tsx +131 -54
  841. package/src/context/MessageNotificationContext.tsx +18 -4
  842. package/src/context/xmppProvider.tsx +216 -57
  843. package/src/helpers/createMessageFromXml.ts +20 -1
  844. package/src/helpers/ensureScopedChatCache.ts +2 -2
  845. package/src/helpers/getChatBackground.ts +20 -0
  846. package/src/helpers/getDateLabelColor.ts +5 -3
  847. package/src/helpers/getDisplayFileName.ts +87 -0
  848. package/src/helpers/getIconColor.ts +6 -3
  849. package/src/helpers/getSenderNameColor.ts +5 -3
  850. package/src/helpers/getServerReadTimestamp.ts +197 -0
  851. package/src/helpers/historyPreloadScheduler.ts +80 -3
  852. package/src/helpers/initXmppRooms.tsx +14 -10
  853. package/src/helpers/insertMessageWithDelimiter.ts +55 -19
  854. package/src/helpers/isOwnMessage.ts +90 -0
  855. package/src/helpers/keyboardLayout.ts +23 -2
  856. package/src/helpers/markdownParser.tsx +29 -5
  857. package/src/helpers/mediaLibraryRuntime.ts +25 -0
  858. package/src/helpers/mimeToExtension.ts +6 -22
  859. package/src/helpers/msgSortableMs.ts +25 -0
  860. package/src/helpers/parseMessageBody.tsx +79 -26
  861. package/src/helpers/persistCrypto.ts +127 -0
  862. package/src/helpers/pickImageAsset.ts +68 -0
  863. package/src/helpers/pushPayload.ts +62 -0
  864. package/src/helpers/resolveInitBeforeLoadUser.ts +125 -18
  865. package/src/helpers/secureFileUrl.ts +103 -0
  866. package/src/helpers/secureKeyValue.ts +80 -0
  867. package/src/helpers/secureStoreRuntime.ts +62 -0
  868. package/src/helpers/secureUserStorage.ts +80 -0
  869. package/src/helpers/shallowEqual.ts +33 -0
  870. package/src/helpers/sheetGestures.ts +25 -0
  871. package/src/hooks/useChatRoomFocus.ts +49 -9
  872. package/src/hooks/useChatWrapperInit.ts +30 -10
  873. package/src/hooks/useComposing.tsx +37 -1
  874. package/src/hooks/useCustomTypingIndicator.tsx +7 -3
  875. package/src/hooks/useFileToken.ts +7 -0
  876. package/src/hooks/useLogout.tsx +39 -12
  877. package/src/hooks/usePendingNotification.ts +5 -11
  878. package/src/hooks/useSendMessage.tsx +60 -15
  879. package/src/hooks/useTheme.ts +41 -0
  880. package/src/hooks/useUnreadMessagesCounter.ts +11 -0
  881. package/src/i18n/strings.ts +163 -37
  882. package/src/main.ts +57 -2
  883. package/src/networking/api-requests/auth.api.ts +156 -48
  884. package/src/networking/api-requests/push.api.ts +185 -62
  885. package/src/networking/api-requests/roomMembers.api.ts +1 -1
  886. package/src/networking/api-requests/rooms.api.ts +18 -9
  887. package/src/networking/api-requests/user.api.ts +79 -7
  888. package/src/networking/apiClient.ts +68 -123
  889. package/src/networking/authRefresh.ts +451 -0
  890. package/src/networking/stanzaHandlers.ts +44 -28
  891. package/src/networking/xmpp/flushLastViewedToPrivateStore.ts +71 -10
  892. package/src/networking/xmpp/presenceInRoom.xmpp.ts +6 -1
  893. package/src/networking/xmpp/subscribeToRoomMessages.xmpp.ts +12 -1
  894. package/src/networking/xmppClient.ts +141 -9
  895. package/src/roomStore/chatSettingsSlice.ts +34 -10
  896. package/src/roomStore/index.ts +40 -4
  897. package/src/roomStore/persistence.ts +234 -24
  898. package/src/roomStore/roomsSlice.ts +161 -29
  899. package/src/services/pushRegistration.ts +356 -0
  900. package/src/services/pushSubscriptionService.ts +18 -47
  901. package/src/theme/index.ts +10 -0
  902. package/src/theme/styled.d.ts +9 -0
  903. package/src/theme/theme.ts +243 -0
  904. package/src/types/models/room.model.ts +1 -0
  905. package/src/types/types.ts +96 -5
  906. package/src/version.ts +1 -1
  907. package/lib/commonjs/context/PushNotificationProvider.js +0 -79
  908. package/lib/commonjs/context/PushNotificationProvider.js.map +0 -1
  909. package/lib/commonjs/hooks/usePushNotifications.js +0 -110
  910. package/lib/commonjs/hooks/usePushNotifications.js.map +0 -1
  911. package/lib/commonjs/services/pushNotifications.js +0 -143
  912. package/lib/commonjs/services/pushNotifications.js.map +0 -1
  913. package/lib/module/context/PushNotificationProvider.js +0 -79
  914. package/lib/module/context/PushNotificationProvider.js.map +0 -1
  915. package/lib/module/hooks/usePushNotifications.js +0 -106
  916. package/lib/module/hooks/usePushNotifications.js.map +0 -1
  917. package/lib/module/services/pushNotifications.js +0 -130
  918. package/lib/module/services/pushNotifications.js.map +0 -1
  919. package/lib/typescript/context/PushNotificationProvider.d.ts +0 -2
  920. package/lib/typescript/context/PushNotificationProvider.d.ts.map +0 -1
  921. package/lib/typescript/hooks/usePushNotifications.d.ts +0 -5
  922. package/lib/typescript/hooks/usePushNotifications.d.ts.map +0 -1
  923. package/lib/typescript/services/pushNotifications.d.ts +0 -10
  924. package/lib/typescript/services/pushNotifications.d.ts.map +0 -1
  925. package/src/context/PushNotificationProvider.tsx +0 -78
  926. package/src/hooks/usePushNotifications.ts +0 -131
  927. package/src/services/pushNotifications.ts +0 -170
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import AsyncStorage from '@react-native-async-storage/async-storage';
4
+ import { encryptForPersist, decryptFromPersist } from '../helpers/persistCrypto';
4
5
  // -------------------------------------------------------------------
5
6
  // Lightweight RN persistence layer. Mirrors what redux-persist gives
6
7
  // the web component:
@@ -10,16 +11,32 @@ import AsyncStorage from '@react-native-async-storage/async-storage';
10
11
  // - cap each room's messages to the most recent MESSAGE_LIMIT (100)
11
12
  // - debounced writes (200ms) on relevant action types
12
13
  //
13
- // Not encrypted. We rely on AsyncStorage's per-app sandbox.
14
+ // AES-256-CBC at rest (see `helpers/persistCrypto.ts`): the JSON blob
15
+ // under each key below is encrypted before it reaches AsyncStorage, with
16
+ // the symmetric key held in the platform Keychain/Keystore. `user` here
17
+ // is already secret-free (see `sanitizeUser`) — the encryption is for
18
+ // the message bodies in `rooms`, which aren't.
14
19
  // -------------------------------------------------------------------
15
20
 
16
21
  const KEY_CHAT = '@ethora/persist:chatSettingStore';
17
22
  const KEY_ROOMS = '@ethora/persist:rooms';
23
+ // bug #39: a failed send needs to survive a relaunch as "failed / tap
24
+ // to retry", not silently render as delivered. `roomHeapStore.failedMessages`
25
+ // is the map the bubble reads (`isFailed = failedMessages[id]`, see
26
+ // Message.tsx / useMessageHeapState): it lives in a separate, previously
27
+ // non-persisted slice from `rooms`, so it gets its own key here.
28
+ const KEY_HEAP = '@ethora/persist:roomHeap';
18
29
 
19
30
  // Per-room message cap on disk. Mirror this value in `roomsSlice`'s
20
31
  // in-memory cap (see `enforceMessageCap`) so the runtime and persisted
21
32
  // shapes stay aligned.
22
33
  export const MESSAGE_LIMIT = 100;
34
+
35
+ // Defensive cap on the number of failed-message payloads written to
36
+ // disk. In practice this map only grows while the user is actively
37
+ // sending offline, but a runaway sender (or a bug that never clears an
38
+ // entry) must not turn this key into an unbounded write.
39
+ export const MAX_PERSISTED_FAILED_MESSAGES = 200;
23
40
  const sanitizeUser = user => {
24
41
  if (!user) {
25
42
  return null;
@@ -60,7 +77,14 @@ const PERSISTED_MESSAGE_FIELDS = ['id', 'xmppId', 'xmppFrom', 'body', 'date', 't
60
77
  // translated message, since the cache never had a translation to show
61
78
  // in the first place. Persisting it here is what lets the very first
62
79
  // paint already be translated, the way the live path already is.
63
- 'translations', 'callLog'];
80
+ 'translations', 'callLog',
81
+ // bug #39: without this, a message that was still in flight (no
82
+ // server echo yet) at kill time comes back from disk indistinguishable
83
+ // from a normal delivered message, so the bubble renders it as sent.
84
+ // Persisting `pending` lets the boot-time scan (see
85
+ // computeBootTimeFailures below) find exactly the messages that never
86
+ // got confirmed and flip them to failed instead.
87
+ 'pending'];
64
88
 
65
89
  // The sender identity that rides along on every message over the wire
66
90
  // (senderFirstName / senderLastName / photo, which createMessageFromXml
@@ -151,6 +175,167 @@ const sanitizeRooms = rooms => {
151
175
  }
152
176
  return out;
153
177
  };
178
+
179
+ // Only the fields retryMessage actually needs to replay the send (see
180
+ // FailedMessagePayload / useSendMessage.retryMessage). In particular, the
181
+ // media `data` blob is trimmed to `uri/type/name/size` (the picker never
182
+ // hands us auth material, but this stays defensive against a future
183
+ // picker change smuggling extra fields, or a huge inline payload, into
184
+ // `data`).
185
+ const sanitizeMediaData = data => {
186
+ if (!data || typeof data !== 'object') {
187
+ return {};
188
+ }
189
+ const out = {};
190
+ if (typeof data.uri === 'string') {
191
+ out.uri = data.uri;
192
+ }
193
+ if (typeof data.type === 'string') {
194
+ out.type = data.type;
195
+ }
196
+ if (typeof data.name === 'string') {
197
+ out.name = data.name;
198
+ }
199
+ if (typeof data.size === 'number') {
200
+ out.size = data.size;
201
+ }
202
+ return out;
203
+ };
204
+ const sanitizeFailedMessagePayload = payload => {
205
+ if (!payload || typeof payload !== 'object') {
206
+ return null;
207
+ }
208
+ if (!payload.id || typeof payload.id !== 'string') {
209
+ return null;
210
+ }
211
+ if (!payload.roomJID || typeof payload.roomJID !== 'string') {
212
+ return null;
213
+ }
214
+ if (payload.kind === 'media') {
215
+ return {
216
+ kind: 'media',
217
+ id: payload.id,
218
+ roomJID: payload.roomJID,
219
+ data: sanitizeMediaData(payload.data),
220
+ type: typeof payload.type === 'string' ? payload.type : '',
221
+ isReply: payload.isReply,
222
+ isChecked: payload.isChecked,
223
+ mainMessage: payload.mainMessage
224
+ };
225
+ }
226
+ if (payload.kind === 'text') {
227
+ return {
228
+ kind: 'text',
229
+ id: payload.id,
230
+ roomJID: payload.roomJID,
231
+ body: typeof payload.body === 'string' ? payload.body : '',
232
+ isReply: payload.isReply,
233
+ isChecked: payload.isChecked,
234
+ mainMessage: payload.mainMessage
235
+ };
236
+ }
237
+ return null;
238
+ };
239
+ const sanitizeFailedMessages = failedMessages => {
240
+ if (!failedMessages || typeof failedMessages !== 'object') {
241
+ return {};
242
+ }
243
+ const out = {};
244
+ let count = 0;
245
+ for (const [id, payload] of Object.entries(failedMessages)) {
246
+ if (count >= MAX_PERSISTED_FAILED_MESSAGES) {
247
+ break;
248
+ }
249
+ const clean = sanitizeFailedMessagePayload(payload);
250
+ if (clean) {
251
+ out[id] = clean;
252
+ count++;
253
+ }
254
+ }
255
+ return out;
256
+ };
257
+
258
+ // -------------------------------------------------------------------
259
+ // Boot-time pending -> failed conversion (bug #39).
260
+ //
261
+ // `messageHeap` (the "still sending" buffer) is intentionally NOT
262
+ // persisted: it's a process-lifetime thing. That means on a cold start
263
+ // there is no such thing as "still sending": a persisted message that
264
+ // carries `pending: true` never got a server echo NOR got the chance to
265
+ // trip the in-session watchdog (see PENDING_WATCHDOG_MS in
266
+ // useSendMessage.tsx) before the process died. It must render as failed
267
+ // with a working retry, not as delivered and not as stuck "sending...".
268
+ //
269
+ // Reconstructs the same FailedMessagePayload shape the live send path
270
+ // builds in useSendMessage (markMessageFailed calls), from the fields we
271
+ // persist per message.
272
+ // -------------------------------------------------------------------
273
+
274
+ export function reconstructFailedMessagePayload(message, roomJID) {
275
+ if (!message?.id || !roomJID) {
276
+ return null;
277
+ }
278
+ const isReply = !!message.isReply;
279
+ const isChecked = message.showInChannel === 'true';
280
+ const mainMessage = message.mainMessage;
281
+ if (message.isMediafile === 'true') {
282
+ return {
283
+ kind: 'media',
284
+ id: message.id,
285
+ roomJID,
286
+ data: sanitizeMediaData({
287
+ uri: message.location,
288
+ name: message.fileName,
289
+ type: message.mimetype,
290
+ size: message.size !== undefined && message.size !== null ? Number(message.size) : undefined
291
+ }),
292
+ type: message.mimetype || '',
293
+ isReply,
294
+ isChecked,
295
+ mainMessage
296
+ };
297
+ }
298
+ return {
299
+ kind: 'text',
300
+ id: message.id,
301
+ roomJID,
302
+ body: message.body || '',
303
+ isReply,
304
+ isChecked,
305
+ mainMessage
306
+ };
307
+ }
308
+
309
+ /**
310
+ * Scan every persisted room for messages still `pending: true` that
311
+ * DON'T already have a restored failure entry (those are handled by the
312
+ * caller separately, from the persisted `failedMessages` map), and
313
+ * synthesize a retry-able FailedMessagePayload for each. Pure function:
314
+ * the caller (roomStore/index.ts) is responsible for dispatching
315
+ * `markMessageFailed` for the results.
316
+ */
317
+ export function computeBootTimeFailures(rooms, alreadyFailed) {
318
+ if (!rooms || typeof rooms !== 'object') {
319
+ return [];
320
+ }
321
+ const out = [];
322
+ for (const [jid, room] of Object.entries(rooms)) {
323
+ const messages = Array.isArray(room?.messages) ? room.messages : [];
324
+ for (const message of messages) {
325
+ if (!message || !message.pending) {
326
+ continue;
327
+ }
328
+ if (alreadyFailed && alreadyFailed[message.id]) {
329
+ continue;
330
+ }
331
+ const payload = reconstructFailedMessagePayload(message, jid);
332
+ if (payload) {
333
+ out.push(payload);
334
+ }
335
+ }
336
+ }
337
+ return out;
338
+ }
154
339
  let writeTimer = null;
155
340
 
156
341
  /**
@@ -160,25 +345,31 @@ let writeTimer = null;
160
345
  export const persistenceMiddleware = storeAPI => next => action => {
161
346
  const result = next(action);
162
347
  const type = action?.type || '';
163
- if (!type.startsWith('roomMessages/') && !type.startsWith('chat/setUser') && !type.startsWith('chat/updateUser') && !type.startsWith('chat/refreshTokens') && !type.startsWith('chat/logout')) {
348
+ if (!type.startsWith('roomMessages/') && !type.startsWith('roomHeapStore/') && !type.startsWith('chat/setUser') && !type.startsWith('chat/updateUser') && !type.startsWith('chat/refreshTokens') && !type.startsWith('chat/logout')) {
164
349
  return result;
165
350
  }
166
351
  if (writeTimer) {
167
352
  clearTimeout(writeTimer);
168
353
  }
169
354
  writeTimer = setTimeout(() => {
170
- try {
171
- const state = storeAPI.getState();
172
- const chatPayload = {
173
- user: sanitizeUser(state.chatSettingStore?.user)
174
- };
175
- const roomsPayload = {
176
- rooms: sanitizeRooms(state.rooms?.rooms || {})
177
- };
178
- AsyncStorage.multiSet([[KEY_CHAT, JSON.stringify(chatPayload)], [KEY_ROOMS, JSON.stringify(roomsPayload)]]).catch(e => console.warn('persist write failed', e));
179
- } catch (e) {
180
- console.warn('persist serialize failed', e);
181
- }
355
+ (async () => {
356
+ try {
357
+ const state = storeAPI.getState();
358
+ const chatPayload = {
359
+ user: sanitizeUser(state.chatSettingStore?.user)
360
+ };
361
+ const roomsPayload = {
362
+ rooms: sanitizeRooms(state.rooms?.rooms || {})
363
+ };
364
+ const heapPayload = {
365
+ failedMessages: sanitizeFailedMessages(state.roomHeapSlice?.failedMessages)
366
+ };
367
+ const [chatCipher, roomsCipher, heapCipher] = await Promise.all([encryptForPersist(JSON.stringify(chatPayload)), encryptForPersist(JSON.stringify(roomsPayload)), encryptForPersist(JSON.stringify(heapPayload))]);
368
+ await AsyncStorage.multiSet([[KEY_CHAT, chatCipher], [KEY_ROOMS, roomsCipher], [KEY_HEAP, heapCipher]]);
369
+ } catch (e) {
370
+ console.warn('persist write failed', e);
371
+ }
372
+ })();
182
373
  }, 200);
183
374
  return result;
184
375
  };
@@ -190,30 +381,40 @@ export const persistenceMiddleware = storeAPI => next => action => {
190
381
  */
191
382
  export async function readPersistedState() {
192
383
  try {
193
- const [chatRaw, roomsRaw] = await AsyncStorage.multiGet([KEY_CHAT, KEY_ROOMS]);
194
- const chat = chatRaw[1] ? JSON.parse(chatRaw[1]) : null;
195
- const rooms = roomsRaw[1] ? JSON.parse(roomsRaw[1]) : null;
384
+ const [chatRaw, roomsRaw, heapRaw] = await AsyncStorage.multiGet([KEY_CHAT, KEY_ROOMS, KEY_HEAP]);
385
+ const [chatPlain, roomsPlain, heapPlain] = await Promise.all([chatRaw[1] ? decryptFromPersist(chatRaw[1]) : Promise.resolve(null), roomsRaw[1] ? decryptFromPersist(roomsRaw[1]) : Promise.resolve(null), heapRaw[1] ? decryptFromPersist(heapRaw[1]) : Promise.resolve(null)]);
386
+ // `decryptFromPersist` returns null both for "nothing stored" and
387
+ // for "stored value isn't a valid envelope for the current key" —
388
+ // notably a plaintext blob left over from a pre-encryption install.
389
+ // Either way there is nothing safe to parse, so the caller treats it
390
+ // as a cold start and re-hydrates from the server.
391
+ const chat = chatPlain ? JSON.parse(chatPlain) : null;
392
+ const rooms = roomsPlain ? JSON.parse(roomsPlain) : null;
393
+ const heap = heapPlain ? JSON.parse(heapPlain) : null;
196
394
  return {
197
395
  chat,
198
- rooms
396
+ rooms,
397
+ heap
199
398
  };
200
399
  } catch (e) {
201
400
  console.warn('persist read failed', e);
202
401
  return {
203
402
  chat: null,
204
- rooms: null
403
+ rooms: null,
404
+ heap: null
205
405
  };
206
406
  }
207
407
  }
208
408
  export async function clearPersistedState() {
209
409
  try {
210
- await AsyncStorage.multiRemove([KEY_CHAT, KEY_ROOMS]);
410
+ await AsyncStorage.multiRemove([KEY_CHAT, KEY_ROOMS, KEY_HEAP]);
211
411
  } catch (e) {
212
412
  console.warn('persist clear failed', e);
213
413
  }
214
414
  }
215
415
  export const PERSIST_KEYS = {
216
416
  KEY_CHAT,
217
- KEY_ROOMS
417
+ KEY_ROOMS,
418
+ KEY_HEAP
218
419
  };
219
420
  //# sourceMappingURL=persistence.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["AsyncStorage","KEY_CHAT","KEY_ROOMS","MESSAGE_LIMIT","sanitizeUser","user","token","_token","refreshToken","_refreshToken","xmppPassword","_xmppPassword","rest","PERSISTED_MESSAGE_FIELDS","PERSISTED_MESSAGE_USER_FIELDS","REFETCHED_ROOM_FIELDS","pickDefined","source","keys","out","key","value","undefined","compactMessageForPersist","message","compact","sanitizeMessages","messages","Array","isArray","capped","length","slice","map","sanitizeRooms","rooms","jid","room","Object","entries","includes","compactRoom","usersCnt","members","field","composing","composingList","isLoading","historyPreloadState","writeTimer","persistenceMiddleware","storeAPI","next","action","result","type","startsWith","clearTimeout","setTimeout","state","getState","chatPayload","chatSettingStore","roomsPayload","multiSet","JSON","stringify","catch","e","console","warn","readPersistedState","chatRaw","roomsRaw","multiGet","chat","parse","clearPersistedState","multiRemove","PERSIST_KEYS"],"sourceRoot":"../../../src","sources":["roomStore/persistence.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["AsyncStorage","encryptForPersist","decryptFromPersist","KEY_CHAT","KEY_ROOMS","KEY_HEAP","MESSAGE_LIMIT","MAX_PERSISTED_FAILED_MESSAGES","sanitizeUser","user","token","_token","refreshToken","_refreshToken","xmppPassword","_xmppPassword","rest","PERSISTED_MESSAGE_FIELDS","PERSISTED_MESSAGE_USER_FIELDS","REFETCHED_ROOM_FIELDS","pickDefined","source","keys","out","key","value","undefined","compactMessageForPersist","message","compact","sanitizeMessages","messages","Array","isArray","capped","length","slice","map","sanitizeRooms","rooms","jid","room","Object","entries","includes","compactRoom","usersCnt","members","field","composing","composingList","isLoading","historyPreloadState","sanitizeMediaData","data","uri","type","name","size","sanitizeFailedMessagePayload","payload","id","roomJID","kind","isReply","isChecked","mainMessage","body","sanitizeFailedMessages","failedMessages","count","clean","reconstructFailedMessagePayload","showInChannel","isMediafile","location","fileName","mimetype","Number","computeBootTimeFailures","alreadyFailed","pending","push","writeTimer","persistenceMiddleware","storeAPI","next","action","result","startsWith","clearTimeout","setTimeout","state","getState","chatPayload","chatSettingStore","roomsPayload","heapPayload","roomHeapSlice","chatCipher","roomsCipher","heapCipher","Promise","all","JSON","stringify","multiSet","e","console","warn","readPersistedState","chatRaw","roomsRaw","heapRaw","multiGet","chatPlain","roomsPlain","heapPlain","resolve","chat","parse","heap","clearPersistedState","multiRemove","PERSIST_KEYS"],"sourceRoot":"../../../src","sources":["roomStore/persistence.ts"],"mappings":"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","ignoreList":[]}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
4
4
  import { insertMessageWithDelimiter } from '../helpers/insertMessageWithDelimiter';
5
+ import { msgSortableMs } from '../helpers/msgSortableMs';
5
6
  // Per-room runtime message cap. Mirrors the persistence layer's
6
7
  // MESSAGE_LIMIT so what's in memory matches what's on disk; otherwise
7
8
  // long sessions grow the array unbounded (memory leak) and reload
@@ -11,7 +12,7 @@ import { insertMessageWithDelimiter } from '../helpers/insertMessageWithDelimite
11
12
  // older history added via unshift/splice is exempt, so the user can
12
13
  // page backward arbitrarily far without instantly losing what they
13
14
  // just fetched. After cap eviction we drop from the head (oldest).
14
- const RUNTIME_MESSAGE_LIMIT = 100;
15
+ export const RUNTIME_MESSAGE_LIMIT = 100;
15
16
 
16
17
  // Body strings the server uses for call signaling broadcasts (call-token,
17
18
  // call-state ringing/ended, etc). These should never reach the chat
@@ -127,7 +128,6 @@ function mergeHistoryIntoCache(existing, fetched) {
127
128
  // fetched MAM page (the live-stream swallow doesn't cover history).
128
129
  const ex = stripCallSignals(existing);
129
130
  const fe = stripCallSignals(fetched);
130
- const pending = ex.filter(m => m?.pending);
131
131
  const realExisting = ex.filter(m => m && !m.pending && m.id !== 'delimiter-new');
132
132
  const realFetched = fe.filter(m => m && m.id !== 'delimiter-new');
133
133
 
@@ -135,6 +135,28 @@ function mergeHistoryIntoCache(existing, fetched) {
135
135
  if (realFetched.length === 0) {
136
136
  return ex;
137
137
  }
138
+
139
+ // Optimistic sends are preserved across a history merge - EXCEPT the
140
+ // ones the fetched page proves the server already has. That happens
141
+ // whenever a send reached the server but its echo did not reach us
142
+ // before the process died: the optimistic bubble is restored from disk
143
+ // still `pending: true` (and, since bug #39, flagged failed at boot),
144
+ // while MAM hands back the very same message under its ARCHIVE id.
145
+ // Keying only on `id` never matched those two, so the room ended up
146
+ // showing the message twice - once for real and once as a bubble stuck
147
+ // on "sending…"/"Failed" that nothing could ever clear. The archived
148
+ // copy carries our original stanza id as `xmppId` (getDataFromXml), so
149
+ // match on that too and drop the local ghost.
150
+ const fetchedKeys = new Set();
151
+ for (const m of realFetched) {
152
+ if (m?.id != null) {
153
+ fetchedKeys.add(String(m.id));
154
+ }
155
+ if (m?.xmppId) {
156
+ fetchedKeys.add(String(m.xmppId));
157
+ }
158
+ }
159
+ const pending = ex.filter(m => m?.pending && !fetchedKeys.has(String(m.id)) && !(m.xmppId && fetchedKeys.has(String(m.xmppId))));
138
160
  const byMs = (a, b) => msgSortableMs(a) - msgSortableMs(b);
139
161
  const capTail = arr => arr.length > RUNTIME_MESSAGE_LIMIT ? arr.slice(-RUNTIME_MESSAGE_LIMIT) : arr;
140
162
  const existingIds = new Set(realExisting.map(m => String(m.id)));
@@ -178,7 +200,8 @@ const initialState = {
178
200
  text: ''
179
201
  },
180
202
  pendingNotificationJid: null,
181
- privateStoreMarkers: {}
203
+ privateStoreMarkers: {},
204
+ readBoundaries: {}
182
205
  };
183
206
  const isValidRoomJid = jid => {
184
207
  if (typeof jid !== 'string' || !jid) return false;
@@ -264,6 +287,8 @@ const reducers = {
264
287
  const existingMessages = Array.isArray(existing?.messages) ? existing.messages : [];
265
288
  state.rooms[roomData.jid] = {
266
289
  ...roomData,
290
+ icon: roomData.icon !== undefined ? roomData.icon : existing?.icon,
291
+ roomBg: roomData.roomBg !== undefined ? roomData.roomBg : existing?.roomBg,
267
292
  messages: existingMessages.length > 0 ? existingMessages : incomingMessages,
268
293
  lastViewedTimestamp: lastViewed,
269
294
  unreadMessages: roomData.unreadMessages ?? existing?.unreadMessages ?? 0,
@@ -421,7 +446,7 @@ const reducers = {
421
446
  roomMessages.unshift(message);
422
447
  } else {
423
448
  const lastViewedValue = state.rooms[roomJID].lastViewedTimestamp;
424
- const lastViewedTimestamp = state.visibleRoomJID === roomJID ? null : lastViewedValue ? new Date(lastViewedValue) : null;
449
+ const lastViewedTimestamp = state.visibleRoomJID === roomJID ? null : lastViewedValue ? lastViewedValue : null;
425
450
  insertMessageWithDelimiter(roomMessages, message, lastViewedTimestamp);
426
451
  }
427
452
 
@@ -437,6 +462,7 @@ const reducers = {
437
462
  state.rooms = {};
438
463
  state.visibleRoomJID = null;
439
464
  state.privateStoreMarkers = {};
465
+ state.readBoundaries = {};
440
466
  state.isUnreadSyncing = false;
441
467
  },
442
468
  setComposing(state, action) {
@@ -495,7 +521,19 @@ const reducers = {
495
521
  *
496
522
  * Monotonic: a marker only ever moves a baseline FORWARD, so a stale
497
523
  * server value can't resurrect already-read messages and a more-recent
498
- * local read (tab blur stamping Date.now()) always wins.
524
+ * local read (tab blur stamping the server read timestamp) always wins.
525
+ *
526
+ * Bug #38 self-heal: forward-only is correct for a SANE existing
527
+ * value, but a device whose clock was ahead may have already stamped
528
+ * a marker in the future (either persisted locally from a previous
529
+ * session, or fetched from the server before this fix existed). To
530
+ * "only ever move forward" from a corrupt future value is to never
531
+ * move at all - the room would stay stuck at `unreadMessages: 0`
532
+ * forever. When the room is loaded, detect a marker that sits well
533
+ * past the newest message we actually know it has and waive the
534
+ * forward-only check for that one comparison, so the incoming
535
+ * (already-clamped, see xmppClient.getChatsPrivateStoreRequestStanza)
536
+ * value can correct it even though it's numerically smaller.
499
537
  */
500
538
  applyPrivateStoreMarkers: (state, action) => {
501
539
  const markers = action.payload;
@@ -510,20 +548,73 @@ const reducers = {
510
548
  if (!jid || !Number.isFinite(ts) || ts <= 0) {
511
549
  continue;
512
550
  }
551
+ const room = state.rooms[jid];
552
+ const newestKnownMs = room ? newestAckedMessageMs(room.messages) : 0;
553
+ // Mirrors isCorruptFutureReadMarker in helpers/getServerReadTimestamp.ts
554
+ // (duplicated to avoid a roomStore <-> helpers import cycle):
555
+ // BOTH signals are required. "Further ahead than the newest
556
+ // message this room has locally" happens all the time on a room
557
+ // whose history hasn't synced yet, and healing on that alone
558
+ // would drop a legitimate marker another device wrote after
559
+ // reading newer messages. A real read marker can never be ahead
560
+ // of real time, so that second signal is what distinguishes a
561
+ // stale cache from a wrong clock.
562
+ const nowMs = Date.now();
563
+ const looksCorrupt = existing => newestKnownMs > 0 && existing > newestKnownMs + FUTURE_MARKER_TOLERANCE_MS && existing > nowMs + FUTURE_MARKER_TOLERANCE_MS;
564
+
513
565
  // Remember the marker so rooms that load LATER (via addRoom)
514
566
  // inherit it even though they don't exist in the store yet.
515
- if (ts > (state.privateStoreMarkers[jid] || 0)) {
567
+ const cachedMarker = state.privateStoreMarkers[jid] || 0;
568
+ if (ts > cachedMarker || looksCorrupt(cachedMarker)) {
516
569
  state.privateStoreMarkers[jid] = ts;
517
570
  }
518
571
  // Upgrade an already-loaded room's baseline + recompute its badge.
519
- // Only ever forward, so a later local read isn't clobbered.
520
- const room = state.rooms[jid];
521
- if (room && ts > (room.lastViewedTimestamp || 0)) {
572
+ // Forward-only, unless the room's CURRENT baseline is itself the
573
+ // corrupt value being corrected.
574
+ if (room && (ts > (room.lastViewedTimestamp || 0) || looksCorrupt(room.lastViewedTimestamp || 0))) {
522
575
  room.lastViewedTimestamp = ts;
523
576
  room.unreadMessages = countNewerMessages(room.messages, ts);
524
577
  }
525
578
  }
526
579
  },
580
+ /**
581
+ * Set (or clear) the "read up to here, but not further" boundary for
582
+ * a room - see `readBoundaries` on `RoomMessagesState` for the full
583
+ * contract. `ts` is the msgSortableMs of the newest message the user
584
+ * actually reached before scrolling away from the bottom; `null`/`0`
585
+ * clears it (the user is at the bottom, or nothing was reached yet).
586
+ */
587
+ setReadBoundary: (state, action) => {
588
+ const {
589
+ jid,
590
+ ts
591
+ } = action.payload;
592
+ if (!jid) {
593
+ return;
594
+ }
595
+ if (!state.readBoundaries) {
596
+ state.readBoundaries = {};
597
+ }
598
+ if (typeof ts === 'number' && Number.isFinite(ts) && ts > 0) {
599
+ state.readBoundaries[jid] = ts;
600
+ } else {
601
+ delete state.readBoundaries[jid];
602
+ }
603
+ },
604
+ /**
605
+ * Release a room's read boundary once it has been consumed by a
606
+ * genuine "leave" (ChatRoom unmount, or a tab-navigator focus hook
607
+ * switching to a different room) - see `readBoundaries` for why the
608
+ * background/`isVisible=false` paths deliberately do NOT call this.
609
+ */
610
+ clearReadBoundary: (state, action) => {
611
+ const {
612
+ jid
613
+ } = action.payload;
614
+ if (jid && state.readBoundaries) {
615
+ delete state.readBoundaries[jid];
616
+ }
617
+ },
527
618
  setRoomRole: (state, action) => {
528
619
  const {
529
620
  chatJID,
@@ -603,6 +694,7 @@ const reducers = {
603
694
  state.isLoading = false;
604
695
  state.isUnreadSyncing = false;
605
696
  state.privateStoreMarkers = {};
697
+ state.readBoundaries = {};
606
698
  },
607
699
  setActiveMessage: (state, action) => {
608
700
  const {
@@ -705,31 +797,13 @@ export const roomsStore = createSlice({
705
797
  reducers
706
798
  });
707
799
 
708
- // Count messages strictly newer than the given millisecond timestamp.
709
- // Uses `msg.id` (server-authoritative microsecond timestamp prefixed by
710
- // 13-digit millis — see helpers/dateComparison `getHighResolutionTimestamp`)
711
- // because `msg.date` can be derived client-side (createMessageFromXml
712
- // falls back to `Date.now()` for realtime stanzas without a `date`
713
- // attr), which makes the comparison drift vs what the server assigned.
714
- // Excludes the "delimiter-new" sentinel, pending sends, and the current
715
- // user's own messages (parity with unreadMiddleware's isOwnMessage
716
- // filter — without this, the reducer and the middleware disagree about
717
- // the count and we get a flicker as the badge gets written twice with
718
- // different values on every message).
719
- export const msgSortableMs = msg => {
720
- const id = String(msg?.id || '');
721
- const m = /^(\d{13})/.exec(id);
722
- if (m) {
723
- return Number(m[1]);
724
- }
725
- if (msg?.date) {
726
- const t = new Date(msg.date).getTime();
727
- if (Number.isFinite(t)) {
728
- return t;
729
- }
730
- }
731
- return 0;
732
- };
800
+ // Re-exported for backward compatibility - every existing call site
801
+ // imports `msgSortableMs` from here. The implementation now lives in
802
+ // helpers/msgSortableMs.ts (imported above), so insertMessageWithDelimiter.ts
803
+ // (which this file itself imports) can use the SAME ordering source
804
+ // without a roomStore <-> helpers import cycle. See that file for the
805
+ // full rationale (server id vs. client `date`).
806
+ export { msgSortableMs };
733
807
  const norm = s => {
734
808
  if (s == null) {
735
809
  return '';
@@ -755,6 +829,35 @@ const isOwn = (msg, selfXmpp, selfWallet) => {
755
829
  }
756
830
  return false;
757
831
  };
832
+
833
+ // Bug #38 tolerance: a stored read marker more than this far past the
834
+ // newest message a room actually has is not "the user is a little
835
+ // ahead" - it's a leftover from a device whose clock was wrong when it
836
+ // stamped the marker. Kept in sync with (but duplicated from, to avoid
837
+ // a roomStore ↔ helpers import cycle) FUTURE_READ_MARKER_TOLERANCE_MS
838
+ // in helpers/getServerReadTimestamp.ts.
839
+ const FUTURE_MARKER_TOLERANCE_MS = 5 * 60 * 1000;
840
+
841
+ // Newest message in `messages` this room actually has proof the server
842
+ // accepted - used only to sanity-check an already-stored read marker
843
+ // against reality (see applyPrivateStoreMarkers's self-heal). Excludes
844
+ // pending/optimistic sends via the `pending` flag alone: unlike
845
+ // getServerReadTimestamp, this runs inside a reducer and can't reach
846
+ // across to the roomHeapSlice slice, but `pending` already identifies
847
+ // every optimistic send that matters for this comparison.
848
+ const newestAckedMessageMs = messages => {
849
+ let newest = 0;
850
+ for (const m of messages || []) {
851
+ if (!m || m.id === 'delimiter-new' || m.pending) {
852
+ continue;
853
+ }
854
+ const ms = msgSortableMs(m);
855
+ if (ms > newest) {
856
+ newest = ms;
857
+ }
858
+ }
859
+ return newest;
860
+ };
758
861
  const countNewerMessages = (messages, timestamp, selfXmpp = '', selfWallet = '') => {
759
862
  if (!messages?.length || !timestamp) {
760
863
  return 0;
@@ -787,6 +890,8 @@ export const {
787
890
  setUnreadSyncing,
788
891
  setLastViewedTimestamp,
789
892
  applyPrivateStoreMarkers,
893
+ setReadBoundary,
894
+ clearReadBoundary,
790
895
  setRoomNoMessages,
791
896
  setCurrentRoom,
792
897
  setVisibleRoom,