@ethora/chat-component-rn 26.8.5 → 26.8.7

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 (690) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +95 -0
  3. package/lib/commonjs/assets/emojiData.js +40 -0
  4. package/lib/commonjs/assets/emojiData.js.map +1 -0
  5. package/lib/commonjs/assets/icons.js +5 -3
  6. package/lib/commonjs/assets/icons.js.map +1 -1
  7. package/lib/commonjs/components/MainComponents/ChatHeader.js +35 -15
  8. package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
  9. package/lib/commonjs/components/MainComponents/ChatRoom.js +33 -24
  10. package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
  11. package/lib/commonjs/components/MainComponents/ChatWrapper.js +22 -16
  12. package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
  13. package/lib/commonjs/components/MainComponents/EncryptedSendNotice.js +47 -0
  14. package/lib/commonjs/components/MainComponents/EncryptedSendNotice.js.map +1 -0
  15. package/lib/commonjs/components/MainComponents/EncryptionCard.js +286 -0
  16. package/lib/commonjs/components/MainComponents/EncryptionCard.js.map +1 -0
  17. package/lib/commonjs/components/MainComponents/MediaMessage.js +7 -0
  18. package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
  19. package/lib/commonjs/components/MainComponents/MessageContainer.js +4 -12
  20. package/lib/commonjs/components/MainComponents/MessageContainer.js.map +1 -1
  21. package/lib/commonjs/components/MainComponents/MessageList.js +110 -35
  22. package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
  23. package/lib/commonjs/components/MainComponents/ReduxWrapper.js +5 -0
  24. package/lib/commonjs/components/MainComponents/ReduxWrapper.js.map +1 -1
  25. package/lib/commonjs/components/MainComponents/RoomList.js +32 -29
  26. package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
  27. package/lib/commonjs/components/MainComponents/RoomStack.js +133 -65
  28. package/lib/commonjs/components/MainComponents/RoomStack.js.map +1 -1
  29. package/lib/commonjs/components/MainComponents/SealedAttachment.js +231 -0
  30. package/lib/commonjs/components/MainComponents/SealedAttachment.js.map +1 -0
  31. package/lib/commonjs/components/MainComponents/SystemMessage.js +6 -2
  32. package/lib/commonjs/components/MainComponents/SystemMessage.js.map +1 -1
  33. package/lib/commonjs/components/MessageBubble/Avatar.js +5 -1
  34. package/lib/commonjs/components/MessageBubble/Avatar.js.map +1 -1
  35. package/lib/commonjs/components/MessageBubble/BottomReplyContainer.js +18 -21
  36. package/lib/commonjs/components/MessageBubble/BottomReplyContainer.js.map +1 -1
  37. package/lib/commonjs/components/MessageBubble/EmojiPickerSheet.js +447 -0
  38. package/lib/commonjs/components/MessageBubble/EmojiPickerSheet.js.map +1 -0
  39. package/lib/commonjs/components/MessageBubble/Message.js +264 -136
  40. package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
  41. package/lib/commonjs/components/MessageBubble/MessageInteractions.js +215 -13
  42. package/lib/commonjs/components/MessageBubble/MessageInteractions.js.map +1 -1
  43. package/lib/commonjs/components/MessageBubble/MessageReaction.js +113 -94
  44. package/lib/commonjs/components/MessageBubble/MessageReaction.js.map +1 -1
  45. package/lib/commonjs/components/MessageBubble/MessageReply.js +66 -24
  46. package/lib/commonjs/components/MessageBubble/MessageReply.js.map +1 -1
  47. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +7 -4
  48. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  49. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +159 -16
  50. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  51. package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js +4 -0
  52. package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
  53. package/lib/commonjs/components/Modals/Modal/SwipeBackLayer.js +76 -44
  54. package/lib/commonjs/components/Modals/Modal/SwipeBackLayer.js.map +1 -1
  55. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +29 -6
  56. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  57. package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js +5 -1
  58. package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
  59. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +37 -13
  60. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
  61. package/lib/commonjs/components/RoomComponents/LastMessageItem.js +6 -0
  62. package/lib/commonjs/components/RoomComponents/LastMessageItem.js.map +1 -1
  63. package/lib/commonjs/components/RoomComponents/styled/LastAudioMessage.js +2 -2
  64. package/lib/commonjs/components/RoomComponents/styled/LastAudioMessage.js.map +1 -1
  65. package/lib/commonjs/components/RoomComponents/styled/LastMessageEmoji.js +8 -9
  66. package/lib/commonjs/components/RoomComponents/styled/LastMessageEmoji.js.map +1 -1
  67. package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js +4 -6
  68. package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
  69. package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js +2 -2
  70. package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
  71. package/lib/commonjs/components/RoomComponents/styled/LastMessageSealed.js +41 -0
  72. package/lib/commonjs/components/RoomComponents/styled/LastMessageSealed.js.map +1 -0
  73. package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js +2 -2
  74. package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
  75. package/lib/commonjs/components/Thread/ThreadWrapper.js +273 -152
  76. package/lib/commonjs/components/Thread/ThreadWrapper.js.map +1 -1
  77. package/lib/commonjs/components/UsersList/UsersList.js +2 -1
  78. package/lib/commonjs/components/UsersList/UsersList.js.map +1 -1
  79. package/lib/commonjs/components/styled/DateLabel.js +6 -3
  80. package/lib/commonjs/components/styled/DateLabel.js.map +1 -1
  81. package/lib/commonjs/components/styled/SendInput.js +4 -2
  82. package/lib/commonjs/components/styled/SendInput.js.map +1 -1
  83. package/lib/commonjs/context/MessageNotificationContext.js +188 -9
  84. package/lib/commonjs/context/MessageNotificationContext.js.map +1 -1
  85. package/lib/commonjs/context/xmppProvider.js +22 -7
  86. package/lib/commonjs/context/xmppProvider.js.map +1 -1
  87. package/lib/commonjs/e2ee/crypto.js +207 -0
  88. package/lib/commonjs/e2ee/crypto.js.map +1 -0
  89. package/lib/commonjs/e2ee/deviceStore.js +84 -0
  90. package/lib/commonjs/e2ee/deviceStore.js.map +1 -0
  91. package/lib/commonjs/e2ee/fileCipher.js +95 -0
  92. package/lib/commonjs/e2ee/fileCipher.js.map +1 -0
  93. package/lib/commonjs/e2ee/fileEnvelope.js +79 -0
  94. package/lib/commonjs/e2ee/fileEnvelope.js.map +1 -0
  95. package/lib/commonjs/e2ee/index.js +210 -0
  96. package/lib/commonjs/e2ee/index.js.map +1 -0
  97. package/lib/commonjs/e2ee/limits.js +9 -0
  98. package/lib/commonjs/e2ee/limits.js.map +1 -0
  99. package/lib/commonjs/e2ee/ns.js +8 -0
  100. package/lib/commonjs/e2ee/ns.js.map +1 -0
  101. package/lib/commonjs/e2ee/omemo.js +622 -0
  102. package/lib/commonjs/e2ee/omemo.js.map +1 -0
  103. package/lib/commonjs/e2ee/protobuf.js +149 -0
  104. package/lib/commonjs/e2ee/protobuf.js.map +1 -0
  105. package/lib/commonjs/e2ee/ratchet.js +238 -0
  106. package/lib/commonjs/e2ee/ratchet.js.map +1 -0
  107. package/lib/commonjs/e2ee/sealedBody.js +23 -0
  108. package/lib/commonjs/e2ee/sealedBody.js.map +1 -0
  109. package/lib/commonjs/e2ee/sealedFiles.js +174 -0
  110. package/lib/commonjs/e2ee/sealedFiles.js.map +1 -0
  111. package/lib/commonjs/e2ee/send.js +54 -0
  112. package/lib/commonjs/e2ee/send.js.map +1 -0
  113. package/lib/commonjs/e2ee/stanza.js +114 -0
  114. package/lib/commonjs/e2ee/stanza.js.map +1 -0
  115. package/lib/commonjs/e2ee/store.js +43 -0
  116. package/lib/commonjs/e2ee/store.js.map +1 -0
  117. package/lib/commonjs/helpers/accountName.js +23 -0
  118. package/lib/commonjs/helpers/accountName.js.map +1 -0
  119. package/lib/commonjs/helpers/createMessageFromXml.js +19 -4
  120. package/lib/commonjs/helpers/createMessageFromXml.js.map +1 -1
  121. package/lib/commonjs/helpers/createRoomFromApi.js +36 -2
  122. package/lib/commonjs/helpers/createRoomFromApi.js.map +1 -1
  123. package/lib/commonjs/helpers/createUserNameFromSetUser.js +2 -1
  124. package/lib/commonjs/helpers/createUserNameFromSetUser.js.map +1 -1
  125. package/lib/commonjs/helpers/displayName.js +16 -0
  126. package/lib/commonjs/helpers/displayName.js.map +1 -0
  127. package/lib/commonjs/helpers/emoji.js +51 -0
  128. package/lib/commonjs/helpers/emoji.js.map +1 -0
  129. package/lib/commonjs/helpers/haptics.js +29 -0
  130. package/lib/commonjs/helpers/haptics.js.map +1 -0
  131. package/lib/commonjs/helpers/historyPreloadScheduler.js +32 -66
  132. package/lib/commonjs/helpers/historyPreloadScheduler.js.map +1 -1
  133. package/lib/commonjs/helpers/insertMessageWithDelimiter.js +21 -12
  134. package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
  135. package/lib/commonjs/helpers/mamReactions.js +57 -0
  136. package/lib/commonjs/helpers/mamReactions.js.map +1 -0
  137. package/lib/commonjs/helpers/parseMessageReference.js +42 -0
  138. package/lib/commonjs/helpers/parseMessageReference.js.map +1 -0
  139. package/lib/commonjs/helpers/persistCrypto.js +5 -0
  140. package/lib/commonjs/helpers/persistCrypto.js.map +1 -1
  141. package/lib/commonjs/helpers/reactionsConfig.js +17 -0
  142. package/lib/commonjs/helpers/reactionsConfig.js.map +1 -0
  143. package/lib/commonjs/helpers/secureKeyValue.js +20 -0
  144. package/lib/commonjs/helpers/secureKeyValue.js.map +1 -1
  145. package/lib/commonjs/helpers/updateMessagesTillLast.js +17 -2
  146. package/lib/commonjs/helpers/updateMessagesTillLast.js.map +1 -1
  147. package/lib/commonjs/helpers/videoCache.js +136 -0
  148. package/lib/commonjs/helpers/videoCache.js.map +1 -0
  149. package/lib/commonjs/hooks/useHeapSender.js +3 -1
  150. package/lib/commonjs/hooks/useHeapSender.js.map +1 -1
  151. package/lib/commonjs/hooks/useLogout.js +8 -0
  152. package/lib/commonjs/hooks/useLogout.js.map +1 -1
  153. package/lib/commonjs/hooks/useMessageHeapState.js +3 -2
  154. package/lib/commonjs/hooks/useMessageHeapState.js.map +1 -1
  155. package/lib/commonjs/hooks/useRoomInitialization.js +16 -7
  156. package/lib/commonjs/hooks/useRoomInitialization.js.map +1 -1
  157. package/lib/commonjs/hooks/useSendMessage.js +85 -15
  158. package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
  159. package/lib/commonjs/hooks/useUnreadMessagesCounter.js +1 -1
  160. package/lib/commonjs/hooks/useUnreadMessagesCounter.js.map +1 -1
  161. package/lib/commonjs/i18n/strings.js +180 -0
  162. package/lib/commonjs/i18n/strings.js.map +1 -1
  163. package/lib/commonjs/main.js +13 -0
  164. package/lib/commonjs/main.js.map +1 -1
  165. package/lib/commonjs/networking/api-requests/auth.api.js +4 -1
  166. package/lib/commonjs/networking/api-requests/auth.api.js.map +1 -1
  167. package/lib/commonjs/networking/api-requests/rooms.api.js +111 -17
  168. package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
  169. package/lib/commonjs/networking/stanzaHandlers.js +106 -50
  170. package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
  171. package/lib/commonjs/networking/xmpp/getHistory.xmpp.js +29 -74
  172. package/lib/commonjs/networking/xmpp/getHistory.xmpp.js.map +1 -1
  173. package/lib/commonjs/networking/xmpp/handleStanzas.xmpp.js +44 -0
  174. package/lib/commonjs/networking/xmpp/handleStanzas.xmpp.js.map +1 -1
  175. package/lib/commonjs/networking/xmpp/mamRouter.js +186 -0
  176. package/lib/commonjs/networking/xmpp/mamRouter.js.map +1 -0
  177. package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js +41 -4
  178. package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
  179. package/lib/commonjs/networking/xmpp/sendMediaMessage.xmpp.js +16 -3
  180. package/lib/commonjs/networking/xmpp/sendMediaMessage.xmpp.js.map +1 -1
  181. package/lib/commonjs/networking/xmpp/sendTextMessage.xmpp.js +13 -6
  182. package/lib/commonjs/networking/xmpp/sendTextMessage.xmpp.js.map +1 -1
  183. package/lib/commonjs/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.js +14 -6
  184. package/lib/commonjs/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.js.map +1 -1
  185. package/lib/commonjs/networking/xmppClient.js +104 -23
  186. package/lib/commonjs/networking/xmppClient.js.map +1 -1
  187. package/lib/commonjs/roomStore/Middleware/newMessageMidlleware.js +29 -34
  188. package/lib/commonjs/roomStore/Middleware/newMessageMidlleware.js.map +1 -1
  189. package/lib/commonjs/roomStore/Middleware/perfMiddleware.js +51 -0
  190. package/lib/commonjs/roomStore/Middleware/perfMiddleware.js.map +1 -0
  191. package/lib/commonjs/roomStore/Middleware/reactionsMiddleware.js +66 -43
  192. package/lib/commonjs/roomStore/Middleware/reactionsMiddleware.js.map +1 -1
  193. package/lib/commonjs/roomStore/Middleware/unreadMidlleware.js +88 -68
  194. package/lib/commonjs/roomStore/Middleware/unreadMidlleware.js.map +1 -1
  195. package/lib/commonjs/roomStore/index.js +18 -14
  196. package/lib/commonjs/roomStore/index.js.map +1 -1
  197. package/lib/commonjs/roomStore/persistBackend.js +93 -0
  198. package/lib/commonjs/roomStore/persistBackend.js.map +1 -0
  199. package/lib/commonjs/roomStore/persistence.js +253 -51
  200. package/lib/commonjs/roomStore/persistence.js.map +1 -1
  201. package/lib/commonjs/roomStore/roomsSlice.js +282 -136
  202. package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
  203. package/lib/commonjs/theme/theme.js +3 -0
  204. package/lib/commonjs/theme/theme.js.map +1 -1
  205. package/lib/commonjs/utils/devLogger.js +14 -0
  206. package/lib/commonjs/utils/devLogger.js.map +1 -1
  207. package/lib/commonjs/version.js +1 -1
  208. package/lib/module/assets/emojiData.js +36 -0
  209. package/lib/module/assets/emojiData.js.map +1 -0
  210. package/lib/module/assets/icons.js +4 -2
  211. package/lib/module/assets/icons.js.map +1 -1
  212. package/lib/module/components/MainComponents/ChatHeader.js +37 -17
  213. package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
  214. package/lib/module/components/MainComponents/ChatRoom.js +34 -25
  215. package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
  216. package/lib/module/components/MainComponents/ChatWrapper.js +23 -17
  217. package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
  218. package/lib/module/components/MainComponents/EncryptedSendNotice.js +42 -0
  219. package/lib/module/components/MainComponents/EncryptedSendNotice.js.map +1 -0
  220. package/lib/module/components/MainComponents/EncryptionCard.js +281 -0
  221. package/lib/module/components/MainComponents/EncryptionCard.js.map +1 -0
  222. package/lib/module/components/MainComponents/MediaMessage.js +7 -0
  223. package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
  224. package/lib/module/components/MainComponents/MessageContainer.js +7 -14
  225. package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
  226. package/lib/module/components/MainComponents/MessageList.js +110 -35
  227. package/lib/module/components/MainComponents/MessageList.js.map +1 -1
  228. package/lib/module/components/MainComponents/ReduxWrapper.js +5 -0
  229. package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
  230. package/lib/module/components/MainComponents/RoomList.js +32 -29
  231. package/lib/module/components/MainComponents/RoomList.js.map +1 -1
  232. package/lib/module/components/MainComponents/RoomStack.js +131 -63
  233. package/lib/module/components/MainComponents/RoomStack.js.map +1 -1
  234. package/lib/module/components/MainComponents/SealedAttachment.js +224 -0
  235. package/lib/module/components/MainComponents/SealedAttachment.js.map +1 -0
  236. package/lib/module/components/MainComponents/SystemMessage.js +6 -2
  237. package/lib/module/components/MainComponents/SystemMessage.js.map +1 -1
  238. package/lib/module/components/MessageBubble/Avatar.js +5 -1
  239. package/lib/module/components/MessageBubble/Avatar.js.map +1 -1
  240. package/lib/module/components/MessageBubble/BottomReplyContainer.js +19 -22
  241. package/lib/module/components/MessageBubble/BottomReplyContainer.js.map +1 -1
  242. package/lib/module/components/MessageBubble/EmojiPickerSheet.js +438 -0
  243. package/lib/module/components/MessageBubble/EmojiPickerSheet.js.map +1 -0
  244. package/lib/module/components/MessageBubble/Message.js +269 -140
  245. package/lib/module/components/MessageBubble/Message.js.map +1 -1
  246. package/lib/module/components/MessageBubble/MessageInteractions.js +217 -15
  247. package/lib/module/components/MessageBubble/MessageInteractions.js.map +1 -1
  248. package/lib/module/components/MessageBubble/MessageReaction.js +115 -94
  249. package/lib/module/components/MessageBubble/MessageReaction.js.map +1 -1
  250. package/lib/module/components/MessageBubble/MessageReply.js +65 -24
  251. package/lib/module/components/MessageBubble/MessageReply.js.map +1 -1
  252. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +7 -4
  253. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  254. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +161 -18
  255. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  256. package/lib/module/components/Modals/FilePreviewModal/PdfView.js +4 -0
  257. package/lib/module/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
  258. package/lib/module/components/Modals/Modal/SwipeBackLayer.js +76 -44
  259. package/lib/module/components/Modals/Modal/SwipeBackLayer.js.map +1 -1
  260. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +32 -8
  261. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  262. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js +4 -0
  263. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
  264. package/lib/module/components/RoomComponents/ChatRoomItem.js +37 -13
  265. package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
  266. package/lib/module/components/RoomComponents/LastMessageItem.js +6 -0
  267. package/lib/module/components/RoomComponents/LastMessageItem.js.map +1 -1
  268. package/lib/module/components/RoomComponents/styled/LastAudioMessage.js +2 -2
  269. package/lib/module/components/RoomComponents/styled/LastAudioMessage.js.map +1 -1
  270. package/lib/module/components/RoomComponents/styled/LastMessageEmoji.js +8 -9
  271. package/lib/module/components/RoomComponents/styled/LastMessageEmoji.js.map +1 -1
  272. package/lib/module/components/RoomComponents/styled/LastMessageFile.js +4 -6
  273. package/lib/module/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
  274. package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js +2 -2
  275. package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
  276. package/lib/module/components/RoomComponents/styled/LastMessageSealed.js +36 -0
  277. package/lib/module/components/RoomComponents/styled/LastMessageSealed.js.map +1 -0
  278. package/lib/module/components/RoomComponents/styled/LastMessageVideo.js +2 -2
  279. package/lib/module/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
  280. package/lib/module/components/Thread/ThreadWrapper.js +273 -153
  281. package/lib/module/components/Thread/ThreadWrapper.js.map +1 -1
  282. package/lib/module/components/UsersList/UsersList.js +2 -1
  283. package/lib/module/components/UsersList/UsersList.js.map +1 -1
  284. package/lib/module/components/styled/DateLabel.js +6 -3
  285. package/lib/module/components/styled/DateLabel.js.map +1 -1
  286. package/lib/module/components/styled/SendInput.js +4 -2
  287. package/lib/module/components/styled/SendInput.js.map +1 -1
  288. package/lib/module/context/MessageNotificationContext.js +190 -11
  289. package/lib/module/context/MessageNotificationContext.js.map +1 -1
  290. package/lib/module/context/xmppProvider.js +22 -7
  291. package/lib/module/context/xmppProvider.js.map +1 -1
  292. package/lib/module/e2ee/crypto.js +170 -0
  293. package/lib/module/e2ee/crypto.js.map +1 -0
  294. package/lib/module/e2ee/deviceStore.js +77 -0
  295. package/lib/module/e2ee/deviceStore.js.map +1 -0
  296. package/lib/module/e2ee/fileCipher.js +90 -0
  297. package/lib/module/e2ee/fileCipher.js.map +1 -0
  298. package/lib/module/e2ee/fileEnvelope.js +66 -0
  299. package/lib/module/e2ee/fileEnvelope.js.map +1 -0
  300. package/lib/module/e2ee/index.js +185 -0
  301. package/lib/module/e2ee/index.js.map +1 -0
  302. package/lib/module/e2ee/limits.js +5 -0
  303. package/lib/module/e2ee/limits.js.map +1 -0
  304. package/lib/module/e2ee/ns.js +4 -0
  305. package/lib/module/e2ee/ns.js.map +1 -0
  306. package/lib/module/e2ee/omemo.js +610 -0
  307. package/lib/module/e2ee/omemo.js.map +1 -0
  308. package/lib/module/e2ee/protobuf.js +140 -0
  309. package/lib/module/e2ee/protobuf.js.map +1 -0
  310. package/lib/module/e2ee/ratchet.js +228 -0
  311. package/lib/module/e2ee/ratchet.js.map +1 -0
  312. package/lib/module/e2ee/sealedBody.js +19 -0
  313. package/lib/module/e2ee/sealedBody.js.map +1 -0
  314. package/lib/module/e2ee/sealedFiles.js +154 -0
  315. package/lib/module/e2ee/sealedFiles.js.map +1 -0
  316. package/lib/module/e2ee/send.js +48 -0
  317. package/lib/module/e2ee/send.js.map +1 -0
  318. package/lib/module/e2ee/stanza.js +107 -0
  319. package/lib/module/e2ee/stanza.js.map +1 -0
  320. package/lib/module/e2ee/store.js +35 -0
  321. package/lib/module/e2ee/store.js.map +1 -0
  322. package/lib/module/helpers/accountName.js +18 -0
  323. package/lib/module/helpers/accountName.js.map +1 -0
  324. package/lib/module/helpers/createMessageFromXml.js +19 -4
  325. package/lib/module/helpers/createMessageFromXml.js.map +1 -1
  326. package/lib/module/helpers/createRoomFromApi.js +36 -2
  327. package/lib/module/helpers/createRoomFromApi.js.map +1 -1
  328. package/lib/module/helpers/createUserNameFromSetUser.js +3 -1
  329. package/lib/module/helpers/createUserNameFromSetUser.js.map +1 -1
  330. package/lib/module/helpers/displayName.js +11 -0
  331. package/lib/module/helpers/displayName.js.map +1 -0
  332. package/lib/module/helpers/emoji.js +44 -0
  333. package/lib/module/helpers/emoji.js.map +1 -0
  334. package/lib/module/helpers/haptics.js +24 -0
  335. package/lib/module/helpers/haptics.js.map +1 -0
  336. package/lib/module/helpers/historyPreloadScheduler.js +32 -66
  337. package/lib/module/helpers/historyPreloadScheduler.js.map +1 -1
  338. package/lib/module/helpers/insertMessageWithDelimiter.js +21 -12
  339. package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
  340. package/lib/module/helpers/mamReactions.js +51 -0
  341. package/lib/module/helpers/mamReactions.js.map +1 -0
  342. package/lib/module/helpers/parseMessageReference.js +37 -0
  343. package/lib/module/helpers/parseMessageReference.js.map +1 -0
  344. package/lib/module/helpers/persistCrypto.js +4 -0
  345. package/lib/module/helpers/persistCrypto.js.map +1 -1
  346. package/lib/module/helpers/reactionsConfig.js +10 -0
  347. package/lib/module/helpers/reactionsConfig.js.map +1 -0
  348. package/lib/module/helpers/secureKeyValue.js +19 -0
  349. package/lib/module/helpers/secureKeyValue.js.map +1 -1
  350. package/lib/module/helpers/updateMessagesTillLast.js +17 -2
  351. package/lib/module/helpers/updateMessagesTillLast.js.map +1 -1
  352. package/lib/module/helpers/videoCache.js +125 -0
  353. package/lib/module/helpers/videoCache.js.map +1 -0
  354. package/lib/module/hooks/useHeapSender.js +3 -1
  355. package/lib/module/hooks/useHeapSender.js.map +1 -1
  356. package/lib/module/hooks/useLogout.js +8 -0
  357. package/lib/module/hooks/useLogout.js.map +1 -1
  358. package/lib/module/hooks/useMessageHeapState.js +3 -2
  359. package/lib/module/hooks/useMessageHeapState.js.map +1 -1
  360. package/lib/module/hooks/useRoomInitialization.js +17 -8
  361. package/lib/module/hooks/useRoomInitialization.js.map +1 -1
  362. package/lib/module/hooks/useSendMessage.js +85 -15
  363. package/lib/module/hooks/useSendMessage.js.map +1 -1
  364. package/lib/module/hooks/useUnreadMessagesCounter.js +1 -1
  365. package/lib/module/hooks/useUnreadMessagesCounter.js.map +1 -1
  366. package/lib/module/i18n/strings.js +180 -0
  367. package/lib/module/i18n/strings.js.map +1 -1
  368. package/lib/module/main.js +1 -0
  369. package/lib/module/main.js.map +1 -1
  370. package/lib/module/networking/api-requests/auth.api.js +4 -1
  371. package/lib/module/networking/api-requests/auth.api.js.map +1 -1
  372. package/lib/module/networking/api-requests/rooms.api.js +109 -18
  373. package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
  374. package/lib/module/networking/stanzaHandlers.js +107 -51
  375. package/lib/module/networking/stanzaHandlers.js.map +1 -1
  376. package/lib/module/networking/xmpp/getHistory.xmpp.js +29 -74
  377. package/lib/module/networking/xmpp/getHistory.xmpp.js.map +1 -1
  378. package/lib/module/networking/xmpp/handleStanzas.xmpp.js +42 -0
  379. package/lib/module/networking/xmpp/handleStanzas.xmpp.js.map +1 -1
  380. package/lib/module/networking/xmpp/mamRouter.js +175 -0
  381. package/lib/module/networking/xmpp/mamRouter.js.map +1 -0
  382. package/lib/module/networking/xmpp/presenceInRoom.xmpp.js +38 -2
  383. package/lib/module/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
  384. package/lib/module/networking/xmpp/sendMediaMessage.xmpp.js +16 -3
  385. package/lib/module/networking/xmpp/sendMediaMessage.xmpp.js.map +1 -1
  386. package/lib/module/networking/xmpp/sendTextMessage.xmpp.js +13 -6
  387. package/lib/module/networking/xmpp/sendTextMessage.xmpp.js.map +1 -1
  388. package/lib/module/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.js +14 -6
  389. package/lib/module/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.js.map +1 -1
  390. package/lib/module/networking/xmppClient.js +105 -24
  391. package/lib/module/networking/xmppClient.js.map +1 -1
  392. package/lib/module/roomStore/Middleware/newMessageMidlleware.js +29 -34
  393. package/lib/module/roomStore/Middleware/newMessageMidlleware.js.map +1 -1
  394. package/lib/module/roomStore/Middleware/perfMiddleware.js +45 -0
  395. package/lib/module/roomStore/Middleware/perfMiddleware.js.map +1 -0
  396. package/lib/module/roomStore/Middleware/reactionsMiddleware.js +66 -43
  397. package/lib/module/roomStore/Middleware/reactionsMiddleware.js.map +1 -1
  398. package/lib/module/roomStore/Middleware/unreadMidlleware.js +89 -69
  399. package/lib/module/roomStore/Middleware/unreadMidlleware.js.map +1 -1
  400. package/lib/module/roomStore/index.js +19 -15
  401. package/lib/module/roomStore/index.js.map +1 -1
  402. package/lib/module/roomStore/persistBackend.js +86 -0
  403. package/lib/module/roomStore/persistBackend.js.map +1 -0
  404. package/lib/module/roomStore/persistence.js +253 -49
  405. package/lib/module/roomStore/persistence.js.map +1 -1
  406. package/lib/module/roomStore/roomsSlice.js +275 -134
  407. package/lib/module/roomStore/roomsSlice.js.map +1 -1
  408. package/lib/module/theme/theme.js +3 -0
  409. package/lib/module/theme/theme.js.map +1 -1
  410. package/lib/module/utils/devLogger.js +13 -0
  411. package/lib/module/utils/devLogger.js.map +1 -1
  412. package/lib/module/version.js +1 -1
  413. package/lib/typescript/assets/emojiData.d.ts +8 -0
  414. package/lib/typescript/assets/emojiData.d.ts.map +1 -0
  415. package/lib/typescript/assets/icons.d.ts +8 -0
  416. package/lib/typescript/assets/icons.d.ts.map +1 -1
  417. package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
  418. package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
  419. package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
  420. package/lib/typescript/components/MainComponents/EncryptedSendNotice.d.ts +4 -0
  421. package/lib/typescript/components/MainComponents/EncryptedSendNotice.d.ts.map +1 -0
  422. package/lib/typescript/components/MainComponents/EncryptionCard.d.ts +10 -0
  423. package/lib/typescript/components/MainComponents/EncryptionCard.d.ts.map +1 -0
  424. package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
  425. package/lib/typescript/components/MainComponents/MessageContainer.d.ts +2 -2
  426. package/lib/typescript/components/MainComponents/MessageContainer.d.ts.map +1 -1
  427. package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
  428. package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
  429. package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
  430. package/lib/typescript/components/MainComponents/RoomStack.d.ts +7 -2
  431. package/lib/typescript/components/MainComponents/RoomStack.d.ts.map +1 -1
  432. package/lib/typescript/components/MainComponents/SealedAttachment.d.ts +13 -0
  433. package/lib/typescript/components/MainComponents/SealedAttachment.d.ts.map +1 -0
  434. package/lib/typescript/components/MainComponents/SystemMessage.d.ts.map +1 -1
  435. package/lib/typescript/components/MessageBubble/Avatar.d.ts +2 -0
  436. package/lib/typescript/components/MessageBubble/Avatar.d.ts.map +1 -1
  437. package/lib/typescript/components/MessageBubble/BottomReplyContainer.d.ts.map +1 -1
  438. package/lib/typescript/components/MessageBubble/EmojiPickerSheet.d.ts +11 -0
  439. package/lib/typescript/components/MessageBubble/EmojiPickerSheet.d.ts.map +1 -0
  440. package/lib/typescript/components/MessageBubble/Message.d.ts +2 -2
  441. package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
  442. package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts +2 -0
  443. package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts.map +1 -1
  444. package/lib/typescript/components/MessageBubble/MessageReaction.d.ts +1 -0
  445. package/lib/typescript/components/MessageBubble/MessageReaction.d.ts.map +1 -1
  446. package/lib/typescript/components/MessageBubble/MessageReply.d.ts +7 -7
  447. package/lib/typescript/components/MessageBubble/MessageReply.d.ts.map +1 -1
  448. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
  449. package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
  450. package/lib/typescript/components/Modals/FilePreviewModal/PdfView.d.ts.map +1 -1
  451. package/lib/typescript/components/Modals/Modal/SwipeBackLayer.d.ts +2 -1
  452. package/lib/typescript/components/Modals/Modal/SwipeBackLayer.d.ts.map +1 -1
  453. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
  454. package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts.map +1 -1
  455. package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts +2 -2
  456. package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts.map +1 -1
  457. package/lib/typescript/components/RoomComponents/LastMessageItem.d.ts.map +1 -1
  458. package/lib/typescript/components/RoomComponents/styled/LastAudioMessage.d.ts.map +1 -1
  459. package/lib/typescript/components/RoomComponents/styled/LastMessageEmoji.d.ts +3 -6
  460. package/lib/typescript/components/RoomComponents/styled/LastMessageEmoji.d.ts.map +1 -1
  461. package/lib/typescript/components/RoomComponents/styled/LastMessageSealed.d.ts +7 -0
  462. package/lib/typescript/components/RoomComponents/styled/LastMessageSealed.d.ts.map +1 -0
  463. package/lib/typescript/components/Thread/ThreadWrapper.d.ts +7 -1
  464. package/lib/typescript/components/Thread/ThreadWrapper.d.ts.map +1 -1
  465. package/lib/typescript/components/UsersList/UsersList.d.ts.map +1 -1
  466. package/lib/typescript/components/styled/DateLabel.d.ts +1 -0
  467. package/lib/typescript/components/styled/DateLabel.d.ts.map +1 -1
  468. package/lib/typescript/components/styled/SendInput.d.ts +1 -0
  469. package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
  470. package/lib/typescript/context/MessageNotificationContext.d.ts.map +1 -1
  471. package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
  472. package/lib/typescript/e2ee/crypto.d.ts +28 -0
  473. package/lib/typescript/e2ee/crypto.d.ts.map +1 -0
  474. package/lib/typescript/e2ee/deviceStore.d.ts +4 -0
  475. package/lib/typescript/e2ee/deviceStore.d.ts.map +1 -0
  476. package/lib/typescript/e2ee/fileCipher.d.ts +7 -0
  477. package/lib/typescript/e2ee/fileCipher.d.ts.map +1 -0
  478. package/lib/typescript/e2ee/fileEnvelope.d.ts +27 -0
  479. package/lib/typescript/e2ee/fileEnvelope.d.ts.map +1 -0
  480. package/lib/typescript/e2ee/index.d.ts +23 -0
  481. package/lib/typescript/e2ee/index.d.ts.map +1 -0
  482. package/lib/typescript/e2ee/limits.d.ts +3 -0
  483. package/lib/typescript/e2ee/limits.d.ts.map +1 -0
  484. package/lib/typescript/e2ee/ns.d.ts +2 -0
  485. package/lib/typescript/e2ee/ns.d.ts.map +1 -0
  486. package/lib/typescript/e2ee/omemo.d.ts +64 -0
  487. package/lib/typescript/e2ee/omemo.d.ts.map +1 -0
  488. package/lib/typescript/e2ee/protobuf.d.ts +25 -0
  489. package/lib/typescript/e2ee/protobuf.d.ts.map +1 -0
  490. package/lib/typescript/e2ee/ratchet.d.ts +39 -0
  491. package/lib/typescript/e2ee/ratchet.d.ts.map +1 -0
  492. package/lib/typescript/e2ee/sealedBody.d.ts +2 -0
  493. package/lib/typescript/e2ee/sealedBody.d.ts.map +1 -0
  494. package/lib/typescript/e2ee/sealedFiles.d.ts +31 -0
  495. package/lib/typescript/e2ee/sealedFiles.d.ts.map +1 -0
  496. package/lib/typescript/e2ee/send.d.ts +6 -0
  497. package/lib/typescript/e2ee/send.d.ts.map +1 -0
  498. package/lib/typescript/e2ee/stanza.d.ts +8 -0
  499. package/lib/typescript/e2ee/stanza.d.ts.map +1 -0
  500. package/lib/typescript/e2ee/store.d.ts +16 -0
  501. package/lib/typescript/e2ee/store.d.ts.map +1 -0
  502. package/lib/typescript/helpers/accountName.d.ts +7 -0
  503. package/lib/typescript/helpers/accountName.d.ts.map +1 -0
  504. package/lib/typescript/helpers/createMessageFromXml.d.ts.map +1 -1
  505. package/lib/typescript/helpers/createRoomFromApi.d.ts.map +1 -1
  506. package/lib/typescript/helpers/createUserNameFromSetUser.d.ts.map +1 -1
  507. package/lib/typescript/helpers/displayName.d.ts +2 -0
  508. package/lib/typescript/helpers/displayName.d.ts.map +1 -0
  509. package/lib/typescript/helpers/emoji.d.ts +6 -0
  510. package/lib/typescript/helpers/emoji.d.ts.map +1 -0
  511. package/lib/typescript/helpers/haptics.d.ts +3 -0
  512. package/lib/typescript/helpers/haptics.d.ts.map +1 -0
  513. package/lib/typescript/helpers/historyPreloadScheduler.d.ts +1 -0
  514. package/lib/typescript/helpers/historyPreloadScheduler.d.ts.map +1 -1
  515. package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
  516. package/lib/typescript/helpers/mamReactions.d.ts +13 -0
  517. package/lib/typescript/helpers/mamReactions.d.ts.map +1 -0
  518. package/lib/typescript/helpers/parseMessageReference.d.ts +16 -0
  519. package/lib/typescript/helpers/parseMessageReference.d.ts.map +1 -0
  520. package/lib/typescript/helpers/persistCrypto.d.ts +1 -0
  521. package/lib/typescript/helpers/persistCrypto.d.ts.map +1 -1
  522. package/lib/typescript/helpers/reactionsConfig.d.ts +5 -0
  523. package/lib/typescript/helpers/reactionsConfig.d.ts.map +1 -0
  524. package/lib/typescript/helpers/secureKeyValue.d.ts +4 -0
  525. package/lib/typescript/helpers/secureKeyValue.d.ts.map +1 -1
  526. package/lib/typescript/helpers/updateMessagesTillLast.d.ts.map +1 -1
  527. package/lib/typescript/helpers/videoCache.d.ts +19 -0
  528. package/lib/typescript/helpers/videoCache.d.ts.map +1 -0
  529. package/lib/typescript/hooks/useHeapSender.d.ts.map +1 -1
  530. package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
  531. package/lib/typescript/hooks/useMessageHeapState.d.ts.map +1 -1
  532. package/lib/typescript/hooks/useRoomInitialization.d.ts +2 -2
  533. package/lib/typescript/hooks/useRoomInitialization.d.ts.map +1 -1
  534. package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
  535. package/lib/typescript/i18n/strings.d.ts.map +1 -1
  536. package/lib/typescript/main.d.ts +2 -0
  537. package/lib/typescript/main.d.ts.map +1 -1
  538. package/lib/typescript/networking/api-requests/auth.api.d.ts +4 -1
  539. package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
  540. package/lib/typescript/networking/api-requests/rooms.api.d.ts +22 -1
  541. package/lib/typescript/networking/api-requests/rooms.api.d.ts.map +1 -1
  542. package/lib/typescript/networking/stanzaHandlers.d.ts +4 -2
  543. package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
  544. package/lib/typescript/networking/xmpp/getHistory.xmpp.d.ts +3 -1
  545. package/lib/typescript/networking/xmpp/getHistory.xmpp.d.ts.map +1 -1
  546. package/lib/typescript/networking/xmpp/handleStanzas.xmpp.d.ts +1 -0
  547. package/lib/typescript/networking/xmpp/handleStanzas.xmpp.d.ts.map +1 -1
  548. package/lib/typescript/networking/xmpp/mamRouter.d.ts +23 -0
  549. package/lib/typescript/networking/xmpp/mamRouter.d.ts.map +1 -0
  550. package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts +1 -0
  551. package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts.map +1 -1
  552. package/lib/typescript/networking/xmpp/sendMediaMessage.xmpp.d.ts.map +1 -1
  553. package/lib/typescript/networking/xmpp/sendTextMessage.xmpp.d.ts.map +1 -1
  554. package/lib/typescript/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.d.ts.map +1 -1
  555. package/lib/typescript/networking/xmppClient.d.ts +22 -1
  556. package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
  557. package/lib/typescript/roomStore/Middleware/newMessageMidlleware.d.ts.map +1 -1
  558. package/lib/typescript/roomStore/Middleware/perfMiddleware.d.ts +4 -0
  559. package/lib/typescript/roomStore/Middleware/perfMiddleware.d.ts.map +1 -0
  560. package/lib/typescript/roomStore/Middleware/reactionsMiddleware.d.ts +9 -0
  561. package/lib/typescript/roomStore/Middleware/reactionsMiddleware.d.ts.map +1 -1
  562. package/lib/typescript/roomStore/Middleware/unreadMidlleware.d.ts.map +1 -1
  563. package/lib/typescript/roomStore/index.d.ts.map +1 -1
  564. package/lib/typescript/roomStore/persistBackend.d.ts +11 -0
  565. package/lib/typescript/roomStore/persistBackend.d.ts.map +1 -0
  566. package/lib/typescript/roomStore/persistence.d.ts +5 -6
  567. package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
  568. package/lib/typescript/roomStore/roomsSlice.d.ts +41 -1
  569. package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
  570. package/lib/typescript/theme/theme.d.ts +4 -1
  571. package/lib/typescript/theme/theme.d.ts.map +1 -1
  572. package/lib/typescript/types/models/message.model.d.ts +9 -0
  573. package/lib/typescript/types/models/message.model.d.ts.map +1 -1
  574. package/lib/typescript/types/models/room.model.d.ts +21 -0
  575. package/lib/typescript/types/models/room.model.d.ts.map +1 -1
  576. package/lib/typescript/types/models/xmpp.model.d.ts +6 -1
  577. package/lib/typescript/types/models/xmpp.model.d.ts.map +1 -1
  578. package/lib/typescript/types/types.d.ts +19 -3
  579. package/lib/typescript/types/types.d.ts.map +1 -1
  580. package/lib/typescript/utils/devLogger.d.ts +8 -0
  581. package/lib/typescript/utils/devLogger.d.ts.map +1 -1
  582. package/lib/typescript/version.d.ts +1 -1
  583. package/package.json +14 -1
  584. package/src/assets/emojiData.ts +2146 -0
  585. package/src/assets/icons.tsx +32 -5
  586. package/src/components/MainComponents/ChatHeader.tsx +46 -16
  587. package/src/components/MainComponents/ChatRoom.tsx +46 -30
  588. package/src/components/MainComponents/ChatWrapper.tsx +28 -10
  589. package/src/components/MainComponents/EncryptedSendNotice.tsx +35 -0
  590. package/src/components/MainComponents/EncryptionCard.tsx +287 -0
  591. package/src/components/MainComponents/MediaMessage.tsx +5 -0
  592. package/src/components/MainComponents/MessageContainer.tsx +7 -15
  593. package/src/components/MainComponents/MessageList.tsx +96 -43
  594. package/src/components/MainComponents/ReduxWrapper.tsx +5 -0
  595. package/src/components/MainComponents/RoomList.tsx +28 -29
  596. package/src/components/MainComponents/RoomStack.tsx +156 -83
  597. package/src/components/MainComponents/SealedAttachment.tsx +251 -0
  598. package/src/components/MainComponents/SystemMessage.tsx +6 -2
  599. package/src/components/MessageBubble/Avatar.tsx +7 -1
  600. package/src/components/MessageBubble/BottomReplyContainer.tsx +20 -21
  601. package/src/components/MessageBubble/EmojiPickerSheet.tsx +468 -0
  602. package/src/components/MessageBubble/Message.tsx +242 -93
  603. package/src/components/MessageBubble/MessageInteractions.tsx +215 -15
  604. package/src/components/MessageBubble/MessageReaction.tsx +120 -96
  605. package/src/components/MessageBubble/MessageReply.tsx +65 -32
  606. package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +7 -4
  607. package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +181 -35
  608. package/src/components/Modals/FilePreviewModal/PdfView.tsx +4 -0
  609. package/src/components/Modals/Modal/SwipeBackLayer.tsx +114 -63
  610. package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +53 -8
  611. package/src/components/Modals/UserSettingsModal/UserSettingsModal.tsx +5 -0
  612. package/src/components/RoomComponents/ChatRoomItem.tsx +34 -15
  613. package/src/components/RoomComponents/LastMessageItem.tsx +5 -0
  614. package/src/components/RoomComponents/styled/LastAudioMessage.tsx +3 -1
  615. package/src/components/RoomComponents/styled/LastMessageEmoji.tsx +7 -8
  616. package/src/components/RoomComponents/styled/LastMessageFile.tsx +2 -2
  617. package/src/components/RoomComponents/styled/LastMessagePhoto.tsx +1 -1
  618. package/src/components/RoomComponents/styled/LastMessageSealed.tsx +31 -0
  619. package/src/components/RoomComponents/styled/LastMessageVideo.tsx +1 -1
  620. package/src/components/Thread/ThreadWrapper.tsx +287 -198
  621. package/src/components/UsersList/UsersList.tsx +2 -1
  622. package/src/components/styled/DateLabel.tsx +7 -3
  623. package/src/components/styled/SendInput.tsx +5 -2
  624. package/src/context/MessageNotificationContext.tsx +205 -7
  625. package/src/context/xmppProvider.tsx +29 -9
  626. package/src/e2ee/crypto.ts +194 -0
  627. package/src/e2ee/deviceStore.ts +80 -0
  628. package/src/e2ee/fileCipher.ts +86 -0
  629. package/src/e2ee/fileEnvelope.ts +115 -0
  630. package/src/e2ee/index.ts +192 -0
  631. package/src/e2ee/limits.ts +2 -0
  632. package/src/e2ee/ns.ts +1 -0
  633. package/src/e2ee/omemo.ts +802 -0
  634. package/src/e2ee/protobuf.ts +188 -0
  635. package/src/e2ee/ratchet.ts +271 -0
  636. package/src/e2ee/sealedBody.ts +17 -0
  637. package/src/e2ee/sealedFiles.ts +181 -0
  638. package/src/e2ee/send.ts +70 -0
  639. package/src/e2ee/stanza.ts +133 -0
  640. package/src/e2ee/store.ts +54 -0
  641. package/src/helpers/accountName.ts +15 -0
  642. package/src/helpers/createMessageFromXml.ts +31 -6
  643. package/src/helpers/createRoomFromApi.tsx +37 -1
  644. package/src/helpers/createUserNameFromSetUser.ts +2 -1
  645. package/src/helpers/displayName.ts +9 -0
  646. package/src/helpers/emoji.ts +39 -0
  647. package/src/helpers/haptics.ts +19 -0
  648. package/src/helpers/historyPreloadScheduler.ts +37 -69
  649. package/src/helpers/insertMessageWithDelimiter.ts +23 -16
  650. package/src/helpers/mamReactions.ts +59 -0
  651. package/src/helpers/parseMessageReference.ts +38 -0
  652. package/src/helpers/persistCrypto.ts +5 -0
  653. package/src/helpers/reactionsConfig.ts +13 -0
  654. package/src/helpers/secureKeyValue.ts +15 -0
  655. package/src/helpers/updateMessagesTillLast.tsx +14 -2
  656. package/src/helpers/videoCache.ts +138 -0
  657. package/src/hooks/useHeapSender.tsx +3 -2
  658. package/src/hooks/useLogout.tsx +9 -0
  659. package/src/hooks/useMessageHeapState.tsx +6 -2
  660. package/src/hooks/useRoomInitialization.tsx +32 -15
  661. package/src/hooks/useSendMessage.tsx +89 -16
  662. package/src/hooks/useUnreadMessagesCounter.ts +1 -1
  663. package/src/i18n/strings.ts +180 -0
  664. package/src/main.ts +2 -0
  665. package/src/networking/api-requests/auth.api.ts +9 -1
  666. package/src/networking/api-requests/rooms.api.ts +121 -18
  667. package/src/networking/stanzaHandlers.ts +116 -60
  668. package/src/networking/xmpp/getHistory.xmpp.ts +44 -106
  669. package/src/networking/xmpp/handleStanzas.xmpp.ts +51 -0
  670. package/src/networking/xmpp/mamRouter.ts +176 -0
  671. package/src/networking/xmpp/presenceInRoom.xmpp.ts +46 -3
  672. package/src/networking/xmpp/sendMediaMessage.xmpp.ts +19 -1
  673. package/src/networking/xmpp/sendTextMessage.xmpp.ts +17 -10
  674. package/src/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.ts +23 -10
  675. package/src/networking/xmppClient.ts +111 -20
  676. package/src/roomStore/Middleware/newMessageMidlleware.tsx +35 -38
  677. package/src/roomStore/Middleware/perfMiddleware.ts +50 -0
  678. package/src/roomStore/Middleware/reactionsMiddleware.tsx +53 -52
  679. package/src/roomStore/Middleware/unreadMidlleware.tsx +92 -80
  680. package/src/roomStore/index.ts +28 -27
  681. package/src/roomStore/persistBackend.ts +93 -0
  682. package/src/roomStore/persistence.ts +295 -73
  683. package/src/roomStore/roomsSlice.ts +304 -155
  684. package/src/theme/theme.ts +10 -1
  685. package/src/types/models/message.model.ts +9 -0
  686. package/src/types/models/room.model.ts +22 -0
  687. package/src/types/models/xmpp.model.ts +4 -2
  688. package/src/types/types.ts +19 -3
  689. package/src/utils/devLogger.ts +16 -0
  690. package/src/version.ts +1 -1
@@ -2,9 +2,9 @@
2
2
 
3
3
  import { xml } from '@xmpp/client';
4
4
  import { createTimeoutPromise } from './createTimeoutPromise.xmpp';
5
- import { getDataFromXml } from '../../helpers/getDataFromXml';
6
- import { createMessageFromXml } from '../../helpers/createMessageFromXml';
7
- export const getHistory = async (client, chatJID, max, before, otherId) => {
5
+ import { beginMamQuery, cancelMamQuery } from './mamRouter';
6
+ let historyIdCounter = 0;
7
+ export const getHistory = async (client, chatJID, max, before, otherId, options) => {
8
8
  if (typeof chatJID !== 'string') {
9
9
  return;
10
10
  }
@@ -16,81 +16,36 @@ export const getHistory = async (client, chatJID, max, before, otherId) => {
16
16
  const host = service.match(/wss?:\/\/([^:/]+)/)?.[1] || 'xmpp.chat.ethora.com';
17
17
  return `${chatJID}@conference.${host}`;
18
18
  })();
19
- const id = otherId ?? `get-history:${Date.now().toString()}`;
20
- let stanzaHdlrPointer;
21
- const unsubscribe = () => {
22
- client.off('stanza', stanzaHdlrPointer);
23
- };
24
- const responsePromise = new Promise((resolve, reject) => {
25
- let messages = [];
26
- stanzaHdlrPointer = async stanza => {
27
- const result = stanza.getChild('result');
28
- if (stanza.is('message') && stanza.attrs.from && stanza.attrs.from.startsWith(fixedChatJid) && result) {
29
- const messageEl = result.getChild('forwarded')?.getChild('message');
30
- messages.push(messageEl);
31
- }
32
- if (stanza.is('iq') && stanza.attrs.id === id && stanza.attrs.type === 'result') {
33
- let mainMessages = [];
34
- for (const msg of messages) {
35
- const reactions = msg?.getChild('reactions');
36
- const text = msg.getChild('body')?.getText();
37
- if (text || reactions) {
38
- const result = await getDataFromXml(msg);
39
- if (!result) {
40
- return;
41
- }
42
- const {
43
- data,
44
- id,
45
- body,
46
- ...rest
47
- } = result;
48
- if (!data) {
49
- console.log('No data in stanza');
50
- return;
51
- }
52
- const message = await createMessageFromXml({
53
- data,
54
- id,
55
- body: body || '',
56
- ...rest
57
- });
58
- mainMessages.push(message);
59
- }
60
- }
61
- resolve(mainMessages);
62
- }
63
- if (stanza.is('iq') && stanza.attrs.id === id && stanza.attrs.type === 'error') {
64
- reject();
65
- }
66
- };
67
- client?.on('stanza', stanzaHdlrPointer);
68
- const message = xml('iq', {
69
- type: 'set',
70
- to: fixedChatJid,
71
- id: id
72
- }, xml('query', {
73
- xmlns: 'urn:xmpp:mam:2'
74
- }, xml('set', {
75
- xmlns: 'http://jabber.org/protocol/rsm'
76
- }, xml('max', {}, max.toString()), before ? xml('before', {}, before.toString()) : xml('before'))));
77
- client?.send(message).catch(err => console.log('err on load', err));
78
- });
19
+ const id = otherId ?? `get-history:${Date.now().toString(36)}-${(++historyIdCounter).toString(36)}`;
20
+ const page = beginMamQuery(id, fixedChatJid, !options?.selfApplied);
21
+ const message = xml('iq', {
22
+ type: 'set',
23
+ to: fixedChatJid,
24
+ id: id
25
+ }, xml('query', {
26
+ xmlns: 'urn:xmpp:mam:2',
27
+ queryid: id
28
+ }, xml('set', {
29
+ xmlns: 'http://jabber.org/protocol/rsm'
30
+ }, xml('max', {}, max.toString()), before ? xml('before', {}, before.toString()) : xml('before'))));
31
+ client?.send(message).catch(err => console.log('err on load', err));
79
32
  const timeoutPromise = createTimeoutPromise(10000);
80
33
  try {
81
- // @ts-ignore
82
- const res = await Promise.race([responsePromise, timeoutPromise]);
83
- return res === null ? [] : res;
34
+ const res = await Promise.race([page, timeoutPromise]);
35
+ if (res === null) {
36
+ const partial = cancelMamQuery(id);
37
+ if (typeof __DEV__ !== 'undefined' && __DEV__) {
38
+ console.log(`[mam] history request for ${fixedChatJid} timed out after 10s (${partial.length} results arrived)`);
39
+ }
40
+ return partial;
41
+ }
42
+ return res;
84
43
  } catch (e) {
85
- // MAM rejects with no value when an iq error returns; the timeout
86
- // path resolves with null instead of throwing. Either is expected
87
- // for a room with no history yet — only log if `e` is meaningful.
88
- if (e !== undefined) {
89
- console.log('=-> error in', fixedChatJid, e);
44
+ const partial = cancelMamQuery(id);
45
+ if (typeof __DEV__ !== 'undefined' && __DEV__ && e === undefined) {
46
+ console.log(`[mam] history request for ${fixedChatJid} got no closing iq within 10s (${partial.length} results arrived)`);
90
47
  }
91
- return [];
92
- } finally {
93
- unsubscribe();
48
+ return partial;
94
49
  }
95
50
  };
96
51
  //# sourceMappingURL=getHistory.xmpp.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["xml","createTimeoutPromise","getDataFromXml","createMessageFromXml","getHistory","client","chatJID","max","before","otherId","fixedChatJid","includes","service","options","host","match","id","Date","now","toString","stanzaHdlrPointer","unsubscribe","off","responsePromise","Promise","resolve","reject","messages","stanza","result","getChild","is","attrs","from","startsWith","messageEl","push","type","mainMessages","msg","reactions","text","getText","data","body","rest","console","log","message","on","to","xmlns","send","catch","err","timeoutPromise","res","race","e","undefined"],"sourceRoot":"../../../../src","sources":["networking/xmpp/getHistory.xmpp.ts"],"mappings":";;AAAA,SAAiBA,GAAG,QAAQ,cAAc;AAC1C,SAASC,oBAAoB,QAAQ,6BAA6B;AAGlE,SAASC,cAAc,QAAQ,8BAA8B;AAC7D,SAASC,oBAAoB,QAAQ,oCAAoC;AAEzE,OAAO,MAAMC,UAAU,GAAG,MAAAA,CACxBC,MAAc,EACdC,OAAe,EACfC,GAAW,EACXC,MAAe,EACfC,OAAgB,KACoB;EACpC,IAAI,OAAOH,OAAO,KAAK,QAAQ,EAAE;IAAC;EAAO;EACzC;EACA;EACA;EACA,MAAMI,YAAY,GAAGJ,OAAO,CAACK,QAAQ,CAAC,GAAG,CAAC,GACtCL,OAAO,GACP,CAAC,MAAM;IACL,MAAMM,OAAe,GAAIP,MAAM,EAAUQ,OAAO,EAAED,OAAO,IAAI,EAAE;IAC/D,MAAME,IAAI,GACRF,OAAO,CAACG,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,sBAAsB;IACnE,OAAO,GAAGT,OAAO,eAAeQ,IAAI,EAAE;EACxC,CAAC,EAAE,CAAC;EAER,MAAME,EAAE,GAAGP,OAAO,IAAI,eAAeQ,IAAI,CAACC,GAAG,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE;EAE5D,IAAIC,iBAGH;EAED,MAAMC,WAAW,GAAGA,CAAA,KAAM;IACxBhB,MAAM,CAACiB,GAAG,CAAC,QAAQ,EAAEF,iBAAiB,CAAC;EACzC,CAAC;EAED,MAAMG,eAAe,GAAG,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;IACvD,IAAIC,QAAmB,GAAG,EAAE;IAE5BP,iBAAiB,GAAG,MAAOQ,MAAM,IAAK;MACpC,MAAMC,MAAM,GAAGD,MAAM,CAACE,QAAQ,CAAC,QAAQ,CAAC;MAExC,IACEF,MAAM,CAACG,EAAE,CAAC,SAAS,CAAC,IACpBH,MAAM,CAACI,KAAK,CAACC,IAAI,IACjBL,MAAM,CAACI,KAAK,CAACC,IAAI,CAACC,UAAU,CAACxB,YAAY,CAAC,IAC1CmB,MAAM,EACN;QACA,MAAMM,SAAS,GAAGN,MAAM,CAACC,QAAQ,CAAC,WAAW,CAAC,EAAEA,QAAQ,CAAC,SAAS,CAAC;QAEnEH,QAAQ,CAACS,IAAI,CAACD,SAAS,CAAC;MAC1B;MAEA,IACEP,MAAM,CAACG,EAAE,CAAC,IAAI,CAAC,IACfH,MAAM,CAACI,KAAK,CAAChB,EAAE,KAAKA,EAAE,IACtBY,MAAM,CAACI,KAAK,CAACK,IAAI,KAAK,QAAQ,EAC9B;QACA,IAAIC,YAAwB,GAAG,EAAE;QAEjC,KAAK,MAAMC,GAAG,IAAIZ,QAAQ,EAAE;UAC1B,MAAMa,SAAS,GAAGD,GAAG,EAAET,QAAQ,CAAC,WAAW,CAAC;UAC5C,MAAMW,IAAI,GAAGF,GAAG,CAACT,QAAQ,CAAC,MAAM,CAAC,EAAEY,OAAO,CAAC,CAAC;UAE5C,IAAID,IAAI,IAAID,SAAS,EAAE;YACrB,MAAMX,MAAM,GAAG,MAAM3B,cAAc,CAACqC,GAAG,CAAC;YACxC,IAAI,CAACV,MAAM,EAAE;cACX;YACF;YACA,MAAM;cAAEc,IAAI;cAAE3B,EAAE;cAAE4B,IAAI;cAAE,GAAGC;YAAK,CAAC,GAAGhB,MAAM;YAE1C,IAAI,CAACc,IAAI,EAAE;cACTG,OAAO,CAACC,GAAG,CAAC,mBAAmB,CAAC;cAChC;YACF;YAEA,MAAMC,OAAO,GAAG,MAAM7C,oBAAoB,CAAC;cACzCwC,IAAI;cACJ3B,EAAE;cACF4B,IAAI,EAAEA,IAAI,IAAI,EAAE;cAChB,GAAGC;YACL,CAAQ,CAAC;YAETP,YAAY,CAACF,IAAI,CAACY,OAAO,CAAC;UAC5B;QACF;QACAvB,OAAO,CAACa,YAAY,CAAC;MACvB;MAEA,IACEV,MAAM,CAACG,EAAE,CAAC,IAAI,CAAC,IACfH,MAAM,CAACI,KAAK,CAAChB,EAAE,KAAKA,EAAE,IACtBY,MAAM,CAACI,KAAK,CAACK,IAAI,KAAK,OAAO,EAC7B;QACAX,MAAM,CAAC,CAAC;MACV;IACF,CAAC;IAEDrB,MAAM,EAAE4C,EAAE,CAAC,QAAQ,EAAE7B,iBAAiB,CAAC;IAEvC,MAAM4B,OAAO,GAAGhD,GAAG,CACjB,IAAI,EACJ;MACEqC,IAAI,EAAE,KAAK;MACXa,EAAE,EAAExC,YAAY;MAChBM,EAAE,EAAEA;IACN,CAAC,EACDhB,GAAG,CACD,OAAO,EACP;MAAEmD,KAAK,EAAE;IAAiB,CAAC,EAC3BnD,GAAG,CACD,KAAK,EACL;MAAEmD,KAAK,EAAE;IAAiC,CAAC,EAC3CnD,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAEO,GAAG,CAACY,QAAQ,CAAC,CAAC,CAAC,EAC9BX,MAAM,GAAGR,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAEQ,MAAM,CAACW,QAAQ,CAAC,CAAC,CAAC,GAAGnB,GAAG,CAAC,QAAQ,CAC9D,CACF,CACF,CAAC;IAEDK,MAAM,EAAE+C,IAAI,CAACJ,OAAO,CAAC,CAACK,KAAK,CAAEC,GAAQ,IAAKR,OAAO,CAACC,GAAG,CAAC,aAAa,EAAEO,GAAG,CAAC,CAAC;EAC5E,CAAC,CAAC;EAEF,MAAMC,cAAc,GAAGtD,oBAAoB,CAAC,KAAK,CAAC;EAElD,IAAI;IACF;IACA,MAAMuD,GAAsB,GAAG,MAAMhC,OAAO,CAACiC,IAAI,CAAsB,CACrElC,eAAe,EACfgC,cAAc,CACf,CAAC;IACF,OAAOC,GAAG,KAAK,IAAI,GAAG,EAAE,GAAGA,GAAG;EAChC,CAAC,CAAC,OAAOE,CAAC,EAAE;IACV;IACA;IACA;IACA,IAAIA,CAAC,KAAKC,SAAS,EAAE;MACnBb,OAAO,CAACC,GAAG,CAAC,cAAc,EAAErC,YAAY,EAAEgD,CAAC,CAAC;IAC9C;IACA,OAAO,EAAE;EACX,CAAC,SAAS;IACRrC,WAAW,CAAC,CAAC;EACf;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["xml","createTimeoutPromise","beginMamQuery","cancelMamQuery","historyIdCounter","getHistory","client","chatJID","max","before","otherId","options","fixedChatJid","includes","service","host","match","id","Date","now","toString","page","selfApplied","message","type","to","xmlns","queryid","send","catch","err","console","log","timeoutPromise","res","Promise","race","partial","__DEV__","length","e","undefined"],"sourceRoot":"../../../../src","sources":["networking/xmpp/getHistory.xmpp.ts"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
2
 
3
+ import { routeMamIq } from './mamRouter';
3
4
  import { onDeleteMessage, onEditMessage, onRealtimeMessage, onMessageHistory, onGetLastMessageArchive, handleComposing, onChatInvite, onPresenceInRoom, onGetChatRooms, onGetMembers, onGetRoomInfo, onNewRoomCreated, onReactionMessage, onReactionHistory, onRoomKicked, onMessageError } from '../stanzaHandlers';
4
5
  import { onCallTokenMessage } from '../callTokenStanza';
6
+ import { accountDomain, isE2eeEnabled } from '../../e2ee';
7
+ import { decryptStanzaInPlace, encryptedCarrier, rewriteEncryptedStanza } from '../../e2ee/stanza';
5
8
 
6
9
  /**
7
10
  * Unwrap a mucsub event wrapper so the chat handlers see the real inner
@@ -26,7 +29,40 @@ const unwrapMucsubMessage = stanza => {
26
29
  const inner = stanza?.getChild?.('event', 'http://jabber.org/protocol/pubsub#event')?.getChild?.('items')?.getChild?.('item')?.getChild?.('message');
27
30
  return inner || stanza;
28
31
  };
32
+ let held = 0;
33
+ let queue = Promise.resolve();
29
34
  export function handleStanza(stanza, xmppWs) {
35
+ if (!isE2eeEnabled()) {
36
+ dispatchStanza(stanza, xmppWs);
37
+ return;
38
+ }
39
+ const carrier = stanza?.name === 'message' ? encryptedCarrier(stanza) : undefined;
40
+ if (!carrier && held === 0) {
41
+ dispatchStanza(stanza, xmppWs);
42
+ return;
43
+ }
44
+ held++;
45
+ queue = queue.then(async () => {
46
+ try {
47
+ if (carrier) {
48
+ const outcome = await decryptStanzaInPlace(stanza, accountDomain(xmppWs.client));
49
+ if (outcome === 'drop') {
50
+ return;
51
+ }
52
+ }
53
+ dispatchStanza(stanza, xmppWs);
54
+ } catch (err) {
55
+ console.warn('OMEMO: failed to handle stanza', err);
56
+ } finally {
57
+ held--;
58
+ }
59
+ });
60
+ }
61
+ export const __resetStanzaQueueForTests = () => {
62
+ held = 0;
63
+ queue = Promise.resolve();
64
+ };
65
+ function dispatchStanza(stanza, xmppWs) {
30
66
  if (stanza?.attrs?.type === 'headline') {
31
67
  return;
32
68
  }
@@ -39,6 +75,9 @@ export function handleStanza(stanza, xmppWs) {
39
75
  if (stanza?.name === 'message' && onCallTokenMessage(stanza)) {
40
76
  return;
41
77
  }
78
+ if (stanza?.name === 'message' && rewriteEncryptedStanza(stanza) === 'drop') {
79
+ return;
80
+ }
42
81
  switch (stanza.name) {
43
82
  case 'message':
44
83
  {
@@ -60,6 +99,9 @@ export function handleStanza(stanza, xmppWs) {
60
99
  onPresenceInRoom(stanza);
61
100
  break;
62
101
  case 'iq':
102
+ if (routeMamIq(stanza)) {
103
+ break;
104
+ }
63
105
  onGetChatRooms(stanza, xmppWs);
64
106
  onRealtimeMessage(stanza);
65
107
  onPresenceInRoom(stanza);
@@ -1 +1 @@
1
- {"version":3,"names":["onDeleteMessage","onEditMessage","onRealtimeMessage","onMessageHistory","onGetLastMessageArchive","handleComposing","onChatInvite","onPresenceInRoom","onGetChatRooms","onGetMembers","onGetRoomInfo","onNewRoomCreated","onReactionMessage","onReactionHistory","onRoomKicked","onMessageError","onCallTokenMessage","unwrapMucsubMessage","stanza","inner","getChild","handleStanza","xmppWs","attrs","type","name","unwrapped","username","console","log"],"sourceRoot":"../../../../src","sources":["networking/xmpp/handleStanzas.xmpp.ts"],"mappings":";;AACA,SACEA,eAAe,EACfC,aAAa,EACbC,iBAAiB,EACjBC,gBAAgB,EAChBC,uBAAuB,EACvBC,eAAe,EACfC,YAAY,EACZC,gBAAgB,EAChBC,cAAc,EACdC,YAAY,EACZC,aAAa,EACbC,gBAAgB,EAChBC,iBAAiB,EACjBC,iBAAiB,EACjBC,YAAY,EACZC,cAAc,QACT,mBAAmB;AAE1B,SAASC,kBAAkB,QAAQ,oBAAoB;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,mBAAmB,GAAIC,MAAe,IAAc;EACxD,MAAMC,KAAK,GAAID,MAAM,EACjBE,QAAQ,GAAG,OAAO,EAAE,yCAAyC,CAAC,EAC9DA,QAAQ,GAAG,OAAO,CAAC,EACnBA,QAAQ,GAAG,MAAM,CAAC,EAClBA,QAAQ,GAAG,SAAS,CAAC;EACzB,OAAQD,KAAK,IAAgBD,MAAM;AACrC,CAAC;AAED,OAAO,SAASG,YAAYA,CAACH,MAAe,EAAEI,MAAkB,EAAE;EAChE,IAAIJ,MAAM,EAAEK,KAAK,EAAEC,IAAI,KAAK,UAAU,EAAE;IAAC;EAAO;;EAEhD;EACA;EACA;EACA;EACA;EACA,IAAIN,MAAM,EAAEO,IAAI,KAAK,SAAS,IAAIT,kBAAkB,CAACE,MAAM,CAAC,EAAE;IAC5D;EACF;EAEA,QAAQA,MAAM,CAACO,IAAI;IACjB,KAAK,SAAS;MAAE;QACd,MAAMC,SAAS,GAAGT,mBAAmB,CAACC,MAAM,CAAC;QAC7CH,cAAc,CAACW,SAAS,EAAEJ,MAAM,CAAC;QACjCV,iBAAiB,CAACc,SAAS,CAAC;QAC5Bb,iBAAiB,CAACa,SAAS,CAAC;QAC5B1B,eAAe,CAAC0B,SAAS,CAAC;QAC1BzB,aAAa,CAACyB,SAAS,CAAC;QACxBpB,YAAY,CAACoB,SAAS,EAAEJ,MAAM,CAAC;QAC/BpB,iBAAiB,CAACwB,SAAS,CAAC;QAC5BvB,gBAAgB,CAACuB,SAAS,CAAC;QAC3BrB,eAAe,CAACqB,SAAS,EAAEJ,MAAM,CAACK,QAAQ,CAAC;QAC3CpB,gBAAgB,CAACmB,SAAS,CAAC;QAC3B;MACF;IACA,KAAK,UAAU;MACbZ,YAAY,CAACI,MAAM,CAAC;MACpBX,gBAAgB,CAACW,MAAM,CAAC;MACxB;IACF,KAAK,IAAI;MACPV,cAAc,CAACU,MAAM,EAAEI,MAAM,CAAC;MAC9BpB,iBAAiB,CAACgB,MAAM,CAAC;MACzBX,gBAAgB,CAACW,MAAM,CAAC;MACxBT,YAAY,CAACS,MAAM,CAAC;MACpBR,aAAa,CAACQ,MAAM,CAAC;MACrBd,uBAAuB,CAACc,MAAM,EAAEI,MAAM,CAAC;MACvC;IACF,KAAK,aAAa;MAChBX,gBAAgB,CAACO,MAAM,EAAEI,MAAM,CAAC;MAChC;IACF;MACEM,OAAO,CAACC,GAAG,CAAC,wBAAwB,EAAEX,MAAM,CAACO,IAAI,CAAC;EACtD;AACF","ignoreList":[]}
1
+ {"version":3,"names":["routeMamIq","onDeleteMessage","onEditMessage","onRealtimeMessage","onMessageHistory","onGetLastMessageArchive","handleComposing","onChatInvite","onPresenceInRoom","onGetChatRooms","onGetMembers","onGetRoomInfo","onNewRoomCreated","onReactionMessage","onReactionHistory","onRoomKicked","onMessageError","onCallTokenMessage","accountDomain","isE2eeEnabled","decryptStanzaInPlace","encryptedCarrier","rewriteEncryptedStanza","unwrapMucsubMessage","stanza","inner","getChild","held","queue","Promise","resolve","handleStanza","xmppWs","dispatchStanza","carrier","name","undefined","then","outcome","client","err","console","warn","__resetStanzaQueueForTests","attrs","type","unwrapped","username","log"],"sourceRoot":"../../../../src","sources":["networking/xmpp/handleStanzas.xmpp.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+
3
+ import { store } from '../../roomStore';
4
+ import { addRoomMessages, setReactions } from '../../roomStore/roomsSlice';
5
+ import { applyMamReactions } from '../../helpers/mamReactions';
6
+ const pending = new Map();
7
+ const flush = query => {
8
+ // Every step is guarded: a failure in one (a middleware throwing on a
9
+ // reaction, say) used to escape `settle` before the waiting request was
10
+ // resolved — the page was lost and the room stayed empty until opened.
11
+ let deferred = [];
12
+ try {
13
+ // Reactions ride in the archive as their own entries: fold them onto
14
+ // the page's messages first, so they are stored together.
15
+ deferred = applyMamReactions(query.messages, query.reactions);
16
+ } catch (e) {
17
+ console.warn('[mam] applying reactions to a page failed', e);
18
+ }
19
+ if (query.apply && query.messages.length > 0) {
20
+ try {
21
+ store.dispatch(addRoomMessages({
22
+ roomJID: query.roomJID,
23
+ messages: query.messages
24
+ }));
25
+ } catch (e) {
26
+ console.warn('[mam] applying a history page failed', e);
27
+ }
28
+ }
29
+ for (const reaction of deferred) {
30
+ try {
31
+ store.dispatch(setReactions({
32
+ roomJID: reaction.roomJID || query.roomJID,
33
+ messageId: reaction.messageId,
34
+ from: reaction.from,
35
+ reactions: reaction.emoji,
36
+ data: reaction.data,
37
+ latestReactionTimestamp: reaction.ts
38
+ }));
39
+ } catch (e) {
40
+ console.warn('[mam] applying a reaction failed', e);
41
+ }
42
+ }
43
+ };
44
+ export const beginMamQuery = (queryId, roomJID, apply = true) => new Promise((resolve, reject) => {
45
+ pending.set(queryId, {
46
+ roomJID,
47
+ apply,
48
+ messages: [],
49
+ reactions: [],
50
+ inflight: 0,
51
+ closed: null,
52
+ resolve,
53
+ reject
54
+ });
55
+ });
56
+
57
+ /**
58
+ * Give up waiting (timeout). Whatever arrived is still applied — a late
59
+ * page is better than a lost one — and handed back.
60
+ */
61
+ export const cancelMamQuery = queryId => {
62
+ const query = pending.get(queryId);
63
+ if (!query) {
64
+ return [];
65
+ }
66
+ pending.delete(queryId);
67
+ flush(query);
68
+ query.resolve(query.messages);
69
+ return query.messages;
70
+ };
71
+ const bareLower = jid => String(jid || '').split('/')[0].toLowerCase();
72
+
73
+ // By the echoed `queryid` when the server provides one; otherwise by the
74
+ // room the result came from — the oldest still-open query for that room.
75
+ // (Results are per room anyway: a query only ever asks one archive.)
76
+ const queryOf = stanza => {
77
+ const queryId = stanza?.getChild?.('result')?.attrs?.queryid;
78
+ const byId = queryId ? pending.get(queryId) : undefined;
79
+ if (byId) {
80
+ return byId;
81
+ }
82
+ const room = bareLower(stanza?.attrs?.from);
83
+ if (!room) {
84
+ return undefined;
85
+ }
86
+ for (const query of pending.values()) {
87
+ if (!query.closed && bareLower(query.roomJID) === room) {
88
+ return query;
89
+ }
90
+ }
91
+ return undefined;
92
+ };
93
+ const settle = (queryId, query) => {
94
+ if (pending.get(queryId) === query) {
95
+ pending.delete(queryId);
96
+ }
97
+ try {
98
+ flush(query);
99
+ } finally {
100
+ // The waiting request is always answered, whatever happened above.
101
+ if (query.closed?.error) {
102
+ query.reject(new Error('mam query error'));
103
+ } else {
104
+ query.resolve(query.messages);
105
+ }
106
+ }
107
+ };
108
+ const settleIfDone = query => {
109
+ if (!query.closed || query.inflight > 0) {
110
+ return;
111
+ }
112
+ const entry = [...pending.entries()].find(([, q]) => q === query);
113
+ settle(entry ? entry[0] : '', query);
114
+ };
115
+
116
+ /**
117
+ * Claim a result for its pending query — synchronously, the moment the
118
+ * stanza arrives — so the router knows a parse is outstanding. Returns
119
+ * true when a pending query owns it (the caller must then always follow
120
+ * up with `collectMamMessage`, even when the parse yields nothing).
121
+ */
122
+ export const claimMamResult = stanza => {
123
+ const query = queryOf(stanza);
124
+ if (!query) {
125
+ return false;
126
+ }
127
+ query.inflight += 1;
128
+ return true;
129
+ };
130
+
131
+ /** The parsed result of a claimed stanza (undefined: dropped). */
132
+ export const collectMamReaction = (stanza, reaction) => {
133
+ const query = queryOf(stanza);
134
+ if (!query) {
135
+ return false;
136
+ }
137
+ query.reactions.push(reaction);
138
+ return true;
139
+ };
140
+ export const collectMamMessage = (stanza, message) => {
141
+ const query = queryOf(stanza);
142
+ if (!query) {
143
+ return false;
144
+ }
145
+ if (message) {
146
+ query.messages.push(message);
147
+ }
148
+ query.inflight = Math.max(0, query.inflight - 1);
149
+ settleIfDone(query);
150
+ return true;
151
+ };
152
+
153
+ /** The query's closing iq; true when it belonged to a pending query. */
154
+ export const routeMamIq = stanza => {
155
+ if (!stanza?.is?.('iq')) {
156
+ return false;
157
+ }
158
+ const query = pending.get(stanza.attrs?.id);
159
+ if (!query) {
160
+ return false;
161
+ }
162
+ query.closed = {
163
+ error: stanza.attrs.type === 'error'
164
+ };
165
+ // Results that are still being parsed settle the page when they land;
166
+ // until then the query stays registered so they can find it.
167
+ if (query.inflight === 0) {
168
+ settle(stanza.attrs.id, query);
169
+ }
170
+ return true;
171
+ };
172
+
173
+ /** Test hook. */
174
+ export const __resetMamRouter = () => pending.clear();
175
+ //# sourceMappingURL=mamRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["store","addRoomMessages","setReactions","applyMamReactions","pending","Map","flush","query","deferred","messages","reactions","e","console","warn","apply","length","dispatch","roomJID","reaction","messageId","from","emoji","data","latestReactionTimestamp","ts","beginMamQuery","queryId","Promise","resolve","reject","set","inflight","closed","cancelMamQuery","get","delete","bareLower","jid","String","split","toLowerCase","queryOf","stanza","getChild","attrs","queryid","byId","undefined","room","values","settle","error","Error","settleIfDone","entry","entries","find","q","claimMamResult","collectMamReaction","push","collectMamMessage","message","Math","max","routeMamIq","is","id","type","__resetMamRouter","clear"],"sourceRoot":"../../../../src","sources":["networking/xmpp/mamRouter.ts"],"mappings":"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","ignoreList":[]}
@@ -4,7 +4,36 @@ import { xml } from '@xmpp/client';
4
4
  import { createTimeoutPromise } from './createTimeoutPromise.xmpp';
5
5
  let presenceIdCounter = 0;
6
6
  const nextPresenceId = () => `presenceInRoom-${Date.now().toString(36)}-${(++presenceIdCounter).toString(36)}`;
7
- export const presenceInRoom = async (client, roomJID, delay = 2000) => {
7
+ const joinedByClient = new WeakMap();
8
+ const joinedRooms = client => {
9
+ let map = joinedByClient.get(client);
10
+ if (!map) {
11
+ map = new Map();
12
+ joinedByClient.set(client, map);
13
+ const forget = () => joinedByClient.get(client)?.clear();
14
+ client.on('disconnect', forget);
15
+ client.on('offline', forget);
16
+ }
17
+ return map;
18
+ };
19
+ export const __forgetJoinedRooms = client => joinedByClient.get(client)?.clear();
20
+ export const presenceInRoom = (client, roomJID, delay = 0) => {
21
+ const joined = joinedRooms(client);
22
+ const existing = joined.get(roomJID);
23
+ if (existing) {
24
+ return existing;
25
+ }
26
+ const join = joinRoom(client, roomJID, delay);
27
+ joined.set(roomJID, join);
28
+ // A failed join is not a join: let the next caller try again.
29
+ join.catch(() => {
30
+ if (joined.get(roomJID) === join) {
31
+ joined.delete(roomJID);
32
+ }
33
+ });
34
+ return join;
35
+ };
36
+ const joinRoom = async (client, roomJID, delay) => {
8
37
  let stanzaHandler;
9
38
  const unsubscribe = () => client.off('stanza', stanzaHandler);
10
39
  const stanzaId = nextPresenceId();
@@ -21,6 +50,11 @@ export const presenceInRoom = async (client, roomJID, delay = 2000) => {
21
50
  return;
22
51
  }
23
52
  settled = true;
53
+ if (delay <= 0) {
54
+ unsubscribe();
55
+ cb(value);
56
+ return;
57
+ }
24
58
  setTimeout(() => {
25
59
  unsubscribe();
26
60
  cb(value);
@@ -38,7 +72,9 @@ export const presenceInRoom = async (client, roomJID, delay = 2000) => {
38
72
  id: stanzaId
39
73
  }, xml('x', {
40
74
  xmlns: 'http://jabber.org/protocol/muc'
41
- }));
75
+ }, xml('history', {
76
+ maxstanzas: '0'
77
+ })));
42
78
 
43
79
  // Side-effects sequence: send the presence (handles its own
44
80
  // failure → reject), then wait the timeout (also handles its own
@@ -1 +1 @@
1
- {"version":3,"names":["xml","createTimeoutPromise","presenceIdCounter","nextPresenceId","Date","now","toString","presenceInRoom","client","roomJID","delay","stanzaHandler","unsubscribe","off","stanzaId","Promise","resolve","reject","settled","finish","cb","value","setTimeout","stanza","is","attrs","id","from","startsWith","on","presence","jid","to","getLocal","xmlns","send","err"],"sourceRoot":"../../../../src","sources":["networking/xmpp/presenceInRoom.xmpp.ts"],"mappings":";;AAAA,SAAiBA,GAAG,QAAQ,cAAc;AAC1C,SAASC,oBAAoB,QAAQ,6BAA6B;AAGlE,IAAIC,iBAAiB,GAAG,CAAC;AACzB,MAAMC,cAAc,GAAGA,CAAA,KACrB,kBAAkBC,IAAI,CAACC,GAAG,CAAC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAEJ,iBAAiB,EAAEI,QAAQ,CAAC,EAAE,CAAC,EAAE;AAEnF,OAAO,MAAMC,cAAc,GAAG,MAAAA,CAC5BC,MAAc,EACdC,OAAe,EACfC,KAAK,GAAG,IAAI,KACS;EACrB,IAAIC,aAAwC;EAC5C,MAAMC,WAAW,GAAGA,CAAA,KAAMJ,MAAM,CAACK,GAAG,CAAC,QAAQ,EAAEF,aAAa,CAAC;EAC7D,MAAMG,QAAQ,GAAGX,cAAc,CAAC,CAAC;;EAEjC;EACA;EACA;EACA;EACA;EACA,OAAO,IAAIY,OAAO,CAAU,CAACC,OAAO,EAAEC,MAAM,KAAK;IAC/C,IAAIC,OAAO,GAAG,KAAK;IAEnB,MAAMC,MAAM,GAAGA,CAACC,EAAyB,EAAEC,KAAW,KAAK;MACzD,IAAIH,OAAO,EAAE;QAAC;MAAO;MACrBA,OAAO,GAAG,IAAI;MAEdI,UAAU,CAAC,MAAM;QACfV,WAAW,CAAC,CAAC;QACbQ,EAAE,CAACC,KAAK,CAAC;MACX,CAAC,EAAEX,KAAK,CAAC;IACX,CAAC;IAEDC,aAAa,GAAIY,MAAM,IAAK;MAC1B,IACEA,MAAM,CAACC,EAAE,CAAC,UAAU,CAAC,IACrBD,MAAM,CAACE,KAAK,CAACC,EAAE,KAAKZ,QAAQ,IAC5BS,MAAM,CAACE,KAAK,CAACE,IAAI,EAAEC,UAAU,CAACnB,OAAO,CAAC,EACtC;QACAU,MAAM,CAACH,OAAO,EAAEO,MAAM,CAAC;MACzB;IACF,CAAC;IAEDf,MAAM,CAACqB,EAAE,CAAC,QAAQ,EAAElB,aAAa,CAAC;IAElC,MAAMmB,QAAQ,GAAG9B,GAAG,CAClB,UAAU,EACV;MACE2B,IAAI,EAAEnB,MAAM,CAACuB,GAAG,EAAEzB,QAAQ,CAAC,CAAC;MAC5B0B,EAAE,EAAE,GAAGvB,OAAO,IAAID,MAAM,CAACuB,GAAG,EAAEE,QAAQ,CAAC,CAAC,EAAE;MAC1CP,EAAE,EAAEZ;IACN,CAAC,EACDd,GAAG,CAAC,GAAG,EAAE;MAAEkC,KAAK,EAAE;IAAiC,CAAC,CACtD,CAAC;;IAED;IACA;IACA;IACA;IACA,CAAC,YAAY;MACX,IAAI;QACF,MAAM1B,MAAM,CAAC2B,IAAI,CAACL,QAAQ,CAAC;MAC7B,CAAC,CAAC,OAAOM,GAAG,EAAE;QACZxB,WAAW,CAAC,CAAC;QACbK,MAAM,CAACmB,GAAG,CAAC;QACX;MACF;MACA,IAAI;QACF,MAAMnC,oBAAoB,CAAC,IAAI,EAAEW,WAAW,CAAC;MAC/C,CAAC,CAAC,OAAOwB,GAAG,EAAE;QACZ;QACA;QACA;QACA;QACA;QACA,IAAI,CAAClB,OAAO,EAAE;UAACD,MAAM,CAACmB,GAAG,CAAC;QAAC;MAC7B;IACF,CAAC,EAAE,CAAC;EACN,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["xml","createTimeoutPromise","presenceIdCounter","nextPresenceId","Date","now","toString","joinedByClient","WeakMap","joinedRooms","client","map","get","Map","set","forget","clear","on","__forgetJoinedRooms","presenceInRoom","roomJID","delay","joined","existing","join","joinRoom","catch","delete","stanzaHandler","unsubscribe","off","stanzaId","Promise","resolve","reject","settled","finish","cb","value","setTimeout","stanza","is","attrs","id","from","startsWith","presence","jid","to","getLocal","xmlns","maxstanzas","send","err"],"sourceRoot":"../../../../src","sources":["networking/xmpp/presenceInRoom.xmpp.ts"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { xml } from '@xmpp/client';
4
+ import { sendSealedMedia, shouldEncrypt } from '../../e2ee/send';
4
5
 
5
6
  // Monotonic counter — see sendTextMessage for the rationale (avoids
6
7
  // Date.now() id collisions on <1ms-apart sends).
@@ -63,14 +64,26 @@ export function sendMediaMessage(client, roomJID, data, customId, devServer) {
63
64
  roomJid: data?.roomJid,
64
65
  push: 'true'
65
66
  };
67
+ const keys = data?.e2eeKeys;
68
+ if (keys?.length) {
69
+ dataToSend.clientEncrypted = 'true';
70
+ }
71
+ const hints = xml('store', {
72
+ xmlns: 'urn:xmpp:hints'
73
+ });
74
+ if (keys?.length && shouldEncrypt(roomJID)) {
75
+ sendSealedMedia(client, roomJID, id, xml('body', {}, JSON.stringify({
76
+ v: 1,
77
+ keys
78
+ })), [xml('data', dataToSend), hints]);
79
+ return id;
80
+ }
66
81
  const message = xml('message', {
67
82
  id: id,
68
83
  type: 'groupchat',
69
84
  from: client.jid?.toString(),
70
85
  to: roomJID
71
- }, xml('body', {}, 'media'), xml('store', {
72
- xmlns: 'urn:xmpp:hints'
73
- }), xml('data', dataToSend));
86
+ }, xml('body', {}, 'media'), hints, xml('data', dataToSend));
74
87
  try {
75
88
  const sendResult = client.send(message);
76
89
  if (sendResult && typeof sendResult.then === 'function') {
@@ -1 +1 @@
1
- {"version":3,"names":["xml","_sendMediaSeq","toServiceXmlns","devServer","client","clientService","options","service","test","ds","trim","includes","replace","sendMediaMessage","roomJID","data","customId","id","Date","now","dataToSend","xmlns","senderJID","jid","toString","senderFirstName","firstName","senderLastName","lastName","senderWalletAddress","walletAddress","isSystemMessage","tokenAmount","receiverMessageId","mucname","chatName","photoURL","userAvatar","isMediafile","createdAt","expiresAt","fileName","isVisible","location","locationPreview","mimetype","originalName","ownerKey","size","duration","updatedAt","userId","waveForm","attachmentId","isReply","showInChannel","mainMessage","roomJid","push","message","type","from","to","sendResult","send","then","console","log","catch","err","error"],"sourceRoot":"../../../../src","sources":["networking/xmpp/sendMediaMessage.xmpp.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["xml","sendSealedMedia","shouldEncrypt","_sendMediaSeq","toServiceXmlns","devServer","client","clientService","options","service","test","ds","trim","includes","replace","sendMediaMessage","roomJID","data","customId","id","Date","now","dataToSend","xmlns","senderJID","jid","toString","senderFirstName","firstName","senderLastName","lastName","senderWalletAddress","walletAddress","isSystemMessage","tokenAmount","receiverMessageId","mucname","chatName","photoURL","userAvatar","isMediafile","createdAt","expiresAt","fileName","isVisible","location","locationPreview","mimetype","originalName","ownerKey","size","duration","updatedAt","userId","waveForm","attachmentId","isReply","showInChannel","mainMessage","roomJid","push","keys","e2eeKeys","length","clientEncrypted","hints","JSON","stringify","v","message","type","from","to","sendResult","send","then","console","log","catch","err","error"],"sourceRoot":"../../../../src","sources":["networking/xmpp/sendMediaMessage.xmpp.ts"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { xml } from '@xmpp/client';
4
+ import { sendEncrypted, shouldEncrypt } from '../../e2ee/send';
4
5
 
5
6
  // Local monotonic counter — see comment in id construction below.
6
7
  let _sendTextSeq = 0;
@@ -42,11 +43,7 @@ export const sendTextMessage = (client, roomJID, firstName, lastName, photo, wal
42
43
  const id = customId ? customId : isReply ? `send-reply-message-${Date.now()}-${_sendTextSeq = _sendTextSeq + 1 >>> 0}` : `send-text-message-${Date.now()}-${_sendTextSeq = _sendTextSeq + 1 >>> 0}`;
43
44
  try {
44
45
  const dataXmlns = toServiceXmlns(devServer, client);
45
- const message = xml('message', {
46
- to: roomJID,
47
- type: 'groupchat',
48
- id: id
49
- }, xml('data', {
46
+ const data = xml('data', {
50
47
  xmlns: dataXmlns,
51
48
  senderFirstName: firstName,
52
49
  senderLastName: lastName,
@@ -63,7 +60,17 @@ export const sendTextMessage = (client, roomJID, firstName, lastName, photo, wal
63
60
  isReply: isReply || false,
64
61
  mainMessage: mainMessage || '',
65
62
  push: 'true'
66
- }), xml('body', {}, userMessage));
63
+ });
64
+ const body = xml('body', {}, userMessage);
65
+ const message = xml('message', {
66
+ to: roomJID,
67
+ type: 'groupchat',
68
+ id: id
69
+ }, data, body);
70
+ if (shouldEncrypt(roomJID)) {
71
+ sendEncrypted(client, roomJID, id, data, body, message);
72
+ return;
73
+ }
67
74
  const sendResult = client.send(message);
68
75
  if (sendResult && typeof sendResult.then === 'function') {
69
76
  sendResult.then(() => console.log('client.send resolved', {
@@ -1 +1 @@
1
- {"version":3,"names":["xml","_sendTextSeq","toServiceXmlns","devServer","client","clientService","options","service","test","ds","trim","includes","replace","sendTextMessage","roomJID","firstName","lastName","photo","walletAddress","userMessage","notDisplayedValue","isReply","showInChannel","mainMessage","customId","id","Date","now","dataXmlns","message","to","type","xmlns","senderFirstName","senderLastName","fullName","photoURL","senderJID","jid","toString","senderWalletAddress","roomJid","isSystemMessage","tokenAmount","quickReplies","push","sendResult","send","then","console","log","catch","err","error","name","stack"],"sourceRoot":"../../../../src","sources":["networking/xmpp/sendTextMessage.xmpp.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["xml","sendEncrypted","shouldEncrypt","_sendTextSeq","toServiceXmlns","devServer","client","clientService","options","service","test","ds","trim","includes","replace","sendTextMessage","roomJID","firstName","lastName","photo","walletAddress","userMessage","notDisplayedValue","isReply","showInChannel","mainMessage","customId","id","Date","now","dataXmlns","data","xmlns","senderFirstName","senderLastName","fullName","photoURL","senderJID","jid","toString","senderWalletAddress","roomJid","isSystemMessage","tokenAmount","quickReplies","push","body","message","to","type","sendResult","send","then","console","log","catch","err","error","name","stack"],"sourceRoot":"../../../../src","sources":["networking/xmpp/sendTextMessage.xmpp.ts"],"mappings":"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","ignoreList":[]}