@ethora/chat-component-rn 26.10.5 → 26.10.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 (426) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +18 -0
  3. package/app.plugin.js +2 -0
  4. package/lib/commonjs/assets/icons.js +2 -2
  5. package/lib/commonjs/assets/icons.js.map +1 -1
  6. package/lib/commonjs/components/MainComponents/AlbumGrid.js +152 -0
  7. package/lib/commonjs/components/MainComponents/AlbumGrid.js.map +1 -0
  8. package/lib/commonjs/components/MainComponents/ChatRoom.js +2 -2
  9. package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
  10. package/lib/commonjs/components/MainComponents/MediaMessage.js +199 -123
  11. package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
  12. package/lib/commonjs/components/MainComponents/MediaUploadOverlay.js +109 -0
  13. package/lib/commonjs/components/MainComponents/MediaUploadOverlay.js.map +1 -0
  14. package/lib/commonjs/components/MessageBubble/MediaCaption.js +51 -0
  15. package/lib/commonjs/components/MessageBubble/MediaCaption.js.map +1 -0
  16. package/lib/commonjs/components/MessageBubble/Message.js +40 -1
  17. package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
  18. package/lib/commonjs/components/MessageBubble/MessageInteractions.js +2 -1
  19. package/lib/commonjs/components/MessageBubble/MessageInteractions.js.map +1 -1
  20. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +75 -0
  21. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  22. package/lib/commonjs/components/RoomComponents/LastMessageItem.js +20 -4
  23. package/lib/commonjs/components/RoomComponents/LastMessageItem.js.map +1 -1
  24. package/lib/commonjs/components/RoomComponents/styled/LastAudioMessage.js +3 -2
  25. package/lib/commonjs/components/RoomComponents/styled/LastAudioMessage.js.map +1 -1
  26. package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js +3 -2
  27. package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
  28. package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js +3 -2
  29. package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
  30. package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js +3 -2
  31. package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
  32. package/lib/commonjs/components/Thread/ThreadWrapper.js +3 -2
  33. package/lib/commonjs/components/Thread/ThreadWrapper.js.map +1 -1
  34. package/lib/commonjs/components/styled/MediaFilePreview.js +60 -47
  35. package/lib/commonjs/components/styled/MediaFilePreview.js.map +1 -1
  36. package/lib/commonjs/components/styled/MessageImage.js +16 -6
  37. package/lib/commonjs/components/styled/MessageImage.js.map +1 -1
  38. package/lib/commonjs/components/styled/SendInput.js +99 -68
  39. package/lib/commonjs/components/styled/SendInput.js.map +1 -1
  40. package/lib/commonjs/components/styled/VideoMessage.js +24 -10
  41. package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
  42. package/lib/commonjs/context/xmppProvider.js +46 -0
  43. package/lib/commonjs/context/xmppProvider.js.map +1 -1
  44. package/lib/commonjs/e2ee/fileEnvelope.js +6 -0
  45. package/lib/commonjs/e2ee/fileEnvelope.js.map +1 -1
  46. package/lib/commonjs/e2ee/sealedBody.js +32 -2
  47. package/lib/commonjs/e2ee/sealedBody.js.map +1 -1
  48. package/lib/commonjs/helpers/albumLayout.js +150 -0
  49. package/lib/commonjs/helpers/albumLayout.js.map +1 -0
  50. package/lib/commonjs/helpers/attachments.js +255 -0
  51. package/lib/commonjs/helpers/attachments.js.map +1 -0
  52. package/lib/commonjs/helpers/caption.js +214 -0
  53. package/lib/commonjs/helpers/caption.js.map +1 -0
  54. package/lib/commonjs/helpers/createMainMessageForThread.js +5 -1
  55. package/lib/commonjs/helpers/createMainMessageForThread.js.map +1 -1
  56. package/lib/commonjs/helpers/createMessageFromXml.js +19 -5
  57. package/lib/commonjs/helpers/createMessageFromXml.js.map +1 -1
  58. package/lib/commonjs/helpers/fileKind.js +40 -0
  59. package/lib/commonjs/helpers/fileKind.js.map +1 -0
  60. package/lib/commonjs/helpers/getDataFromXml.js +6 -1
  61. package/lib/commonjs/helpers/getDataFromXml.js.map +1 -1
  62. package/lib/commonjs/helpers/mapWithConcurrency.js +41 -0
  63. package/lib/commonjs/helpers/mapWithConcurrency.js.map +1 -0
  64. package/lib/commonjs/helpers/mediaLimits.js +33 -0
  65. package/lib/commonjs/helpers/mediaLimits.js.map +1 -0
  66. package/lib/commonjs/helpers/mediaSendRetry.js +64 -0
  67. package/lib/commonjs/helpers/mediaSendRetry.js.map +1 -0
  68. package/lib/commonjs/helpers/mediaWireData.js +62 -0
  69. package/lib/commonjs/helpers/mediaWireData.js.map +1 -0
  70. package/lib/commonjs/helpers/mentionSpans.js +19 -0
  71. package/lib/commonjs/helpers/mentionSpans.js.map +1 -0
  72. package/lib/commonjs/helpers/mimeToExtension.js +45 -0
  73. package/lib/commonjs/helpers/mimeToExtension.js.map +1 -1
  74. package/lib/commonjs/helpers/readReceipts.js +173 -0
  75. package/lib/commonjs/helpers/readReceipts.js.map +1 -0
  76. package/lib/commonjs/helpers/repairFilenameEncoding.js +79 -0
  77. package/lib/commonjs/helpers/repairFilenameEncoding.js.map +1 -0
  78. package/lib/commonjs/helpers/safeJson.js +18 -0
  79. package/lib/commonjs/helpers/safeJson.js.map +1 -0
  80. package/lib/commonjs/helpers/secureStoreRuntime.js +10 -1
  81. package/lib/commonjs/helpers/secureStoreRuntime.js.map +1 -1
  82. package/lib/commonjs/hooks/useSendMessage.js +384 -193
  83. package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
  84. package/lib/commonjs/i18n/strings.js +96 -0
  85. package/lib/commonjs/i18n/strings.js.map +1 -1
  86. package/lib/commonjs/main.js +81 -0
  87. package/lib/commonjs/main.js.map +1 -1
  88. package/lib/commonjs/networking/api-requests/auth.api.js +62 -3
  89. package/lib/commonjs/networking/api-requests/auth.api.js.map +1 -1
  90. package/lib/commonjs/networking/api-requests/push.api.js +22 -7
  91. package/lib/commonjs/networking/api-requests/push.api.js.map +1 -1
  92. package/lib/commonjs/networking/stanzaHandlers.js +100 -3
  93. package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
  94. package/lib/commonjs/networking/xmpp/handleStanzas.xmpp.js +4 -2
  95. package/lib/commonjs/networking/xmpp/handleStanzas.xmpp.js.map +1 -1
  96. package/lib/commonjs/networking/xmpp/sendDisplayedMarker.xmpp.js +28 -0
  97. package/lib/commonjs/networking/xmpp/sendDisplayedMarker.xmpp.js.map +1 -0
  98. package/lib/commonjs/networking/xmpp/sendMediaMessage.xmpp.js +53 -2
  99. package/lib/commonjs/networking/xmpp/sendMediaMessage.xmpp.js.map +1 -1
  100. package/lib/commonjs/networking/xmpp/sendReceivedReceipt.xmpp.js +28 -0
  101. package/lib/commonjs/networking/xmpp/sendReceivedReceipt.xmpp.js.map +1 -0
  102. package/lib/commonjs/networking/xmppClient.js +64 -0
  103. package/lib/commonjs/networking/xmppClient.js.map +1 -1
  104. package/lib/commonjs/push/pushKeyStore.js +169 -0
  105. package/lib/commonjs/push/pushKeyStore.js.map +1 -0
  106. package/lib/commonjs/push/sealedBox.js +106 -0
  107. package/lib/commonjs/push/sealedBox.js.map +1 -0
  108. package/lib/commonjs/push/sealedPush.js +124 -0
  109. package/lib/commonjs/push/sealedPush.js.map +1 -0
  110. package/lib/commonjs/push/sealedPushTask.js +195 -0
  111. package/lib/commonjs/push/sealedPushTask.js.map +1 -0
  112. package/lib/commonjs/roomStore/persistence.js +78 -5
  113. package/lib/commonjs/roomStore/persistence.js.map +1 -1
  114. package/lib/commonjs/roomStore/roomHeapSlice.js +4 -0
  115. package/lib/commonjs/roomStore/roomHeapSlice.js.map +1 -1
  116. package/lib/commonjs/roomStore/roomsSlice.js +114 -1
  117. package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
  118. package/lib/commonjs/services/pushRegistration.js +12 -7
  119. package/lib/commonjs/services/pushRegistration.js.map +1 -1
  120. package/lib/commonjs/types/models/attachment.model.js +2 -0
  121. package/lib/commonjs/types/models/attachment.model.js.map +1 -0
  122. package/lib/commonjs/version.js +1 -1
  123. package/lib/module/assets/icons.js +1 -1
  124. package/lib/module/assets/icons.js.map +1 -1
  125. package/lib/module/components/MainComponents/AlbumGrid.js +146 -0
  126. package/lib/module/components/MainComponents/AlbumGrid.js.map +1 -0
  127. package/lib/module/components/MainComponents/ChatRoom.js +2 -2
  128. package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
  129. package/lib/module/components/MainComponents/MediaMessage.js +200 -124
  130. package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
  131. package/lib/module/components/MainComponents/MediaUploadOverlay.js +104 -0
  132. package/lib/module/components/MainComponents/MediaUploadOverlay.js.map +1 -0
  133. package/lib/module/components/MessageBubble/MediaCaption.js +46 -0
  134. package/lib/module/components/MessageBubble/MediaCaption.js.map +1 -0
  135. package/lib/module/components/MessageBubble/Message.js +44 -5
  136. package/lib/module/components/MessageBubble/Message.js.map +1 -1
  137. package/lib/module/components/MessageBubble/MessageInteractions.js +2 -1
  138. package/lib/module/components/MessageBubble/MessageInteractions.js.map +1 -1
  139. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +75 -0
  140. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  141. package/lib/module/components/RoomComponents/LastMessageItem.js +20 -4
  142. package/lib/module/components/RoomComponents/LastMessageItem.js.map +1 -1
  143. package/lib/module/components/RoomComponents/styled/LastAudioMessage.js +3 -2
  144. package/lib/module/components/RoomComponents/styled/LastAudioMessage.js.map +1 -1
  145. package/lib/module/components/RoomComponents/styled/LastMessageFile.js +3 -2
  146. package/lib/module/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
  147. package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js +3 -2
  148. package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
  149. package/lib/module/components/RoomComponents/styled/LastMessageVideo.js +3 -2
  150. package/lib/module/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
  151. package/lib/module/components/Thread/ThreadWrapper.js +3 -2
  152. package/lib/module/components/Thread/ThreadWrapper.js.map +1 -1
  153. package/lib/module/components/styled/MediaFilePreview.js +61 -48
  154. package/lib/module/components/styled/MediaFilePreview.js.map +1 -1
  155. package/lib/module/components/styled/MessageImage.js +16 -6
  156. package/lib/module/components/styled/MessageImage.js.map +1 -1
  157. package/lib/module/components/styled/SendInput.js +99 -68
  158. package/lib/module/components/styled/SendInput.js.map +1 -1
  159. package/lib/module/components/styled/VideoMessage.js +24 -10
  160. package/lib/module/components/styled/VideoMessage.js.map +1 -1
  161. package/lib/module/context/xmppProvider.js +46 -0
  162. package/lib/module/context/xmppProvider.js.map +1 -1
  163. package/lib/module/e2ee/fileEnvelope.js +1 -1
  164. package/lib/module/e2ee/fileEnvelope.js.map +1 -1
  165. package/lib/module/e2ee/sealedBody.js +32 -2
  166. package/lib/module/e2ee/sealedBody.js.map +1 -1
  167. package/lib/module/helpers/albumLayout.js +143 -0
  168. package/lib/module/helpers/albumLayout.js.map +1 -0
  169. package/lib/module/helpers/attachments.js +245 -0
  170. package/lib/module/helpers/attachments.js.map +1 -0
  171. package/lib/module/helpers/caption.js +207 -0
  172. package/lib/module/helpers/caption.js.map +1 -0
  173. package/lib/module/helpers/createMainMessageForThread.js +5 -1
  174. package/lib/module/helpers/createMainMessageForThread.js.map +1 -1
  175. package/lib/module/helpers/createMessageFromXml.js +20 -6
  176. package/lib/module/helpers/createMessageFromXml.js.map +1 -1
  177. package/lib/module/helpers/fileKind.js +34 -0
  178. package/lib/module/helpers/fileKind.js.map +1 -0
  179. package/lib/module/helpers/getDataFromXml.js +6 -1
  180. package/lib/module/helpers/getDataFromXml.js.map +1 -1
  181. package/lib/module/helpers/mapWithConcurrency.js +37 -0
  182. package/lib/module/helpers/mapWithConcurrency.js.map +1 -0
  183. package/lib/module/helpers/mediaLimits.js +27 -0
  184. package/lib/module/helpers/mediaLimits.js.map +1 -0
  185. package/lib/module/helpers/mediaSendRetry.js +55 -0
  186. package/lib/module/helpers/mediaSendRetry.js.map +1 -0
  187. package/lib/module/helpers/mediaWireData.js +58 -0
  188. package/lib/module/helpers/mediaWireData.js.map +1 -0
  189. package/lib/module/helpers/mentionSpans.js +14 -0
  190. package/lib/module/helpers/mentionSpans.js.map +1 -0
  191. package/lib/module/helpers/mimeToExtension.js +43 -0
  192. package/lib/module/helpers/mimeToExtension.js.map +1 -1
  193. package/lib/module/helpers/readReceipts.js +160 -0
  194. package/lib/module/helpers/readReceipts.js.map +1 -0
  195. package/lib/module/helpers/repairFilenameEncoding.js +74 -0
  196. package/lib/module/helpers/repairFilenameEncoding.js.map +1 -0
  197. package/lib/module/helpers/safeJson.js +13 -0
  198. package/lib/module/helpers/safeJson.js.map +1 -0
  199. package/lib/module/helpers/secureStoreRuntime.js +10 -1
  200. package/lib/module/helpers/secureStoreRuntime.js.map +1 -1
  201. package/lib/module/hooks/useSendMessage.js +387 -195
  202. package/lib/module/hooks/useSendMessage.js.map +1 -1
  203. package/lib/module/i18n/strings.js +96 -0
  204. package/lib/module/i18n/strings.js.map +1 -1
  205. package/lib/module/main.js +6 -0
  206. package/lib/module/main.js.map +1 -1
  207. package/lib/module/networking/api-requests/auth.api.js +62 -3
  208. package/lib/module/networking/api-requests/auth.api.js.map +1 -1
  209. package/lib/module/networking/api-requests/push.api.js +21 -6
  210. package/lib/module/networking/api-requests/push.api.js.map +1 -1
  211. package/lib/module/networking/stanzaHandlers.js +97 -4
  212. package/lib/module/networking/stanzaHandlers.js.map +1 -1
  213. package/lib/module/networking/xmpp/handleStanzas.xmpp.js +5 -3
  214. package/lib/module/networking/xmpp/handleStanzas.xmpp.js.map +1 -1
  215. package/lib/module/networking/xmpp/sendDisplayedMarker.xmpp.js +25 -0
  216. package/lib/module/networking/xmpp/sendDisplayedMarker.xmpp.js.map +1 -0
  217. package/lib/module/networking/xmpp/sendMediaMessage.xmpp.js +53 -2
  218. package/lib/module/networking/xmpp/sendMediaMessage.xmpp.js.map +1 -1
  219. package/lib/module/networking/xmpp/sendReceivedReceipt.xmpp.js +25 -0
  220. package/lib/module/networking/xmpp/sendReceivedReceipt.xmpp.js.map +1 -0
  221. package/lib/module/networking/xmppClient.js +64 -0
  222. package/lib/module/networking/xmppClient.js.map +1 -1
  223. package/lib/module/push/pushKeyStore.js +159 -0
  224. package/lib/module/push/pushKeyStore.js.map +1 -0
  225. package/lib/module/push/sealedBox.js +97 -0
  226. package/lib/module/push/sealedBox.js.map +1 -0
  227. package/lib/module/push/sealedPush.js +117 -0
  228. package/lib/module/push/sealedPush.js.map +1 -0
  229. package/lib/module/push/sealedPushTask.js +187 -0
  230. package/lib/module/push/sealedPushTask.js.map +1 -0
  231. package/lib/module/roomStore/persistence.js +78 -5
  232. package/lib/module/roomStore/persistence.js.map +1 -1
  233. package/lib/module/roomStore/roomHeapSlice.js +4 -0
  234. package/lib/module/roomStore/roomHeapSlice.js.map +1 -1
  235. package/lib/module/roomStore/roomsSlice.js +109 -0
  236. package/lib/module/roomStore/roomsSlice.js.map +1 -1
  237. package/lib/module/services/pushRegistration.js +12 -7
  238. package/lib/module/services/pushRegistration.js.map +1 -1
  239. package/lib/module/types/models/attachment.model.js +2 -0
  240. package/lib/module/types/models/attachment.model.js.map +1 -0
  241. package/lib/module/version.js +1 -1
  242. package/lib/typescript/assets/icons.d.ts +6 -1
  243. package/lib/typescript/assets/icons.d.ts.map +1 -1
  244. package/lib/typescript/components/MainComponents/AlbumGrid.d.ts +21 -0
  245. package/lib/typescript/components/MainComponents/AlbumGrid.d.ts.map +1 -0
  246. package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
  247. package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
  248. package/lib/typescript/components/MainComponents/MediaUploadOverlay.d.ts +17 -0
  249. package/lib/typescript/components/MainComponents/MediaUploadOverlay.d.ts.map +1 -0
  250. package/lib/typescript/components/MessageBubble/MediaCaption.d.ts +12 -0
  251. package/lib/typescript/components/MessageBubble/MediaCaption.d.ts.map +1 -0
  252. package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
  253. package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts.map +1 -1
  254. package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
  255. package/lib/typescript/components/RoomComponents/LastMessageItem.d.ts.map +1 -1
  256. package/lib/typescript/components/RoomComponents/styled/LastAudioMessage.d.ts +2 -0
  257. package/lib/typescript/components/RoomComponents/styled/LastAudioMessage.d.ts.map +1 -1
  258. package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts +2 -0
  259. package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts.map +1 -1
  260. package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts +2 -0
  261. package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts.map +1 -1
  262. package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts +2 -0
  263. package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts.map +1 -1
  264. package/lib/typescript/components/Thread/ThreadWrapper.d.ts.map +1 -1
  265. package/lib/typescript/components/styled/MediaFilePreview.d.ts.map +1 -1
  266. package/lib/typescript/components/styled/MessageImage.d.ts +10 -0
  267. package/lib/typescript/components/styled/MessageImage.d.ts.map +1 -1
  268. package/lib/typescript/components/styled/SendInput.d.ts +7 -1
  269. package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
  270. package/lib/typescript/components/styled/VideoMessage.d.ts +7 -0
  271. package/lib/typescript/components/styled/VideoMessage.d.ts.map +1 -1
  272. package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
  273. package/lib/typescript/e2ee/fileEnvelope.d.ts +1 -1
  274. package/lib/typescript/e2ee/fileEnvelope.d.ts.map +1 -1
  275. package/lib/typescript/e2ee/sealedBody.d.ts +16 -0
  276. package/lib/typescript/e2ee/sealedBody.d.ts.map +1 -1
  277. package/lib/typescript/helpers/albumLayout.d.ts +66 -0
  278. package/lib/typescript/helpers/albumLayout.d.ts.map +1 -0
  279. package/lib/typescript/helpers/attachments.d.ts +55 -0
  280. package/lib/typescript/helpers/attachments.d.ts.map +1 -0
  281. package/lib/typescript/helpers/caption.d.ts +64 -0
  282. package/lib/typescript/helpers/caption.d.ts.map +1 -0
  283. package/lib/typescript/helpers/createMainMessageForThread.d.ts.map +1 -1
  284. package/lib/typescript/helpers/createMessageFromXml.d.ts.map +1 -1
  285. package/lib/typescript/helpers/fileKind.d.ts +20 -0
  286. package/lib/typescript/helpers/fileKind.d.ts.map +1 -0
  287. package/lib/typescript/helpers/getDataFromXml.d.ts.map +1 -1
  288. package/lib/typescript/helpers/mapWithConcurrency.d.ts +9 -0
  289. package/lib/typescript/helpers/mapWithConcurrency.d.ts.map +1 -0
  290. package/lib/typescript/helpers/mediaLimits.d.ts +13 -0
  291. package/lib/typescript/helpers/mediaLimits.d.ts.map +1 -0
  292. package/lib/typescript/helpers/mediaSendRetry.d.ts +26 -0
  293. package/lib/typescript/helpers/mediaSendRetry.d.ts.map +1 -0
  294. package/lib/typescript/helpers/mediaWireData.d.ts +16 -0
  295. package/lib/typescript/helpers/mediaWireData.d.ts.map +1 -0
  296. package/lib/typescript/helpers/mentionSpans.d.ts +8 -0
  297. package/lib/typescript/helpers/mentionSpans.d.ts.map +1 -0
  298. package/lib/typescript/helpers/mimeToExtension.d.ts +7 -0
  299. package/lib/typescript/helpers/mimeToExtension.d.ts.map +1 -1
  300. package/lib/typescript/helpers/readReceipts.d.ts +82 -0
  301. package/lib/typescript/helpers/readReceipts.d.ts.map +1 -0
  302. package/lib/typescript/helpers/repairFilenameEncoding.d.ts +12 -0
  303. package/lib/typescript/helpers/repairFilenameEncoding.d.ts.map +1 -0
  304. package/lib/typescript/helpers/safeJson.d.ts +2 -0
  305. package/lib/typescript/helpers/safeJson.d.ts.map +1 -0
  306. package/lib/typescript/helpers/secureStoreRuntime.d.ts +17 -3
  307. package/lib/typescript/helpers/secureStoreRuntime.d.ts.map +1 -1
  308. package/lib/typescript/hooks/useSendMessage.d.ts +2 -1
  309. package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
  310. package/lib/typescript/i18n/strings.d.ts.map +1 -1
  311. package/lib/typescript/main.d.ts +6 -0
  312. package/lib/typescript/main.d.ts.map +1 -1
  313. package/lib/typescript/networking/api-requests/auth.api.d.ts +2 -0
  314. package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
  315. package/lib/typescript/networking/api-requests/push.api.d.ts +14 -2
  316. package/lib/typescript/networking/api-requests/push.api.d.ts.map +1 -1
  317. package/lib/typescript/networking/stanzaHandlers.d.ts +7 -3
  318. package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
  319. package/lib/typescript/networking/xmpp/handleStanzas.xmpp.d.ts.map +1 -1
  320. package/lib/typescript/networking/xmpp/sendDisplayedMarker.xmpp.d.ts +3 -0
  321. package/lib/typescript/networking/xmpp/sendDisplayedMarker.xmpp.d.ts.map +1 -0
  322. package/lib/typescript/networking/xmpp/sendMediaMessage.xmpp.d.ts +12 -0
  323. package/lib/typescript/networking/xmpp/sendMediaMessage.xmpp.d.ts.map +1 -1
  324. package/lib/typescript/networking/xmpp/sendReceivedReceipt.xmpp.d.ts +3 -0
  325. package/lib/typescript/networking/xmpp/sendReceivedReceipt.xmpp.d.ts.map +1 -0
  326. package/lib/typescript/networking/xmppClient.d.ts +15 -0
  327. package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
  328. package/lib/typescript/push/pushKeyStore.d.ts +35 -0
  329. package/lib/typescript/push/pushKeyStore.d.ts.map +1 -0
  330. package/lib/typescript/push/sealedBox.d.ts +24 -0
  331. package/lib/typescript/push/sealedBox.d.ts.map +1 -0
  332. package/lib/typescript/push/sealedPush.d.ts +61 -0
  333. package/lib/typescript/push/sealedPush.d.ts.map +1 -0
  334. package/lib/typescript/push/sealedPushTask.d.ts +33 -0
  335. package/lib/typescript/push/sealedPushTask.d.ts.map +1 -0
  336. package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
  337. package/lib/typescript/roomStore/roomHeapSlice.d.ts +22 -1
  338. package/lib/typescript/roomStore/roomHeapSlice.d.ts.map +1 -1
  339. package/lib/typescript/roomStore/roomsSlice.d.ts +67 -3
  340. package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
  341. package/lib/typescript/services/pushRegistration.d.ts +8 -0
  342. package/lib/typescript/services/pushRegistration.d.ts.map +1 -1
  343. package/lib/typescript/types/models/attachment.model.d.ts +52 -0
  344. package/lib/typescript/types/models/attachment.model.d.ts.map +1 -0
  345. package/lib/typescript/types/models/message.model.d.ts +26 -0
  346. package/lib/typescript/types/models/message.model.d.ts.map +1 -1
  347. package/lib/typescript/types/models/modal.model.d.ts +7 -0
  348. package/lib/typescript/types/models/modal.model.d.ts.map +1 -1
  349. package/lib/typescript/types/models/room.model.d.ts +2 -0
  350. package/lib/typescript/types/models/room.model.d.ts.map +1 -1
  351. package/lib/typescript/types/types.d.ts +35 -1
  352. package/lib/typescript/types/types.d.ts.map +1 -1
  353. package/lib/typescript/version.d.ts +1 -1
  354. package/package.json +14 -1
  355. package/plugins/notification-service/Info.plist +31 -0
  356. package/plugins/notification-service/NotificationService.swift +195 -0
  357. package/plugins/notification-service/SealedBox.swift +355 -0
  358. package/plugins/notification-service/check/gen-vectors.mjs +24 -0
  359. package/plugins/notification-service/check/main.swift +37 -0
  360. package/plugins/notification-service/check/run.sh +12 -0
  361. package/plugins/notification-service/check/vectors.json +1 -0
  362. package/plugins/withNotificationServiceExtension.js +189 -0
  363. package/src/assets/icons.tsx +20 -2
  364. package/src/components/MainComponents/AlbumGrid.tsx +183 -0
  365. package/src/components/MainComponents/ChatRoom.tsx +4 -2
  366. package/src/components/MainComponents/MediaMessage.tsx +246 -130
  367. package/src/components/MainComponents/MediaUploadOverlay.tsx +102 -0
  368. package/src/components/MessageBubble/MediaCaption.tsx +45 -0
  369. package/src/components/MessageBubble/Message.tsx +71 -3
  370. package/src/components/MessageBubble/MessageInteractions.tsx +2 -1
  371. package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +64 -0
  372. package/src/components/RoomComponents/LastMessageItem.tsx +15 -4
  373. package/src/components/RoomComponents/styled/LastAudioMessage.tsx +6 -3
  374. package/src/components/RoomComponents/styled/LastMessageFile.tsx +6 -2
  375. package/src/components/RoomComponents/styled/LastMessagePhoto.tsx +6 -2
  376. package/src/components/RoomComponents/styled/LastMessageVideo.tsx +6 -2
  377. package/src/components/Thread/ThreadWrapper.tsx +5 -9
  378. package/src/components/styled/MediaFilePreview.tsx +49 -34
  379. package/src/components/styled/MessageImage.tsx +21 -5
  380. package/src/components/styled/SendInput.tsx +101 -87
  381. package/src/components/styled/VideoMessage.tsx +34 -9
  382. package/src/context/xmppProvider.tsx +32 -0
  383. package/src/e2ee/fileEnvelope.ts +1 -1
  384. package/src/e2ee/sealedBody.ts +44 -5
  385. package/src/helpers/albumLayout.ts +207 -0
  386. package/src/helpers/attachments.ts +316 -0
  387. package/src/helpers/caption.ts +283 -0
  388. package/src/helpers/createMainMessageForThread.ts +6 -1
  389. package/src/helpers/createMessageFromXml.ts +21 -5
  390. package/src/helpers/fileKind.ts +38 -0
  391. package/src/helpers/getDataFromXml.ts +5 -1
  392. package/src/helpers/mapWithConcurrency.ts +32 -0
  393. package/src/helpers/mediaLimits.ts +27 -0
  394. package/src/helpers/mediaSendRetry.ts +59 -0
  395. package/src/helpers/mediaWireData.ts +57 -0
  396. package/src/helpers/mentionSpans.ts +17 -0
  397. package/src/helpers/mimeToExtension.ts +51 -0
  398. package/src/helpers/readReceipts.ts +219 -0
  399. package/src/helpers/repairFilenameEncoding.ts +82 -0
  400. package/src/helpers/safeJson.ts +11 -0
  401. package/src/helpers/secureStoreRuntime.ts +21 -3
  402. package/src/hooks/useSendMessage.tsx +448 -249
  403. package/src/i18n/strings.ts +96 -0
  404. package/src/main.ts +30 -0
  405. package/src/networking/api-requests/auth.api.ts +60 -3
  406. package/src/networking/api-requests/push.api.ts +29 -4
  407. package/src/networking/stanzaHandlers.ts +91 -2
  408. package/src/networking/xmpp/handleStanzas.xmpp.ts +6 -2
  409. package/src/networking/xmpp/sendDisplayedMarker.xmpp.ts +31 -0
  410. package/src/networking/xmpp/sendMediaMessage.xmpp.ts +60 -3
  411. package/src/networking/xmpp/sendReceivedReceipt.xmpp.ts +31 -0
  412. package/src/networking/xmppClient.ts +48 -0
  413. package/src/push/pushKeyStore.ts +163 -0
  414. package/src/push/sealedBox.ts +104 -0
  415. package/src/push/sealedPush.ts +127 -0
  416. package/src/push/sealedPushTask.ts +175 -0
  417. package/src/roomStore/persistence.ts +94 -3
  418. package/src/roomStore/roomHeapSlice.ts +23 -1
  419. package/src/roomStore/roomsSlice.ts +112 -1
  420. package/src/services/pushRegistration.ts +25 -5
  421. package/src/types/models/attachment.model.ts +51 -0
  422. package/src/types/models/message.model.ts +29 -0
  423. package/src/types/models/modal.model.ts +7 -0
  424. package/src/types/models/room.model.ts +2 -0
  425. package/src/types/types.ts +41 -1
  426. package/src/version.ts +1 -1
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.__resetSealedPushTaskForTests = exports.SEALED_PUSH_TASK = void 0;
7
+ exports.presentSealedPush = presentSealedPush;
8
+ exports.registerSealedPushTask = registerSealedPushTask;
9
+ exports.sealedPushDataOf = void 0;
10
+ var _reactNative = require("react-native");
11
+ var _devLogger = require("../utils/devLogger");
12
+ var _pushKeyStore = require("./pushKeyStore");
13
+ var _sealedPush = require("./sealedPush");
14
+ // Android half of encrypted pushes. A sealed push is data-only, so the OS
15
+ // shows nothing by itself: expo-notifications hands it to a background
16
+ // task (expo-task-manager, foreground, background and killed app alike)
17
+ // and this task opens the box and posts the notification. iOS does the
18
+ // same in the notification service extension; here `registerSealedPushTask`
19
+ // is a no-op.
20
+ //
21
+ // Both packages are optional peers, required lazily: a host that does not
22
+ // want encrypted pushes never pays for them.
23
+
24
+ const SEALED_PUSH_TASK = exports.SEALED_PUSH_TASK = 'ETHORA_SEALED_PUSH';
25
+ const PLACEHOLDER_TITLE = 'New message';
26
+ let registered = false;
27
+ const loadTaskManager = () => {
28
+ try {
29
+ return require('expo-task-manager');
30
+ } catch {
31
+ return null;
32
+ }
33
+ };
34
+ const loadNotifications = () => {
35
+ try {
36
+ return require('expo-notifications');
37
+ } catch {
38
+ return null;
39
+ }
40
+ };
41
+
42
+ /**
43
+ * The FCM data map out of the task payload. expo-notifications passes the
44
+ * message as `{ notification, data }`; the data keys are on `data`
45
+ * itself, `data.dataString` carries the same as a JSON string on some
46
+ * versions, and a Firebase `RemoteMessage` keeps them under `data.data`.
47
+ */
48
+ const sealedPushDataOf = payload => {
49
+ const root = payload && typeof payload === 'object' ? payload : null;
50
+ if (!root) {
51
+ return null;
52
+ }
53
+ const candidates = [root.data, root];
54
+ const data = root.data && typeof root.data === 'object' ? root.data : null;
55
+ if (data) {
56
+ if (typeof data.dataString === 'string') {
57
+ try {
58
+ candidates.unshift(JSON.parse(data.dataString));
59
+ } catch {
60
+ // not JSON — fall through to the map itself
61
+ }
62
+ }
63
+ candidates.push(data.data);
64
+ }
65
+ for (const candidate of candidates) {
66
+ if ((0, _sealedPush.sealedPushEnvelopeOf)(candidate)) {
67
+ return candidate;
68
+ }
69
+ }
70
+ return null;
71
+ };
72
+ exports.sealedPushDataOf = sealedPushDataOf;
73
+ const notificationContent = (result, options) => {
74
+ const {
75
+ envelope
76
+ } = result;
77
+ // What the tap handler (`handlePushPayload` through the host's response
78
+ // listener) needs: the same ids a plain push carries on `data`.
79
+ const data = {
80
+ jid: envelope.jid,
81
+ msgID: envelope.msgID,
82
+ userJid: envelope.userJid,
83
+ sealed: true
84
+ };
85
+ if (!result.ok) {
86
+ return {
87
+ title: options.placeholderTitle || PLACEHOLDER_TITLE,
88
+ ...(options.placeholderBody ? {
89
+ body: options.placeholderBody
90
+ } : {}),
91
+ data,
92
+ sound: 'default'
93
+ };
94
+ }
95
+ const {
96
+ content
97
+ } = result;
98
+ return {
99
+ title: content.title || content.sender || content.chat || PLACEHOLDER_TITLE,
100
+ body: content.body,
101
+ data: {
102
+ ...data,
103
+ chatJid: content.chatJid,
104
+ senderJid: content.senderJid
105
+ },
106
+ sound: 'default'
107
+ };
108
+ };
109
+
110
+ /**
111
+ * Open a sealed push and show it. One notification per chat: the room JID
112
+ * is the identifier, so a newer message replaces the older one the way the
113
+ * service's collapse key does for plain pushes.
114
+ */
115
+ async function presentSealedPush(data, options = {}) {
116
+ const envelope = (0, _sealedPush.sealedPushEnvelopeOf)(data);
117
+ if (!envelope) {
118
+ return null;
119
+ }
120
+ const notifications = loadNotifications();
121
+ if (!notifications?.scheduleNotificationAsync) {
122
+ return null;
123
+ }
124
+ const result = (0, _sealedPush.openSealedPush)(envelope, await (0, _pushKeyStore.loadPushSecretKey)());
125
+ // console, not only pushLog: with the app killed this runs headless and
126
+ // `adb logcat -s ReactNativeJS` is the only place to see it.
127
+ if (result.ok) {
128
+ console.log(`[push] sealed push kid=${envelope.kid} opened for ${envelope.jid}`);
129
+ } else {
130
+ console.warn(`[push] sealed push kid=${envelope.kid} not opened (${result.reason}), showing the placeholder`);
131
+ (0, _devLogger.pushLog)('warn', `push: sealed push not opened (${result.reason}), showing the placeholder`);
132
+ }
133
+ await notifications.scheduleNotificationAsync({
134
+ identifier: envelope.jid || envelope.msgID || undefined,
135
+ content: notificationContent(result, options),
136
+ trigger: options.channelId ? {
137
+ channelId: options.channelId
138
+ } : null
139
+ });
140
+ return result;
141
+ }
142
+
143
+ /**
144
+ * Define and register the background task that renders sealed pushes on
145
+ * Android. Call it at module scope of a file the app loads first (the
146
+ * entry file, or the root layout with expo-router): a killed app is
147
+ * started headless to run it, and the task must exist by then. No-op on
148
+ * iOS and when expo-task-manager / expo-notifications are not installed.
149
+ */
150
+ function registerSealedPushTask(options = {}) {
151
+ if (_reactNative.Platform.OS !== 'android' || registered) {
152
+ return registered;
153
+ }
154
+ const taskManager = loadTaskManager();
155
+ const notifications = loadNotifications();
156
+ if (!taskManager?.defineTask || !notifications?.registerTaskAsync) {
157
+ (0, _devLogger.pushLog)('warn', 'push: expo-task-manager and expo-notifications are needed to show encrypted pushes on Android');
158
+ return false;
159
+ }
160
+ taskManager.defineTask(SEALED_PUSH_TASK, async ({
161
+ data,
162
+ error
163
+ }) => {
164
+ if (error) {
165
+ return;
166
+ }
167
+ const map = sealedPushDataOf(data);
168
+ if (!map) {
169
+ return;
170
+ }
171
+ // In the foreground the room is live over XMPP; the host's
172
+ // notification handler decides about plain pushes there too.
173
+ if (_reactNative.AppState.currentState === 'active') {
174
+ return;
175
+ }
176
+ try {
177
+ await presentSealedPush(map, options);
178
+ } catch (e) {
179
+ (0, _devLogger.pushLog)('warn', 'push: showing a sealed push failed', e);
180
+ }
181
+ });
182
+ registered = true;
183
+ notifications.registerTaskAsync(SEALED_PUSH_TASK).catch(e => {
184
+ registered = false;
185
+ (0, _devLogger.pushLog)('warn', 'push: registering the sealed push task failed', e);
186
+ });
187
+ return true;
188
+ }
189
+
190
+ /** Test seam only. */
191
+ const __resetSealedPushTaskForTests = () => {
192
+ registered = false;
193
+ };
194
+ exports.__resetSealedPushTaskForTests = __resetSealedPushTaskForTests;
195
+ //# sourceMappingURL=sealedPushTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_devLogger","_pushKeyStore","_sealedPush","SEALED_PUSH_TASK","exports","PLACEHOLDER_TITLE","registered","loadTaskManager","loadNotifications","sealedPushDataOf","payload","root","candidates","data","dataString","unshift","JSON","parse","push","candidate","sealedPushEnvelopeOf","notificationContent","result","options","envelope","jid","msgID","userJid","sealed","ok","title","placeholderTitle","placeholderBody","body","sound","content","sender","chat","chatJid","senderJid","presentSealedPush","notifications","scheduleNotificationAsync","openSealedPush","loadPushSecretKey","console","log","kid","warn","reason","pushLog","identifier","undefined","trigger","channelId","registerSealedPushTask","Platform","OS","taskManager","defineTask","registerTaskAsync","error","map","AppState","currentState","e","catch","__resetSealedPushTaskForTests"],"sourceRoot":"../../../src","sources":["push/sealedPushTask.ts"],"mappings":"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","ignoreList":[]}
@@ -74,7 +74,10 @@ const sanitizeUser = user => {
74
74
  // on reload before MAM catches up. That needs the fields the bubbles and
75
75
  // room-list previews actually read, nothing else. Everything outside this
76
76
  // list is either re-derived on render or re-fetched from the server.
77
- const PERSISTED_MESSAGE_FIELDS = ['id', 'xmppId', 'xmppFrom', 'body', 'date', 'timestamp', 'roomJid', 'isSystemMessage', 'isMediafile', 'isDeleted', 'isEdited', 'isReply', 'showInChannel', 'mainMessage', 'mimetype', 'location', 'locationPreview', 'fileName', 'originalName', 'size', 'langSource',
77
+ const PERSISTED_MESSAGE_FIELDS = ['id', 'xmppId', 'xmppFrom', 'body', 'date', 'timestamp', 'roomJid', 'isSystemMessage', 'isMediafile', 'isDeleted', 'isEdited', 'isReply', 'showInChannel', 'mainMessage', 'mimetype', 'location', 'locationPreview', 'fileName', 'originalName', 'size',
78
+ // Every file of a multi-attach message and its caption: without them a
79
+ // restored album paints as its first file only (see compactAttachments).
80
+ 'attachments', 'caption', 'captionMentions', 'langSource',
78
81
  // `translations` MUST be here. A previous version of this list dropped
79
82
  // it, on the theory that it mirrored the web SDK's persist contract —
80
83
  // it doesn't: web's redux-persist config (web/src/roomStore/index.ts)
@@ -140,8 +143,27 @@ const pickDefined = (source, keys) => {
140
143
  }
141
144
  return out;
142
145
  };
146
+
147
+ // What a restored attachment is rendered from. Ownership and timestamp
148
+ // fields the storage returns, and the sender's local upload state, are not
149
+ // ours to cache and would repeat across up to ten files of every message.
150
+ const PERSISTED_ATTACHMENT_FIELDS = ['attachmentId', 'location', 'locationPreview', 'mimetype', 'originalName', 'fileName', 'size', 'duration', 'width', 'height'];
151
+ const compactAttachments = attachments => {
152
+ if (!Array.isArray(attachments) || attachments.length === 0) {
153
+ return undefined;
154
+ }
155
+ return attachments.filter(item => item && typeof item === 'object').map(item => pickDefined(item, PERSISTED_ATTACHMENT_FIELDS));
156
+ };
143
157
  const compactMessageForPersist = message => {
144
158
  const compact = pickDefined(message, PERSISTED_MESSAGE_FIELDS);
159
+ if (compact.attachments !== undefined) {
160
+ const attachments = compactAttachments(compact.attachments);
161
+ if (attachments) {
162
+ compact.attachments = attachments;
163
+ } else {
164
+ delete compact.attachments;
165
+ }
166
+ }
145
167
  const user = message?.user;
146
168
  if (user) {
147
169
  compact.user = pickDefined(user, PERSISTED_MESSAGE_USER_FIELDS);
@@ -159,11 +181,14 @@ const sanitizeMessages = messages => {
159
181
  /**
160
182
  * Room fields that describe ONE session and must never be written to disk:
161
183
  * the server's unread snapshot (a moment-in-time number the next /chats/my
162
- * re-seeds). Volatile slice state that is not on the room at all (jumpWindow,
184
+ * re-seeds) and the read watermarks other occupants sent this session. Volatile slice state that is not on the room at all (jumpWindow,
163
185
  * pendingJump, archivedMessage, usersSet) is never persisted because only
164
186
  * `rooms.rooms` is picked from the slice.
165
187
  */
166
- const SESSION_ROOM_FIELDS = ['apiUnreadCount', 'apiUnreadSeededAt'];
188
+ const SESSION_ROOM_FIELDS = ['apiUnreadCount', 'apiUnreadSeededAt',
189
+ // XEP-0333 read watermarks: a peer's "seen" state is re-learned from the
190
+ // live marker stanzas, never restored from a previous session.
191
+ 'lastDisplayedByUser'];
167
192
 
168
193
  /**
169
194
  * Rehydrate step: a persisted room must be refetched once per session, so
@@ -260,6 +285,27 @@ const sanitizeMediaData = data => {
260
285
  }
261
286
  return out;
262
287
  };
288
+
289
+ // Every file of a multi-file failed send, trimmed the same way as `data`.
290
+ // Capped so a corrupt payload cannot grow the cache without bound.
291
+ const MAX_PERSISTED_FAILED_FILES = 10;
292
+ const sanitizeMediaFiles = files => {
293
+ if (!Array.isArray(files)) {
294
+ return undefined;
295
+ }
296
+ const out = [];
297
+ for (const file of files.slice(0, MAX_PERSISTED_FAILED_FILES)) {
298
+ const clean = sanitizeMediaData(file);
299
+ if (typeof file?.duration === 'number') {
300
+ clean.duration = file.duration;
301
+ }
302
+ if (typeof file?.waveForm === 'string') {
303
+ clean.waveForm = file.waveForm;
304
+ }
305
+ out.push(clean);
306
+ }
307
+ return out.length > 0 ? out : undefined;
308
+ };
263
309
  const sanitizeFailedMessagePayload = payload => {
264
310
  if (!payload || typeof payload !== 'object') {
265
311
  return null;
@@ -271,6 +317,8 @@ const sanitizeFailedMessagePayload = payload => {
271
317
  return null;
272
318
  }
273
319
  if (payload.kind === 'media') {
320
+ const files = sanitizeMediaFiles(payload.files);
321
+ const caption = typeof payload.caption === 'string' ? payload.caption : undefined;
274
322
  return {
275
323
  kind: 'media',
276
324
  id: payload.id,
@@ -279,7 +327,16 @@ const sanitizeFailedMessagePayload = payload => {
279
327
  type: typeof payload.type === 'string' ? payload.type : '',
280
328
  isReply: payload.isReply,
281
329
  isChecked: payload.isChecked,
282
- mainMessage: payload.mainMessage
330
+ mainMessage: payload.mainMessage,
331
+ ...(files ? {
332
+ files
333
+ } : {}),
334
+ ...(caption ? {
335
+ caption
336
+ } : {}),
337
+ ...(caption && Array.isArray(payload.captionMentions) ? {
338
+ captionMentions: payload.captionMentions
339
+ } : {})
283
340
  };
284
341
  }
285
342
  if (payload.kind === 'text') {
@@ -338,6 +395,16 @@ function reconstructFailedMessagePayload(message, roomJID) {
338
395
  const isChecked = message.showInChannel === 'true';
339
396
  const mainMessage = message.mainMessage;
340
397
  if (message.isMediafile === 'true') {
398
+ // A multi-file send keeps every file. Only a file still on this device
399
+ // has a uri to replay; an uploaded one has no local copy left to send.
400
+ const localUri = value => typeof value === 'string' && /^(file|content|ph|assets-library):\/\//.test(value) ? value : undefined;
401
+ const attachments = Array.isArray(message.attachments) ? message.attachments : [];
402
+ const files = attachments.length > 1 ? attachments.slice(0, MAX_PERSISTED_FAILED_FILES).map(attachment => ({
403
+ uri: localUri(attachment.localUrl) ?? localUri(attachment.location),
404
+ name: attachment.originalName || attachment.fileName,
405
+ type: attachment.mimetype,
406
+ size: attachment.size !== undefined && attachment.size !== null ? Number(attachment.size) : undefined
407
+ })) : undefined;
341
408
  return {
342
409
  kind: 'media',
343
410
  id: message.id,
@@ -351,7 +418,13 @@ function reconstructFailedMessagePayload(message, roomJID) {
351
418
  type: message.mimetype || '',
352
419
  isReply,
353
420
  isChecked,
354
- mainMessage
421
+ mainMessage,
422
+ ...(files ? {
423
+ files
424
+ } : {}),
425
+ ...(message.caption ? {
426
+ caption: message.caption
427
+ } : {})
355
428
  };
356
429
  }
357
430
  return {
@@ -1 +1 @@
1
- {"version":3,"names":["_persistBackend","require","PERSIST_PREFIX","KEY_CHAT","KEY_ROOMS","KEY_ROOM_INDEX","KEY_ROOM_PREFIX","roomKey","jid","KEY_HEAP","MESSAGE_LIMIT","exports","MAX_PERSISTED_FAILED_MESSAGES","sanitizeUser","user","token","_token","refreshToken","_refreshToken","xmppPassword","_xmppPassword","rest","PERSISTED_MESSAGE_FIELDS","PERSISTED_MESSAGE_USER_FIELDS","REFETCHED_ROOM_FIELDS","PERSISTED_ROOM_MEMBERS","pickDefined","source","keys","out","key","value","undefined","compactMessageForPersist","message","compact","sanitizeMessages","messages","Array","isArray","capped","length","slice","map","SESSION_ROOM_FIELDS","resetSessionRoomState","roomsMap","Object","fromEntries","entries","room","state","historyPreloadState","hasMessages","next","field","sanitizeRooms","rooms","includes","compactRoom","usersCnt","members","roomMembers","composing","composingList","isLoading","sanitizeMediaData","data","uri","type","name","size","sanitizeFailedMessagePayload","payload","id","roomJID","kind","isReply","isChecked","mainMessage","body","sanitizeFailedMessages","failedMessages","count","clean","reconstructFailedMessagePayload","showInChannel","isMediafile","location","fileName","mimetype","Number","computeBootTimeFailures","alreadyFailed","pending","push","asList","v","ROOM_ACTIONS","p","roomData","r","filter","Boolean","chatJID","roomMessages/applyPrivateStoreMarkers","roomMessages/deleteAllRooms","roomMessages/setLogoutState","TRANSIENT_ROOM_ACTIONS","Set","roomsTouchedBy","action","touch","startsWith","has","DEBOUNCE_MS","MAX_WAIT_MS","writeTimer","firstPendingAt","dirtyRooms","allRoomsDirty","chatDirty","heapDirty","knownRoomJids","legacyBlobPresent","migrateFromAsyncStorage","writeChain","Promise","resolve","schedule","flush","now","Date","clearTimeout","remaining","Math","max","setTimeout","min","persistedRoom","writePending","getState","backend","getPersistBackend","all","writeChat","writeHeap","sets","removes","chatPayload","chatSettingStore","JSON","stringify","heapPayload","roomHeapSlice","liveRooms","jids","nextKnown","add","delete","setMany","removeMany","old","legacyAsyncStorageBackend","allKeys","k","persistenceMiddleware","storeAPI","result","touched","then","catch","e","console","warn","readFrom","chatPlain","indexPlain","legacyPlain","heapPlain","getMany","parse","plain","chat","heap","legacyBlob","plains","forEach","idx","empty","readPersistedState","read","clearPersistedState","targets","target","PERSIST_KEYS","persistedRoomKey"],"sourceRoot":"../../../src","sources":["roomStore/persistence.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_persistBackend","require","PERSIST_PREFIX","KEY_CHAT","KEY_ROOMS","KEY_ROOM_INDEX","KEY_ROOM_PREFIX","roomKey","jid","KEY_HEAP","MESSAGE_LIMIT","exports","MAX_PERSISTED_FAILED_MESSAGES","sanitizeUser","user","token","_token","refreshToken","_refreshToken","xmppPassword","_xmppPassword","rest","PERSISTED_MESSAGE_FIELDS","PERSISTED_MESSAGE_USER_FIELDS","REFETCHED_ROOM_FIELDS","PERSISTED_ROOM_MEMBERS","pickDefined","source","keys","out","key","value","undefined","PERSISTED_ATTACHMENT_FIELDS","compactAttachments","attachments","Array","isArray","length","filter","item","map","compactMessageForPersist","message","compact","sanitizeMessages","messages","capped","slice","SESSION_ROOM_FIELDS","resetSessionRoomState","roomsMap","Object","fromEntries","entries","room","state","historyPreloadState","hasMessages","next","field","sanitizeRooms","rooms","includes","compactRoom","usersCnt","members","roomMembers","composing","composingList","isLoading","sanitizeMediaData","data","uri","type","name","size","MAX_PERSISTED_FAILED_FILES","sanitizeMediaFiles","files","file","clean","duration","waveForm","push","sanitizeFailedMessagePayload","payload","id","roomJID","kind","caption","isReply","isChecked","mainMessage","captionMentions","body","sanitizeFailedMessages","failedMessages","count","reconstructFailedMessagePayload","showInChannel","isMediafile","localUri","test","attachment","localUrl","location","originalName","fileName","mimetype","Number","computeBootTimeFailures","alreadyFailed","pending","asList","v","ROOM_ACTIONS","p","roomData","r","Boolean","chatJID","roomMessages/applyPrivateStoreMarkers","roomMessages/deleteAllRooms","roomMessages/setLogoutState","TRANSIENT_ROOM_ACTIONS","Set","roomsTouchedBy","action","touch","startsWith","has","DEBOUNCE_MS","MAX_WAIT_MS","writeTimer","firstPendingAt","dirtyRooms","allRoomsDirty","chatDirty","heapDirty","knownRoomJids","legacyBlobPresent","migrateFromAsyncStorage","writeChain","Promise","resolve","schedule","flush","now","Date","clearTimeout","remaining","Math","max","setTimeout","min","persistedRoom","writePending","getState","backend","getPersistBackend","all","writeChat","writeHeap","sets","removes","chatPayload","chatSettingStore","JSON","stringify","heapPayload","roomHeapSlice","liveRooms","jids","nextKnown","add","delete","setMany","removeMany","old","legacyAsyncStorageBackend","allKeys","k","persistenceMiddleware","storeAPI","result","touched","then","catch","e","console","warn","readFrom","chatPlain","indexPlain","legacyPlain","heapPlain","getMany","parse","plain","chat","heap","legacyBlob","plains","forEach","idx","empty","readPersistedState","read","clearPersistedState","targets","target","PERSIST_KEYS","persistedRoomKey"],"sourceRoot":"../../../src","sources":["roomStore/persistence.ts"],"mappings":";;;;;;;;;;;;AAGA,IAAAA,eAAA,GAAAC,OAAA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,cAAc,GAAG,kBAAkB;AACzC,MAAMC,QAAQ,GAAG,kCAAkC;AACnD,MAAMC,SAAS,GAAG,uBAAuB;AACzC,MAAMC,cAAc,GAAG,2BAA2B;AAClD,MAAMC,eAAe,GAAG,uBAAuB;AAC/C,MAAMC,OAAO,GAAIC,GAAW,IAAK,GAAGF,eAAe,GAAGE,GAAG,EAAE;AAC3D;AACA;AACA;AACA;AACA;AACA,MAAMC,QAAQ,GAAG,0BAA0B;;AAE3C;AACA;AACA;AACO,MAAMC,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG,GAAG;;AAEhC;AACA;AACA;AACA;AACO,MAAME,6BAA6B,GAAAD,OAAA,CAAAC,6BAAA,GAAG,GAAG;AAmBhD,MAAMC,YAAY,GAAIC,IAAW,IAAkB;EACjD,IAAI,CAACA,IAAI,EAAE;IAAC,OAAO,IAAI;EAAC;EACxB;EACA;EACA,MAAM;IACJC,KAAK,EAAEC,MAAM;IACbC,YAAY,EAAEC,aAAa;IAC3BC,YAAY,EAAEC,aAAa;IAC3B,GAAGC;EACL,CAAC,GAAGP,IAAW;EACf,OAAO;IACL,GAAGO,IAAI;IACPN,KAAK,EAAE,EAAE;IACTE,YAAY,EAAE,EAAE;IAChBE,YAAY,EAAE;EAChB,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAMG,wBAA4C,GAAG,CACnD,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,MAAM,EACN,MAAM,EACN,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,UAAU,EACV,SAAS,EACT,eAAe,EACf,aAAa,EACb,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,MAAM;AACN;AACA;AACA,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,EACd,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,EACT,aAAa,EACb,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,UAAU,CACX;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,6BAA6B,GAAG,CAAC,IAAI,EAAE,MAAM,CAAU;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,qBAAqB,GAAG,CAAC,SAAS,CAAU;AAClD,MAAMC,sBAAsB,GAAG,EAAE;AAEjC,MAAMC,WAAW,GAAGA,CAClBC,MAAS,EACTC,IAA0B,KACX;EACf,MAAMC,GAAe,GAAG,CAAC,CAAC;EAC1B,KAAK,MAAMC,GAAG,IAAIF,IAAI,EAAE;IACtB,MAAMG,KAAK,GAAGJ,MAAM,GAAGG,GAAG,CAAC;IAC3B,IAAIC,KAAK,KAAKC,SAAS,EAAE;MACvBH,GAAG,CAACC,GAAG,CAAC,GAAGC,KAAK;IAClB;EACF;EACA,OAAOF,GAAG;AACZ,CAAC;;AAED;AACA;AACA;AACA,MAAMI,2BAA2B,GAAG,CAClC,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,UAAU,EACV,MAAM,EACN,UAAU,EACV,OAAO,EACP,QAAQ,CACA;AAEV,MAAMC,kBAAkB,GAAIC,WAAoB,IAA8B;EAC5E,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,WAAW,CAAC,IAAIA,WAAW,CAACG,MAAM,KAAK,CAAC,EAAE;IAAC,OAAON,SAAS;EAAC;EAC/E,OAAOG,WAAW,CACfI,MAAM,CAAEC,IAAI,IAAKA,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,CAAC,CAClDC,GAAG,CACDD,IAAI,IACHd,WAAW,CACTc,IAAI,EACJP,2BACF,CACJ,CAAC;AACL,CAAC;AAED,MAAMS,wBAAwB,GAAIC,OAAiB,IAAe;EAChE,MAAMC,OAAO,GAAGlB,WAAW,CAACiB,OAAO,EAAErB,wBAAwB,CAAa;EAC1E,IAAIsB,OAAO,CAACT,WAAW,KAAKH,SAAS,EAAE;IACrC,MAAMG,WAAW,GAAGD,kBAAkB,CAACU,OAAO,CAACT,WAAW,CAAC;IAC3D,IAAIA,WAAW,EAAE;MACfS,OAAO,CAACT,WAAW,GAAGA,WAAW;IACnC,CAAC,MAAM;MACL,OAAOS,OAAO,CAACT,WAAW;IAC5B;EACF;EACA,MAAMrB,IAAI,GAAG6B,OAAO,EAAE7B,IAAuC;EAC7D,IAAIA,IAAI,EAAE;IACR8B,OAAO,CAAC9B,IAAI,GAAGY,WAAW,CACxBZ,IAAI,EACJS,6BACF,CAAqB;EACvB;EACA,OAAOqB,OAAO;AAChB,CAAC;AAED,MAAMC,gBAAgB,GAAIC,QAAoB,IAAiB;EAC7D,IAAI,CAACV,KAAK,CAACC,OAAO,CAACS,QAAQ,CAAC,EAAE;IAAC,OAAO,EAAE;EAAC;EACzC,MAAMC,MAAM,GACVD,QAAQ,CAACR,MAAM,GAAG5B,aAAa,GAC3BoC,QAAQ,CAACE,KAAK,CAAC,CAACtC,aAAa,CAAC,GAC9BoC,QAAQ;EACd,OAAOC,MAAM,CAACN,GAAG,CAACC,wBAAwB,CAAC;AAC7C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMO,mBAAmB,GAAG,CAC1B,gBAAgB,EAChB,mBAAmB;AACnB;AACA;AACA,qBAAqB,CACb;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,qBAAqB,GAChCC,QAA+B,IAE/BC,MAAM,CAACC,WAAW,CAChBD,MAAM,CAACE,OAAO,CAACH,QAAQ,IAAI,CAAC,CAAC,CAAC,CAACV,GAAG,CAAC,CAAC,CAACjC,GAAG,EAAE+C,IAAI,CAAC,KAAK;EAClD,MAAMC,KAAK,GAAGD,IAAI,EAAEE,mBAAmB;EACvC,MAAMC,WAAW,GAAG,CAACH,IAAI,EAAET,QAAQ,EAAER,MAAM,IAAI,CAAC,IAAI,CAAC;EACrD,MAAMqB,IAAW,GAAG;IAAE,GAAGJ;EAAK,CAAC;EAC/B;EACA;EACA,IAAIC,KAAK,KAAK,MAAM,IAAIA,KAAK,KAAK,SAAS,IAAIA,KAAK,KAAK,OAAO,EAAE;IAChEG,IAAI,CAACF,mBAAmB,GAAGC,WAAW,GAAG,SAAS,GAAG,MAAM;EAC7D;EACA,KAAK,MAAME,KAAK,IAAIX,mBAAmB,EAAE;IACvC,IAAIU,IAAI,CAACC,KAAK,CAAC,KAAK5B,SAAS,EAAE;MAAC2B,IAAI,CAACC,KAAK,CAAC,GAAG5B,SAAS;IAAC;EAC1D;EACA,OAAO,CAACxB,GAAG,EAAEmD,IAAI,CAAC;AACpB,CAAC,CACH,CAAC;AAAChD,OAAA,CAAAuC,qBAAA,GAAAA,qBAAA;AAEJ,MAAMW,aAAa,GACjBC,KAA4B,IACF;EAC1B,IAAI,CAACA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAAC,OAAO,CAAC,CAAC;EAAC;EACpD,MAAMjC,GAA0B,GAAG,CAAC,CAAC;EACrC,KAAK,MAAM,CAACrB,GAAG,EAAE+C,IAAI,CAAC,IAAIH,MAAM,CAACE,OAAO,CAACQ,KAAK,CAAC,EAAE;IAC/C,IAAI,CAACtD,GAAG,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAI,CAACA,GAAG,CAACuD,QAAQ,CAAC,GAAG,CAAC,EAAE;MAAC;IAAS;IACrE,IAAI,CAACR,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAInB,KAAK,CAACC,OAAO,CAACkB,IAAI,CAAC,EAAE;MAAC;IAAS;IAExE,MAAMS,WAAW,GAAG;MAAE,GAAGT;IAAK,CAAwB;IACtD;IACA;IACA,IAAIS,WAAW,CAACC,QAAQ,KAAKjC,SAAS,IAAII,KAAK,CAACC,OAAO,CAACkB,IAAI,CAACW,OAAO,CAAC,EAAE;MACrEF,WAAW,CAACC,QAAQ,GAAGV,IAAI,CAACW,OAAO,CAAC5B,MAAM;IAC5C;IACA,KAAK,MAAMsB,KAAK,IAAIpC,qBAAqB,EAAE;MACzC,OAAOwC,WAAW,CAACJ,KAAK,CAAC;IAC3B;IACA,KAAK,MAAMA,KAAK,IAAIX,mBAAmB,EAAE;MACvC,OAAOe,WAAW,CAACJ,KAAK,CAAC;IAC3B;IACA;IACA;IACA;IACA,IACExB,KAAK,CAACC,OAAO,CAAC2B,WAAW,CAACG,WAAW,CAAC,IACtCH,WAAW,CAACG,WAAW,CAAC7B,MAAM,GAAGb,sBAAsB,EACvD;MACAuC,WAAW,CAACG,WAAW,GAAGH,WAAW,CAACG,WAAW,CAACnB,KAAK,CAAC,CAAC,EAAEvB,sBAAsB,CAAC;IACpF;IAEAI,GAAG,CAACrB,GAAG,CAAC,GAAG;MACT,GAAIwD,WAAqB;MACzBlB,QAAQ,EAAED,gBAAgB,CAACU,IAAI,EAAET,QAAQ,IAAI,EAAE,CAAC;MAChDsB,SAAS,EAAE,KAAK;MAChBC,aAAa,EAAE,EAAE;MACjBC,SAAS,EAAE,KAAK;MAChBb,mBAAmB,EAAE;IACvB,CAAC;EACH;EACA,OAAO5B,GAAG;AACZ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAM0C,iBAAiB,GACrBC,IAAS,IACyD;EAClE,IAAI,CAACA,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;IAAC,OAAO,CAAC,CAAC;EAAC;EAClD,MAAM3C,GAAkE,GAAG,CAAC,CAAC;EAC7E,IAAI,OAAO2C,IAAI,CAACC,GAAG,KAAK,QAAQ,EAAE;IAAC5C,GAAG,CAAC4C,GAAG,GAAGD,IAAI,CAACC,GAAG;EAAC;EACtD,IAAI,OAAOD,IAAI,CAACE,IAAI,KAAK,QAAQ,EAAE;IAAC7C,GAAG,CAAC6C,IAAI,GAAGF,IAAI,CAACE,IAAI;EAAC;EACzD,IAAI,OAAOF,IAAI,CAACG,IAAI,KAAK,QAAQ,EAAE;IAAC9C,GAAG,CAAC8C,IAAI,GAAGH,IAAI,CAACG,IAAI;EAAC;EACzD,IAAI,OAAOH,IAAI,CAACI,IAAI,KAAK,QAAQ,EAAE;IAAC/C,GAAG,CAAC+C,IAAI,GAAGJ,IAAI,CAACI,IAAI;EAAC;EACzD,OAAO/C,GAAG;AACZ,CAAC;;AAED;AACA;AACA,MAAMgD,0BAA0B,GAAG,EAAE;AACrC,MAAMC,kBAAkB,GAAIC,KAAc,IAAoC;EAC5E,IAAI,CAAC3C,KAAK,CAACC,OAAO,CAAC0C,KAAK,CAAC,EAAE;IAAC,OAAO/C,SAAS;EAAC;EAC7C,MAAMH,GAAsB,GAAG,EAAE;EACjC,KAAK,MAAMmD,IAAI,IAAID,KAAK,CAAC/B,KAAK,CAAC,CAAC,EAAE6B,0BAA0B,CAAC,EAAE;IAC7D,MAAMI,KAAK,GAAGV,iBAAiB,CAACS,IAAI,CAAoB;IACxD,IAAI,OAAQA,IAAI,EAAUE,QAAQ,KAAK,QAAQ,EAAE;MAACD,KAAK,CAACC,QAAQ,GAAIF,IAAI,CAASE,QAAQ;IAAC;IAC1F,IAAI,OAAQF,IAAI,EAAUG,QAAQ,KAAK,QAAQ,EAAE;MAACF,KAAK,CAACE,QAAQ,GAAIH,IAAI,CAASG,QAAQ;IAAC;IAC1FtD,GAAG,CAACuD,IAAI,CAACH,KAAK,CAAC;EACjB;EACA,OAAOpD,GAAG,CAACS,MAAM,GAAG,CAAC,GAAGT,GAAG,GAAGG,SAAS;AACzC,CAAC;AAED,MAAMqD,4BAA4B,GAChCC,OAA6B,IACG;EAChC,IAAI,CAACA,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;IAAC,OAAO,IAAI;EAAC;EAC1D,IAAI,CAACA,OAAO,CAACC,EAAE,IAAI,OAAOD,OAAO,CAACC,EAAE,KAAK,QAAQ,EAAE;IAAC,OAAO,IAAI;EAAC;EAChE,IAAI,CAACD,OAAO,CAACE,OAAO,IAAI,OAAOF,OAAO,CAACE,OAAO,KAAK,QAAQ,EAAE;IAAC,OAAO,IAAI;EAAC;EAC1E,IAAIF,OAAO,CAACG,IAAI,KAAK,OAAO,EAAE;IAC5B,MAAMV,KAAK,GAAGD,kBAAkB,CAACQ,OAAO,CAACP,KAAK,CAAC;IAC/C,MAAMW,OAAO,GAAG,OAAOJ,OAAO,CAACI,OAAO,KAAK,QAAQ,GAAGJ,OAAO,CAACI,OAAO,GAAG1D,SAAS;IACjF,OAAO;MACLyD,IAAI,EAAE,OAAO;MACbF,EAAE,EAAED,OAAO,CAACC,EAAE;MACdC,OAAO,EAAEF,OAAO,CAACE,OAAO;MACxBhB,IAAI,EAAED,iBAAiB,CAACe,OAAO,CAACd,IAAI,CAAC;MACrCE,IAAI,EAAE,OAAOY,OAAO,CAACZ,IAAI,KAAK,QAAQ,GAAGY,OAAO,CAACZ,IAAI,GAAG,EAAE;MAC1DiB,OAAO,EAAEL,OAAO,CAACK,OAAO;MACxBC,SAAS,EAAEN,OAAO,CAACM,SAAS;MAC5BC,WAAW,EAAEP,OAAO,CAACO,WAAW;MAChC,IAAId,KAAK,GAAG;QAAEA;MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;MAC3B,IAAIW,OAAO,GAAG;QAAEA;MAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;MAC/B,IAAIA,OAAO,IAAItD,KAAK,CAACC,OAAO,CAACiD,OAAO,CAACQ,eAAe,CAAC,GACjD;QAAEA,eAAe,EAAER,OAAO,CAACQ;MAAgB,CAAC,GAC5C,CAAC,CAAC;IACR,CAAC;EACH;EACA,IAAIR,OAAO,CAACG,IAAI,KAAK,MAAM,EAAE;IAC3B,OAAO;MACLA,IAAI,EAAE,MAAM;MACZF,EAAE,EAAED,OAAO,CAACC,EAAE;MACdC,OAAO,EAAEF,OAAO,CAACE,OAAO;MACxBO,IAAI,EAAE,OAAOT,OAAO,CAACS,IAAI,KAAK,QAAQ,GAAGT,OAAO,CAACS,IAAI,GAAG,EAAE;MAC1DJ,OAAO,EAAEL,OAAO,CAACK,OAAO;MACxBC,SAAS,EAAEN,OAAO,CAACM,SAAS;MAC5BC,WAAW,EAAEP,OAAO,CAACO;IACvB,CAAC;EACH;EACA,OAAO,IAAI;AACb,CAAC;AAED,MAAMG,sBAAsB,GAC1BC,cAAgE,IACvB;EACzC,IAAI,CAACA,cAAc,IAAI,OAAOA,cAAc,KAAK,QAAQ,EAAE;IAAC,OAAO,CAAC,CAAC;EAAC;EACtE,MAAMpE,GAAyC,GAAG,CAAC,CAAC;EACpD,IAAIqE,KAAK,GAAG,CAAC;EACb,KAAK,MAAM,CAACX,EAAE,EAAED,OAAO,CAAC,IAAIlC,MAAM,CAACE,OAAO,CAAC2C,cAAc,CAAC,EAAE;IAC1D,IAAIC,KAAK,IAAItF,6BAA6B,EAAE;MAAC;IAAM;IACnD,MAAMqE,KAAK,GAAGI,4BAA4B,CAACC,OAAO,CAAC;IACnD,IAAIL,KAAK,EAAE;MACTpD,GAAG,CAAC0D,EAAE,CAAC,GAAGN,KAAK;MACfiB,KAAK,EAAE;IACT;EACF;EACA,OAAOrE,GAAG;AACZ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,SAASsE,+BAA+BA,CAC7CxD,OAAiB,EACjB6C,OAAe,EACc;EAC7B,IAAI,CAAC7C,OAAO,EAAE4C,EAAE,IAAI,CAACC,OAAO,EAAE;IAAC,OAAO,IAAI;EAAC;EAC3C,MAAMG,OAAO,GAAG,CAAC,CAAChD,OAAO,CAACgD,OAAO;EACjC,MAAMC,SAAS,GAAGjD,OAAO,CAACyD,aAAa,KAAK,MAAM;EAClD,MAAMP,WAAW,GAAGlD,OAAO,CAACkD,WAAW;EACvC,IAAIlD,OAAO,CAAC0D,WAAW,KAAK,MAAM,EAAE;IAClC;IACA;IACA,MAAMC,QAAQ,GAAIvE,KAAc,IAC9B,OAAOA,KAAK,KAAK,QAAQ,IAAI,wCAAwC,CAACwE,IAAI,CAACxE,KAAK,CAAC,GAC7EA,KAAK,GACLC,SAAS;IACf,MAAMG,WAAW,GAAGC,KAAK,CAACC,OAAO,CAACM,OAAO,CAACR,WAAW,CAAC,GAAGQ,OAAO,CAACR,WAAW,GAAG,EAAE;IACjF,MAAM4C,KAAoC,GACxC5C,WAAW,CAACG,MAAM,GAAG,CAAC,GAClBH,WAAW,CAACa,KAAK,CAAC,CAAC,EAAE6B,0BAA0B,CAAC,CAACpC,GAAG,CAAE+D,UAAU,KAAM;MACpE/B,GAAG,EAAE6B,QAAQ,CAACE,UAAU,CAACC,QAAQ,CAAC,IAAIH,QAAQ,CAACE,UAAU,CAACE,QAAQ,CAAC;MACnE/B,IAAI,EAAE6B,UAAU,CAACG,YAAY,IAAIH,UAAU,CAACI,QAAQ;MACpDlC,IAAI,EAAE8B,UAAU,CAACK,QAAQ;MACzBjC,IAAI,EACF4B,UAAU,CAAC5B,IAAI,KAAK5C,SAAS,IAAIwE,UAAU,CAAC5B,IAAI,KAAK,IAAI,GACrDkC,MAAM,CAACN,UAAU,CAAC5B,IAAI,CAAC,GACvB5C;IACR,CAAC,CAAC,CAAC,GACHA,SAAS;IACf,OAAO;MACLyD,IAAI,EAAE,OAAO;MACbF,EAAE,EAAE5C,OAAO,CAAC4C,EAAE;MACdC,OAAO;MACPhB,IAAI,EAAED,iBAAiB,CAAC;QACtBE,GAAG,EAAE9B,OAAO,CAAC+D,QAAQ;QACrB/B,IAAI,EAAEhC,OAAO,CAACiE,QAAQ;QACtBlC,IAAI,EAAE/B,OAAO,CAACkE,QAAQ;QACtBjC,IAAI,EACFjC,OAAO,CAACiC,IAAI,KAAK5C,SAAS,IAAIW,OAAO,CAACiC,IAAI,KAAK,IAAI,GAC/CkC,MAAM,CAACnE,OAAO,CAACiC,IAAI,CAAC,GACpB5C;MACR,CAAC,CAAC;MACF0C,IAAI,EAAE/B,OAAO,CAACkE,QAAQ,IAAI,EAAE;MAC5BlB,OAAO;MACPC,SAAS;MACTC,WAAW;MACX,IAAId,KAAK,GAAG;QAAEA;MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;MAC3B,IAAIpC,OAAO,CAAC+C,OAAO,GAAG;QAAEA,OAAO,EAAE/C,OAAO,CAAC+C;MAAQ,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC;EACH;EACA,OAAO;IACLD,IAAI,EAAE,MAAM;IACZF,EAAE,EAAE5C,OAAO,CAAC4C,EAAE;IACdC,OAAO;IACPO,IAAI,EAAEpD,OAAO,CAACoD,IAAI,IAAI,EAAE;IACxBJ,OAAO;IACPC,SAAS;IACTC;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASkB,uBAAuBA,CACrCjD,KAA+C,EAC/CkD,aAAsE,EAC9C;EACxB,IAAI,CAAClD,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAAC,OAAO,EAAE;EAAC;EACpD,MAAMjC,GAA2B,GAAG,EAAE;EACtC,KAAK,MAAM,CAACrB,GAAG,EAAE+C,IAAI,CAAC,IAAIH,MAAM,CAACE,OAAO,CAACQ,KAAK,CAAC,EAAE;IAC/C,MAAMhB,QAAQ,GAAGV,KAAK,CAACC,OAAO,CAACkB,IAAI,EAAET,QAAQ,CAAC,GAAGS,IAAI,CAACT,QAAQ,GAAG,EAAE;IACnE,KAAK,MAAMH,OAAO,IAAIG,QAAQ,EAAE;MAC9B,IAAI,CAACH,OAAO,IAAI,CAACA,OAAO,CAACsE,OAAO,EAAE;QAAC;MAAS;MAC5C,IAAID,aAAa,IAAIA,aAAa,CAACrE,OAAO,CAAC4C,EAAE,CAAC,EAAE;QAAC;MAAS;MAC1D,MAAMD,OAAO,GAAGa,+BAA+B,CAACxD,OAAO,EAAEnC,GAAG,CAAC;MAC7D,IAAI8E,OAAO,EAAE;QAACzD,GAAG,CAACuD,IAAI,CAACE,OAAO,CAAC;MAAC;IAClC;EACF;EACA,OAAOzD,GAAG;AACZ;AAGA,MAAMqF,MAAM,GAAIC,CAAU,IACxB,OAAOA,CAAC,KAAK,QAAQ,IAAIA,CAAC,GAAG,CAACA,CAAC,CAAC,GAAG,EAAE;AAEvC,MAAMC,YAAuC,GAAG;EAC9C,sBAAsB,EAAGC,CAAC,IAAKH,MAAM,CAACG,CAAC,EAAEC,QAAQ,EAAE9G,GAAG,CAAC;EACvD,uBAAuB,EAAG6G,CAAC,IACzBjF,KAAK,CAACC,OAAO,CAACgF,CAAC,EAAEvD,KAAK,CAAC,GAAGuD,CAAC,CAACvD,KAAK,CAACrB,GAAG,CAAE8E,CAAM,IAAKA,CAAC,EAAE/G,GAAG,CAAC,CAAC+B,MAAM,CAACiF,OAAO,CAAC,GAAG,KAAK;EACnF,6BAA6B,EAAGH,CAAC,IAAKH,MAAM,CAACG,CAAC,EAAE9D,IAAI,EAAE/C,GAAG,CAAC;EAC1D,yBAAyB,EAAG6G,CAAC,IAAKH,MAAM,CAACG,CAAC,EAAE7G,GAAG,CAAC;EAChD,yBAAyB,EAAG6G,CAAC,IAAKH,MAAM,CAACG,CAAC,EAAE7G,GAAG,CAAC;EAChD,8BAA8B,EAAG6G,CAAC,IAAKH,MAAM,CAACG,CAAC,EAAE7B,OAAO,CAAC;EACzD,gCAAgC,EAAG6B,CAAC,IAAKH,MAAM,CAACG,CAAC,EAAE7B,OAAO,CAAC;EAC3D,8BAA8B,EAAG6B,CAAC,IAAKH,MAAM,CAACG,CAAC,EAAE7B,OAAO,CAAC;EACzD,gCAAgC,EAAG6B,CAAC,IAAKH,MAAM,CAACG,CAAC,EAAE7B,OAAO,CAAC;EAC3D,oCAAoC,EAAG6B,CAAC,IAAKH,MAAM,CAACG,CAAC,EAAE7B,OAAO,CAAC;EAC/D,6BAA6B,EAAG6B,CAAC,IAAKH,MAAM,CAACG,CAAC,EAAE7B,OAAO,CAAC;EACxD,8BAA8B,EAAG6B,CAAC,IAAKH,MAAM,CAACG,CAAC,EAAE7B,OAAO,CAAC;EACzD,2BAA2B,EAAG6B,CAAC,IAAKH,MAAM,CAACG,CAAC,EAAE7B,OAAO,CAAC;EACtD,qCAAqC,EAAG6B,CAAC,IAAKH,MAAM,CAACG,CAAC,EAAEI,OAAO,CAAC;EAChE,0BAA0B,EAAGJ,CAAC,IAAKH,MAAM,CAACG,CAAC,EAAEI,OAAO,CAAC;EACrD,gCAAgC,EAAGJ,CAAC,IAAKH,MAAM,CAACG,CAAC,EAAEI,OAAO,CAAC;EAC3D,8BAA8B,EAAGJ,CAAC,IAChCA,CAAC,IAAI,OAAOA,CAAC,KAAK,QAAQ,GAAGjE,MAAM,CAACxB,IAAI,CAACyF,CAAC,CAAC,GAAG,KAAK;EACrD,qCAAqC,EAAGA,CAAC,IACvCjF,KAAK,CAACC,OAAO,CAACgF,CAAC,EAAEvD,KAAK,CAAC,GAAGuD,CAAC,CAACvD,KAAK,CAACrB,GAAG,CAAE8E,CAAM,IAAKA,CAAC,EAAE/G,GAAG,CAAC,CAAC+B,MAAM,CAACiF,OAAO,CAAC,GAAG,KAAK;EACnF,uCAAuC,EAAEE,CAAA,KAAM,KAAK;EACpD,6BAA6B,EAAEC,CAAA,KAAM,KAAK;EAC1C,6BAA6B,EAAEC,CAAA,KAAM;AACvC,CAAC;AAED,MAAMC,sBAAsB,GAAG,IAAIC,GAAG,CAAC,CACrC,2BAA2B,EAC3B,2BAA2B,EAC3B,+BAA+B,EAC/B,6BAA6B,EAC7B,6BAA6B,EAC7B,+BAA+B,EAC/B,wCAAwC,EACxC,0CAA0C,EAC1C,+BAA+B,EAC/B,oCAAoC,EACpC,4BAA4B,EAC5B,8BAA8B,EAC9B,gCAAgC,EAChC,6BAA6B,EAC7B,4BAA4B;AAC5B;AACA,mCAAmC,EACnC,+BAA+B,EAC/B,6BAA6B,EAC7B,+BAA+B;AAC/B;AACA;AACA,4BAA4B,EAC5B,wCAAwC,EACxC,uCAAuC,EACvC,8BAA8B,EAC9B,kCAAkC,EAClC,mCAAmC,CACpC,CAAC;AAEF,MAAMC,cAAc,GAAIC,MAAW,IAA8B;EAC/D,MAAMtD,IAAY,GAAGsD,MAAM,EAAEtD,IAAI,IAAI,EAAE;EACvC,MAAMuD,KAAK,GAAGb,YAAY,CAAC1C,IAAI,CAAC;EAChC,IAAIuD,KAAK,EAAE;IAAC,OAAOA,KAAK,CAACD,MAAM,EAAE1C,OAAO,CAAC;EAAC;EAC1C,IAAI,CAACZ,IAAI,CAACwD,UAAU,CAAC,eAAe,CAAC,EAAE;IAAC,OAAO,IAAI;EAAC;EACpD,IAAIL,sBAAsB,CAACM,GAAG,CAACzD,IAAI,CAAC,EAAE;IAAC,OAAO,IAAI;EAAC;EACnD,OAAO,KAAK;AACd,CAAC;AAED,MAAM0D,WAAW,GAAG,IAAI;AACxB,MAAMC,WAAW,GAAG,IAAI;AAExB,IAAIC,UAAgD,GAAG,IAAI;AAC3D,IAAIC,cAAc,GAAG,CAAC;AACtB,IAAIC,UAAU,GAAG,IAAIV,GAAG,CAAS,CAAC;AAClC,IAAIW,aAAa,GAAG,KAAK;AACzB,IAAIC,SAAS,GAAG,KAAK;AACrB,IAAIC,SAAS,GAAG,KAAK;AACrB,IAAIC,aAAa,GAAG,IAAId,GAAG,CAAS,CAAC;AACrC,IAAIe,iBAAiB,GAAG,KAAK;AAC7B,IAAIC,uBAAuB,GAAG,KAAK;AACnC,IAAIC,UAAyB,GAAGC,OAAO,CAACC,OAAO,CAAC,CAAC;AAEjD,MAAMC,QAAQ,GAAIC,KAAiB,IAAK;EACtC,MAAMC,GAAG,GAAGC,IAAI,CAACD,GAAG,CAAC,CAAC;EACtB,IAAI,CAACb,cAAc,EAAE;IAACA,cAAc,GAAGa,GAAG;EAAC;EAC3C,IAAId,UAAU,EAAE;IAACgB,YAAY,CAAChB,UAAU,CAAC;EAAC;EAC1C,MAAMiB,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAElB,cAAc,GAAGF,WAAW,GAAGe,GAAG,CAAC;EACjEd,UAAU,GAAGoB,UAAU,CAACP,KAAK,EAAEK,IAAI,CAACG,GAAG,CAACvB,WAAW,EAAEmB,SAAS,CAAC,CAAC;AAClE,CAAC;AAED,MAAMK,aAAa,GAAGA,CAACpJ,GAAW,EAAE+C,IAAuB,KAAK;EAC9D,MAAM0B,KAAK,GAAGpB,aAAa,CAACN,IAAI,GAAG;IAAE,CAAC/C,GAAG,GAAG+C;EAAK,CAAC,GAAG,CAAC,CAAC,CAAC;EACxD,OAAO0B,KAAK,CAACzE,GAAG,CAAC;AACnB,CAAC;AAED,eAAeqJ,YAAYA,CAACC,QAAmB,EAAiB;EAC9D,MAAMC,OAAO,GAAG,MAAM,IAAAC,iCAAiB,EAAC,CAAC;EACzC,MAAMlG,KAAK,GAAG0E,UAAU;EACxB,MAAMyB,GAAG,GAAGxB,aAAa;EACzB,MAAMyB,SAAS,GAAGxB,SAAS;EAC3B,MAAMyB,SAAS,GAAGxB,SAAS;EAC3BH,UAAU,GAAG,IAAIV,GAAG,CAAC,CAAC;EACtBW,aAAa,GAAG,KAAK;EACrBC,SAAS,GAAG,KAAK;EACjBC,SAAS,GAAG,KAAK;EAEjB,MAAMnF,KAAK,GAAGsG,QAAQ,CAAC,CAAC;EACxB,MAAMM,IAAwB,GAAG,EAAE;EACnC,MAAMC,OAAiB,GAAG,EAAE;EAE5B,IAAIH,SAAS,EAAE;IACb,MAAMI,WAA+B,GAAG;MACtCxJ,IAAI,EAAED,YAAY,CAAC2C,KAAK,CAAC+G,gBAAgB,EAAEzJ,IAAI;IACjD,CAAC;IACDsJ,IAAI,CAAChF,IAAI,CAAC,CAACjF,QAAQ,EAAEqK,IAAI,CAACC,SAAS,CAACH,WAAW,CAAC,CAAC,CAAC;EACpD;EACA,IAAIH,SAAS,EAAE;IACb,MAAMO,WAA+B,GAAG;MACtCzE,cAAc,EAAED,sBAAsB,CACpCxC,KAAK,CAACmH,aAAa,EAAE1E,cACvB;IACF,CAAC;IACDmE,IAAI,CAAChF,IAAI,CAAC,CAAC3E,QAAQ,EAAE+J,IAAI,CAACC,SAAS,CAACC,WAAW,CAAC,CAAC,CAAC;EACpD;EAEA,MAAME,SAAgC,GAAGpH,KAAK,CAACM,KAAK,EAAEA,KAAK,IAAI,CAAC,CAAC;EACjE,MAAM+G,IAAI,GAAGZ,GAAG,GACZ,IAAInC,GAAG,CAAS,CAAC,GAAG1E,MAAM,CAACxB,IAAI,CAACgJ,SAAS,CAAC,EAAE,GAAGhC,aAAa,CAAC,CAAC,GAC9D9E,KAAK;EACT,MAAMgH,SAAS,GAAG,IAAIhD,GAAG,CAACc,aAAa,CAAC;EACxC,KAAK,MAAMpI,GAAG,IAAIqK,IAAI,EAAE;IACtB,MAAM5F,KAAK,GAAG2E,aAAa,CAACpJ,GAAG,EAAEoK,SAAS,CAACpK,GAAG,CAAC,CAAC;IAChD,IAAIyE,KAAK,EAAE;MACTmF,IAAI,CAAChF,IAAI,CAAC,CAAC7E,OAAO,CAACC,GAAG,CAAC,EAAEgK,IAAI,CAACC,SAAS,CAACxF,KAAK,CAAC,CAAC,CAAC;MAChD6F,SAAS,CAACC,GAAG,CAACvK,GAAG,CAAC;IACpB,CAAC,MAAM,IAAIoI,aAAa,CAACT,GAAG,CAAC3H,GAAG,CAAC,EAAE;MACjC6J,OAAO,CAACjF,IAAI,CAAC7E,OAAO,CAACC,GAAG,CAAC,CAAC;MAC1BsK,SAAS,CAACE,MAAM,CAACxK,GAAG,CAAC;IACvB;EACF;EACA,IAAIqK,IAAI,CAACjG,IAAI,GAAG,CAAC,IAAIiE,iBAAiB,EAAE;IACtCuB,IAAI,CAAChF,IAAI,CAAC,CAAC/E,cAAc,EAAEmK,IAAI,CAACC,SAAS,CAAC;MAAEI,IAAI,EAAE,CAAC,GAAGC,SAAS;IAAE,CAAC,CAAC,CAAC,CAAC;EACvE;EACA,IAAIjC,iBAAiB,EAAE;IACrBwB,OAAO,CAACjF,IAAI,CAAChF,SAAS,CAAC;IACvByI,iBAAiB,GAAG,KAAK;EAC3B;EAEA,IAAIuB,IAAI,CAAC9H,MAAM,EAAE;IAAC,MAAMyH,OAAO,CAACkB,OAAO,CAACb,IAAI,CAAC;EAAC;EAC9C,IAAIC,OAAO,CAAC/H,MAAM,EAAE;IAAC,MAAMyH,OAAO,CAACmB,UAAU,CAACb,OAAO,CAAC;EAAC;EACvDzB,aAAa,GAAGkC,SAAS;EAEzB,IAAIhC,uBAAuB,IAAIiB,OAAO,CAACpF,IAAI,KAAK,MAAM,EAAE;IACtDmE,uBAAuB,GAAG,KAAK;IAC/B,MAAMqC,GAAG,GAAG,CAAC,MAAMC,yCAAyB,CAACC,OAAO,CAAC,CAAC,EAAE9I,MAAM,CAAE+I,CAAC,IAC/DA,CAAC,CAACpD,UAAU,CAAChI,cAAc,CAC7B,CAAC;IACD,IAAIiL,GAAG,CAAC7I,MAAM,EAAE;MAAC,MAAM8I,yCAAyB,CAACF,UAAU,CAACC,GAAG,CAAC;IAAC;EACnE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAMI,qBAAiC,GAAIC,QAAQ,IAAM7H,IAAI,IAClEqE,MAAW,IACR;EACH,MAAMyD,MAAM,GAAG9H,IAAI,CAACqE,MAAM,CAAC;EAE3B,MAAMtD,IAAY,GAAGsD,MAAM,EAAEtD,IAAI,IAAI,EAAE;EACvC,IAAIgH,OAAO,GAAG,KAAK;EACnB,IAAIhH,IAAI,CAACwD,UAAU,CAAC,gBAAgB,CAAC,EAAE;IACrCS,SAAS,GAAG,IAAI;IAChB+C,OAAO,GAAG,IAAI;EAChB,CAAC,MAAM,IACLhH,IAAI,CAACwD,UAAU,CAAC,cAAc,CAAC,IAC/BxD,IAAI,CAACwD,UAAU,CAAC,iBAAiB,CAAC,IAClCxD,IAAI,CAACwD,UAAU,CAAC,oBAAoB,CAAC,IACrCxD,IAAI,CAACwD,UAAU,CAAC,aAAa,CAAC,EAC9B;IACAQ,SAAS,GAAG,IAAI;IAChBgD,OAAO,GAAG,IAAI;EAChB,CAAC,MAAM;IACL,MAAM5H,KAAK,GAAGiE,cAAc,CAACC,MAAM,CAAC;IACpC,IAAIlE,KAAK,KAAK,KAAK,EAAE;MACnB2E,aAAa,GAAG,IAAI;MACpBiD,OAAO,GAAG,IAAI;IAChB,CAAC,MAAM,IAAI5H,KAAK,IAAIA,KAAK,CAACxB,MAAM,EAAE;MAChC,KAAK,MAAM9B,GAAG,IAAIsD,KAAK,EAAE;QAAC0E,UAAU,CAACuC,GAAG,CAACvK,GAAG,CAAC;MAAC;MAC9CkL,OAAO,GAAG,IAAI;IAChB;EACF;EACA,IAAI,CAACA,OAAO,EAAE;IAAC,OAAOD,MAAM;EAAC;EAE7BvC,QAAQ,CAAC,MAAM;IACbZ,UAAU,GAAG,IAAI;IACjBC,cAAc,GAAG,CAAC;IAClBQ,UAAU,GAAGA,UAAU,CACpB4C,IAAI,CAAC,MAAM9B,YAAY,CAAC2B,QAAQ,CAAC1B,QAAQ,CAAC,CAAC,CAC3C8B,KAAK,CAAEC,CAAC,IAAKC,OAAO,CAACC,IAAI,CAAC,sBAAsB,EAAEF,CAAC,CAAC,CAAC;EAC1D,CAAC,CAAC;EAEF,OAAOJ,MAAM;AACf,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJA9K,OAAA,CAAA4K,qBAAA,GAAAA,qBAAA;AAKA,eAAeS,QAAQA,CAACjC,OAAuB,EAM5C;EACD,MAAM,CAACkC,SAAS,EAAEC,UAAU,EAAEC,WAAW,EAAEC,SAAS,CAAC,GAAG,MAAMrC,OAAO,CAACsC,OAAO,CAAC,CAC5ElM,QAAQ,EACRE,cAAc,EACdD,SAAS,EACTK,QAAQ,CACT,CAAC;EAEF,MAAM6L,KAAK,GAAOC,KAAoB,IAAe;IACnD,IAAI,CAACA,KAAK,EAAE;MAAC,OAAO,IAAI;IAAC;IACzB,IAAI;MACF,OAAO/B,IAAI,CAAC8B,KAAK,CAACC,KAAK,CAAC;IAC1B,CAAC,CAAC,MAAM;MACN,OAAO,IAAI;IACb;EACF,CAAC;EACD,MAAMC,IAAI,GAAGF,KAAK,CAAqBL,SAAS,CAAC;EACjD,MAAMQ,IAAI,GAAGH,KAAK,CAAqBF,SAAS,CAAC;EAEjD,IAAItI,KAAiC,GAAG,IAAI;EAC5C,IAAI4I,UAAU,GAAG,KAAK;EACtB,MAAM7B,IAAI,GAAGyB,KAAK,CAAsBJ,UAAU,CAAC,EAAErB,IAAI,IAAI,EAAE;EAC/D,IAAIA,IAAI,CAACvI,MAAM,EAAE;IACf,MAAMqK,MAAM,GAAG,MAAM5C,OAAO,CAACsC,OAAO,CAACxB,IAAI,CAACpI,GAAG,CAAClC,OAAO,CAAC,CAAC;IACvD,MAAMsB,GAA0B,GAAG,CAAC,CAAC;IACrC8K,MAAM,CAACC,OAAO,CAAC,CAACL,KAAK,EAAEM,GAAG,KAAK;MAC7B,MAAMtJ,IAAI,GAAG+I,KAAK,CAAQC,KAAK,CAAC;MAChC,IAAIhJ,IAAI,EAAE;QAAC1B,GAAG,CAACgJ,IAAI,CAACgC,GAAG,CAAC,CAAC,GAAGtJ,IAAI;MAAC;IACnC,CAAC,CAAC;IACFO,KAAK,GAAG;MAAEA,KAAK,EAAEjC;IAAI,CAAC;EACxB,CAAC,MAAM,IAAIsK,WAAW,EAAE;IACtBrI,KAAK,GAAGwI,KAAK,CAAsBH,WAAW,CAAC;IAC/CO,UAAU,GAAG,CAAC,CAAC5I,KAAK;EACtB;EACA,OAAO;IACL0I,IAAI;IACJ1I,KAAK;IACL2I,IAAI;IACJC,UAAU;IACVI,KAAK,EAAE,CAACN,IAAI,IAAI,CAAC1I,KAAK,IAAI,CAAC2I;EAC7B,CAAC;AACH;AAEO,eAAeM,kBAAkBA,CAAA,EAIrC;EACD,IAAI;IACF,MAAMhD,OAAO,GAAG,MAAM,IAAAC,iCAAiB,EAAC,CAAC;IACzC,IAAIgD,IAAI,GAAG,MAAMhB,QAAQ,CAACjC,OAAO,CAAC;IAClC,IAAIiD,IAAI,CAACF,KAAK,IAAI/C,OAAO,CAACpF,IAAI,KAAK,MAAM,EAAE;MACzCqI,IAAI,GAAG,MAAMhB,QAAQ,CAACZ,yCAAyB,CAAC;MAChD,IAAI,CAAC4B,IAAI,CAACF,KAAK,EAAE;QACfhE,uBAAuB,GAAG,IAAI;QAC9BL,aAAa,GAAG,IAAI;QACpBC,SAAS,GAAG,CAAC,CAACsE,IAAI,CAACR,IAAI;QACvB7D,SAAS,GAAG,CAAC,CAACqE,IAAI,CAACP,IAAI;QACvB7D,aAAa,GAAG,IAAId,GAAG,CAAC,CAAC;MAC3B;IACF;IACA,IAAIkF,IAAI,CAACN,UAAU,EAAE;MACnB7D,iBAAiB,GAAG,IAAI;MACxBJ,aAAa,GAAG,IAAI;MACpBG,aAAa,GAAG,IAAId,GAAG,CAAC,CAAC;IAC3B,CAAC,MAAM,IAAIkF,IAAI,CAAClJ,KAAK,IAAI,CAACgF,uBAAuB,EAAE;MACjDF,aAAa,GAAG,IAAId,GAAG,CAAC1E,MAAM,CAACxB,IAAI,CAACoL,IAAI,CAAClJ,KAAK,CAACA,KAAK,CAAC,CAAC;IACxD;IACA,OAAO;MAAE0I,IAAI,EAAEQ,IAAI,CAACR,IAAI;MAAE1I,KAAK,EAAEkJ,IAAI,CAAClJ,KAAK;MAAE2I,IAAI,EAAEO,IAAI,CAACP;IAAK,CAAC;EAChE,CAAC,CAAC,OAAOZ,CAAC,EAAE;IACVC,OAAO,CAACC,IAAI,CAAC,qBAAqB,EAAEF,CAAC,CAAC;IACtC,OAAO;MAAEW,IAAI,EAAE,IAAI;MAAE1I,KAAK,EAAE,IAAI;MAAE2I,IAAI,EAAE;IAAK,CAAC;EAChD;AACF;AAEO,eAAeQ,mBAAmBA,CAAA,EAAkB;EACzD,IAAI;IACF,MAAMlD,OAAO,GAAG,MAAM,IAAAC,iCAAiB,EAAC,CAAC;IACzC,MAAMkD,OAAyB,GAC7BnD,OAAO,CAACpF,IAAI,KAAK,MAAM,GAAG,CAACoF,OAAO,EAAEqB,yCAAyB,CAAC,GAAG,CAACrB,OAAO,CAAC;IAC5E,KAAK,MAAMoD,MAAM,IAAID,OAAO,EAAE;MAC5B,MAAMtL,IAAI,GAAG,CAAC,MAAMuL,MAAM,CAAC9B,OAAO,CAAC,CAAC,EAAE9I,MAAM,CAAE+I,CAAC,IAAKA,CAAC,CAACpD,UAAU,CAAChI,cAAc,CAAC,CAAC;MACjF,IAAI0B,IAAI,CAACU,MAAM,EAAE;QAAC,MAAM6K,MAAM,CAACjC,UAAU,CAACtJ,IAAI,CAAC;MAAC;IAClD;IACAgH,aAAa,GAAG,IAAId,GAAG,CAAC,CAAC;IACzBU,UAAU,GAAG,IAAIV,GAAG,CAAC,CAAC;IACtBe,iBAAiB,GAAG,KAAK;IACzBC,uBAAuB,GAAG,KAAK;EACjC,CAAC,CAAC,OAAO+C,CAAC,EAAE;IACVC,OAAO,CAACC,IAAI,CAAC,sBAAsB,EAAEF,CAAC,CAAC;EACzC;AACF;AAEO,MAAMuB,YAAY,GAAAzM,OAAA,CAAAyM,YAAA,GAAG;EAC1BjN,QAAQ;EACRC,SAAS;EACTK,QAAQ;EACRJ,cAAc;EACdC;AACF,CAAC;AACM,MAAM+M,gBAAgB,GAAA1M,OAAA,CAAA0M,gBAAA,GAAG9M,OAAO","ignoreList":[]}
@@ -9,6 +9,10 @@ var _toolkit = require("@reduxjs/toolkit");
9
9
  // without the bubble needing to remember the original draft itself.
10
10
  // `kind === 'text'` carries the plain body; `kind === 'media'` carries
11
11
  // the upload payload so we don't have to make the user re-pick the file.
12
+ /**
13
+ * One file of a failed media send, as the retry replays it. Only the fields
14
+ * an upload needs, so it persists as a plain JSON object.
15
+ */
12
16
 
13
17
  const initialState = {
14
18
  messageHeap: [],
@@ -1 +1 @@
1
- {"version":3,"names":["_toolkit","require","initialState","messageHeap","failedMessages","reducers","addMessageToHeap","state","action","push","payload","removeMessageFromHeapById","index","findIndex","m","id","splice","clearHeap","markMessageFailed","clearMessageFailure","roomHeapSlice","exports","createSlice","name","actions","_default","default","reducer"],"sourceRoot":"../../../src","sources":["roomStore/roomHeapSlice.ts"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAIA;AACA;AACA;AACA;;AA6BA,MAAMC,YAAgC,GAAG;EACvCC,WAAW,EAAE,EAAE;EACfC,cAAc,EAAE,CAAC;AACnB,CAAC;AAED,MAAMC,QAAQ,GAAG;EACfC,gBAAgB,EAAEA,CAACC,KAAwC,EAAEC,MAA+B,KAAK;IAC/FD,KAAK,CAACJ,WAAW,CAACM,IAAI,CAACD,MAAM,CAACE,OAAO,CAAC;EACxC,CAAC;EACDC,yBAAyB,EAAEA,CAACJ,KAAwC,EAAEC,MAA6B,KAAK;IACtG,MAAMI,KAAK,GAAGL,KAAK,CAACJ,WAAW,CAACU,SAAS,CAAEC,CAAC,IAAKA,CAAC,CAACC,EAAE,KAAKP,MAAM,CAACE,OAAO,CAAC;IACzE,IAAIE,KAAK,KAAK,CAAC,CAAC,EAAE;MAChBL,KAAK,CAACJ,WAAW,CAACa,MAAM,CAACJ,KAAK,EAAE,CAAC,CAAC;IACpC;EACF,CAAC;EACDK,SAAS,EAAGV,KAAwC,IAAK;IACvDA,KAAK,CAACJ,WAAW,GAAG,EAAE;IACtBI,KAAK,CAACH,cAAc,GAAG,CAAC,CAAC;EAC3B,CAAC;EACDc,iBAAiB,EAAEA,CACjBX,KAAwC,EACxCC,MAA2C,KACxC;IACHD,KAAK,CAACH,cAAc,CAACI,MAAM,CAACE,OAAO,CAACK,EAAE,CAAC,GAAGP,MAAM,CAACE,OAAO;IACxD;IACA;IACA,MAAME,KAAK,GAAGL,KAAK,CAACJ,WAAW,CAACU,SAAS,CAAEC,CAAC,IAAKA,CAAC,CAACC,EAAE,KAAKP,MAAM,CAACE,OAAO,CAACK,EAAE,CAAC;IAC5E,IAAIH,KAAK,KAAK,CAAC,CAAC,EAAE;MAChBL,KAAK,CAACJ,WAAW,CAACa,MAAM,CAACJ,KAAK,EAAE,CAAC,CAAC;IACpC;EACF,CAAC;EACDO,mBAAmB,EAAEA,CAACZ,KAAwC,EAAEC,MAA6B,KAAK;IAChG,OAAOD,KAAK,CAACH,cAAc,CAACI,MAAM,CAACE,OAAO,CAAC;EAC7C;AACF,CAAC;AAEM,MAAMU,aAA0E,GAAAC,OAAA,CAAAD,aAAA,GAAG,IAAAE,oBAAW,EAAC;EACpGC,IAAI,EAAE,eAAe;EACrBrB,YAAY;EACZG;AACF,CAAC,CAAC;AAEK,MAAM;EACXC,gBAAgB;EAChBW,SAAS;EACTN,yBAAyB;EACzBO,iBAAiB;EACjBC;AACF,CAAC,GAAGC,aAAa,CAACI,OAAO;AAACH,OAAA,CAAAF,mBAAA,GAAAA,mBAAA;AAAAE,OAAA,CAAAH,iBAAA,GAAAA,iBAAA;AAAAG,OAAA,CAAAV,yBAAA,GAAAA,yBAAA;AAAAU,OAAA,CAAAJ,SAAA,GAAAA,SAAA;AAAAI,OAAA,CAAAf,gBAAA,GAAAA,gBAAA;AAAA,IAAAmB,QAAA,GAAAJ,OAAA,CAAAK,OAAA,GAEXN,aAAa,CAACO,OAAO","ignoreList":[]}
1
+ {"version":3,"names":["_toolkit","require","initialState","messageHeap","failedMessages","reducers","addMessageToHeap","state","action","push","payload","removeMessageFromHeapById","index","findIndex","m","id","splice","clearHeap","markMessageFailed","clearMessageFailure","roomHeapSlice","exports","createSlice","name","actions","_default","default","reducer"],"sourceRoot":"../../../src","sources":["roomStore/roomHeapSlice.ts"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA+CA,MAAMC,YAAgC,GAAG;EACvCC,WAAW,EAAE,EAAE;EACfC,cAAc,EAAE,CAAC;AACnB,CAAC;AAED,MAAMC,QAAQ,GAAG;EACfC,gBAAgB,EAAEA,CAACC,KAAwC,EAAEC,MAA+B,KAAK;IAC/FD,KAAK,CAACJ,WAAW,CAACM,IAAI,CAACD,MAAM,CAACE,OAAO,CAAC;EACxC,CAAC;EACDC,yBAAyB,EAAEA,CAACJ,KAAwC,EAAEC,MAA6B,KAAK;IACtG,MAAMI,KAAK,GAAGL,KAAK,CAACJ,WAAW,CAACU,SAAS,CAAEC,CAAC,IAAKA,CAAC,CAACC,EAAE,KAAKP,MAAM,CAACE,OAAO,CAAC;IACzE,IAAIE,KAAK,KAAK,CAAC,CAAC,EAAE;MAChBL,KAAK,CAACJ,WAAW,CAACa,MAAM,CAACJ,KAAK,EAAE,CAAC,CAAC;IACpC;EACF,CAAC;EACDK,SAAS,EAAGV,KAAwC,IAAK;IACvDA,KAAK,CAACJ,WAAW,GAAG,EAAE;IACtBI,KAAK,CAACH,cAAc,GAAG,CAAC,CAAC;EAC3B,CAAC;EACDc,iBAAiB,EAAEA,CACjBX,KAAwC,EACxCC,MAA2C,KACxC;IACHD,KAAK,CAACH,cAAc,CAACI,MAAM,CAACE,OAAO,CAACK,EAAE,CAAC,GAAGP,MAAM,CAACE,OAAO;IACxD;IACA;IACA,MAAME,KAAK,GAAGL,KAAK,CAACJ,WAAW,CAACU,SAAS,CAAEC,CAAC,IAAKA,CAAC,CAACC,EAAE,KAAKP,MAAM,CAACE,OAAO,CAACK,EAAE,CAAC;IAC5E,IAAIH,KAAK,KAAK,CAAC,CAAC,EAAE;MAChBL,KAAK,CAACJ,WAAW,CAACa,MAAM,CAACJ,KAAK,EAAE,CAAC,CAAC;IACpC;EACF,CAAC;EACDO,mBAAmB,EAAEA,CAACZ,KAAwC,EAAEC,MAA6B,KAAK;IAChG,OAAOD,KAAK,CAACH,cAAc,CAACI,MAAM,CAACE,OAAO,CAAC;EAC7C;AACF,CAAC;AAEM,MAAMU,aAA0E,GAAAC,OAAA,CAAAD,aAAA,GAAG,IAAAE,oBAAW,EAAC;EACpGC,IAAI,EAAE,eAAe;EACrBrB,YAAY;EACZG;AACF,CAAC,CAAC;AAEK,MAAM;EACXC,gBAAgB;EAChBW,SAAS;EACTN,yBAAyB;EACzBO,iBAAiB;EACjBC;AACF,CAAC,GAAGC,aAAa,CAACI,OAAO;AAACH,OAAA,CAAAF,mBAAA,GAAAA,mBAAA;AAAAE,OAAA,CAAAH,iBAAA,GAAAA,iBAAA;AAAAG,OAAA,CAAAV,yBAAA,GAAAA,yBAAA;AAAAU,OAAA,CAAAJ,SAAA,GAAAA,SAAA;AAAAI,OAAA,CAAAf,gBAAA,GAAAA,gBAAA;AAAA,IAAAmB,QAAA,GAAAJ,OAAA,CAAAK,OAAA,GAEXN,aAAa,CAACO,OAAO","ignoreList":[]}
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "msgSortableMs", {
10
10
  return _msgSortableMs.msgSortableMs;
11
11
  }
12
12
  });
13
- exports.updateRoom = exports.showArchivedMessage = exports.setVisibleRoom = exports.setUnreadSyncing = exports.setUnreadCounts = exports.setRoomRole = exports.setRoomNoMessages = exports.setRoomMessages = exports.setReadBoundary = exports.setReactions = exports.setPendingNotificationJid = exports.setMessageTranslation = exports.setLogoutState = exports.setLastViewedTimestamp = exports.setJumpWindow = exports.setJoiningRoom = exports.setIsLoading = exports.setEditAction = exports.setCurrentRoom = exports.setComposing = exports.setCloseActiveMessage = exports.setActiveMessage = exports.roomsStore = exports.requestJumpToMessage = exports.removeRoomMessage = exports.prependJumpWindowMessages = void 0;
13
+ exports.updateRoom = exports.showArchivedMessage = exports.setVisibleRoom = exports.setUnreadSyncing = exports.setUnreadCounts = exports.setRoomRole = exports.setRoomNoMessages = exports.setRoomMessages = exports.setReceivedReceipt = exports.setReadBoundary = exports.setReactions = exports.setPendingNotificationJid = exports.setMessageTranslation = exports.setMessageAttachments = exports.setMediaUploadState = exports.setLogoutState = exports.setLastViewedTimestamp = exports.setJumpWindow = exports.setJoiningRoom = exports.setIsLoading = exports.setEditAction = exports.setDisplayedMarker = exports.setCurrentRoom = exports.setComposing = exports.setCloseActiveMessage = exports.setActiveMessage = exports.roomsStore = exports.requestJumpToMessage = exports.removeRoomMessage = exports.prependJumpWindowMessages = void 0;
14
14
  var _toolkit = require("@reduxjs/toolkit");
15
15
  var _insertMessageWithDelimiter = require("../helpers/insertMessageWithDelimiter");
16
16
  var _msgSortableMs = require("../helpers/msgSortableMs");
@@ -787,6 +787,63 @@ const reducers = {
787
787
  message.translations[locale] = entry;
788
788
  });
789
789
  },
790
+ /**
791
+ * Local upload state of one file of an outgoing media message: its
792
+ * `uploadStatus` ('uploading' | 'failed') and `uploadProgress` (0-100).
793
+ * `null` for `uploadStatus` clears both, once the file is up. Matches the
794
+ * message in the room and in the jump window, like the other patches.
795
+ * Never persisted: the persist whitelist drops these fields.
796
+ */
797
+ setMediaUploadState(state, action) {
798
+ const {
799
+ roomJID,
800
+ messageId,
801
+ attachmentId,
802
+ uploadStatus,
803
+ uploadProgress
804
+ } = action.payload;
805
+ if (!(0, _safeKey.isSafeKey)(roomJID) || !(0, _safeKey.isSafeKey)(messageId) || !(0, _safeKey.isSafeKey)(attachmentId)) {
806
+ return;
807
+ }
808
+ forEachMessageCopy(state, roomJID, messageId, message => {
809
+ const target = message.attachments?.find(attachment => attachment.attachmentId === attachmentId);
810
+ if (!target) {
811
+ return;
812
+ }
813
+ if (uploadStatus === null) {
814
+ delete target.uploadStatus;
815
+ delete target.uploadProgress;
816
+ return;
817
+ }
818
+ if (uploadStatus !== undefined) {
819
+ target.uploadStatus = uploadStatus;
820
+ }
821
+ if (typeof uploadProgress === 'number' && Number.isFinite(uploadProgress)) {
822
+ target.uploadProgress = Math.min(100, Math.max(0, uploadProgress));
823
+ }
824
+ });
825
+ },
826
+ /**
827
+ * Replaces the attachments of a message the sender already has, without
828
+ * touching its other fields: `pending` stays as it is, so the bubble is
829
+ * still waiting for the server echo. (addRoomMessage would count this as
830
+ * the echo and clear `pending`.)
831
+ */
832
+ setMessageAttachments(state, action) {
833
+ const {
834
+ roomJID,
835
+ messageId,
836
+ attachments
837
+ } = action.payload;
838
+ if (!(0, _safeKey.isSafeKey)(roomJID) || !(0, _safeKey.isSafeKey)(messageId) || !Array.isArray(attachments)) {
839
+ return;
840
+ }
841
+ forEachMessageCopy(state, roomJID, messageId, message => {
842
+ message.attachments = attachments.map(attachment => ({
843
+ ...attachment
844
+ }));
845
+ });
846
+ },
790
847
  addRoomMessage(state, action) {
791
848
  const {
792
849
  roomJID,
@@ -1199,6 +1256,54 @@ const reducers = {
1199
1256
  });
1200
1257
  }
1201
1258
  },
1259
+ /**
1260
+ * XEP-0184: an occupant's client acknowledged one of our messages. Only
1261
+ * the message id is matched (archive ids), on the live list and on a jump
1262
+ * window copy. Session-only: not persisted.
1263
+ */
1264
+ setReceivedReceipt: (state, action) => {
1265
+ const {
1266
+ roomJID,
1267
+ messageId,
1268
+ fromXmppUsername,
1269
+ timestamp
1270
+ } = action.payload;
1271
+ // Both keys become property names: an unsafe key must never reach the write.
1272
+ if (!(0, _safeKey.isSafeKey)(roomJID) || !(0, _safeKey.isSafeKey)(fromXmppUsername)) {
1273
+ return;
1274
+ }
1275
+ if (!state.rooms[roomJID] || !messageId) {
1276
+ return;
1277
+ }
1278
+ forEachMessageCopy(state, roomJID, message => message.id === messageId, message => {
1279
+ if (!message.receivedBy) {
1280
+ message.receivedBy = {};
1281
+ }
1282
+ message.receivedBy[fromXmppUsername] = timestamp;
1283
+ });
1284
+ },
1285
+ /**
1286
+ * XEP-0333: an occupant displayed up to `messageId`. One watermark per
1287
+ * user and room, replaced on every marker. Session-only: not persisted.
1288
+ */
1289
+ setDisplayedMarker: (state, action) => {
1290
+ const {
1291
+ roomJID,
1292
+ xmppUsername,
1293
+ messageId
1294
+ } = action.payload;
1295
+ if (!(0, _safeKey.isSafeKey)(roomJID) || !(0, _safeKey.isSafeKey)(xmppUsername)) {
1296
+ return;
1297
+ }
1298
+ const room = state.rooms[roomJID];
1299
+ if (!room || !messageId) {
1300
+ return;
1301
+ }
1302
+ if (!room.lastDisplayedByUser) {
1303
+ room.lastDisplayedByUser = {};
1304
+ }
1305
+ room.lastDisplayedByUser[xmppUsername] = messageId;
1306
+ },
1202
1307
  setLogoutState: state => {
1203
1308
  state.rooms = {};
1204
1309
  state.pendingReactions = {};
@@ -1424,6 +1529,8 @@ const {
1424
1529
  deleteAllRooms,
1425
1530
  setRoomMessages,
1426
1531
  addRoomMessage,
1532
+ setMediaUploadState,
1533
+ setMessageAttachments,
1427
1534
  deleteRoomMessage,
1428
1535
  setEditAction,
1429
1536
  editRoomMessage,
@@ -1455,6 +1562,8 @@ const {
1455
1562
  setJoiningRoom,
1456
1563
  clearJoiningRoom,
1457
1564
  setReactions,
1565
+ setReceivedReceipt,
1566
+ setDisplayedMarker,
1458
1567
  mergeUsersSet,
1459
1568
  removeRoomMessage,
1460
1569
  addRoomFromApi,
@@ -1476,6 +1585,8 @@ exports.setMessageTranslation = setMessageTranslation;
1476
1585
  exports.addRoomFromApi = addRoomFromApi;
1477
1586
  exports.removeRoomMessage = removeRoomMessage;
1478
1587
  exports.mergeUsersSet = mergeUsersSet;
1588
+ exports.setDisplayedMarker = setDisplayedMarker;
1589
+ exports.setReceivedReceipt = setReceivedReceipt;
1479
1590
  exports.setReactions = setReactions;
1480
1591
  exports.clearJoiningRoom = clearJoiningRoom;
1481
1592
  exports.setJoiningRoom = setJoiningRoom;
@@ -1507,6 +1618,8 @@ exports.setComposing = setComposing;
1507
1618
  exports.editRoomMessage = editRoomMessage;
1508
1619
  exports.setEditAction = setEditAction;
1509
1620
  exports.deleteRoomMessage = deleteRoomMessage;
1621
+ exports.setMessageAttachments = setMessageAttachments;
1622
+ exports.setMediaUploadState = setMediaUploadState;
1510
1623
  exports.addRoomMessage = addRoomMessage;
1511
1624
  exports.setRoomMessages = setRoomMessages;
1512
1625
  exports.deleteAllRooms = deleteAllRooms;