@ethora/chat-component-rn 26.8.6 → 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 (409) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +40 -0
  3. package/lib/commonjs/assets/icons.js +4 -2
  4. package/lib/commonjs/assets/icons.js.map +1 -1
  5. package/lib/commonjs/components/MainComponents/ChatHeader.js +28 -6
  6. package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
  7. package/lib/commonjs/components/MainComponents/ChatRoom.js +9 -1
  8. package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
  9. package/lib/commonjs/components/MainComponents/EncryptedSendNotice.js +47 -0
  10. package/lib/commonjs/components/MainComponents/EncryptedSendNotice.js.map +1 -0
  11. package/lib/commonjs/components/MainComponents/EncryptionCard.js +286 -0
  12. package/lib/commonjs/components/MainComponents/EncryptionCard.js.map +1 -0
  13. package/lib/commonjs/components/MainComponents/MediaMessage.js +7 -0
  14. package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
  15. package/lib/commonjs/components/MainComponents/ReduxWrapper.js +5 -0
  16. package/lib/commonjs/components/MainComponents/ReduxWrapper.js.map +1 -1
  17. package/lib/commonjs/components/MainComponents/SealedAttachment.js +231 -0
  18. package/lib/commonjs/components/MainComponents/SealedAttachment.js.map +1 -0
  19. package/lib/commonjs/components/MessageBubble/BottomReplyContainer.js +2 -1
  20. package/lib/commonjs/components/MessageBubble/BottomReplyContainer.js.map +1 -1
  21. package/lib/commonjs/components/MessageBubble/Message.js +66 -6
  22. package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
  23. package/lib/commonjs/components/MessageBubble/MessageInteractions.js +2 -1
  24. package/lib/commonjs/components/MessageBubble/MessageInteractions.js.map +1 -1
  25. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +7 -4
  26. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  27. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +159 -16
  28. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  29. package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js +4 -0
  30. package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
  31. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +29 -6
  32. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  33. package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js +5 -1
  34. package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
  35. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +32 -9
  36. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
  37. package/lib/commonjs/components/RoomComponents/LastMessageItem.js +6 -0
  38. package/lib/commonjs/components/RoomComponents/LastMessageItem.js.map +1 -1
  39. package/lib/commonjs/components/RoomComponents/styled/LastAudioMessage.js +2 -2
  40. package/lib/commonjs/components/RoomComponents/styled/LastAudioMessage.js.map +1 -1
  41. package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js +4 -6
  42. package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
  43. package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js +2 -2
  44. package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
  45. package/lib/commonjs/components/RoomComponents/styled/LastMessageSealed.js +41 -0
  46. package/lib/commonjs/components/RoomComponents/styled/LastMessageSealed.js.map +1 -0
  47. package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js +2 -2
  48. package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
  49. package/lib/commonjs/components/Thread/ThreadWrapper.js +53 -45
  50. package/lib/commonjs/components/Thread/ThreadWrapper.js.map +1 -1
  51. package/lib/commonjs/components/UsersList/UsersList.js +2 -1
  52. package/lib/commonjs/components/UsersList/UsersList.js.map +1 -1
  53. package/lib/commonjs/components/styled/SendInput.js +4 -2
  54. package/lib/commonjs/components/styled/SendInput.js.map +1 -1
  55. package/lib/commonjs/e2ee/crypto.js +207 -0
  56. package/lib/commonjs/e2ee/crypto.js.map +1 -0
  57. package/lib/commonjs/e2ee/deviceStore.js +84 -0
  58. package/lib/commonjs/e2ee/deviceStore.js.map +1 -0
  59. package/lib/commonjs/e2ee/fileCipher.js +95 -0
  60. package/lib/commonjs/e2ee/fileCipher.js.map +1 -0
  61. package/lib/commonjs/e2ee/fileEnvelope.js +79 -0
  62. package/lib/commonjs/e2ee/fileEnvelope.js.map +1 -0
  63. package/lib/commonjs/e2ee/index.js +210 -0
  64. package/lib/commonjs/e2ee/index.js.map +1 -0
  65. package/lib/commonjs/e2ee/limits.js +9 -0
  66. package/lib/commonjs/e2ee/limits.js.map +1 -0
  67. package/lib/commonjs/e2ee/ns.js +8 -0
  68. package/lib/commonjs/e2ee/ns.js.map +1 -0
  69. package/lib/commonjs/e2ee/omemo.js +622 -0
  70. package/lib/commonjs/e2ee/omemo.js.map +1 -0
  71. package/lib/commonjs/e2ee/protobuf.js +149 -0
  72. package/lib/commonjs/e2ee/protobuf.js.map +1 -0
  73. package/lib/commonjs/e2ee/ratchet.js +238 -0
  74. package/lib/commonjs/e2ee/ratchet.js.map +1 -0
  75. package/lib/commonjs/e2ee/sealedBody.js +23 -0
  76. package/lib/commonjs/e2ee/sealedBody.js.map +1 -0
  77. package/lib/commonjs/e2ee/sealedFiles.js +174 -0
  78. package/lib/commonjs/e2ee/sealedFiles.js.map +1 -0
  79. package/lib/commonjs/e2ee/send.js +54 -0
  80. package/lib/commonjs/e2ee/send.js.map +1 -0
  81. package/lib/commonjs/e2ee/stanza.js +114 -0
  82. package/lib/commonjs/e2ee/stanza.js.map +1 -0
  83. package/lib/commonjs/e2ee/store.js +43 -0
  84. package/lib/commonjs/e2ee/store.js.map +1 -0
  85. package/lib/commonjs/helpers/accountName.js +23 -0
  86. package/lib/commonjs/helpers/accountName.js.map +1 -0
  87. package/lib/commonjs/helpers/createMessageFromXml.js +19 -4
  88. package/lib/commonjs/helpers/createMessageFromXml.js.map +1 -1
  89. package/lib/commonjs/helpers/createUserNameFromSetUser.js +2 -1
  90. package/lib/commonjs/helpers/createUserNameFromSetUser.js.map +1 -1
  91. package/lib/commonjs/helpers/displayName.js +16 -0
  92. package/lib/commonjs/helpers/displayName.js.map +1 -0
  93. package/lib/commonjs/helpers/persistCrypto.js +5 -0
  94. package/lib/commonjs/helpers/persistCrypto.js.map +1 -1
  95. package/lib/commonjs/helpers/secureKeyValue.js +20 -0
  96. package/lib/commonjs/helpers/secureKeyValue.js.map +1 -1
  97. package/lib/commonjs/helpers/videoCache.js +136 -0
  98. package/lib/commonjs/helpers/videoCache.js.map +1 -0
  99. package/lib/commonjs/hooks/useLogout.js +8 -0
  100. package/lib/commonjs/hooks/useLogout.js.map +1 -1
  101. package/lib/commonjs/hooks/useSendMessage.js +71 -7
  102. package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
  103. package/lib/commonjs/i18n/strings.js +180 -0
  104. package/lib/commonjs/i18n/strings.js.map +1 -1
  105. package/lib/commonjs/main.js +13 -0
  106. package/lib/commonjs/main.js.map +1 -1
  107. package/lib/commonjs/networking/api-requests/auth.api.js +4 -1
  108. package/lib/commonjs/networking/api-requests/auth.api.js.map +1 -1
  109. package/lib/commonjs/networking/api-requests/rooms.api.js +111 -17
  110. package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
  111. package/lib/commonjs/networking/xmpp/handleStanzas.xmpp.js +40 -0
  112. package/lib/commonjs/networking/xmpp/handleStanzas.xmpp.js.map +1 -1
  113. package/lib/commonjs/networking/xmpp/sendMediaMessage.xmpp.js +16 -3
  114. package/lib/commonjs/networking/xmpp/sendMediaMessage.xmpp.js.map +1 -1
  115. package/lib/commonjs/networking/xmpp/sendTextMessage.xmpp.js +13 -6
  116. package/lib/commonjs/networking/xmpp/sendTextMessage.xmpp.js.map +1 -1
  117. package/lib/commonjs/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.js +14 -6
  118. package/lib/commonjs/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.js.map +1 -1
  119. package/lib/commonjs/networking/xmppClient.js +6 -0
  120. package/lib/commonjs/networking/xmppClient.js.map +1 -1
  121. package/lib/commonjs/roomStore/persistBackend.js +9 -12
  122. package/lib/commonjs/roomStore/persistBackend.js.map +1 -1
  123. package/lib/commonjs/roomStore/persistence.js +8 -1
  124. package/lib/commonjs/roomStore/persistence.js.map +1 -1
  125. package/lib/commonjs/version.js +1 -1
  126. package/lib/module/assets/icons.js +3 -1
  127. package/lib/module/assets/icons.js.map +1 -1
  128. package/lib/module/components/MainComponents/ChatHeader.js +29 -7
  129. package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
  130. package/lib/module/components/MainComponents/ChatRoom.js +9 -1
  131. package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
  132. package/lib/module/components/MainComponents/EncryptedSendNotice.js +42 -0
  133. package/lib/module/components/MainComponents/EncryptedSendNotice.js.map +1 -0
  134. package/lib/module/components/MainComponents/EncryptionCard.js +281 -0
  135. package/lib/module/components/MainComponents/EncryptionCard.js.map +1 -0
  136. package/lib/module/components/MainComponents/MediaMessage.js +7 -0
  137. package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
  138. package/lib/module/components/MainComponents/ReduxWrapper.js +5 -0
  139. package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
  140. package/lib/module/components/MainComponents/SealedAttachment.js +224 -0
  141. package/lib/module/components/MainComponents/SealedAttachment.js.map +1 -0
  142. package/lib/module/components/MessageBubble/BottomReplyContainer.js +2 -1
  143. package/lib/module/components/MessageBubble/BottomReplyContainer.js.map +1 -1
  144. package/lib/module/components/MessageBubble/Message.js +69 -9
  145. package/lib/module/components/MessageBubble/Message.js.map +1 -1
  146. package/lib/module/components/MessageBubble/MessageInteractions.js +2 -1
  147. package/lib/module/components/MessageBubble/MessageInteractions.js.map +1 -1
  148. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +7 -4
  149. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  150. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +161 -18
  151. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  152. package/lib/module/components/Modals/FilePreviewModal/PdfView.js +4 -0
  153. package/lib/module/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
  154. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +32 -8
  155. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  156. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js +4 -0
  157. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
  158. package/lib/module/components/RoomComponents/ChatRoomItem.js +32 -9
  159. package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
  160. package/lib/module/components/RoomComponents/LastMessageItem.js +6 -0
  161. package/lib/module/components/RoomComponents/LastMessageItem.js.map +1 -1
  162. package/lib/module/components/RoomComponents/styled/LastAudioMessage.js +2 -2
  163. package/lib/module/components/RoomComponents/styled/LastAudioMessage.js.map +1 -1
  164. package/lib/module/components/RoomComponents/styled/LastMessageFile.js +4 -6
  165. package/lib/module/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
  166. package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js +2 -2
  167. package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
  168. package/lib/module/components/RoomComponents/styled/LastMessageSealed.js +36 -0
  169. package/lib/module/components/RoomComponents/styled/LastMessageSealed.js.map +1 -0
  170. package/lib/module/components/RoomComponents/styled/LastMessageVideo.js +2 -2
  171. package/lib/module/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
  172. package/lib/module/components/Thread/ThreadWrapper.js +54 -46
  173. package/lib/module/components/Thread/ThreadWrapper.js.map +1 -1
  174. package/lib/module/components/UsersList/UsersList.js +2 -1
  175. package/lib/module/components/UsersList/UsersList.js.map +1 -1
  176. package/lib/module/components/styled/SendInput.js +4 -2
  177. package/lib/module/components/styled/SendInput.js.map +1 -1
  178. package/lib/module/e2ee/crypto.js +170 -0
  179. package/lib/module/e2ee/crypto.js.map +1 -0
  180. package/lib/module/e2ee/deviceStore.js +77 -0
  181. package/lib/module/e2ee/deviceStore.js.map +1 -0
  182. package/lib/module/e2ee/fileCipher.js +90 -0
  183. package/lib/module/e2ee/fileCipher.js.map +1 -0
  184. package/lib/module/e2ee/fileEnvelope.js +66 -0
  185. package/lib/module/e2ee/fileEnvelope.js.map +1 -0
  186. package/lib/module/e2ee/index.js +185 -0
  187. package/lib/module/e2ee/index.js.map +1 -0
  188. package/lib/module/e2ee/limits.js +5 -0
  189. package/lib/module/e2ee/limits.js.map +1 -0
  190. package/lib/module/e2ee/ns.js +4 -0
  191. package/lib/module/e2ee/ns.js.map +1 -0
  192. package/lib/module/e2ee/omemo.js +610 -0
  193. package/lib/module/e2ee/omemo.js.map +1 -0
  194. package/lib/module/e2ee/protobuf.js +140 -0
  195. package/lib/module/e2ee/protobuf.js.map +1 -0
  196. package/lib/module/e2ee/ratchet.js +228 -0
  197. package/lib/module/e2ee/ratchet.js.map +1 -0
  198. package/lib/module/e2ee/sealedBody.js +19 -0
  199. package/lib/module/e2ee/sealedBody.js.map +1 -0
  200. package/lib/module/e2ee/sealedFiles.js +154 -0
  201. package/lib/module/e2ee/sealedFiles.js.map +1 -0
  202. package/lib/module/e2ee/send.js +48 -0
  203. package/lib/module/e2ee/send.js.map +1 -0
  204. package/lib/module/e2ee/stanza.js +107 -0
  205. package/lib/module/e2ee/stanza.js.map +1 -0
  206. package/lib/module/e2ee/store.js +35 -0
  207. package/lib/module/e2ee/store.js.map +1 -0
  208. package/lib/module/helpers/accountName.js +18 -0
  209. package/lib/module/helpers/accountName.js.map +1 -0
  210. package/lib/module/helpers/createMessageFromXml.js +19 -4
  211. package/lib/module/helpers/createMessageFromXml.js.map +1 -1
  212. package/lib/module/helpers/createUserNameFromSetUser.js +3 -1
  213. package/lib/module/helpers/createUserNameFromSetUser.js.map +1 -1
  214. package/lib/module/helpers/displayName.js +11 -0
  215. package/lib/module/helpers/displayName.js.map +1 -0
  216. package/lib/module/helpers/persistCrypto.js +4 -0
  217. package/lib/module/helpers/persistCrypto.js.map +1 -1
  218. package/lib/module/helpers/secureKeyValue.js +19 -0
  219. package/lib/module/helpers/secureKeyValue.js.map +1 -1
  220. package/lib/module/helpers/videoCache.js +125 -0
  221. package/lib/module/helpers/videoCache.js.map +1 -0
  222. package/lib/module/hooks/useLogout.js +8 -0
  223. package/lib/module/hooks/useLogout.js.map +1 -1
  224. package/lib/module/hooks/useSendMessage.js +71 -7
  225. package/lib/module/hooks/useSendMessage.js.map +1 -1
  226. package/lib/module/i18n/strings.js +180 -0
  227. package/lib/module/i18n/strings.js.map +1 -1
  228. package/lib/module/main.js +1 -0
  229. package/lib/module/main.js.map +1 -1
  230. package/lib/module/networking/api-requests/auth.api.js +4 -1
  231. package/lib/module/networking/api-requests/auth.api.js.map +1 -1
  232. package/lib/module/networking/api-requests/rooms.api.js +109 -18
  233. package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
  234. package/lib/module/networking/xmpp/handleStanzas.xmpp.js +38 -0
  235. package/lib/module/networking/xmpp/handleStanzas.xmpp.js.map +1 -1
  236. package/lib/module/networking/xmpp/sendMediaMessage.xmpp.js +16 -3
  237. package/lib/module/networking/xmpp/sendMediaMessage.xmpp.js.map +1 -1
  238. package/lib/module/networking/xmpp/sendTextMessage.xmpp.js +13 -6
  239. package/lib/module/networking/xmpp/sendTextMessage.xmpp.js.map +1 -1
  240. package/lib/module/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.js +14 -6
  241. package/lib/module/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.js.map +1 -1
  242. package/lib/module/networking/xmppClient.js +6 -0
  243. package/lib/module/networking/xmppClient.js.map +1 -1
  244. package/lib/module/roomStore/persistBackend.js +10 -13
  245. package/lib/module/roomStore/persistBackend.js.map +1 -1
  246. package/lib/module/roomStore/persistence.js +8 -1
  247. package/lib/module/roomStore/persistence.js.map +1 -1
  248. package/lib/module/version.js +1 -1
  249. package/lib/typescript/assets/icons.d.ts +8 -0
  250. package/lib/typescript/assets/icons.d.ts.map +1 -1
  251. package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
  252. package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
  253. package/lib/typescript/components/MainComponents/EncryptedSendNotice.d.ts +4 -0
  254. package/lib/typescript/components/MainComponents/EncryptedSendNotice.d.ts.map +1 -0
  255. package/lib/typescript/components/MainComponents/EncryptionCard.d.ts +10 -0
  256. package/lib/typescript/components/MainComponents/EncryptionCard.d.ts.map +1 -0
  257. package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
  258. package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
  259. package/lib/typescript/components/MainComponents/SealedAttachment.d.ts +13 -0
  260. package/lib/typescript/components/MainComponents/SealedAttachment.d.ts.map +1 -0
  261. package/lib/typescript/components/MessageBubble/BottomReplyContainer.d.ts.map +1 -1
  262. package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
  263. package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts.map +1 -1
  264. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
  265. package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
  266. package/lib/typescript/components/Modals/FilePreviewModal/PdfView.d.ts.map +1 -1
  267. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
  268. package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts.map +1 -1
  269. package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts.map +1 -1
  270. package/lib/typescript/components/RoomComponents/LastMessageItem.d.ts.map +1 -1
  271. package/lib/typescript/components/RoomComponents/styled/LastAudioMessage.d.ts.map +1 -1
  272. package/lib/typescript/components/RoomComponents/styled/LastMessageSealed.d.ts +7 -0
  273. package/lib/typescript/components/RoomComponents/styled/LastMessageSealed.d.ts.map +1 -0
  274. package/lib/typescript/components/Thread/ThreadWrapper.d.ts.map +1 -1
  275. package/lib/typescript/components/UsersList/UsersList.d.ts.map +1 -1
  276. package/lib/typescript/components/styled/SendInput.d.ts +1 -0
  277. package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
  278. package/lib/typescript/e2ee/crypto.d.ts +28 -0
  279. package/lib/typescript/e2ee/crypto.d.ts.map +1 -0
  280. package/lib/typescript/e2ee/deviceStore.d.ts +4 -0
  281. package/lib/typescript/e2ee/deviceStore.d.ts.map +1 -0
  282. package/lib/typescript/e2ee/fileCipher.d.ts +7 -0
  283. package/lib/typescript/e2ee/fileCipher.d.ts.map +1 -0
  284. package/lib/typescript/e2ee/fileEnvelope.d.ts +27 -0
  285. package/lib/typescript/e2ee/fileEnvelope.d.ts.map +1 -0
  286. package/lib/typescript/e2ee/index.d.ts +23 -0
  287. package/lib/typescript/e2ee/index.d.ts.map +1 -0
  288. package/lib/typescript/e2ee/limits.d.ts +3 -0
  289. package/lib/typescript/e2ee/limits.d.ts.map +1 -0
  290. package/lib/typescript/e2ee/ns.d.ts +2 -0
  291. package/lib/typescript/e2ee/ns.d.ts.map +1 -0
  292. package/lib/typescript/e2ee/omemo.d.ts +64 -0
  293. package/lib/typescript/e2ee/omemo.d.ts.map +1 -0
  294. package/lib/typescript/e2ee/protobuf.d.ts +25 -0
  295. package/lib/typescript/e2ee/protobuf.d.ts.map +1 -0
  296. package/lib/typescript/e2ee/ratchet.d.ts +39 -0
  297. package/lib/typescript/e2ee/ratchet.d.ts.map +1 -0
  298. package/lib/typescript/e2ee/sealedBody.d.ts +2 -0
  299. package/lib/typescript/e2ee/sealedBody.d.ts.map +1 -0
  300. package/lib/typescript/e2ee/sealedFiles.d.ts +31 -0
  301. package/lib/typescript/e2ee/sealedFiles.d.ts.map +1 -0
  302. package/lib/typescript/e2ee/send.d.ts +6 -0
  303. package/lib/typescript/e2ee/send.d.ts.map +1 -0
  304. package/lib/typescript/e2ee/stanza.d.ts +8 -0
  305. package/lib/typescript/e2ee/stanza.d.ts.map +1 -0
  306. package/lib/typescript/e2ee/store.d.ts +16 -0
  307. package/lib/typescript/e2ee/store.d.ts.map +1 -0
  308. package/lib/typescript/helpers/accountName.d.ts +7 -0
  309. package/lib/typescript/helpers/accountName.d.ts.map +1 -0
  310. package/lib/typescript/helpers/createMessageFromXml.d.ts.map +1 -1
  311. package/lib/typescript/helpers/createUserNameFromSetUser.d.ts.map +1 -1
  312. package/lib/typescript/helpers/displayName.d.ts +2 -0
  313. package/lib/typescript/helpers/displayName.d.ts.map +1 -0
  314. package/lib/typescript/helpers/persistCrypto.d.ts +1 -0
  315. package/lib/typescript/helpers/persistCrypto.d.ts.map +1 -1
  316. package/lib/typescript/helpers/secureKeyValue.d.ts +4 -0
  317. package/lib/typescript/helpers/secureKeyValue.d.ts.map +1 -1
  318. package/lib/typescript/helpers/videoCache.d.ts +19 -0
  319. package/lib/typescript/helpers/videoCache.d.ts.map +1 -0
  320. package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
  321. package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
  322. package/lib/typescript/i18n/strings.d.ts.map +1 -1
  323. package/lib/typescript/main.d.ts +2 -0
  324. package/lib/typescript/main.d.ts.map +1 -1
  325. package/lib/typescript/networking/api-requests/auth.api.d.ts +4 -1
  326. package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
  327. package/lib/typescript/networking/api-requests/rooms.api.d.ts +22 -1
  328. package/lib/typescript/networking/api-requests/rooms.api.d.ts.map +1 -1
  329. package/lib/typescript/networking/xmpp/handleStanzas.xmpp.d.ts +1 -0
  330. package/lib/typescript/networking/xmpp/handleStanzas.xmpp.d.ts.map +1 -1
  331. package/lib/typescript/networking/xmpp/sendMediaMessage.xmpp.d.ts.map +1 -1
  332. package/lib/typescript/networking/xmpp/sendTextMessage.xmpp.d.ts.map +1 -1
  333. package/lib/typescript/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.d.ts.map +1 -1
  334. package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
  335. package/lib/typescript/roomStore/persistBackend.d.ts.map +1 -1
  336. package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
  337. package/lib/typescript/types/models/message.model.d.ts +5 -0
  338. package/lib/typescript/types/models/message.model.d.ts.map +1 -1
  339. package/lib/typescript/types/models/room.model.d.ts +5 -0
  340. package/lib/typescript/types/models/room.model.d.ts.map +1 -1
  341. package/lib/typescript/types/types.d.ts +4 -0
  342. package/lib/typescript/types/types.d.ts.map +1 -1
  343. package/lib/typescript/version.d.ts +1 -1
  344. package/package.json +8 -4
  345. package/src/assets/icons.tsx +27 -0
  346. package/src/components/MainComponents/ChatHeader.tsx +30 -9
  347. package/src/components/MainComponents/ChatRoom.tsx +11 -1
  348. package/src/components/MainComponents/EncryptedSendNotice.tsx +35 -0
  349. package/src/components/MainComponents/EncryptionCard.tsx +287 -0
  350. package/src/components/MainComponents/MediaMessage.tsx +5 -0
  351. package/src/components/MainComponents/ReduxWrapper.tsx +5 -0
  352. package/src/components/MainComponents/SealedAttachment.tsx +251 -0
  353. package/src/components/MessageBubble/BottomReplyContainer.tsx +2 -1
  354. package/src/components/MessageBubble/Message.tsx +96 -6
  355. package/src/components/MessageBubble/MessageInteractions.tsx +2 -3
  356. package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +7 -4
  357. package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +181 -35
  358. package/src/components/Modals/FilePreviewModal/PdfView.tsx +4 -0
  359. package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +53 -8
  360. package/src/components/Modals/UserSettingsModal/UserSettingsModal.tsx +5 -0
  361. package/src/components/RoomComponents/ChatRoomItem.tsx +23 -11
  362. package/src/components/RoomComponents/LastMessageItem.tsx +5 -0
  363. package/src/components/RoomComponents/styled/LastAudioMessage.tsx +3 -1
  364. package/src/components/RoomComponents/styled/LastMessageFile.tsx +2 -2
  365. package/src/components/RoomComponents/styled/LastMessagePhoto.tsx +1 -1
  366. package/src/components/RoomComponents/styled/LastMessageSealed.tsx +31 -0
  367. package/src/components/RoomComponents/styled/LastMessageVideo.tsx +1 -1
  368. package/src/components/Thread/ThreadWrapper.tsx +13 -0
  369. package/src/components/UsersList/UsersList.tsx +2 -1
  370. package/src/components/styled/SendInput.tsx +5 -2
  371. package/src/e2ee/crypto.ts +194 -0
  372. package/src/e2ee/deviceStore.ts +80 -0
  373. package/src/e2ee/fileCipher.ts +86 -0
  374. package/src/e2ee/fileEnvelope.ts +115 -0
  375. package/src/e2ee/index.ts +192 -0
  376. package/src/e2ee/limits.ts +2 -0
  377. package/src/e2ee/ns.ts +1 -0
  378. package/src/e2ee/omemo.ts +802 -0
  379. package/src/e2ee/protobuf.ts +188 -0
  380. package/src/e2ee/ratchet.ts +271 -0
  381. package/src/e2ee/sealedBody.ts +17 -0
  382. package/src/e2ee/sealedFiles.ts +181 -0
  383. package/src/e2ee/send.ts +70 -0
  384. package/src/e2ee/stanza.ts +133 -0
  385. package/src/e2ee/store.ts +54 -0
  386. package/src/helpers/accountName.ts +15 -0
  387. package/src/helpers/createMessageFromXml.ts +31 -6
  388. package/src/helpers/createUserNameFromSetUser.ts +2 -1
  389. package/src/helpers/displayName.ts +9 -0
  390. package/src/helpers/persistCrypto.ts +5 -0
  391. package/src/helpers/secureKeyValue.ts +15 -0
  392. package/src/helpers/videoCache.ts +138 -0
  393. package/src/hooks/useLogout.tsx +9 -0
  394. package/src/hooks/useSendMessage.tsx +71 -5
  395. package/src/i18n/strings.ts +180 -0
  396. package/src/main.ts +2 -0
  397. package/src/networking/api-requests/auth.api.ts +9 -1
  398. package/src/networking/api-requests/rooms.api.ts +121 -18
  399. package/src/networking/xmpp/handleStanzas.xmpp.ts +49 -0
  400. package/src/networking/xmpp/sendMediaMessage.xmpp.ts +19 -1
  401. package/src/networking/xmpp/sendTextMessage.xmpp.ts +17 -10
  402. package/src/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.ts +23 -10
  403. package/src/networking/xmppClient.ts +6 -0
  404. package/src/roomStore/persistBackend.ts +8 -11
  405. package/src/roomStore/persistence.ts +15 -0
  406. package/src/types/models/message.model.ts +5 -0
  407. package/src/types/models/room.model.ts +5 -0
  408. package/src/types/types.ts +4 -0
  409. package/src/version.ts +1 -1
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ import AsyncStorage from '@react-native-async-storage/async-storage';
4
+ import { secureGetOrCreate } from '../helpers/secureKeyValue';
5
+ import { decryptFromPersist, encryptForPersist, isPersistKeyKept } from '../helpers/persistCrypto';
6
+ import { randomBytes, toHex } from './crypto';
7
+ import { createStore } from './store';
8
+ const MMKV_INSTANCE_ID = 'ethora-omemo';
9
+ const MMKV_KEY_STORE_KEY = 'ethora_omemo_store_key';
10
+ const ASYNC_STORAGE_PREFIX = '@ethora/omemo:';
11
+ const createMmkvBackend = async () => {
12
+ let MMKV;
13
+ try {
14
+ MMKV = require('react-native-mmkv').MMKV;
15
+ } catch {
16
+ return null;
17
+ }
18
+ if (typeof MMKV !== 'function') {
19
+ return null;
20
+ }
21
+ const key = await secureGetOrCreate(MMKV_KEY_STORE_KEY, () => toHex(randomBytes(8)));
22
+ if (!key) {
23
+ throw new Error('e2ee: the device store key was not kept');
24
+ }
25
+ try {
26
+ const storage = new MMKV({
27
+ id: MMKV_INSTANCE_ID,
28
+ encryptionKey: key.value
29
+ });
30
+ if (key.created) {
31
+ storage.clearAll();
32
+ }
33
+ return {
34
+ getItem: async key => storage.getString(key) ?? null,
35
+ setItem: async (key, value) => void storage.set(key, value),
36
+ removeItem: async key => void storage.delete(key)
37
+ };
38
+ } catch (e) {
39
+ console.warn('[e2ee] react-native-mmkv present but unusable, falling back', e);
40
+ return null;
41
+ }
42
+ };
43
+ const asyncStorageBackend = {
44
+ getItem: async key => {
45
+ const raw = await AsyncStorage.getItem(ASYNC_STORAGE_PREFIX + key);
46
+ return raw ? decryptFromPersist(raw) : null;
47
+ },
48
+ setItem: async (key, value) => AsyncStorage.setItem(ASYNC_STORAGE_PREFIX + key, await encryptForPersist(value)),
49
+ removeItem: key => AsyncStorage.removeItem(ASYNC_STORAGE_PREFIX + key)
50
+ };
51
+ const createAsyncStorageBackend = async () => {
52
+ if (!(await isPersistKeyKept())) {
53
+ throw new Error('e2ee: the storage cipher key was not kept');
54
+ }
55
+ return asyncStorageBackend;
56
+ };
57
+ let backendPromise = null;
58
+ const getBackend = () => {
59
+ if (!backendPromise) {
60
+ const opening = createMmkvBackend().then(mmkv => mmkv ?? createAsyncStorageBackend());
61
+ backendPromise = opening;
62
+ // A refusal is not cached: the next start may find the store usable.
63
+ opening.catch(() => {
64
+ if (backendPromise === opening) {
65
+ backendPromise = null;
66
+ }
67
+ });
68
+ }
69
+ return backendPromise;
70
+ };
71
+ export async function openDeviceStore(jid) {
72
+ return createStore(await getBackend(), jid);
73
+ }
74
+ export const __resetDeviceStoreForTests = () => {
75
+ backendPromise = null;
76
+ };
77
+ //# sourceMappingURL=deviceStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AsyncStorage","secureGetOrCreate","decryptFromPersist","encryptForPersist","isPersistKeyKept","randomBytes","toHex","createStore","MMKV_INSTANCE_ID","MMKV_KEY_STORE_KEY","ASYNC_STORAGE_PREFIX","createMmkvBackend","MMKV","require","key","Error","storage","id","encryptionKey","value","created","clearAll","getItem","getString","setItem","set","removeItem","delete","e","console","warn","asyncStorageBackend","raw","createAsyncStorageBackend","backendPromise","getBackend","opening","then","mmkv","catch","openDeviceStore","jid","__resetDeviceStoreForTests"],"sourceRoot":"../../../src","sources":["e2ee/deviceStore.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ import { cbc } from '@noble/ciphers/aes.js';
4
+ import { hmac } from '@noble/hashes/hmac.js';
5
+ import { sha256 } from '@noble/hashes/sha2.js';
6
+ import { bytesEqual, concatBytes, hkdfSha256, randomBytes } from './crypto';
7
+ const SLICE = 32 * 1024;
8
+ const BLOCK = 16;
9
+ const yieldToUi = () => new Promise(resolve => setTimeout(resolve, 0));
10
+ function payloadKeys(key) {
11
+ const km = hkdfSha256(key, undefined, 'OMEMO Payload', 80);
12
+ return {
13
+ enc: km.slice(0, 32),
14
+ auth: km.slice(32, 64),
15
+ iv: km.slice(64)
16
+ };
17
+ }
18
+ export async function encryptLargePayload(plaintext, onProgress) {
19
+ const key = randomBytes(32);
20
+ const {
21
+ enc,
22
+ auth,
23
+ iv
24
+ } = payloadKeys(key);
25
+ const payload = new Uint8Array((Math.floor(plaintext.length / BLOCK) + 1) * BLOCK);
26
+ const mac = hmac.create(sha256, auth);
27
+ let offset = 0;
28
+ let chain = iv;
29
+ while (plaintext.length - offset > SLICE) {
30
+ const out = payload.subarray(offset, offset + SLICE);
31
+ out.set(cbc(enc, chain, {
32
+ disablePadding: true
33
+ }).encrypt(plaintext.subarray(offset, offset + SLICE)));
34
+ mac.update(out);
35
+ chain = out.slice(SLICE - BLOCK);
36
+ offset += SLICE;
37
+ onProgress?.(offset / plaintext.length);
38
+ await yieldToUi();
39
+ }
40
+ const last = cbc(enc, chain).encrypt(plaintext.subarray(offset));
41
+ payload.set(last, offset);
42
+ mac.update(last);
43
+ onProgress?.(1);
44
+ return {
45
+ keyMaterial: concatBytes(key, mac.digest().slice(0, 16)),
46
+ payload
47
+ };
48
+ }
49
+ export async function decryptLargePayload(keyMaterial, payload, onProgress) {
50
+ if (keyMaterial.length !== 48) {
51
+ throw new Error('Invalid key material');
52
+ }
53
+ if (payload.length === 0 || payload.length % BLOCK !== 0) {
54
+ throw new Error('Payload authentication failed');
55
+ }
56
+ const {
57
+ enc,
58
+ auth,
59
+ iv
60
+ } = payloadKeys(keyMaterial.slice(0, 32));
61
+ const mac = hmac.create(sha256, auth);
62
+ for (let offset = 0; offset < payload.length; offset += SLICE) {
63
+ mac.update(payload.subarray(offset, offset + SLICE));
64
+ onProgress?.(Math.min(offset + SLICE, payload.length) / payload.length * 0.65);
65
+ if (offset + SLICE < payload.length) {
66
+ await yieldToUi();
67
+ }
68
+ }
69
+ if (!bytesEqual(mac.digest().slice(0, 16), keyMaterial.slice(32))) {
70
+ throw new Error('Payload authentication failed');
71
+ }
72
+ const plaintext = new Uint8Array(payload.length);
73
+ let offset = 0;
74
+ let chain = iv;
75
+ while (payload.length - offset > SLICE) {
76
+ const part = payload.subarray(offset, offset + SLICE);
77
+ plaintext.set(cbc(enc, chain, {
78
+ disablePadding: true
79
+ }).decrypt(part), offset);
80
+ chain = part.slice(SLICE - BLOCK);
81
+ offset += SLICE;
82
+ onProgress?.(0.65 + offset / payload.length * 0.35);
83
+ await yieldToUi();
84
+ }
85
+ const last = cbc(enc, chain).decrypt(payload.subarray(offset));
86
+ plaintext.set(last, offset);
87
+ onProgress?.(1);
88
+ return plaintext.subarray(0, offset + last.length);
89
+ }
90
+ //# sourceMappingURL=fileCipher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["cbc","hmac","sha256","bytesEqual","concatBytes","hkdfSha256","randomBytes","SLICE","BLOCK","yieldToUi","Promise","resolve","setTimeout","payloadKeys","key","km","undefined","enc","slice","auth","iv","encryptLargePayload","plaintext","onProgress","payload","Uint8Array","Math","floor","length","mac","create","offset","chain","out","subarray","set","disablePadding","encrypt","update","last","keyMaterial","digest","decryptLargePayload","Error","min","part","decrypt"],"sourceRoot":"../../../src","sources":["e2ee/fileCipher.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ import { bytesToUtf8, fromBase64, randomBytes, toBase64, toHex, utf8ToBytes } from './crypto';
4
+ import { decryptLargePayload, encryptLargePayload } from './fileCipher';
5
+ export { parseSealedMediaBody } from './sealedBody';
6
+ const MAGIC = Uint8Array.from([0x45, 0x54, 0x48, 0x4f, 0x46, 0x49, 0x4c, 0x45]);
7
+ const VERSION = 1;
8
+ const HEADER_OFFSET = MAGIC.length + 1 + 4;
9
+ export function encodeFileEnvelope(meta, bytes) {
10
+ const header = utf8ToBytes(JSON.stringify({
11
+ mimetype: meta.mimetype,
12
+ originalname: meta.originalname,
13
+ size: meta.size
14
+ }));
15
+ const out = new Uint8Array(HEADER_OFFSET + header.length + bytes.length);
16
+ out.set(MAGIC, 0);
17
+ out[MAGIC.length] = VERSION;
18
+ new DataView(out.buffer).setUint32(MAGIC.length + 1, header.length, false);
19
+ out.set(header, HEADER_OFFSET);
20
+ out.set(bytes, HEADER_OFFSET + header.length);
21
+ return out;
22
+ }
23
+ export function decodeFileEnvelope(envelope) {
24
+ if (envelope.length < HEADER_OFFSET) {
25
+ throw new Error('file_envelope_truncated');
26
+ }
27
+ for (let i = 0; i < MAGIC.length; i++) {
28
+ if (envelope[i] !== MAGIC[i]) {
29
+ throw new Error('file_envelope_bad_magic');
30
+ }
31
+ }
32
+ const version = envelope[MAGIC.length];
33
+ if (version !== VERSION) {
34
+ throw new Error(`file_envelope_unsupported_version_${version}`);
35
+ }
36
+ const headerLen = new DataView(envelope.buffer, envelope.byteOffset, envelope.byteLength).getUint32(MAGIC.length + 1, false);
37
+ const bodyStart = HEADER_OFFSET + headerLen;
38
+ if (bodyStart > envelope.length) {
39
+ throw new Error('file_envelope_truncated');
40
+ }
41
+ const meta = JSON.parse(bytesToUtf8(envelope.subarray(HEADER_OFFSET, bodyStart)));
42
+ return {
43
+ meta,
44
+ bytes: envelope.subarray(bodyStart)
45
+ };
46
+ }
47
+ export async function sealFileForUpload(file, onProgress) {
48
+ const envelope = encodeFileEnvelope({
49
+ mimetype: file.type || 'application/octet-stream',
50
+ originalname: file.name || 'blob',
51
+ size: file.bytes.length
52
+ }, file.bytes);
53
+ const {
54
+ keyMaterial,
55
+ payload
56
+ } = await encryptLargePayload(envelope, onProgress);
57
+ return {
58
+ ciphertext: payload,
59
+ keyMaterial: toBase64(keyMaterial),
60
+ filename: toHex(randomBytes(16))
61
+ };
62
+ }
63
+ export async function openSealedFile(ciphertext, keyMaterial, onProgress) {
64
+ return decodeFileEnvelope(await decryptLargePayload(fromBase64(keyMaterial), ciphertext, onProgress));
65
+ }
66
+ //# sourceMappingURL=fileEnvelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["bytesToUtf8","fromBase64","randomBytes","toBase64","toHex","utf8ToBytes","decryptLargePayload","encryptLargePayload","parseSealedMediaBody","MAGIC","Uint8Array","from","VERSION","HEADER_OFFSET","length","encodeFileEnvelope","meta","bytes","header","JSON","stringify","mimetype","originalname","size","out","set","DataView","buffer","setUint32","decodeFileEnvelope","envelope","Error","i","version","headerLen","byteOffset","byteLength","getUint32","bodyStart","parse","subarray","sealFileForUpload","file","onProgress","type","name","keyMaterial","payload","ciphertext","filename","openSealedFile"],"sourceRoot":"../../../src","sources":["e2ee/fileEnvelope.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+
3
+ import { Platform } from 'react-native';
4
+ import { store } from '../roomStore';
5
+ export { NS_OMEMO } from './ns';
6
+ let enabled = false;
7
+ let instance;
8
+ let starting;
9
+ let live;
10
+ let generation = 0;
11
+ const bareJidOf = client => client?.jid?.bare?.().toString()?.toLowerCase() || undefined;
12
+ const deviceLabel = () => Platform.OS === 'ios' ? 'iOS' : Platform.OS === 'android' ? 'Android' : 'Mobile';
13
+ export function setE2eeEnabled(value) {
14
+ if (enabled === value) {
15
+ return;
16
+ }
17
+ enabled = value;
18
+ if (!enabled) {
19
+ instance = undefined;
20
+ starting = undefined;
21
+ generation++;
22
+ } else {
23
+ void maybeStart();
24
+ }
25
+ }
26
+ export function isE2eeEnabled() {
27
+ return enabled;
28
+ }
29
+ export function onOnline(client) {
30
+ live = client;
31
+ if (instance && instance.jid === bareJidOf(client)) {
32
+ instance.useClient(client);
33
+ void instance.ensurePublished();
34
+ return;
35
+ }
36
+ void maybeStart();
37
+ }
38
+ function maybeStart() {
39
+ const client = live;
40
+ if (!enabled || !client) {
41
+ return Promise.resolve(undefined);
42
+ }
43
+ const jid = bareJidOf(client);
44
+ if (!jid) {
45
+ return Promise.resolve(undefined);
46
+ }
47
+ if (instance && instance.jid === jid) {
48
+ return Promise.resolve(instance);
49
+ }
50
+ if (starting) {
51
+ return starting;
52
+ }
53
+ const mine = ++generation;
54
+ starting = (async () => {
55
+ await Promise.resolve();
56
+ try {
57
+ const {
58
+ Omemo: OmemoClass
59
+ } = require('./omemo');
60
+ const {
61
+ openDeviceStore
62
+ } = require('./deviceStore');
63
+ const keyStore = await openDeviceStore(jid);
64
+ const created = await OmemoClass.open(client, jid, keyStore, {
65
+ label: deviceLabel()
66
+ });
67
+ if (mine !== generation) {
68
+ return undefined;
69
+ }
70
+ if (live && live !== client) {
71
+ created.useClient(live);
72
+ }
73
+ instance = created;
74
+ if (__DEV__) {
75
+ console.log(`[e2ee] device ${created.deviceId} ready for ${jid} (${created.fingerprint})`);
76
+ }
77
+ return instance;
78
+ } catch (err) {
79
+ console.warn('[e2ee] could not start', err);
80
+ return undefined;
81
+ } finally {
82
+ if (mine === generation) {
83
+ starting = undefined;
84
+ }
85
+ }
86
+ })();
87
+ return starting;
88
+ }
89
+ export function stopOmemo() {
90
+ instance = undefined;
91
+ starting = undefined;
92
+ live = undefined;
93
+ generation++;
94
+ }
95
+ export function omemo() {
96
+ return enabled ? instance : undefined;
97
+ }
98
+ export function omemoReady() {
99
+ if (!enabled) {
100
+ return Promise.resolve(undefined);
101
+ }
102
+ if (instance) {
103
+ return Promise.resolve(instance);
104
+ }
105
+ return starting ?? maybeStart();
106
+ }
107
+ export function isE2eeRoom(roomJid) {
108
+ if (!roomJid) {
109
+ return false;
110
+ }
111
+ const jid = roomJid.split('/')[0];
112
+ return Boolean(store.getState()?.rooms?.rooms?.[jid]?.e2ee);
113
+ }
114
+ export function canSendToRoom(roomJid) {
115
+ return enabled || !isE2eeRoom(roomJid);
116
+ }
117
+ export function canEditMessage(message) {
118
+ if (!message) {
119
+ return false;
120
+ }
121
+ return message.unencrypted === true || !isE2eeRoom(message.roomJid);
122
+ }
123
+ export function canSendMediaToRoom(roomJid) {
124
+ return enabled || !isE2eeRoom(roomJid);
125
+ }
126
+ export function roomRecipients(roomJid, domain) {
127
+ const jid = roomJid.split('/')[0];
128
+ const members = store.getState()?.rooms?.rooms?.[jid]?.members ?? [];
129
+ return toAccounts(members, domain);
130
+ }
131
+ const toAccounts = (members, domain) => members.map(m => String(m?.xmppUsername || '').split('@')[0]).filter(Boolean).map(local => `${local}@${domain}`.toLowerCase());
132
+ const FETCHED_MEMBERS_TTL = 60_000;
133
+ const fetchedMembers = new Map();
134
+ export async function resolveRecipients(roomJid, domain) {
135
+ const jid = roomJid.split('/')[0];
136
+ const known = roomRecipients(roomJid, domain);
137
+ const expected = Number(store.getState()?.rooms?.rooms?.[jid]?.usersCnt || 0);
138
+ if (known.length > 0 && known.length >= expected) {
139
+ return known;
140
+ }
141
+ const cached = fetchedMembers.get(jid);
142
+ if (cached && Date.now() - cached.at < FETCHED_MEMBERS_TTL) {
143
+ return cached.accounts;
144
+ }
145
+ const accounts = (async () => {
146
+ const api = require('../networking/api-requests/rooms.api');
147
+ const response = await api.getRoomByName(jid.split('@')[0]);
148
+ const room = response?.result ?? response;
149
+ const appId = api.ownAppId();
150
+ const found = toAccounts((room?.members || []).map(m => ({
151
+ xmppUsername: api.memberAccount(m, appId)
152
+ })), domain);
153
+ if (found.length === 0) {
154
+ throw new Error('no members returned');
155
+ }
156
+ if (found.length < known.length) {
157
+ return known;
158
+ }
159
+ return found;
160
+ })().catch(err => {
161
+ fetchedMembers.delete(jid);
162
+ throw new Error(`omemo_members_unknown: ${String(err?.message || err)}`);
163
+ });
164
+ fetchedMembers.set(jid, {
165
+ at: Date.now(),
166
+ accounts
167
+ });
168
+ return accounts;
169
+ }
170
+ export function senderJidFromMuc(from, domain) {
171
+ const nick = String(from || '').split('/')[1];
172
+ if (!nick || !domain) {
173
+ return undefined;
174
+ }
175
+ return `${nick}@${domain}`.toLowerCase();
176
+ }
177
+ export function accountDomain(client) {
178
+ return String(client?.jid?.getDomain?.() || '').toLowerCase();
179
+ }
180
+ export const __resetE2eeForTests = () => {
181
+ enabled = false;
182
+ stopOmemo();
183
+ fetchedMembers.clear();
184
+ };
185
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","store","NS_OMEMO","enabled","instance","starting","live","generation","bareJidOf","client","jid","bare","toString","toLowerCase","undefined","deviceLabel","OS","setE2eeEnabled","value","maybeStart","isE2eeEnabled","onOnline","useClient","ensurePublished","Promise","resolve","mine","Omemo","OmemoClass","require","openDeviceStore","keyStore","created","open","label","__DEV__","console","log","deviceId","fingerprint","err","warn","stopOmemo","omemo","omemoReady","isE2eeRoom","roomJid","split","Boolean","getState","rooms","e2ee","canSendToRoom","canEditMessage","message","unencrypted","canSendMediaToRoom","roomRecipients","domain","members","toAccounts","map","m","String","xmppUsername","filter","local","FETCHED_MEMBERS_TTL","fetchedMembers","Map","resolveRecipients","known","expected","Number","usersCnt","length","cached","get","Date","now","at","accounts","api","response","getRoomByName","room","result","appId","ownAppId","found","memberAccount","Error","catch","delete","set","senderJidFromMuc","from","nick","accountDomain","getDomain","__resetE2eeForTests","clear"],"sourceRoot":"../../../src","sources":["e2ee/index.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ export const MAX_SEAL_BYTES = 20 * 1024 * 1024;
4
+ export const MAX_OPEN_BYTES = 50 * 1024 * 1024;
5
+ //# sourceMappingURL=limits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MAX_SEAL_BYTES","MAX_OPEN_BYTES"],"sourceRoot":"../../../src","sources":["e2ee/limits.ts"],"mappings":";;AAAA,OAAO,MAAMA,cAAc,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;AAC9C,OAAO,MAAMC,cAAc,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export const NS_OMEMO = 'urn:xmpp:omemo:2';
4
+ //# sourceMappingURL=ns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NS_OMEMO"],"sourceRoot":"../../../src","sources":["e2ee/ns.ts"],"mappings":";;AAAA,OAAO,MAAMA,QAAQ,GAAG,kBAAkB","ignoreList":[]}