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,7 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
3
|
/*
|
|
6
4
|
Copyright 2021 The Matrix.org Foundation C.I.C.
|
|
7
5
|
|
|
@@ -28,7 +26,7 @@ import { KnownMembership } from "../@types/membership.js";
|
|
|
28
26
|
* The recommended defaults for a tree space's power levels. Note that this
|
|
29
27
|
* is UNSTABLE and subject to breaking changes without notice.
|
|
30
28
|
*/
|
|
31
|
-
export
|
|
29
|
+
export const DEFAULT_TREE_POWER_LEVELS_TEMPLATE = {
|
|
32
30
|
// Owner
|
|
33
31
|
invite: 100,
|
|
34
32
|
kick: 100,
|
|
@@ -57,7 +55,7 @@ export var DEFAULT_TREE_POWER_LEVELS_TEMPLATE = {
|
|
|
57
55
|
* Ease-of-use representation for power levels represented as simple roles.
|
|
58
56
|
* Note that this is UNSTABLE and subject to breaking changes without notice.
|
|
59
57
|
*/
|
|
60
|
-
export
|
|
58
|
+
export let TreePermissions = /*#__PURE__*/function (TreePermissions) {
|
|
61
59
|
TreePermissions["Viewer"] = "viewer";
|
|
62
60
|
// Default
|
|
63
61
|
TreePermissions["Editor"] = "editor";
|
|
@@ -72,9 +70,9 @@ export var TreePermissions = /*#__PURE__*/function (TreePermissions) {
|
|
|
72
70
|
*/
|
|
73
71
|
export class MSC3089TreeSpace {
|
|
74
72
|
constructor(client, roomId) {
|
|
73
|
+
_defineProperty(this, "room", void 0);
|
|
75
74
|
this.client = client;
|
|
76
75
|
this.roomId = roomId;
|
|
77
|
-
_defineProperty(this, "room", void 0);
|
|
78
76
|
this.room = this.client.getRoom(this.roomId);
|
|
79
77
|
if (!this.room) throw new Error("Unknown room");
|
|
80
78
|
}
|
|
@@ -92,12 +90,9 @@ export class MSC3089TreeSpace {
|
|
|
92
90
|
get isTopLevel() {
|
|
93
91
|
// XXX: This is absolutely not how you find out if the space is top level
|
|
94
92
|
// but is safe for a managed usecase like we offer in the SDK.
|
|
95
|
-
|
|
96
|
-
if (!
|
|
97
|
-
return parentEvents.every(e =>
|
|
98
|
-
var _e$getContent;
|
|
99
|
-
return !((_e$getContent = e.getContent()) !== null && _e$getContent !== void 0 && _e$getContent["via"]);
|
|
100
|
-
});
|
|
93
|
+
const parentEvents = this.room.currentState.getStateEvents(EventType.SpaceParent);
|
|
94
|
+
if (!parentEvents?.length) return true;
|
|
95
|
+
return parentEvents.every(e => !e.getContent()?.["via"]);
|
|
101
96
|
}
|
|
102
97
|
|
|
103
98
|
/**
|
|
@@ -105,13 +100,10 @@ export class MSC3089TreeSpace {
|
|
|
105
100
|
* @param name - The new name for the space.
|
|
106
101
|
* @returns Promise which resolves when complete.
|
|
107
102
|
*/
|
|
108
|
-
setName(name) {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
name
|
|
113
|
-
}, "");
|
|
114
|
-
})();
|
|
103
|
+
async setName(name) {
|
|
104
|
+
await this.client.sendStateEvent(this.roomId, EventType.RoomName, {
|
|
105
|
+
name
|
|
106
|
+
}, "");
|
|
115
107
|
}
|
|
116
108
|
|
|
117
109
|
/**
|
|
@@ -122,29 +114,21 @@ export class MSC3089TreeSpace {
|
|
|
122
114
|
* directories/subspaces too, recursively.
|
|
123
115
|
* @returns Promise which resolves when complete.
|
|
124
116
|
*/
|
|
125
|
-
invite(userId) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
if (andSubspaces) {
|
|
132
|
-
promises.push(..._this2.getDirectories().map(d => d.invite(userId, andSubspaces)));
|
|
133
|
-
}
|
|
134
|
-
yield Promise.all(promises);
|
|
135
|
-
})();
|
|
117
|
+
async invite(userId, andSubspaces = true) {
|
|
118
|
+
const promises = [this.retryInvite(userId)];
|
|
119
|
+
if (andSubspaces) {
|
|
120
|
+
promises.push(...this.getDirectories().map(d => d.invite(userId, andSubspaces)));
|
|
121
|
+
}
|
|
122
|
+
await Promise.all(promises);
|
|
136
123
|
}
|
|
137
|
-
retryInvite(userId) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
return true;
|
|
146
|
-
});
|
|
147
|
-
})();
|
|
124
|
+
async retryInvite(userId) {
|
|
125
|
+
await simpleRetryOperation(() => this.client.invite(this.roomId, userId), e => {
|
|
126
|
+
// We don't want to retry permission errors forever...
|
|
127
|
+
if (e instanceof MatrixError && e.errcode === "M_FORBIDDEN") {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
return true;
|
|
131
|
+
});
|
|
148
132
|
}
|
|
149
133
|
|
|
150
134
|
/**
|
|
@@ -155,33 +139,29 @@ export class MSC3089TreeSpace {
|
|
|
155
139
|
* @param role - The role to assign.
|
|
156
140
|
* @returns Promise which resolves when complete.
|
|
157
141
|
*/
|
|
158
|
-
setPermissions(userId, role) {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
}
|
|
182
|
-
pls["users"] = users;
|
|
183
|
-
yield _this4.client.sendStateEvent(_this4.roomId, EventType.RoomPowerLevels, pls, "");
|
|
184
|
-
})();
|
|
142
|
+
async setPermissions(userId, role) {
|
|
143
|
+
const currentPls = this.room.currentState.getStateEvents(EventType.RoomPowerLevels, "");
|
|
144
|
+
if (Array.isArray(currentPls)) throw new Error("Unexpected return type for power levels");
|
|
145
|
+
const pls = currentPls?.getContent() || {};
|
|
146
|
+
const viewLevel = pls["users_default"] || 0;
|
|
147
|
+
const editLevel = pls["events_default"] || 50;
|
|
148
|
+
const adminLevel = pls["events"]?.[EventType.RoomPowerLevels] || 100;
|
|
149
|
+
const users = pls["users"] || {};
|
|
150
|
+
switch (role) {
|
|
151
|
+
case TreePermissions.Viewer:
|
|
152
|
+
users[userId] = viewLevel;
|
|
153
|
+
break;
|
|
154
|
+
case TreePermissions.Editor:
|
|
155
|
+
users[userId] = editLevel;
|
|
156
|
+
break;
|
|
157
|
+
case TreePermissions.Owner:
|
|
158
|
+
users[userId] = adminLevel;
|
|
159
|
+
break;
|
|
160
|
+
default:
|
|
161
|
+
throw new Error("Invalid role: " + role);
|
|
162
|
+
}
|
|
163
|
+
pls["users"] = users;
|
|
164
|
+
await this.client.sendStateEvent(this.roomId, EventType.RoomPowerLevels, pls, "");
|
|
185
165
|
}
|
|
186
166
|
|
|
187
167
|
/**
|
|
@@ -192,14 +172,13 @@ export class MSC3089TreeSpace {
|
|
|
192
172
|
* @returns The permissions for the user, defaulting to Viewer.
|
|
193
173
|
*/
|
|
194
174
|
getPermissions(userId) {
|
|
195
|
-
|
|
196
|
-
var currentPls = this.room.currentState.getStateEvents(EventType.RoomPowerLevels, "");
|
|
175
|
+
const currentPls = this.room.currentState.getStateEvents(EventType.RoomPowerLevels, "");
|
|
197
176
|
if (Array.isArray(currentPls)) throw new Error("Unexpected return type for power levels");
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
177
|
+
const pls = currentPls?.getContent() || {};
|
|
178
|
+
const viewLevel = pls["users_default"] || 0;
|
|
179
|
+
const editLevel = pls["events_default"] || 50;
|
|
180
|
+
const adminLevel = pls["events"]?.[EventType.RoomPowerLevels] || 100;
|
|
181
|
+
const userLevel = pls["users"]?.[userId] || viewLevel;
|
|
203
182
|
if (userLevel >= adminLevel) return TreePermissions.Owner;
|
|
204
183
|
if (userLevel >= editLevel) return TreePermissions.Editor;
|
|
205
184
|
return TreePermissions.Viewer;
|
|
@@ -210,18 +189,15 @@ export class MSC3089TreeSpace {
|
|
|
210
189
|
* @param name - The name for the directory.
|
|
211
190
|
* @returns Promise which resolves to the created directory.
|
|
212
191
|
*/
|
|
213
|
-
createDirectory(name) {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
}, _this5.roomId);
|
|
223
|
-
return directory;
|
|
224
|
-
})();
|
|
192
|
+
async createDirectory(name) {
|
|
193
|
+
const directory = await this.client.unstableCreateFileTree(name);
|
|
194
|
+
await this.client.sendStateEvent(this.roomId, EventType.SpaceChild, {
|
|
195
|
+
via: [this.client.getDomain()]
|
|
196
|
+
}, directory.roomId);
|
|
197
|
+
await this.client.sendStateEvent(directory.roomId, EventType.SpaceParent, {
|
|
198
|
+
via: [this.client.getDomain()]
|
|
199
|
+
}, this.roomId);
|
|
200
|
+
return directory;
|
|
225
201
|
}
|
|
226
202
|
|
|
227
203
|
/**
|
|
@@ -229,13 +205,13 @@ export class MSC3089TreeSpace {
|
|
|
229
205
|
* @returns The tree spaces (directories). May be empty, but not null.
|
|
230
206
|
*/
|
|
231
207
|
getDirectories() {
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
for (
|
|
208
|
+
const trees = [];
|
|
209
|
+
const children = this.room.currentState.getStateEvents(EventType.SpaceChild);
|
|
210
|
+
for (const child of children) {
|
|
235
211
|
try {
|
|
236
|
-
|
|
212
|
+
const stateKey = child.getStateKey();
|
|
237
213
|
if (stateKey) {
|
|
238
|
-
|
|
214
|
+
const tree = this.client.unstableGetFileTreeSpace(stateKey);
|
|
239
215
|
if (tree) trees.push(tree);
|
|
240
216
|
}
|
|
241
217
|
} catch (e) {
|
|
@@ -259,30 +235,27 @@ export class MSC3089TreeSpace {
|
|
|
259
235
|
* Deletes the tree, kicking all members and deleting **all subdirectories**.
|
|
260
236
|
* @returns Promise which resolves when complete.
|
|
261
237
|
*/
|
|
262
|
-
delete() {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
if (
|
|
274
|
-
|
|
275
|
-
if (!stateKey) {
|
|
276
|
-
throw new Error("State key not found for branch");
|
|
277
|
-
}
|
|
278
|
-
yield _this6.client.kick(_this6.roomId, stateKey, "Room deleted");
|
|
238
|
+
async delete() {
|
|
239
|
+
const subdirectories = this.getDirectories();
|
|
240
|
+
for (const dir of subdirectories) {
|
|
241
|
+
await dir.delete();
|
|
242
|
+
}
|
|
243
|
+
const kickMemberships = [KnownMembership.Invite, KnownMembership.Knock, KnownMembership.Join];
|
|
244
|
+
const members = this.room.currentState.getStateEvents(EventType.RoomMember);
|
|
245
|
+
for (const member of members) {
|
|
246
|
+
const isNotUs = member.getStateKey() !== this.client.getUserId();
|
|
247
|
+
if (isNotUs && kickMemberships.includes(member.getContent().membership)) {
|
|
248
|
+
const stateKey = member.getStateKey();
|
|
249
|
+
if (!stateKey) {
|
|
250
|
+
throw new Error("State key not found for branch");
|
|
279
251
|
}
|
|
252
|
+
await this.client.kick(this.roomId, stateKey, "Room deleted");
|
|
280
253
|
}
|
|
281
|
-
|
|
282
|
-
|
|
254
|
+
}
|
|
255
|
+
await this.client.leave(this.roomId);
|
|
283
256
|
}
|
|
284
257
|
getOrderedChildren(children) {
|
|
285
|
-
|
|
258
|
+
const ordered = children.map(c => ({
|
|
286
259
|
roomId: c.getStateKey(),
|
|
287
260
|
order: c.getContent()["order"]
|
|
288
261
|
})).filter(c => c.roomId);
|
|
@@ -292,15 +265,14 @@ export class MSC3089TreeSpace {
|
|
|
292
265
|
} else if (!a.order && b.order) {
|
|
293
266
|
return 1;
|
|
294
267
|
} else if (!a.order && !b.order) {
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
var roomB = this.client.getRoom(b.roomId);
|
|
268
|
+
const roomA = this.client.getRoom(a.roomId);
|
|
269
|
+
const roomB = this.client.getRoom(b.roomId);
|
|
298
270
|
if (!roomA || !roomB) {
|
|
299
271
|
// just don't bother trying to do more partial sorting
|
|
300
272
|
return lexicographicCompare(a.roomId, b.roomId);
|
|
301
273
|
}
|
|
302
|
-
|
|
303
|
-
|
|
274
|
+
const createTsA = roomA.currentState.getStateEvents(EventType.RoomCreate, "")?.getTs() ?? 0;
|
|
275
|
+
const createTsB = roomB.currentState.getStateEvents(EventType.RoomCreate, "")?.getTs() ?? 0;
|
|
304
276
|
if (createTsA === createTsB) {
|
|
305
277
|
return lexicographicCompare(a.roomId, b.roomId);
|
|
306
278
|
}
|
|
@@ -313,15 +285,15 @@ export class MSC3089TreeSpace {
|
|
|
313
285
|
return ordered;
|
|
314
286
|
}
|
|
315
287
|
getParentRoom() {
|
|
316
|
-
|
|
317
|
-
|
|
288
|
+
const parents = this.room.currentState.getStateEvents(EventType.SpaceParent);
|
|
289
|
+
const parent = parents[0]; // XXX: Wild assumption
|
|
318
290
|
if (!parent) throw new Error("Expected to have a parent in a non-top level space");
|
|
319
291
|
|
|
320
292
|
// XXX: We are assuming the parent is a valid tree space.
|
|
321
293
|
// We probably don't need to validate the parent room state for this usecase though.
|
|
322
|
-
|
|
294
|
+
const stateKey = parent.getStateKey();
|
|
323
295
|
if (!stateKey) throw new Error("No state key found for parent");
|
|
324
|
-
|
|
296
|
+
const parentRoom = this.client.getRoom(stateKey);
|
|
325
297
|
if (!parentRoom) throw new Error("Unable to locate room for parent");
|
|
326
298
|
return parentRoom;
|
|
327
299
|
}
|
|
@@ -333,9 +305,9 @@ export class MSC3089TreeSpace {
|
|
|
333
305
|
*/
|
|
334
306
|
getOrder() {
|
|
335
307
|
if (this.isTopLevel) return -1;
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
308
|
+
const parentRoom = this.getParentRoom();
|
|
309
|
+
const children = parentRoom.currentState.getStateEvents(EventType.SpaceChild);
|
|
310
|
+
const ordered = this.getOrderedChildren(children);
|
|
339
311
|
return ordered.findIndex(c => c.roomId === this.roomId);
|
|
340
312
|
}
|
|
341
313
|
|
|
@@ -347,105 +319,100 @@ export class MSC3089TreeSpace {
|
|
|
347
319
|
* @returns Promise which resolves when complete.
|
|
348
320
|
* @throws Throws if this is a top level space.
|
|
349
321
|
*/
|
|
350
|
-
setOrder(index) {
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
322
|
+
async setOrder(index) {
|
|
323
|
+
if (this.isTopLevel) throw new Error("Cannot set order of top level spaces currently");
|
|
324
|
+
const parentRoom = this.getParentRoom();
|
|
325
|
+
const children = parentRoom.currentState.getStateEvents(EventType.SpaceChild);
|
|
326
|
+
const ordered = this.getOrderedChildren(children);
|
|
327
|
+
index = Math.max(Math.min(index, ordered.length - 1), 0);
|
|
328
|
+
const currentIndex = this.getOrder();
|
|
329
|
+
const movingUp = currentIndex < index;
|
|
330
|
+
if (movingUp && index === ordered.length - 1) {
|
|
331
|
+
index--;
|
|
332
|
+
} else if (!movingUp && index === 0) {
|
|
333
|
+
index++;
|
|
334
|
+
}
|
|
335
|
+
const prev = ordered[movingUp ? index : index - 1];
|
|
336
|
+
const next = ordered[movingUp ? index + 1 : index];
|
|
337
|
+
let newOrder = DEFAULT_ALPHABET[0];
|
|
338
|
+
let ensureBeforeIsSane = false;
|
|
339
|
+
if (!prev) {
|
|
340
|
+
// Move to front
|
|
341
|
+
if (next?.order) {
|
|
342
|
+
newOrder = prevString(next.order);
|
|
365
343
|
}
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
newOrder = nextString(
|
|
344
|
+
} else if (index === ordered.length - 1) {
|
|
345
|
+
// Move to back
|
|
346
|
+
if (next?.order) {
|
|
347
|
+
newOrder = nextString(next.order);
|
|
348
|
+
}
|
|
349
|
+
} else {
|
|
350
|
+
// Move somewhere in the middle
|
|
351
|
+
const startOrder = prev?.order;
|
|
352
|
+
const endOrder = next?.order;
|
|
353
|
+
if (startOrder && endOrder) {
|
|
354
|
+
if (startOrder === endOrder) {
|
|
355
|
+
// Error case: just move +1 to break out of awful math
|
|
356
|
+
newOrder = nextString(startOrder);
|
|
357
|
+
} else {
|
|
358
|
+
newOrder = averageBetweenStrings(startOrder, endOrder);
|
|
379
359
|
}
|
|
380
360
|
} else {
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
if (
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
newOrder = nextString(startOrder);
|
|
388
|
-
} else {
|
|
389
|
-
newOrder = averageBetweenStrings(startOrder, endOrder);
|
|
390
|
-
}
|
|
361
|
+
if (startOrder) {
|
|
362
|
+
// We're at the end (endOrder is null, so no explicit order)
|
|
363
|
+
newOrder = nextString(startOrder);
|
|
364
|
+
} else if (endOrder) {
|
|
365
|
+
// We're at the start (startOrder is null, so nothing before us)
|
|
366
|
+
newOrder = prevString(endOrder);
|
|
391
367
|
} else {
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
newOrder = prevString(endOrder);
|
|
398
|
-
} else {
|
|
399
|
-
// Both points are unknown. We're likely in a range where all the children
|
|
400
|
-
// don't have particular order values, so we may need to update them too.
|
|
401
|
-
// The other possibility is there's only us as a child, but we should have
|
|
402
|
-
// shown up in the other states.
|
|
403
|
-
ensureBeforeIsSane = true;
|
|
404
|
-
}
|
|
368
|
+
// Both points are unknown. We're likely in a range where all the children
|
|
369
|
+
// don't have particular order values, so we may need to update them too.
|
|
370
|
+
// The other possibility is there's only us as a child, but we should have
|
|
371
|
+
// shown up in the other states.
|
|
372
|
+
ensureBeforeIsSane = true;
|
|
405
373
|
}
|
|
406
374
|
}
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
if (!target.order) {
|
|
418
|
-
var _currentChild$getCont;
|
|
419
|
-
// XXX: We should be creating gaps to avoid conflicts
|
|
420
|
-
lastOrder = lastOrder ? nextString(lastOrder) : DEFAULT_ALPHABET[0];
|
|
421
|
-
var _currentChild = parentRoom.currentState.getStateEvents(EventType.SpaceChild, target.roomId);
|
|
422
|
-
var _content = (_currentChild$getCont = _currentChild === null || _currentChild === void 0 ? void 0 : _currentChild.getContent()) !== null && _currentChild$getCont !== void 0 ? _currentChild$getCont : {
|
|
423
|
-
via: [_this7.client.getDomain()]
|
|
424
|
-
};
|
|
425
|
-
yield _this7.client.sendStateEvent(parentRoom.roomId, EventType.SpaceChild, _objectSpread(_objectSpread({}, _content), {}, {
|
|
426
|
-
order: lastOrder
|
|
427
|
-
}), target.roomId);
|
|
428
|
-
} else {
|
|
429
|
-
lastOrder = target.order;
|
|
430
|
-
}
|
|
375
|
+
}
|
|
376
|
+
if (ensureBeforeIsSane) {
|
|
377
|
+
// We were asked by the order algorithm to prepare the moving space for a landing
|
|
378
|
+
// in the undefined order part of the order array, which means we need to update the
|
|
379
|
+
// spaces that come before it with a stable order value.
|
|
380
|
+
let lastOrder;
|
|
381
|
+
for (let i = 0; i <= index; i++) {
|
|
382
|
+
const target = ordered[i];
|
|
383
|
+
if (i === 0) {
|
|
384
|
+
lastOrder = target.order;
|
|
431
385
|
}
|
|
432
|
-
if (
|
|
433
|
-
|
|
386
|
+
if (!target.order) {
|
|
387
|
+
// XXX: We should be creating gaps to avoid conflicts
|
|
388
|
+
lastOrder = lastOrder ? nextString(lastOrder) : DEFAULT_ALPHABET[0];
|
|
389
|
+
const currentChild = parentRoom.currentState.getStateEvents(EventType.SpaceChild, target.roomId);
|
|
390
|
+
const content = currentChild?.getContent() ?? {
|
|
391
|
+
via: [this.client.getDomain()]
|
|
392
|
+
};
|
|
393
|
+
await this.client.sendStateEvent(parentRoom.roomId, EventType.SpaceChild, _objectSpread(_objectSpread({}, content), {}, {
|
|
394
|
+
order: lastOrder
|
|
395
|
+
}), target.roomId);
|
|
396
|
+
} else {
|
|
397
|
+
lastOrder = target.order;
|
|
434
398
|
}
|
|
435
399
|
}
|
|
400
|
+
if (lastOrder) {
|
|
401
|
+
newOrder = nextString(lastOrder);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
436
404
|
|
|
437
|
-
|
|
405
|
+
// TODO: Deal with order conflicts by reordering
|
|
438
406
|
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
})();
|
|
407
|
+
// Now we can finally update our own order state
|
|
408
|
+
const currentChild = parentRoom.currentState.getStateEvents(EventType.SpaceChild, this.roomId);
|
|
409
|
+
const content = currentChild?.getContent() ?? {
|
|
410
|
+
via: [this.client.getDomain()]
|
|
411
|
+
};
|
|
412
|
+
await this.client.sendStateEvent(parentRoom.roomId, EventType.SpaceChild, _objectSpread(_objectSpread({}, content), {}, {
|
|
413
|
+
// TODO: Safely constrain to 50 character limit required by spaces.
|
|
414
|
+
order: newOrder
|
|
415
|
+
}), this.roomId);
|
|
449
416
|
}
|
|
450
417
|
|
|
451
418
|
/**
|
|
@@ -457,36 +424,34 @@ export class MSC3089TreeSpace {
|
|
|
457
424
|
* @param additionalContent - Optional event content fields to include in the message.
|
|
458
425
|
* @returns Promise which resolves to the file event's sent response.
|
|
459
426
|
*/
|
|
460
|
-
createFile(name, encryptedContents, info, additionalContent) {
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
return res;
|
|
489
|
-
})();
|
|
427
|
+
async createFile(name, encryptedContents, info, additionalContent) {
|
|
428
|
+
const {
|
|
429
|
+
content_uri: mxc
|
|
430
|
+
} = await this.client.uploadContent(encryptedContents, {
|
|
431
|
+
includeFilename: false
|
|
432
|
+
});
|
|
433
|
+
info.url = mxc;
|
|
434
|
+
const fileContent = {
|
|
435
|
+
msgtype: MsgType.File,
|
|
436
|
+
body: name,
|
|
437
|
+
url: mxc,
|
|
438
|
+
file: info
|
|
439
|
+
};
|
|
440
|
+
additionalContent = additionalContent ?? {};
|
|
441
|
+
if (additionalContent["m.new_content"]) {
|
|
442
|
+
// We do the right thing according to the spec, but due to how relations are
|
|
443
|
+
// handled we also end up duplicating this information to the regular `content`
|
|
444
|
+
// as well.
|
|
445
|
+
additionalContent["m.new_content"] = fileContent;
|
|
446
|
+
}
|
|
447
|
+
const res = await this.client.sendMessage(this.roomId, _objectSpread(_objectSpread(_objectSpread({}, additionalContent), fileContent), {}, {
|
|
448
|
+
[UNSTABLE_MSC3089_LEAF.name]: {}
|
|
449
|
+
}));
|
|
450
|
+
await this.client.sendStateEvent(this.roomId, UNSTABLE_MSC3089_BRANCH.name, {
|
|
451
|
+
active: true,
|
|
452
|
+
name: name
|
|
453
|
+
}, res["event_id"]);
|
|
454
|
+
return res;
|
|
490
455
|
}
|
|
491
456
|
|
|
492
457
|
/**
|
|
@@ -495,7 +460,7 @@ export class MSC3089TreeSpace {
|
|
|
495
460
|
* @returns The file, or null if not found.
|
|
496
461
|
*/
|
|
497
462
|
getFile(fileEventId) {
|
|
498
|
-
|
|
463
|
+
const branch = this.room.currentState.getStateEvents(UNSTABLE_MSC3089_BRANCH.name, fileEventId);
|
|
499
464
|
return branch ? new MSC3089Branch(this.client, branch, this) : null;
|
|
500
465
|
}
|
|
501
466
|
|
|
@@ -512,8 +477,7 @@ export class MSC3089TreeSpace {
|
|
|
512
477
|
* @returns The known files. May be empty, but not null.
|
|
513
478
|
*/
|
|
514
479
|
listAllFiles() {
|
|
515
|
-
|
|
516
|
-
var branches = (_this$room$currentSta = this.room.currentState.getStateEvents(UNSTABLE_MSC3089_BRANCH.name)) !== null && _this$room$currentSta !== void 0 ? _this$room$currentSta : [];
|
|
480
|
+
const branches = this.room.currentState.getStateEvents(UNSTABLE_MSC3089_BRANCH.name) ?? [];
|
|
517
481
|
return branches.map(e => new MSC3089Branch(this.client, e, this));
|
|
518
482
|
}
|
|
519
483
|
}
|