matrix-js-sdk 41.8.0 → 41.9.0
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 +11 -0
- package/README.md +1 -1
- package/lib/@types/AESEncryptedSecretStoragePayload.js +3 -1
- package/lib/@types/IIdentityServerProvider.js +3 -1
- package/lib/@types/PushRules.js +7 -7
- package/lib/@types/PushRules.js.map +1 -1
- package/lib/@types/auth.js +4 -4
- package/lib/@types/auth.js.map +1 -1
- package/lib/@types/beacon.js +2 -2
- package/lib/@types/beacon.js.map +1 -1
- package/lib/@types/common.js +3 -1
- package/lib/@types/crypto.js +3 -1
- package/lib/@types/event.js +20 -20
- package/lib/@types/event.js.map +1 -1
- package/lib/@types/events.js +3 -1
- package/lib/@types/extensible_events.js +6 -6
- package/lib/@types/extensible_events.js.map +1 -1
- package/lib/@types/global.d.js.map +1 -1
- package/lib/@types/json.js +3 -1
- package/lib/@types/local_notifications.js +3 -1
- package/lib/@types/location.js +4 -4
- package/lib/@types/location.js.map +1 -1
- package/lib/@types/matrix-sdk-crypto-wasm.d.js +3 -1
- package/lib/@types/media.js +3 -1
- package/lib/@types/membership.js +1 -1
- package/lib/@types/membership.js.map +1 -1
- package/lib/@types/partials.js +6 -6
- package/lib/@types/partials.js.map +1 -1
- package/lib/@types/polls.js +5 -5
- package/lib/@types/polls.js.map +1 -1
- package/lib/@types/read_receipts.js +2 -2
- package/lib/@types/read_receipts.js.map +1 -1
- package/lib/@types/registration.js +3 -1
- package/lib/@types/requests.js +1 -1
- package/lib/@types/requests.js.map +1 -1
- package/lib/@types/retention.js +1 -1
- package/lib/@types/retention.js.map +1 -1
- package/lib/@types/search.js +1 -1
- package/lib/@types/search.js.map +1 -1
- package/lib/@types/signed.js +3 -1
- package/lib/@types/spaces.js +3 -1
- package/lib/@types/state_events.js +3 -1
- package/lib/@types/synapse.js +3 -1
- package/lib/@types/sync.js +1 -1
- package/lib/@types/sync.js.map +1 -1
- package/lib/@types/threepids.js +1 -1
- package/lib/@types/threepids.js.map +1 -1
- package/lib/@types/topic.js +1 -1
- package/lib/@types/topic.js.map +1 -1
- package/lib/@types/uia.js +3 -1
- package/lib/NamespacedValue.js +8 -8
- package/lib/NamespacedValue.js.map +1 -1
- package/lib/ReEmitter.js +9 -16
- package/lib/ReEmitter.js.map +1 -1
- package/lib/ToDeviceMessageQueue.js +49 -57
- package/lib/ToDeviceMessageQueue.js.map +1 -1
- package/lib/autodiscovery.js +232 -247
- package/lib/autodiscovery.js.map +1 -1
- package/lib/base64.js +1 -1
- package/lib/base64.js.map +1 -1
- package/lib/browser-index.d.ts +2 -2
- package/lib/browser-index.d.ts.map +1 -1
- package/lib/browser-index.js +5 -5
- package/lib/browser-index.js.map +1 -1
- package/lib/capabilityPoller.js +19 -22
- package/lib/capabilityPoller.js.map +1 -1
- package/lib/client.d.ts +2 -8
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +2043 -2487
- package/lib/client.js.map +1 -1
- package/lib/common-crypto/CryptoBackend.js +2 -2
- package/lib/common-crypto/CryptoBackend.js.map +1 -1
- package/lib/common-crypto/key-passphrase.js.map +1 -1
- package/lib/content-helpers.js +43 -48
- package/lib/content-helpers.js.map +1 -1
- package/lib/content-repo.js +14 -24
- package/lib/content-repo.js.map +1 -1
- package/lib/crypto/store/base.js +6 -6
- package/lib/crypto/store/base.js.map +1 -1
- package/lib/crypto/store/indexeddb-crypto-store-backend.js +190 -238
- package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +1 -1
- package/lib/crypto/store/indexeddb-crypto-store.js +25 -30
- package/lib/crypto/store/indexeddb-crypto-store.js.map +1 -1
- package/lib/crypto/store/localStorage-crypto-store.js +113 -145
- package/lib/crypto/store/localStorage-crypto-store.js.map +1 -1
- package/lib/crypto/store/memory-crypto-store.js +74 -105
- package/lib/crypto/store/memory-crypto-store.js.map +1 -1
- package/lib/crypto-api/CryptoEvent.js +1 -1
- package/lib/crypto-api/CryptoEvent.js.map +1 -1
- package/lib/crypto-api/CryptoEventHandlerMap.js +3 -1
- package/lib/crypto-api/index.d.ts +15 -6
- package/lib/crypto-api/index.d.ts.map +1 -1
- package/lib/crypto-api/index.js +22 -22
- package/lib/crypto-api/index.js.map +1 -1
- package/lib/crypto-api/key-passphrase.js +15 -23
- package/lib/crypto-api/key-passphrase.js.map +1 -1
- package/lib/crypto-api/keybackup.js +3 -1
- package/lib/crypto-api/recovery-key.js +11 -12
- package/lib/crypto-api/recovery-key.js.map +1 -1
- package/lib/crypto-api/verification.js +3 -3
- package/lib/crypto-api/verification.js.map +1 -1
- package/lib/digest.js +7 -14
- package/lib/digest.js.map +1 -1
- package/lib/embedded.d.ts.map +1 -1
- package/lib/embedded.js +380 -505
- package/lib/embedded.js.map +1 -1
- package/lib/errors.js +2 -2
- package/lib/errors.js.map +1 -1
- package/lib/event-mapper.js +10 -12
- package/lib/event-mapper.js.map +1 -1
- package/lib/extensible_events_v1/ExtensibleEvent.js.map +1 -1
- package/lib/extensible_events_v1/InvalidEventError.js.map +1 -1
- package/lib/extensible_events_v1/MessageEvent.js +11 -13
- package/lib/extensible_events_v1/MessageEvent.js.map +1 -1
- package/lib/extensible_events_v1/PollEndEvent.js +3 -4
- package/lib/extensible_events_v1/PollEndEvent.js.map +1 -1
- package/lib/extensible_events_v1/PollResponseEvent.js +5 -6
- package/lib/extensible_events_v1/PollResponseEvent.js.map +1 -1
- package/lib/extensible_events_v1/PollStartEvent.js +8 -10
- package/lib/extensible_events_v1/PollStartEvent.js.map +1 -1
- package/lib/extensible_events_v1/utilities.js.map +1 -1
- package/lib/feature.js +18 -31
- package/lib/feature.js.map +1 -1
- package/lib/filter-component.d.ts.map +1 -1
- package/lib/filter-component.js +20 -26
- package/lib/filter-component.js.map +1 -1
- package/lib/filter.js +14 -17
- package/lib/filter.js.map +1 -1
- package/lib/http-api/errors.js +28 -43
- package/lib/http-api/errors.js.map +1 -1
- package/lib/http-api/fetch.js +141 -159
- package/lib/http-api/fetch.js.map +1 -1
- package/lib/http-api/index.js +17 -20
- package/lib/http-api/index.js.map +1 -1
- package/lib/http-api/interface.js +1 -1
- package/lib/http-api/interface.js.map +1 -1
- package/lib/http-api/method.js +1 -1
- package/lib/http-api/method.js.map +1 -1
- package/lib/http-api/prefix.js +3 -3
- package/lib/http-api/prefix.js.map +1 -1
- package/lib/http-api/refresh.js +74 -94
- package/lib/http-api/refresh.js.map +1 -1
- package/lib/http-api/utils.d.ts +1 -1
- package/lib/http-api/utils.d.ts.map +1 -1
- package/lib/http-api/utils.js +34 -42
- package/lib/http-api/utils.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/indexeddb-helpers.js +3 -3
- package/lib/indexeddb-helpers.js.map +1 -1
- package/lib/indexeddb-worker.js.map +1 -1
- package/lib/interactive-auth.d.ts +5 -5
- package/lib/interactive-auth.d.ts.map +1 -1
- package/lib/interactive-auth.js +172 -204
- package/lib/interactive-auth.js.map +1 -1
- package/lib/logger.js +21 -57
- package/lib/logger.js.map +1 -1
- package/lib/matrix.js +7 -11
- package/lib/matrix.js.map +1 -1
- package/lib/matrixrtc/CallMembership.js +80 -74
- package/lib/matrixrtc/CallMembership.js.map +1 -1
- package/lib/matrixrtc/EncryptionManager.js +1 -1
- package/lib/matrixrtc/EncryptionManager.js.map +1 -1
- package/lib/matrixrtc/IKeyTransport.js +1 -1
- package/lib/matrixrtc/IKeyTransport.js.map +1 -1
- package/lib/matrixrtc/IMembershipManager.js +1 -1
- package/lib/matrixrtc/IMembershipManager.js.map +1 -1
- package/lib/matrixrtc/LivekitTransport.d.ts +1 -1
- package/lib/matrixrtc/LivekitTransport.js +4 -4
- package/lib/matrixrtc/LivekitTransport.js.map +1 -1
- package/lib/matrixrtc/MatrixRTCSession.js +137 -187
- package/lib/matrixrtc/MatrixRTCSession.js.map +1 -1
- package/lib/matrixrtc/MatrixRTCSessionManager.js +36 -41
- package/lib/matrixrtc/MatrixRTCSessionManager.js.map +1 -1
- package/lib/matrixrtc/MembershipManager.js +332 -378
- package/lib/matrixrtc/MembershipManager.js.map +1 -1
- package/lib/matrixrtc/MembershipManagerActionScheduler.js +54 -63
- package/lib/matrixrtc/MembershipManagerActionScheduler.js.map +1 -1
- package/lib/matrixrtc/RTCEncryptionManager.js +119 -143
- package/lib/matrixrtc/RTCEncryptionManager.js.map +1 -1
- package/lib/matrixrtc/ToDeviceKeyTransport.js +53 -58
- package/lib/matrixrtc/ToDeviceKeyTransport.js.map +1 -1
- package/lib/matrixrtc/index.js.map +1 -1
- package/lib/matrixrtc/membershipData/common.js +1 -1
- package/lib/matrixrtc/membershipData/common.js.map +1 -1
- package/lib/matrixrtc/membershipData/index.js.map +1 -1
- package/lib/matrixrtc/membershipData/rtc.js +15 -23
- package/lib/matrixrtc/membershipData/rtc.js.map +1 -1
- package/lib/matrixrtc/membershipData/session.js +4 -5
- package/lib/matrixrtc/membershipData/session.js.map +1 -1
- package/lib/matrixrtc/types.js +4 -6
- package/lib/matrixrtc/types.js.map +1 -1
- package/lib/matrixrtc/utils.js +4 -11
- package/lib/matrixrtc/utils.js.map +1 -1
- package/lib/models/MSC3089Branch.js +91 -116
- package/lib/models/MSC3089Branch.js.map +1 -1
- package/lib/models/MSC3089TreeSpace.js +209 -245
- package/lib/models/MSC3089TreeSpace.js.map +1 -1
- package/lib/models/ToDeviceMessage.js +3 -1
- package/lib/models/beacon.js +14 -13
- package/lib/models/beacon.js.map +1 -1
- package/lib/models/compare-event-ordering.js +13 -13
- package/lib/models/compare-event-ordering.js.map +1 -1
- package/lib/models/device.js +3 -3
- package/lib/models/device.js.map +1 -1
- package/lib/models/event-context.js +5 -8
- package/lib/models/event-context.js.map +1 -1
- package/lib/models/event-status.js +1 -1
- package/lib/models/event-status.js.map +1 -1
- package/lib/models/event-timeline-set.js +88 -94
- package/lib/models/event-timeline-set.js.map +1 -1
- package/lib/models/event-timeline.js +28 -30
- package/lib/models/event-timeline.js.map +1 -1
- package/lib/models/event.js +182 -226
- package/lib/models/event.js.map +1 -1
- package/lib/models/invites-ignorer-types.js +4 -4
- package/lib/models/invites-ignorer-types.js.map +1 -1
- package/lib/models/invites-ignorer.js +159 -179
- package/lib/models/invites-ignorer.js.map +1 -1
- package/lib/models/poll.js +71 -81
- package/lib/models/poll.js.map +1 -1
- package/lib/models/profile-keys.js +2 -2
- package/lib/models/profile-keys.js.map +1 -1
- package/lib/models/read-receipt.js +40 -56
- package/lib/models/read-receipt.js.map +1 -1
- package/lib/models/related-relations.js.map +1 -1
- package/lib/models/relations-container.js +22 -23
- package/lib/models/relations-container.js.map +1 -1
- package/lib/models/relations.js +133 -159
- package/lib/models/relations.js.map +1 -1
- package/lib/models/room-member.js +24 -29
- package/lib/models/room-member.js.map +1 -1
- package/lib/models/room-receipts.js +29 -43
- package/lib/models/room-receipts.js.map +1 -1
- package/lib/models/room-retention.js +74 -83
- package/lib/models/room-retention.js.map +1 -1
- package/lib/models/room-state.js +143 -172
- package/lib/models/room-state.js.map +1 -1
- package/lib/models/room-sticky-events.d.ts +1 -0
- package/lib/models/room-sticky-events.d.ts.map +1 -1
- package/lib/models/room-sticky-events.js +45 -65
- package/lib/models/room-sticky-events.js.map +1 -1
- package/lib/models/room-summary.js.map +1 -1
- package/lib/models/room.d.ts.map +1 -1
- package/lib/models/room.js +765 -909
- package/lib/models/room.js.map +1 -1
- package/lib/models/search-result.js +5 -5
- package/lib/models/search-result.js.map +1 -1
- package/lib/models/thread.js +225 -285
- package/lib/models/thread.js.map +1 -1
- package/lib/models/typed-event-emitter.js +7 -18
- package/lib/models/typed-event-emitter.js.map +1 -1
- package/lib/models/user.js +8 -8
- package/lib/models/user.js.map +1 -1
- package/lib/oidc/authorize.js +208 -241
- package/lib/oidc/authorize.js.map +1 -1
- package/lib/oidc/discovery.js +23 -36
- package/lib/oidc/discovery.js.map +1 -1
- package/lib/oidc/error.js +1 -1
- package/lib/oidc/error.js.map +1 -1
- package/lib/oidc/index.js +1 -0
- package/lib/oidc/index.js.map +1 -1
- package/lib/oidc/register.js +60 -66
- package/lib/oidc/register.js.map +1 -1
- package/lib/oidc/tokenRefresher.js +77 -91
- package/lib/oidc/tokenRefresher.js.map +1 -1
- package/lib/oidc/validate.js +18 -18
- package/lib/oidc/validate.js.map +1 -1
- package/lib/pushprocessor.js +71 -82
- package/lib/pushprocessor.js.map +1 -1
- package/lib/randomstring.js +9 -9
- package/lib/randomstring.js.map +1 -1
- package/lib/realtime-callbacks.js +25 -28
- package/lib/realtime-callbacks.js.map +1 -1
- package/lib/receipt-accumulator.d.ts +2 -0
- package/lib/receipt-accumulator.d.ts.map +1 -1
- package/lib/receipt-accumulator.js +14 -22
- package/lib/receipt-accumulator.js.map +1 -1
- package/lib/rendezvous/MSC4108SignInWithQR.js +271 -302
- package/lib/rendezvous/MSC4108SignInWithQR.js.map +1 -1
- package/lib/rendezvous/RendezvousChannel.js +3 -1
- package/lib/rendezvous/RendezvousCode.js +3 -1
- package/lib/rendezvous/RendezvousError.js.map +1 -1
- package/lib/rendezvous/RendezvousFailureReason.js +2 -2
- package/lib/rendezvous/RendezvousFailureReason.js.map +1 -1
- package/lib/rendezvous/RendezvousIntent.js +1 -1
- package/lib/rendezvous/RendezvousIntent.js.map +1 -1
- package/lib/rendezvous/RendezvousTransport.js +3 -1
- package/lib/rendezvous/channels/MSC4108SecureChannel.js +123 -147
- package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +1 -1
- package/lib/rendezvous/index.js +44 -69
- package/lib/rendezvous/index.js.map +1 -1
- package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts +1 -1
- package/lib/rendezvous/transports/MSC4108RendezvousSession.js +134 -152
- package/lib/rendezvous/transports/MSC4108RendezvousSession.js.map +1 -1
- package/lib/retentionPolicy.js +6 -9
- package/lib/retentionPolicy.js.map +1 -1
- package/lib/room-hierarchy.js +52 -60
- package/lib/room-hierarchy.js.map +1 -1
- package/lib/rust-crypto/CrossSigningIdentity.js +94 -104
- package/lib/rust-crypto/CrossSigningIdentity.js.map +1 -1
- package/lib/rust-crypto/DehydratedDeviceManager.js +157 -190
- package/lib/rust-crypto/DehydratedDeviceManager.js.map +1 -1
- package/lib/rust-crypto/KeyClaimManager.js +18 -22
- package/lib/rust-crypto/KeyClaimManager.js.map +1 -1
- package/lib/rust-crypto/OutgoingRequestProcessor.js +109 -139
- package/lib/rust-crypto/OutgoingRequestProcessor.js.map +1 -1
- package/lib/rust-crypto/OutgoingRequestsManager.js +66 -80
- package/lib/rust-crypto/OutgoingRequestsManager.js.map +1 -1
- package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts +1 -1
- package/lib/rust-crypto/PerSessionKeyBackupDownloader.js +196 -224
- package/lib/rust-crypto/PerSessionKeyBackupDownloader.js.map +1 -1
- package/lib/rust-crypto/RoomEncryptor.js +127 -143
- package/lib/rust-crypto/RoomEncryptor.js.map +1 -1
- package/lib/rust-crypto/backup.js +453 -549
- package/lib/rust-crypto/backup.js.map +1 -1
- package/lib/rust-crypto/constants.js +1 -1
- package/lib/rust-crypto/constants.js.map +1 -1
- package/lib/rust-crypto/device-converter.js +15 -28
- package/lib/rust-crypto/device-converter.js.map +1 -1
- package/lib/rust-crypto/index.js +103 -116
- package/lib/rust-crypto/index.js.map +1 -1
- package/lib/rust-crypto/libolm_migration.js +303 -365
- package/lib/rust-crypto/libolm_migration.js.map +1 -1
- package/lib/rust-crypto/rust-crypto.d.ts +5 -1
- package/lib/rust-crypto/rust-crypto.d.ts.map +1 -1
- package/lib/rust-crypto/rust-crypto.js +1067 -1332
- package/lib/rust-crypto/rust-crypto.js.map +1 -1
- package/lib/rust-crypto/secret-storage.js +12 -25
- package/lib/rust-crypto/secret-storage.js.map +1 -1
- package/lib/rust-crypto/verification.js +137 -189
- package/lib/rust-crypto/verification.js.map +1 -1
- package/lib/scheduler.js +44 -19
- package/lib/scheduler.js.map +1 -1
- package/lib/secret-storage.js +179 -213
- package/lib/secret-storage.js.map +1 -1
- package/lib/serverCapabilities.js +6 -9
- package/lib/serverCapabilities.js.map +1 -1
- package/lib/service-types.js +1 -1
- package/lib/service-types.js.map +1 -1
- package/lib/sliding-sync-sdk.d.ts.map +1 -1
- package/lib/sliding-sync-sdk.js +368 -424
- package/lib/sliding-sync-sdk.js.map +1 -1
- package/lib/sliding-sync.js +135 -171
- package/lib/sliding-sync.js.map +1 -1
- package/lib/store/index.js +3 -1
- package/lib/store/indexeddb-backend.js +3 -1
- package/lib/store/indexeddb-local-backend.js +194 -253
- package/lib/store/indexeddb-local-backend.js.map +1 -1
- package/lib/store/indexeddb-remote-backend.js +33 -63
- package/lib/store/indexeddb-remote-backend.js.map +1 -1
- package/lib/store/indexeddb-store-worker.js +22 -23
- package/lib/store/indexeddb-store-worker.js.map +1 -1
- package/lib/store/indexeddb.js +44 -71
- package/lib/store/indexeddb.js.map +1 -1
- package/lib/store/local-storage-events-emitter.js +2 -2
- package/lib/store/local-storage-events-emitter.js.map +1 -1
- package/lib/store/memory.js +34 -57
- package/lib/store/memory.js.map +1 -1
- package/lib/store/stub.js +22 -35
- package/lib/store/stub.js.map +1 -1
- package/lib/sync-accumulator.js +54 -66
- package/lib/sync-accumulator.js.map +1 -1
- package/lib/sync.d.ts.map +1 -1
- package/lib/sync.js +905 -998
- package/lib/sync.js.map +1 -1
- package/lib/testing.js +63 -105
- package/lib/testing.js.map +1 -1
- package/lib/thread-utils.js +1 -4
- package/lib/thread-utils.js.map +1 -1
- package/lib/timeline-window.js +89 -102
- package/lib/timeline-window.js.map +1 -1
- package/lib/types.js +1 -1
- package/lib/types.js.map +1 -1
- package/lib/utils/decryptAESSecretStorageItem.js +14 -25
- package/lib/utils/decryptAESSecretStorageItem.js.map +1 -1
- package/lib/utils/encryptAESSecretStorageItem.js +27 -38
- package/lib/utils/encryptAESSecretStorageItem.js.map +1 -1
- package/lib/utils/internal/deriveKeys.js +25 -32
- package/lib/utils/internal/deriveKeys.js.map +1 -1
- package/lib/utils/roomVersion.js +1 -1
- package/lib/utils/roomVersion.js.map +1 -1
- package/lib/utils.js +83 -135
- package/lib/utils.js.map +1 -1
- package/lib/version-support.js +3 -3
- package/lib/version-support.js.map +1 -1
- package/lib/webrtc/audioContext.js +5 -6
- package/lib/webrtc/audioContext.js.map +1 -1
- package/lib/webrtc/call.js +1081 -1250
- package/lib/webrtc/call.js.map +1 -1
- package/lib/webrtc/callEventHandler.js +202 -214
- package/lib/webrtc/callEventHandler.js.map +1 -1
- package/lib/webrtc/callEventTypes.js +2 -2
- package/lib/webrtc/callEventTypes.js.map +1 -1
- package/lib/webrtc/callFeed.js +18 -20
- package/lib/webrtc/callFeed.js.map +1 -1
- package/lib/webrtc/groupCall.js +513 -602
- package/lib/webrtc/groupCall.js.map +1 -1
- package/lib/webrtc/groupCallEventHandler.js +59 -62
- package/lib/webrtc/groupCallEventHandler.js.map +1 -1
- package/lib/webrtc/mediaHandler.js +198 -232
- package/lib/webrtc/mediaHandler.js.map +1 -1
- package/lib/webrtc/stats/callFeedStatsReporter.js +16 -20
- package/lib/webrtc/stats/callFeedStatsReporter.js.map +1 -1
- package/lib/webrtc/stats/callStatsReportGatherer.js +67 -75
- package/lib/webrtc/stats/callStatsReportGatherer.js.map +1 -1
- package/lib/webrtc/stats/callStatsReportSummary.js +3 -1
- package/lib/webrtc/stats/connectionStats.js.map +1 -1
- package/lib/webrtc/stats/connectionStatsBuilder.js +2 -2
- package/lib/webrtc/stats/connectionStatsBuilder.js.map +1 -1
- package/lib/webrtc/stats/connectionStatsReportBuilder.js +20 -24
- package/lib/webrtc/stats/connectionStatsReportBuilder.js.map +1 -1
- package/lib/webrtc/stats/groupCallStats.js +6 -8
- package/lib/webrtc/stats/groupCallStats.js.map +1 -1
- package/lib/webrtc/stats/media/mediaSsrcHandler.js +7 -8
- package/lib/webrtc/stats/media/mediaSsrcHandler.js.map +1 -1
- package/lib/webrtc/stats/media/mediaTrackHandler.js +7 -9
- package/lib/webrtc/stats/media/mediaTrackHandler.js.map +1 -1
- package/lib/webrtc/stats/media/mediaTrackStats.js +3 -3
- package/lib/webrtc/stats/media/mediaTrackStats.js.map +1 -1
- package/lib/webrtc/stats/media/mediaTrackStatsHandler.js +7 -7
- package/lib/webrtc/stats/media/mediaTrackStatsHandler.js.map +1 -1
- package/lib/webrtc/stats/statsReport.js +1 -1
- package/lib/webrtc/stats/statsReport.js.map +1 -1
- package/lib/webrtc/stats/statsReportEmitter.js.map +1 -1
- package/lib/webrtc/stats/summaryStatsReportGatherer.js +14 -14
- package/lib/webrtc/stats/summaryStatsReportGatherer.js.map +1 -1
- package/lib/webrtc/stats/trackStatsBuilder.js +32 -34
- package/lib/webrtc/stats/trackStatsBuilder.js.map +1 -1
- package/lib/webrtc/stats/transportStats.js +3 -1
- package/lib/webrtc/stats/transportStatsBuilder.js +9 -9
- package/lib/webrtc/stats/transportStatsBuilder.js.map +1 -1
- package/lib/webrtc/stats/valueFormatter.js +1 -1
- package/lib/webrtc/stats/valueFormatter.js.map +1 -1
- package/package.json +18 -33
- package/src/@types/global.d.ts +2 -2
- package/src/ToDeviceMessageQueue.ts +2 -2
- package/src/browser-index.ts +4 -4
- package/src/client.ts +15 -20
- package/src/crypto-api/index.ts +17 -6
- package/src/embedded.ts +4 -6
- package/src/filter-component.ts +1 -0
- package/src/http-api/utils.ts +1 -1
- package/src/interactive-auth.ts +11 -5
- package/src/matrixrtc/LivekitTransport.ts +1 -1
- package/src/matrixrtc/MatrixRTCSession.ts +1 -1
- package/src/models/MSC3089Branch.ts +1 -1
- package/src/models/room-sticky-events.ts +1 -0
- package/src/models/room.ts +9 -11
- package/src/receipt-accumulator.ts +2 -0
- package/src/rendezvous/index.ts +1 -1
- package/src/rendezvous/transports/MSC4108RendezvousSession.ts +2 -2
- package/src/rust-crypto/PerSessionKeyBackupDownloader.ts +1 -1
- package/src/rust-crypto/index.ts +6 -6
- package/src/rust-crypto/rust-crypto.ts +31 -7
- package/src/rust-crypto/verification.ts +1 -1
- package/src/sliding-sync-sdk.ts +5 -7
- package/src/store/indexeddb-local-backend.ts +3 -3
- package/src/sync.ts +6 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-context.js","names":[
|
|
1
|
+
{"version":3,"file":"event-context.js","names":[],"sources":["../../src/models/event-context.ts"],"sourcesContent":["/*\nCopyright 2015 - 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { type MatrixEvent } from \"./event.ts\";\nimport { Direction } from \"./event-timeline.ts\";\n\nexport class EventContext {\n private timeline: MatrixEvent[];\n private ourEventIndex = 0;\n private paginateTokens: Record<Direction, string | null> = {\n [Direction.Backward]: null,\n [Direction.Forward]: null,\n };\n\n /**\n * Construct a new EventContext\n *\n * An eventcontext is used for circumstances such as search results, when we\n * have a particular event of interest, and a bunch of events before and after\n * it.\n *\n * It also stores pagination tokens for going backwards and forwards in the\n * timeline.\n *\n * @param ourEvent - the event at the centre of this context\n */\n public constructor(public readonly ourEvent: MatrixEvent) {\n this.timeline = [ourEvent];\n }\n\n /**\n * Get the main event of interest\n *\n * This is a convenience function for getTimeline()[getOurEventIndex()].\n *\n * @returns The event at the centre of this context.\n */\n public getEvent(): MatrixEvent {\n return this.timeline[this.ourEventIndex];\n }\n\n /**\n * Get the list of events in this context\n *\n * @returns An array of MatrixEvents\n */\n public getTimeline(): MatrixEvent[] {\n return this.timeline;\n }\n\n /**\n * Get the index in the timeline of our event\n */\n public getOurEventIndex(): number {\n return this.ourEventIndex;\n }\n\n /**\n * Get a pagination token.\n *\n * @param backwards - true to get the pagination token for going\n */\n public getPaginateToken(backwards = false): string | null {\n return this.paginateTokens[backwards ? Direction.Backward : Direction.Forward];\n }\n\n /**\n * Set a pagination token.\n *\n * Generally this will be used only by the matrix js sdk.\n *\n * @param token - pagination token\n * @param backwards - true to set the pagination token for going\n * backwards in time\n */\n public setPaginateToken(token?: string, backwards = false): void {\n this.paginateTokens[backwards ? Direction.Backward : Direction.Forward] = token ?? null;\n }\n\n /**\n * Add more events to the timeline\n *\n * @param events - new events, in timeline order\n * @param atStart - true to insert new events at the start\n */\n public addEvents(events: MatrixEvent[], atStart = false): void {\n // TODO: should we share logic with Room.addEventsToTimeline?\n // Should Room even use EventContext?\n\n if (atStart) {\n this.timeline = events.concat(this.timeline);\n this.ourEventIndex += events.length;\n } else {\n this.timeline = this.timeline.concat(events);\n }\n }\n}\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAAS,SAAS,QAAQ,qBAAqB;AAE/C,OAAO,MAAM,YAAY,CAAC;EAQtB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACW,WAAW,CAAiB,QAAqB,EAAE;IAAA;IAAA,uCAlBlC,CAAC;IAAA,wCACkC;MACvD,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI;MAC1B,CAAC,SAAS,CAAC,OAAO,GAAG;IACzB,CAAC;IAAA,KAckC,QAAqB,GAArB,QAAqB;IACpD,IAAI,CAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC;EAC9B;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACW,QAAQ,GAAgB;IAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;EAC5C;;EAEA;AACJ;AACA;AACA;AACA;EACW,WAAW,GAAkB;IAChC,OAAO,IAAI,CAAC,QAAQ;EACxB;;EAEA;AACJ;AACA;EACW,gBAAgB,GAAW;IAC9B,OAAO,IAAI,CAAC,aAAa;EAC7B;;EAEA;AACJ;AACA;AACA;AACA;EACW,gBAAgB,CAAC,SAAS,GAAG,KAAK,EAAiB;IACtD,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC;EAClF;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACW,gBAAgB,CAAC,KAAc,EAAE,SAAS,GAAG,KAAK,EAAQ;IAC7D,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI,IAAI;EAC3F;;EAEA;AACJ;AACA;AACA;AACA;AACA;EACW,SAAS,CAAC,MAAqB,EAAE,OAAO,GAAG,KAAK,EAAQ;IAC3D;IACA;;IAEA,IAAI,OAAO,EAAE;MACT,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;MAC5C,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,MAAM;IACvC,CAAC,MAAM;MACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IAChD;EACJ;AACJ","ignoreList":[]}
|
|
@@ -18,7 +18,7 @@ limitations under the License.
|
|
|
18
18
|
* Enum for event statuses.
|
|
19
19
|
* @readonly
|
|
20
20
|
*/
|
|
21
|
-
export
|
|
21
|
+
export let EventStatus = /*#__PURE__*/function (EventStatus) {
|
|
22
22
|
/** The event was not sent and will no longer be retried. */
|
|
23
23
|
EventStatus["NOT_SENT"] = "not_sent";
|
|
24
24
|
/** The message is being encrypted */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-status.js","names":[
|
|
1
|
+
{"version":3,"file":"event-status.js","names":[],"sources":["../../src/models/event-status.ts"],"sourcesContent":["/*\nCopyright 2015 - 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Enum for event statuses.\n * @readonly\n */\nexport enum EventStatus {\n /** The event was not sent and will no longer be retried. */\n NOT_SENT = \"not_sent\",\n\n /** The message is being encrypted */\n ENCRYPTING = \"encrypting\",\n\n /** The event is in the process of being sent. */\n SENDING = \"sending\",\n\n /** The event is in a queue waiting to be sent. */\n QUEUED = \"queued\",\n\n /** The event has been sent to the server, but we have not yet received the echo. */\n SENT = \"sent\",\n\n /** The event was cancelled before it was successfully sent. */\n CANCELLED = \"cancelled\",\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAY,WAAW,0BAAX,WAAW;EACnB;EADQ,WAAW;EAInB;EAJQ,WAAW;EAOnB;EAPQ,WAAW;EAUnB;EAVQ,WAAW;EAanB;EAbQ,WAAW;EAgBnB;EAhBQ,WAAW;EAAA,OAAX,WAAW;AAAA","ignoreList":[]}
|
|
@@ -20,18 +20,18 @@ import { logger } from "../logger.js";
|
|
|
20
20
|
import { RoomEvent } from "./room.js";
|
|
21
21
|
import { TypedEventEmitter } from "./typed-event-emitter.js";
|
|
22
22
|
import { RelationsContainer } from "./relations-container.js";
|
|
23
|
-
|
|
23
|
+
const DEBUG = true;
|
|
24
24
|
|
|
25
25
|
/* istanbul ignore next */
|
|
26
|
-
|
|
26
|
+
let debuglog;
|
|
27
27
|
if (DEBUG) {
|
|
28
28
|
// using bind means that we get to keep useful line numbers in the console
|
|
29
29
|
debuglog = logger.log.bind(logger);
|
|
30
30
|
} else {
|
|
31
31
|
/* istanbul ignore next */
|
|
32
|
-
debuglog = function
|
|
32
|
+
debuglog = function () {};
|
|
33
33
|
}
|
|
34
|
-
export
|
|
34
|
+
export let DuplicateStrategy = /*#__PURE__*/function (DuplicateStrategy) {
|
|
35
35
|
DuplicateStrategy["Ignore"] = "ignore";
|
|
36
36
|
DuplicateStrategy["Replace"] = "replace";
|
|
37
37
|
return DuplicateStrategy;
|
|
@@ -67,16 +67,8 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
67
67
|
* @param threadListType - the type of thread list represented, if any
|
|
68
68
|
* (e.g., All threads or My threads)
|
|
69
69
|
*/
|
|
70
|
-
constructor(room) {
|
|
71
|
-
var _this$room$relations, _this$room, _room$client;
|
|
72
|
-
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
73
|
-
var client = arguments.length > 2 ? arguments[2] : undefined;
|
|
74
|
-
var thread = arguments.length > 3 ? arguments[3] : undefined;
|
|
75
|
-
var threadListType = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
|
|
70
|
+
constructor(room, opts = {}, client, thread, threadListType = null) {
|
|
76
71
|
super();
|
|
77
|
-
this.room = room;
|
|
78
|
-
this.thread = thread;
|
|
79
|
-
this.threadListType = threadListType;
|
|
80
72
|
_defineProperty(this, "relations", void 0);
|
|
81
73
|
_defineProperty(this, "timelineSupport", void 0);
|
|
82
74
|
_defineProperty(this, "displayPendingEvents", void 0);
|
|
@@ -84,6 +76,9 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
84
76
|
_defineProperty(this, "timelines", void 0);
|
|
85
77
|
_defineProperty(this, "_eventIdToTimeline", new Map());
|
|
86
78
|
_defineProperty(this, "filter", void 0);
|
|
79
|
+
this.room = room;
|
|
80
|
+
this.thread = thread;
|
|
81
|
+
this.threadListType = threadListType;
|
|
87
82
|
this.timelineSupport = Boolean(opts.timelineSupport);
|
|
88
83
|
this.liveTimeline = new EventTimeline(this);
|
|
89
84
|
this.displayPendingEvents = opts.pendingEvents !== false;
|
|
@@ -92,7 +87,7 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
92
87
|
this.timelines = [this.liveTimeline];
|
|
93
88
|
this._eventIdToTimeline = new Map();
|
|
94
89
|
this.filter = opts.filter;
|
|
95
|
-
this.relations =
|
|
90
|
+
this.relations = this.room?.relations ?? new RelationsContainer(room?.client ?? client);
|
|
96
91
|
}
|
|
97
92
|
|
|
98
93
|
/**
|
|
@@ -169,7 +164,7 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
169
164
|
* @param newEventId - event ID of the replacement event
|
|
170
165
|
*/
|
|
171
166
|
replaceEventId(oldEventId, newEventId) {
|
|
172
|
-
|
|
167
|
+
const existingTimeline = this._eventIdToTimeline.get(oldEventId);
|
|
173
168
|
if (existingTimeline) {
|
|
174
169
|
this._eventIdToTimeline.delete(oldEventId);
|
|
175
170
|
this._eventIdToTimeline.set(newEventId, existingTimeline);
|
|
@@ -198,9 +193,9 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
198
193
|
// of the new timeline.
|
|
199
194
|
|
|
200
195
|
// if timeline support is disabled, forget about the old timelines
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
196
|
+
const resetAllTimelines = !this.timelineSupport || !forwardPaginationToken;
|
|
197
|
+
const oldTimeline = this.liveTimeline;
|
|
198
|
+
const newTimeline = resetAllTimelines ? oldTimeline.forkLive(EventTimeline.FORWARDS) : oldTimeline.fork(EventTimeline.FORWARDS);
|
|
204
199
|
if (resetAllTimelines) {
|
|
205
200
|
this.timelines = [newTimeline];
|
|
206
201
|
this._eventIdToTimeline = new Map();
|
|
@@ -216,7 +211,7 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
216
211
|
// make sure we set the pagination token before firing timelineReset,
|
|
217
212
|
// otherwise clients which start back-paginating will fail, and then get
|
|
218
213
|
// stuck without realising that they *can* back-paginate.
|
|
219
|
-
newTimeline.setPaginationToken(backPaginationToken
|
|
214
|
+
newTimeline.setPaginationToken(backPaginationToken ?? null, EventTimeline.BACKWARDS);
|
|
220
215
|
|
|
221
216
|
// Now we can swap the live timeline to the new one.
|
|
222
217
|
this.liveTimeline = newTimeline;
|
|
@@ -234,7 +229,7 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
234
229
|
if (eventId === null || eventId === undefined) {
|
|
235
230
|
return null;
|
|
236
231
|
}
|
|
237
|
-
|
|
232
|
+
const res = this._eventIdToTimeline.get(eventId);
|
|
238
233
|
return res === undefined ? null : res;
|
|
239
234
|
}
|
|
240
235
|
|
|
@@ -245,7 +240,7 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
245
240
|
* @returns the given event, or undefined if unknown
|
|
246
241
|
*/
|
|
247
242
|
findEventById(eventId) {
|
|
248
|
-
|
|
243
|
+
const tl = this.getTimelineForEvent(eventId);
|
|
249
244
|
if (!tl) {
|
|
250
245
|
return undefined;
|
|
251
246
|
}
|
|
@@ -263,7 +258,7 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
263
258
|
if (!this.timelineSupport) {
|
|
264
259
|
throw new Error("timeline support is disabled. Set the 'timelineSupport'" + " parameter to true when creating MatrixClient to enable" + " it.");
|
|
265
260
|
}
|
|
266
|
-
|
|
261
|
+
const timeline = new EventTimeline(this);
|
|
267
262
|
this.timelines.push(timeline);
|
|
268
263
|
return timeline;
|
|
269
264
|
}
|
|
@@ -301,8 +296,8 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
301
296
|
return;
|
|
302
297
|
}
|
|
303
298
|
}
|
|
304
|
-
|
|
305
|
-
|
|
299
|
+
const direction = toStartOfTimeline ? EventTimeline.BACKWARDS : EventTimeline.FORWARDS;
|
|
300
|
+
const inverseDirection = toStartOfTimeline ? EventTimeline.FORWARDS : EventTimeline.BACKWARDS;
|
|
306
301
|
|
|
307
302
|
// Adding events to timelines can be quite complicated. The following
|
|
308
303
|
// illustrates some of the corner-cases.
|
|
@@ -373,11 +368,11 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
373
368
|
// paginating with the same token, we might as well use the new pagination
|
|
374
369
|
// token in the hope that we eventually work our way out of the mess.
|
|
375
370
|
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
for (
|
|
379
|
-
|
|
380
|
-
|
|
371
|
+
let didUpdate = false;
|
|
372
|
+
let lastEventWasNew = false;
|
|
373
|
+
for (const event of events) {
|
|
374
|
+
const eventId = event.getId();
|
|
375
|
+
const existingTimeline = this._eventIdToTimeline.get(eventId);
|
|
381
376
|
if (!existingTimeline) {
|
|
382
377
|
// we don't know about this event yet. Just add it to the timeline.
|
|
383
378
|
this.addEventToTimeline(event, timeline, {
|
|
@@ -393,7 +388,7 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
393
388
|
debuglog("Event " + eventId + " already in timeline " + timeline);
|
|
394
389
|
continue;
|
|
395
390
|
}
|
|
396
|
-
|
|
391
|
+
const neighbour = timeline.getNeighbouringTimeline(direction);
|
|
397
392
|
if (neighbour) {
|
|
398
393
|
// this timeline already has a neighbour in the relevant direction;
|
|
399
394
|
// let's assume the timelines are already correctly linked up, and
|
|
@@ -417,10 +412,10 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
417
412
|
logger.info("Already have timeline for " + eventId + " - joining timeline " + timeline + " to " + existingTimeline);
|
|
418
413
|
|
|
419
414
|
// Variables to keep the line length limited below.
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
415
|
+
const existingIsLive = existingTimeline === this.liveTimeline;
|
|
416
|
+
const timelineIsLive = timeline === this.liveTimeline;
|
|
417
|
+
const backwardsIsLive = direction === EventTimeline.BACKWARDS && existingIsLive;
|
|
418
|
+
const forwardsIsLive = direction === EventTimeline.FORWARDS && timelineIsLive;
|
|
424
419
|
if (backwardsIsLive || forwardsIsLive) {
|
|
425
420
|
// The live timeline should never be spliced into a non-live position.
|
|
426
421
|
// We use independent logging to better discover the problem at a glance.
|
|
@@ -447,10 +442,10 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
447
442
|
lastEventWasNew,
|
|
448
443
|
didUpdate
|
|
449
444
|
}); // for debugging
|
|
450
|
-
logger.warn(
|
|
445
|
+
logger.warn(`Refusing to set forwards pagination token of live timeline ` + `${timeline} to ${paginationToken}`);
|
|
451
446
|
return;
|
|
452
447
|
}
|
|
453
|
-
timeline.setPaginationToken(paginationToken
|
|
448
|
+
timeline.setPaginationToken(paginationToken ?? null, direction);
|
|
454
449
|
}
|
|
455
450
|
}
|
|
456
451
|
|
|
@@ -460,24 +455,25 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
460
455
|
* @param event - Event to be added
|
|
461
456
|
* @param options - addLiveEvent options
|
|
462
457
|
*/
|
|
463
|
-
addLiveEvent(event,
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
458
|
+
addLiveEvent(event, {
|
|
459
|
+
duplicateStrategy,
|
|
460
|
+
fromCache,
|
|
461
|
+
roomState,
|
|
462
|
+
timelineWasEmpty,
|
|
463
|
+
addToState
|
|
464
|
+
}) {
|
|
469
465
|
if (this.filter) {
|
|
470
|
-
|
|
466
|
+
const events = this.filter.filterRoomTimeline([event]);
|
|
471
467
|
if (!events.length) {
|
|
472
468
|
return;
|
|
473
469
|
}
|
|
474
470
|
}
|
|
475
|
-
|
|
471
|
+
const timeline = this._eventIdToTimeline.get(event.getId());
|
|
476
472
|
if (timeline) {
|
|
477
473
|
if (duplicateStrategy === DuplicateStrategy.Replace) {
|
|
478
474
|
debuglog("EventTimelineSet.addLiveEvent: replacing duplicate event " + event.getId());
|
|
479
|
-
|
|
480
|
-
for (
|
|
475
|
+
const tlEvents = timeline.getEvents();
|
|
476
|
+
for (let j = 0; j < tlEvents.length; j++) {
|
|
481
477
|
if (tlEvents[j].getId() === event.getId()) {
|
|
482
478
|
// still need to set the right metadata on this event
|
|
483
479
|
if (!roomState) {
|
|
@@ -517,18 +513,18 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
517
513
|
* @remarks
|
|
518
514
|
* Fires {@link RoomEvent.Timeline}
|
|
519
515
|
*/
|
|
520
|
-
addEventToTimeline(event, timeline,
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
516
|
+
addEventToTimeline(event, timeline, {
|
|
517
|
+
toStartOfTimeline,
|
|
518
|
+
fromCache = false,
|
|
519
|
+
roomState,
|
|
520
|
+
timelineWasEmpty,
|
|
521
|
+
addToState
|
|
522
|
+
}) {
|
|
527
523
|
if (timeline.getTimelineSet() !== this) {
|
|
528
|
-
|
|
529
|
-
|
|
524
|
+
throw new Error(`EventTimelineSet.addEventToTimeline: Timeline=${timeline.toString()} does not belong " +
|
|
525
|
+
"in timelineSet(threadId=${this.thread?.id})`);
|
|
530
526
|
}
|
|
531
|
-
|
|
527
|
+
const eventId = event.getId();
|
|
532
528
|
this.relations.aggregateParentEvent(event);
|
|
533
529
|
this.relations.aggregateChildEvent(event, this);
|
|
534
530
|
|
|
@@ -538,12 +534,11 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
538
534
|
// We can only run this check for timelines with a `room` because `canContain`
|
|
539
535
|
// requires it
|
|
540
536
|
if (this.room && !this.canContain(event)) {
|
|
541
|
-
|
|
542
|
-
var eventDebugString = "event=".concat(eventId);
|
|
537
|
+
let eventDebugString = `event=${eventId}`;
|
|
543
538
|
if (event.threadRootId) {
|
|
544
|
-
eventDebugString +=
|
|
539
|
+
eventDebugString += `(belongs to thread=${event.threadRootId})`;
|
|
545
540
|
}
|
|
546
|
-
logger.warn(
|
|
541
|
+
logger.warn(`EventTimelineSet.addEventToTimeline: Ignoring ${eventDebugString} that does not belong ` + `in timeline=${timeline.toString()} timelineSet(threadId=${this.thread?.id})`);
|
|
547
542
|
return;
|
|
548
543
|
}
|
|
549
544
|
timeline.addEvent(event, {
|
|
@@ -553,7 +548,7 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
553
548
|
addToState
|
|
554
549
|
});
|
|
555
550
|
this._eventIdToTimeline.set(eventId, timeline);
|
|
556
|
-
|
|
551
|
+
const data = {
|
|
557
552
|
timeline: timeline,
|
|
558
553
|
liveEvent: !toStartOfTimeline && timeline == this.liveTimeline && !fromCache
|
|
559
554
|
};
|
|
@@ -580,10 +575,10 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
580
575
|
*/
|
|
581
576
|
insertEventIntoTimeline(event, timeline, roomState, addToState) {
|
|
582
577
|
if (timeline.getTimelineSet() !== this) {
|
|
583
|
-
|
|
584
|
-
|
|
578
|
+
throw new Error(`EventTimelineSet.insertEventIntoTimeline: Timeline=${timeline.toString()} does not belong " +
|
|
579
|
+
"in timelineSet(threadId=${this.thread?.id})`);
|
|
585
580
|
}
|
|
586
|
-
|
|
581
|
+
const eventId = event.getId();
|
|
587
582
|
this.relations.aggregateParentEvent(event);
|
|
588
583
|
this.relations.aggregateChildEvent(event, this);
|
|
589
584
|
|
|
@@ -593,17 +588,16 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
593
588
|
// We can only run this check for timelines with a `room` because `canContain`
|
|
594
589
|
// requires it
|
|
595
590
|
if (this.room && !this.canContain(event)) {
|
|
596
|
-
|
|
597
|
-
var eventDebugString = "event=".concat(eventId);
|
|
591
|
+
let eventDebugString = `event=${eventId}`;
|
|
598
592
|
if (event.threadRootId) {
|
|
599
|
-
eventDebugString +=
|
|
593
|
+
eventDebugString += `(belongs to thread=${event.threadRootId})`;
|
|
600
594
|
}
|
|
601
|
-
logger.warn(
|
|
595
|
+
logger.warn(`EventTimelineSet.insertEventIntoTimeline: Ignoring ${eventDebugString} that does not belong ` + `in timeline=${timeline.toString()} timelineSet(threadId=${this.thread?.id})`);
|
|
602
596
|
return;
|
|
603
597
|
}
|
|
604
598
|
|
|
605
599
|
// Find the event that this event is related to - the "parent"
|
|
606
|
-
|
|
600
|
+
const parentEventId = event.relationEventId;
|
|
607
601
|
if (!parentEventId) {
|
|
608
602
|
// Not related to anything - we just append
|
|
609
603
|
this.addEventToTimeline(event, timeline, {
|
|
@@ -615,15 +609,15 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
615
609
|
});
|
|
616
610
|
return;
|
|
617
611
|
}
|
|
618
|
-
|
|
619
|
-
|
|
612
|
+
const parentEvent = this.findEventById(parentEventId);
|
|
613
|
+
const timelineEvents = timeline.getEvents();
|
|
620
614
|
|
|
621
615
|
// Start searching from the parent event, or if it's not loaded, start
|
|
622
616
|
// at the beginning and insert purely using timestamp order.
|
|
623
|
-
|
|
624
|
-
|
|
617
|
+
const parentIndex = parentEvent !== undefined ? timelineEvents.indexOf(parentEvent) : 0;
|
|
618
|
+
let insertIndex = parentIndex;
|
|
625
619
|
for (; insertIndex < timelineEvents.length; insertIndex++) {
|
|
626
|
-
|
|
620
|
+
const nextEvent = timelineEvents[insertIndex];
|
|
627
621
|
if (nextEvent.getTs() > event.getTs()) {
|
|
628
622
|
// We found an event later than ours, so insert before that.
|
|
629
623
|
break;
|
|
@@ -634,7 +628,7 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
634
628
|
|
|
635
629
|
timeline.insertEvent(event, insertIndex, roomState, addToState);
|
|
636
630
|
this._eventIdToTimeline.set(eventId, timeline);
|
|
637
|
-
|
|
631
|
+
const data = {
|
|
638
632
|
timeline: timeline,
|
|
639
633
|
// The purpose of this method is inserting events in the middle of the
|
|
640
634
|
// timeline, so the events are, by definition, not live (whether or not
|
|
@@ -657,7 +651,7 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
657
651
|
*/
|
|
658
652
|
handleRemoteEcho(localEvent, oldEventId, newEventId) {
|
|
659
653
|
// XXX: why don't we infer newEventId from localEvent?
|
|
660
|
-
|
|
654
|
+
const existingTimeline = this._eventIdToTimeline.get(oldEventId);
|
|
661
655
|
if (existingTimeline) {
|
|
662
656
|
this._eventIdToTimeline.delete(oldEventId);
|
|
663
657
|
this._eventIdToTimeline.set(newEventId, existingTimeline);
|
|
@@ -678,14 +672,14 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
678
672
|
* in this room.
|
|
679
673
|
*/
|
|
680
674
|
removeEvent(eventId) {
|
|
681
|
-
|
|
675
|
+
const timeline = this._eventIdToTimeline.get(eventId);
|
|
682
676
|
if (!timeline) {
|
|
683
677
|
return null;
|
|
684
678
|
}
|
|
685
|
-
|
|
679
|
+
const removed = timeline.removeEvent(eventId);
|
|
686
680
|
if (removed) {
|
|
687
681
|
this._eventIdToTimeline.delete(eventId);
|
|
688
|
-
|
|
682
|
+
const data = {
|
|
689
683
|
timeline: timeline
|
|
690
684
|
};
|
|
691
685
|
this.emit(RoomEvent.Timeline, removed, this.room, undefined, true, data);
|
|
@@ -708,8 +702,8 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
708
702
|
// optimise this case
|
|
709
703
|
return 0;
|
|
710
704
|
}
|
|
711
|
-
|
|
712
|
-
|
|
705
|
+
const timeline1 = this._eventIdToTimeline.get(eventId1);
|
|
706
|
+
const timeline2 = this._eventIdToTimeline.get(eventId2);
|
|
713
707
|
if (timeline1 === undefined) {
|
|
714
708
|
return null;
|
|
715
709
|
}
|
|
@@ -718,11 +712,11 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
718
712
|
}
|
|
719
713
|
if (timeline1 === timeline2) {
|
|
720
714
|
// both events are in the same timeline - figure out their relative indices
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
for (
|
|
725
|
-
|
|
715
|
+
let idx1 = undefined;
|
|
716
|
+
let idx2 = undefined;
|
|
717
|
+
const events = timeline1.getEvents();
|
|
718
|
+
for (let idx = 0; idx < events.length && (idx1 === undefined || idx2 === undefined); idx++) {
|
|
719
|
+
const evId = events[idx].getId();
|
|
726
720
|
if (evId == eventId1) {
|
|
727
721
|
idx1 = idx;
|
|
728
722
|
}
|
|
@@ -730,7 +724,7 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
730
724
|
idx2 = idx;
|
|
731
725
|
}
|
|
732
726
|
}
|
|
733
|
-
|
|
727
|
+
const difference = idx1 - idx2;
|
|
734
728
|
|
|
735
729
|
// Return the sign of difference.
|
|
736
730
|
if (difference < 0) {
|
|
@@ -746,7 +740,7 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
746
740
|
// linkedlist to see which comes first.
|
|
747
741
|
|
|
748
742
|
// first work forwards from timeline1
|
|
749
|
-
|
|
743
|
+
let tl = timeline1;
|
|
750
744
|
while (tl) {
|
|
751
745
|
if (tl === timeline2) {
|
|
752
746
|
// timeline1 is before timeline2
|
|
@@ -784,16 +778,16 @@ export class EventTimelineSet extends TypedEventEmitter {
|
|
|
784
778
|
if (!this.room) {
|
|
785
779
|
throw new Error("Cannot call `EventTimelineSet::canContain without a `room` set. " + "Set the room when creating the EventTimelineSet to call this method.");
|
|
786
780
|
}
|
|
787
|
-
|
|
788
|
-
threadId
|
|
789
|
-
shouldLiveInRoom
|
|
790
|
-
shouldLiveInThread
|
|
781
|
+
const {
|
|
782
|
+
threadId,
|
|
783
|
+
shouldLiveInRoom,
|
|
784
|
+
shouldLiveInThread
|
|
785
|
+
} = this.room.eventShouldLiveIn(event);
|
|
791
786
|
if (this.thread) {
|
|
792
787
|
return this.thread.id === threadId;
|
|
793
788
|
}
|
|
794
789
|
if (!shouldLiveInRoom && !shouldLiveInThread) {
|
|
795
|
-
|
|
796
|
-
logger.warn("EventTimelineSet:canContain event encountered which cannot be added to any timeline roomId=".concat((_this$room2 = this.room) === null || _this$room2 === void 0 ? void 0 : _this$room2.roomId, " eventId=").concat(event.getId(), " threadId=").concat(event.threadRootId));
|
|
790
|
+
logger.warn(`EventTimelineSet:canContain event encountered which cannot be added to any timeline roomId=${this.room?.roomId} eventId=${event.getId()} threadId=${event.threadRootId}`);
|
|
797
791
|
}
|
|
798
792
|
return shouldLiveInRoom;
|
|
799
793
|
}
|