@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.
- package/CHANGELOG.md +10 -0
- package/README.md +18 -0
- package/app.plugin.js +2 -0
- package/lib/commonjs/assets/icons.js +2 -2
- package/lib/commonjs/assets/icons.js.map +1 -1
- package/lib/commonjs/components/MainComponents/AlbumGrid.js +152 -0
- package/lib/commonjs/components/MainComponents/AlbumGrid.js.map +1 -0
- package/lib/commonjs/components/MainComponents/ChatRoom.js +2 -2
- package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MediaMessage.js +199 -123
- package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MediaUploadOverlay.js +109 -0
- package/lib/commonjs/components/MainComponents/MediaUploadOverlay.js.map +1 -0
- package/lib/commonjs/components/MessageBubble/MediaCaption.js +51 -0
- package/lib/commonjs/components/MessageBubble/MediaCaption.js.map +1 -0
- package/lib/commonjs/components/MessageBubble/Message.js +40 -1
- package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/MessageInteractions.js +2 -1
- package/lib/commonjs/components/MessageBubble/MessageInteractions.js.map +1 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +75 -0
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/LastMessageItem.js +20 -4
- package/lib/commonjs/components/RoomComponents/LastMessageItem.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastAudioMessage.js +3 -2
- package/lib/commonjs/components/RoomComponents/styled/LastAudioMessage.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js +3 -2
- package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js +3 -2
- package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js +3 -2
- package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
- package/lib/commonjs/components/Thread/ThreadWrapper.js +3 -2
- package/lib/commonjs/components/Thread/ThreadWrapper.js.map +1 -1
- package/lib/commonjs/components/styled/MediaFilePreview.js +60 -47
- package/lib/commonjs/components/styled/MediaFilePreview.js.map +1 -1
- package/lib/commonjs/components/styled/MessageImage.js +16 -6
- package/lib/commonjs/components/styled/MessageImage.js.map +1 -1
- package/lib/commonjs/components/styled/SendInput.js +99 -68
- package/lib/commonjs/components/styled/SendInput.js.map +1 -1
- package/lib/commonjs/components/styled/VideoMessage.js +24 -10
- package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
- package/lib/commonjs/context/xmppProvider.js +46 -0
- package/lib/commonjs/context/xmppProvider.js.map +1 -1
- package/lib/commonjs/e2ee/fileEnvelope.js +6 -0
- package/lib/commonjs/e2ee/fileEnvelope.js.map +1 -1
- package/lib/commonjs/e2ee/sealedBody.js +32 -2
- package/lib/commonjs/e2ee/sealedBody.js.map +1 -1
- package/lib/commonjs/helpers/albumLayout.js +150 -0
- package/lib/commonjs/helpers/albumLayout.js.map +1 -0
- package/lib/commonjs/helpers/attachments.js +255 -0
- package/lib/commonjs/helpers/attachments.js.map +1 -0
- package/lib/commonjs/helpers/caption.js +214 -0
- package/lib/commonjs/helpers/caption.js.map +1 -0
- package/lib/commonjs/helpers/createMainMessageForThread.js +5 -1
- package/lib/commonjs/helpers/createMainMessageForThread.js.map +1 -1
- package/lib/commonjs/helpers/createMessageFromXml.js +19 -5
- package/lib/commonjs/helpers/createMessageFromXml.js.map +1 -1
- package/lib/commonjs/helpers/fileKind.js +40 -0
- package/lib/commonjs/helpers/fileKind.js.map +1 -0
- package/lib/commonjs/helpers/getDataFromXml.js +6 -1
- package/lib/commonjs/helpers/getDataFromXml.js.map +1 -1
- package/lib/commonjs/helpers/mapWithConcurrency.js +41 -0
- package/lib/commonjs/helpers/mapWithConcurrency.js.map +1 -0
- package/lib/commonjs/helpers/mediaLimits.js +33 -0
- package/lib/commonjs/helpers/mediaLimits.js.map +1 -0
- package/lib/commonjs/helpers/mediaSendRetry.js +64 -0
- package/lib/commonjs/helpers/mediaSendRetry.js.map +1 -0
- package/lib/commonjs/helpers/mediaWireData.js +62 -0
- package/lib/commonjs/helpers/mediaWireData.js.map +1 -0
- package/lib/commonjs/helpers/mentionSpans.js +19 -0
- package/lib/commonjs/helpers/mentionSpans.js.map +1 -0
- package/lib/commonjs/helpers/mimeToExtension.js +45 -0
- package/lib/commonjs/helpers/mimeToExtension.js.map +1 -1
- package/lib/commonjs/helpers/readReceipts.js +173 -0
- package/lib/commonjs/helpers/readReceipts.js.map +1 -0
- package/lib/commonjs/helpers/repairFilenameEncoding.js +79 -0
- package/lib/commonjs/helpers/repairFilenameEncoding.js.map +1 -0
- package/lib/commonjs/helpers/safeJson.js +18 -0
- package/lib/commonjs/helpers/safeJson.js.map +1 -0
- package/lib/commonjs/helpers/secureStoreRuntime.js +10 -1
- package/lib/commonjs/helpers/secureStoreRuntime.js.map +1 -1
- package/lib/commonjs/hooks/useSendMessage.js +384 -193
- package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
- package/lib/commonjs/i18n/strings.js +96 -0
- package/lib/commonjs/i18n/strings.js.map +1 -1
- package/lib/commonjs/main.js +81 -0
- package/lib/commonjs/main.js.map +1 -1
- package/lib/commonjs/networking/api-requests/auth.api.js +62 -3
- package/lib/commonjs/networking/api-requests/auth.api.js.map +1 -1
- package/lib/commonjs/networking/api-requests/push.api.js +22 -7
- package/lib/commonjs/networking/api-requests/push.api.js.map +1 -1
- package/lib/commonjs/networking/stanzaHandlers.js +100 -3
- package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
- package/lib/commonjs/networking/xmpp/handleStanzas.xmpp.js +4 -2
- package/lib/commonjs/networking/xmpp/handleStanzas.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmpp/sendDisplayedMarker.xmpp.js +28 -0
- package/lib/commonjs/networking/xmpp/sendDisplayedMarker.xmpp.js.map +1 -0
- package/lib/commonjs/networking/xmpp/sendMediaMessage.xmpp.js +53 -2
- package/lib/commonjs/networking/xmpp/sendMediaMessage.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmpp/sendReceivedReceipt.xmpp.js +28 -0
- package/lib/commonjs/networking/xmpp/sendReceivedReceipt.xmpp.js.map +1 -0
- package/lib/commonjs/networking/xmppClient.js +64 -0
- package/lib/commonjs/networking/xmppClient.js.map +1 -1
- package/lib/commonjs/push/pushKeyStore.js +169 -0
- package/lib/commonjs/push/pushKeyStore.js.map +1 -0
- package/lib/commonjs/push/sealedBox.js +106 -0
- package/lib/commonjs/push/sealedBox.js.map +1 -0
- package/lib/commonjs/push/sealedPush.js +124 -0
- package/lib/commonjs/push/sealedPush.js.map +1 -0
- package/lib/commonjs/push/sealedPushTask.js +195 -0
- package/lib/commonjs/push/sealedPushTask.js.map +1 -0
- package/lib/commonjs/roomStore/persistence.js +78 -5
- package/lib/commonjs/roomStore/persistence.js.map +1 -1
- package/lib/commonjs/roomStore/roomHeapSlice.js +4 -0
- package/lib/commonjs/roomStore/roomHeapSlice.js.map +1 -1
- package/lib/commonjs/roomStore/roomsSlice.js +114 -1
- package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
- package/lib/commonjs/services/pushRegistration.js +12 -7
- package/lib/commonjs/services/pushRegistration.js.map +1 -1
- package/lib/commonjs/types/models/attachment.model.js +2 -0
- package/lib/commonjs/types/models/attachment.model.js.map +1 -0
- package/lib/commonjs/version.js +1 -1
- package/lib/module/assets/icons.js +1 -1
- package/lib/module/assets/icons.js.map +1 -1
- package/lib/module/components/MainComponents/AlbumGrid.js +146 -0
- package/lib/module/components/MainComponents/AlbumGrid.js.map +1 -0
- package/lib/module/components/MainComponents/ChatRoom.js +2 -2
- package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/module/components/MainComponents/MediaMessage.js +200 -124
- package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/module/components/MainComponents/MediaUploadOverlay.js +104 -0
- package/lib/module/components/MainComponents/MediaUploadOverlay.js.map +1 -0
- package/lib/module/components/MessageBubble/MediaCaption.js +46 -0
- package/lib/module/components/MessageBubble/MediaCaption.js.map +1 -0
- package/lib/module/components/MessageBubble/Message.js +44 -5
- package/lib/module/components/MessageBubble/Message.js.map +1 -1
- package/lib/module/components/MessageBubble/MessageInteractions.js +2 -1
- package/lib/module/components/MessageBubble/MessageInteractions.js.map +1 -1
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +75 -0
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/module/components/RoomComponents/LastMessageItem.js +20 -4
- package/lib/module/components/RoomComponents/LastMessageItem.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastAudioMessage.js +3 -2
- package/lib/module/components/RoomComponents/styled/LastAudioMessage.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessageFile.js +3 -2
- package/lib/module/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js +3 -2
- package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessageVideo.js +3 -2
- package/lib/module/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
- package/lib/module/components/Thread/ThreadWrapper.js +3 -2
- package/lib/module/components/Thread/ThreadWrapper.js.map +1 -1
- package/lib/module/components/styled/MediaFilePreview.js +61 -48
- package/lib/module/components/styled/MediaFilePreview.js.map +1 -1
- package/lib/module/components/styled/MessageImage.js +16 -6
- package/lib/module/components/styled/MessageImage.js.map +1 -1
- package/lib/module/components/styled/SendInput.js +99 -68
- package/lib/module/components/styled/SendInput.js.map +1 -1
- package/lib/module/components/styled/VideoMessage.js +24 -10
- package/lib/module/components/styled/VideoMessage.js.map +1 -1
- package/lib/module/context/xmppProvider.js +46 -0
- package/lib/module/context/xmppProvider.js.map +1 -1
- package/lib/module/e2ee/fileEnvelope.js +1 -1
- package/lib/module/e2ee/fileEnvelope.js.map +1 -1
- package/lib/module/e2ee/sealedBody.js +32 -2
- package/lib/module/e2ee/sealedBody.js.map +1 -1
- package/lib/module/helpers/albumLayout.js +143 -0
- package/lib/module/helpers/albumLayout.js.map +1 -0
- package/lib/module/helpers/attachments.js +245 -0
- package/lib/module/helpers/attachments.js.map +1 -0
- package/lib/module/helpers/caption.js +207 -0
- package/lib/module/helpers/caption.js.map +1 -0
- package/lib/module/helpers/createMainMessageForThread.js +5 -1
- package/lib/module/helpers/createMainMessageForThread.js.map +1 -1
- package/lib/module/helpers/createMessageFromXml.js +20 -6
- package/lib/module/helpers/createMessageFromXml.js.map +1 -1
- package/lib/module/helpers/fileKind.js +34 -0
- package/lib/module/helpers/fileKind.js.map +1 -0
- package/lib/module/helpers/getDataFromXml.js +6 -1
- package/lib/module/helpers/getDataFromXml.js.map +1 -1
- package/lib/module/helpers/mapWithConcurrency.js +37 -0
- package/lib/module/helpers/mapWithConcurrency.js.map +1 -0
- package/lib/module/helpers/mediaLimits.js +27 -0
- package/lib/module/helpers/mediaLimits.js.map +1 -0
- package/lib/module/helpers/mediaSendRetry.js +55 -0
- package/lib/module/helpers/mediaSendRetry.js.map +1 -0
- package/lib/module/helpers/mediaWireData.js +58 -0
- package/lib/module/helpers/mediaWireData.js.map +1 -0
- package/lib/module/helpers/mentionSpans.js +14 -0
- package/lib/module/helpers/mentionSpans.js.map +1 -0
- package/lib/module/helpers/mimeToExtension.js +43 -0
- package/lib/module/helpers/mimeToExtension.js.map +1 -1
- package/lib/module/helpers/readReceipts.js +160 -0
- package/lib/module/helpers/readReceipts.js.map +1 -0
- package/lib/module/helpers/repairFilenameEncoding.js +74 -0
- package/lib/module/helpers/repairFilenameEncoding.js.map +1 -0
- package/lib/module/helpers/safeJson.js +13 -0
- package/lib/module/helpers/safeJson.js.map +1 -0
- package/lib/module/helpers/secureStoreRuntime.js +10 -1
- package/lib/module/helpers/secureStoreRuntime.js.map +1 -1
- package/lib/module/hooks/useSendMessage.js +387 -195
- package/lib/module/hooks/useSendMessage.js.map +1 -1
- package/lib/module/i18n/strings.js +96 -0
- package/lib/module/i18n/strings.js.map +1 -1
- package/lib/module/main.js +6 -0
- package/lib/module/main.js.map +1 -1
- package/lib/module/networking/api-requests/auth.api.js +62 -3
- package/lib/module/networking/api-requests/auth.api.js.map +1 -1
- package/lib/module/networking/api-requests/push.api.js +21 -6
- package/lib/module/networking/api-requests/push.api.js.map +1 -1
- package/lib/module/networking/stanzaHandlers.js +97 -4
- package/lib/module/networking/stanzaHandlers.js.map +1 -1
- package/lib/module/networking/xmpp/handleStanzas.xmpp.js +5 -3
- package/lib/module/networking/xmpp/handleStanzas.xmpp.js.map +1 -1
- package/lib/module/networking/xmpp/sendDisplayedMarker.xmpp.js +25 -0
- package/lib/module/networking/xmpp/sendDisplayedMarker.xmpp.js.map +1 -0
- package/lib/module/networking/xmpp/sendMediaMessage.xmpp.js +53 -2
- package/lib/module/networking/xmpp/sendMediaMessage.xmpp.js.map +1 -1
- package/lib/module/networking/xmpp/sendReceivedReceipt.xmpp.js +25 -0
- package/lib/module/networking/xmpp/sendReceivedReceipt.xmpp.js.map +1 -0
- package/lib/module/networking/xmppClient.js +64 -0
- package/lib/module/networking/xmppClient.js.map +1 -1
- package/lib/module/push/pushKeyStore.js +159 -0
- package/lib/module/push/pushKeyStore.js.map +1 -0
- package/lib/module/push/sealedBox.js +97 -0
- package/lib/module/push/sealedBox.js.map +1 -0
- package/lib/module/push/sealedPush.js +117 -0
- package/lib/module/push/sealedPush.js.map +1 -0
- package/lib/module/push/sealedPushTask.js +187 -0
- package/lib/module/push/sealedPushTask.js.map +1 -0
- package/lib/module/roomStore/persistence.js +78 -5
- package/lib/module/roomStore/persistence.js.map +1 -1
- package/lib/module/roomStore/roomHeapSlice.js +4 -0
- package/lib/module/roomStore/roomHeapSlice.js.map +1 -1
- package/lib/module/roomStore/roomsSlice.js +109 -0
- package/lib/module/roomStore/roomsSlice.js.map +1 -1
- package/lib/module/services/pushRegistration.js +12 -7
- package/lib/module/services/pushRegistration.js.map +1 -1
- package/lib/module/types/models/attachment.model.js +2 -0
- package/lib/module/types/models/attachment.model.js.map +1 -0
- package/lib/module/version.js +1 -1
- package/lib/typescript/assets/icons.d.ts +6 -1
- package/lib/typescript/assets/icons.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/AlbumGrid.d.ts +21 -0
- package/lib/typescript/components/MainComponents/AlbumGrid.d.ts.map +1 -0
- package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/MediaUploadOverlay.d.ts +17 -0
- package/lib/typescript/components/MainComponents/MediaUploadOverlay.d.ts.map +1 -0
- package/lib/typescript/components/MessageBubble/MediaCaption.d.ts +12 -0
- package/lib/typescript/components/MessageBubble/MediaCaption.d.ts.map +1 -0
- package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts.map +1 -1
- package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/LastMessageItem.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastAudioMessage.d.ts +2 -0
- package/lib/typescript/components/RoomComponents/styled/LastAudioMessage.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts +2 -0
- package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts +2 -0
- package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts +2 -0
- package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts.map +1 -1
- package/lib/typescript/components/Thread/ThreadWrapper.d.ts.map +1 -1
- package/lib/typescript/components/styled/MediaFilePreview.d.ts.map +1 -1
- package/lib/typescript/components/styled/MessageImage.d.ts +10 -0
- package/lib/typescript/components/styled/MessageImage.d.ts.map +1 -1
- package/lib/typescript/components/styled/SendInput.d.ts +7 -1
- package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
- package/lib/typescript/components/styled/VideoMessage.d.ts +7 -0
- package/lib/typescript/components/styled/VideoMessage.d.ts.map +1 -1
- package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
- package/lib/typescript/e2ee/fileEnvelope.d.ts +1 -1
- package/lib/typescript/e2ee/fileEnvelope.d.ts.map +1 -1
- package/lib/typescript/e2ee/sealedBody.d.ts +16 -0
- package/lib/typescript/e2ee/sealedBody.d.ts.map +1 -1
- package/lib/typescript/helpers/albumLayout.d.ts +66 -0
- package/lib/typescript/helpers/albumLayout.d.ts.map +1 -0
- package/lib/typescript/helpers/attachments.d.ts +55 -0
- package/lib/typescript/helpers/attachments.d.ts.map +1 -0
- package/lib/typescript/helpers/caption.d.ts +64 -0
- package/lib/typescript/helpers/caption.d.ts.map +1 -0
- package/lib/typescript/helpers/createMainMessageForThread.d.ts.map +1 -1
- package/lib/typescript/helpers/createMessageFromXml.d.ts.map +1 -1
- package/lib/typescript/helpers/fileKind.d.ts +20 -0
- package/lib/typescript/helpers/fileKind.d.ts.map +1 -0
- package/lib/typescript/helpers/getDataFromXml.d.ts.map +1 -1
- package/lib/typescript/helpers/mapWithConcurrency.d.ts +9 -0
- package/lib/typescript/helpers/mapWithConcurrency.d.ts.map +1 -0
- package/lib/typescript/helpers/mediaLimits.d.ts +13 -0
- package/lib/typescript/helpers/mediaLimits.d.ts.map +1 -0
- package/lib/typescript/helpers/mediaSendRetry.d.ts +26 -0
- package/lib/typescript/helpers/mediaSendRetry.d.ts.map +1 -0
- package/lib/typescript/helpers/mediaWireData.d.ts +16 -0
- package/lib/typescript/helpers/mediaWireData.d.ts.map +1 -0
- package/lib/typescript/helpers/mentionSpans.d.ts +8 -0
- package/lib/typescript/helpers/mentionSpans.d.ts.map +1 -0
- package/lib/typescript/helpers/mimeToExtension.d.ts +7 -0
- package/lib/typescript/helpers/mimeToExtension.d.ts.map +1 -1
- package/lib/typescript/helpers/readReceipts.d.ts +82 -0
- package/lib/typescript/helpers/readReceipts.d.ts.map +1 -0
- package/lib/typescript/helpers/repairFilenameEncoding.d.ts +12 -0
- package/lib/typescript/helpers/repairFilenameEncoding.d.ts.map +1 -0
- package/lib/typescript/helpers/safeJson.d.ts +2 -0
- package/lib/typescript/helpers/safeJson.d.ts.map +1 -0
- package/lib/typescript/helpers/secureStoreRuntime.d.ts +17 -3
- package/lib/typescript/helpers/secureStoreRuntime.d.ts.map +1 -1
- package/lib/typescript/hooks/useSendMessage.d.ts +2 -1
- package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
- package/lib/typescript/i18n/strings.d.ts.map +1 -1
- package/lib/typescript/main.d.ts +6 -0
- package/lib/typescript/main.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/auth.api.d.ts +2 -0
- package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/push.api.d.ts +14 -2
- package/lib/typescript/networking/api-requests/push.api.d.ts.map +1 -1
- package/lib/typescript/networking/stanzaHandlers.d.ts +7 -3
- package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/handleStanzas.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/sendDisplayedMarker.xmpp.d.ts +3 -0
- package/lib/typescript/networking/xmpp/sendDisplayedMarker.xmpp.d.ts.map +1 -0
- package/lib/typescript/networking/xmpp/sendMediaMessage.xmpp.d.ts +12 -0
- package/lib/typescript/networking/xmpp/sendMediaMessage.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/sendReceivedReceipt.xmpp.d.ts +3 -0
- package/lib/typescript/networking/xmpp/sendReceivedReceipt.xmpp.d.ts.map +1 -0
- package/lib/typescript/networking/xmppClient.d.ts +15 -0
- package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
- package/lib/typescript/push/pushKeyStore.d.ts +35 -0
- package/lib/typescript/push/pushKeyStore.d.ts.map +1 -0
- package/lib/typescript/push/sealedBox.d.ts +24 -0
- package/lib/typescript/push/sealedBox.d.ts.map +1 -0
- package/lib/typescript/push/sealedPush.d.ts +61 -0
- package/lib/typescript/push/sealedPush.d.ts.map +1 -0
- package/lib/typescript/push/sealedPushTask.d.ts +33 -0
- package/lib/typescript/push/sealedPushTask.d.ts.map +1 -0
- package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
- package/lib/typescript/roomStore/roomHeapSlice.d.ts +22 -1
- package/lib/typescript/roomStore/roomHeapSlice.d.ts.map +1 -1
- package/lib/typescript/roomStore/roomsSlice.d.ts +67 -3
- package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
- package/lib/typescript/services/pushRegistration.d.ts +8 -0
- package/lib/typescript/services/pushRegistration.d.ts.map +1 -1
- package/lib/typescript/types/models/attachment.model.d.ts +52 -0
- package/lib/typescript/types/models/attachment.model.d.ts.map +1 -0
- package/lib/typescript/types/models/message.model.d.ts +26 -0
- package/lib/typescript/types/models/message.model.d.ts.map +1 -1
- package/lib/typescript/types/models/modal.model.d.ts +7 -0
- package/lib/typescript/types/models/modal.model.d.ts.map +1 -1
- package/lib/typescript/types/models/room.model.d.ts +2 -0
- package/lib/typescript/types/models/room.model.d.ts.map +1 -1
- package/lib/typescript/types/types.d.ts +35 -1
- package/lib/typescript/types/types.d.ts.map +1 -1
- package/lib/typescript/version.d.ts +1 -1
- package/package.json +14 -1
- package/plugins/notification-service/Info.plist +31 -0
- package/plugins/notification-service/NotificationService.swift +195 -0
- package/plugins/notification-service/SealedBox.swift +355 -0
- package/plugins/notification-service/check/gen-vectors.mjs +24 -0
- package/plugins/notification-service/check/main.swift +37 -0
- package/plugins/notification-service/check/run.sh +12 -0
- package/plugins/notification-service/check/vectors.json +1 -0
- package/plugins/withNotificationServiceExtension.js +189 -0
- package/src/assets/icons.tsx +20 -2
- package/src/components/MainComponents/AlbumGrid.tsx +183 -0
- package/src/components/MainComponents/ChatRoom.tsx +4 -2
- package/src/components/MainComponents/MediaMessage.tsx +246 -130
- package/src/components/MainComponents/MediaUploadOverlay.tsx +102 -0
- package/src/components/MessageBubble/MediaCaption.tsx +45 -0
- package/src/components/MessageBubble/Message.tsx +71 -3
- package/src/components/MessageBubble/MessageInteractions.tsx +2 -1
- package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +64 -0
- package/src/components/RoomComponents/LastMessageItem.tsx +15 -4
- package/src/components/RoomComponents/styled/LastAudioMessage.tsx +6 -3
- package/src/components/RoomComponents/styled/LastMessageFile.tsx +6 -2
- package/src/components/RoomComponents/styled/LastMessagePhoto.tsx +6 -2
- package/src/components/RoomComponents/styled/LastMessageVideo.tsx +6 -2
- package/src/components/Thread/ThreadWrapper.tsx +5 -9
- package/src/components/styled/MediaFilePreview.tsx +49 -34
- package/src/components/styled/MessageImage.tsx +21 -5
- package/src/components/styled/SendInput.tsx +101 -87
- package/src/components/styled/VideoMessage.tsx +34 -9
- package/src/context/xmppProvider.tsx +32 -0
- package/src/e2ee/fileEnvelope.ts +1 -1
- package/src/e2ee/sealedBody.ts +44 -5
- package/src/helpers/albumLayout.ts +207 -0
- package/src/helpers/attachments.ts +316 -0
- package/src/helpers/caption.ts +283 -0
- package/src/helpers/createMainMessageForThread.ts +6 -1
- package/src/helpers/createMessageFromXml.ts +21 -5
- package/src/helpers/fileKind.ts +38 -0
- package/src/helpers/getDataFromXml.ts +5 -1
- package/src/helpers/mapWithConcurrency.ts +32 -0
- package/src/helpers/mediaLimits.ts +27 -0
- package/src/helpers/mediaSendRetry.ts +59 -0
- package/src/helpers/mediaWireData.ts +57 -0
- package/src/helpers/mentionSpans.ts +17 -0
- package/src/helpers/mimeToExtension.ts +51 -0
- package/src/helpers/readReceipts.ts +219 -0
- package/src/helpers/repairFilenameEncoding.ts +82 -0
- package/src/helpers/safeJson.ts +11 -0
- package/src/helpers/secureStoreRuntime.ts +21 -3
- package/src/hooks/useSendMessage.tsx +448 -249
- package/src/i18n/strings.ts +96 -0
- package/src/main.ts +30 -0
- package/src/networking/api-requests/auth.api.ts +60 -3
- package/src/networking/api-requests/push.api.ts +29 -4
- package/src/networking/stanzaHandlers.ts +91 -2
- package/src/networking/xmpp/handleStanzas.xmpp.ts +6 -2
- package/src/networking/xmpp/sendDisplayedMarker.xmpp.ts +31 -0
- package/src/networking/xmpp/sendMediaMessage.xmpp.ts +60 -3
- package/src/networking/xmpp/sendReceivedReceipt.xmpp.ts +31 -0
- package/src/networking/xmppClient.ts +48 -0
- package/src/push/pushKeyStore.ts +163 -0
- package/src/push/sealedBox.ts +104 -0
- package/src/push/sealedPush.ts +127 -0
- package/src/push/sealedPushTask.ts +175 -0
- package/src/roomStore/persistence.ts +94 -3
- package/src/roomStore/roomHeapSlice.ts +23 -1
- package/src/roomStore/roomsSlice.ts +112 -1
- package/src/services/pushRegistration.ts +25 -5
- package/src/types/models/attachment.model.ts +51 -0
- package/src/types/models/message.model.ts +29 -0
- package/src/types/models/modal.model.ts +7 -0
- package/src/types/models/room.model.ts +2 -0
- package/src/types/types.ts +41 -1
- 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',
|
|
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":"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","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;;
|
|
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;
|