@unwanted/matrix-sdk-mini 34.12.0 → 34.13.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/git-revision.txt +1 -1
- package/lib/@types/event.d.ts +0 -19
- package/lib/@types/event.d.ts.map +1 -1
- package/lib/@types/event.js.map +1 -1
- package/lib/@types/global.d.js +0 -2
- package/lib/@types/global.d.js.map +1 -1
- package/lib/autodiscovery.d.ts +1 -1
- package/lib/autodiscovery.d.ts.map +1 -1
- package/lib/autodiscovery.js.map +1 -1
- package/lib/base64.d.ts +3 -6
- package/lib/base64.d.ts.map +1 -1
- package/lib/base64.js +43 -36
- package/lib/base64.js.map +1 -1
- package/lib/browser-index.d.ts.map +1 -1
- package/lib/browser-index.js +0 -11
- package/lib/browser-index.js.map +1 -1
- package/lib/client.d.ts +2 -1298
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +348 -2967
- package/lib/client.js.map +1 -1
- package/lib/digest.d.ts +2 -2
- package/lib/digest.d.ts.map +1 -1
- package/lib/digest.js +2 -2
- package/lib/digest.js.map +1 -1
- package/lib/embedded.d.ts +0 -22
- package/lib/embedded.d.ts.map +1 -1
- package/lib/embedded.js +58 -168
- package/lib/embedded.js.map +1 -1
- package/lib/event-mapper.d.ts.map +1 -1
- package/lib/event-mapper.js +0 -4
- package/lib/event-mapper.js.map +1 -1
- package/lib/matrix.d.ts +0 -25
- package/lib/matrix.d.ts.map +1 -1
- package/lib/matrix.js +1 -30
- package/lib/matrix.js.map +1 -1
- package/lib/models/MSC3089Branch.d.ts.map +1 -1
- package/lib/models/MSC3089Branch.js +0 -3
- package/lib/models/MSC3089Branch.js.map +1 -1
- package/lib/models/event-timeline-set.d.ts +6 -10
- package/lib/models/event-timeline-set.d.ts.map +1 -1
- package/lib/models/event-timeline-set.js +28 -36
- package/lib/models/event-timeline-set.js.map +1 -1
- package/lib/models/event-timeline.d.ts +7 -2
- package/lib/models/event-timeline.d.ts.map +1 -1
- package/lib/models/event-timeline.js +8 -9
- package/lib/models/event-timeline.js.map +1 -1
- package/lib/models/event.d.ts +1 -95
- package/lib/models/event.d.ts.map +1 -1
- package/lib/models/event.js +11 -281
- package/lib/models/event.js.map +1 -1
- package/lib/models/poll.d.ts.map +1 -1
- package/lib/models/poll.js +1 -5
- package/lib/models/poll.js.map +1 -1
- package/lib/models/relations-container.d.ts.map +1 -1
- package/lib/models/relations-container.js +1 -7
- package/lib/models/relations-container.js.map +1 -1
- package/lib/models/relations.d.ts +0 -1
- package/lib/models/relations.d.ts.map +1 -1
- package/lib/models/relations.js +0 -8
- package/lib/models/relations.js.map +1 -1
- package/lib/models/room-state.d.ts +2 -13
- package/lib/models/room-state.d.ts.map +1 -1
- package/lib/models/room-state.js +12 -56
- package/lib/models/room-state.js.map +1 -1
- package/lib/models/room.d.ts +2 -20
- package/lib/models/room.d.ts.map +1 -1
- package/lib/models/room.js +121 -162
- package/lib/models/room.js.map +1 -1
- package/lib/models/thread.d.ts.map +1 -1
- package/lib/models/thread.js +5 -4
- package/lib/models/thread.js.map +1 -1
- package/lib/sliding-sync-sdk.d.ts +3 -4
- package/lib/sliding-sync-sdk.d.ts.map +1 -1
- package/lib/sliding-sync-sdk.js +55 -102
- package/lib/sliding-sync-sdk.js.map +1 -1
- package/lib/sliding-sync.js +9 -6
- package/lib/sliding-sync.js.map +1 -1
- package/lib/store/indexeddb.d.ts +1 -1
- package/lib/store/indexeddb.d.ts.map +1 -1
- package/lib/store/indexeddb.js.map +1 -1
- package/lib/sync-accumulator.d.ts +6 -4
- package/lib/sync-accumulator.d.ts.map +1 -1
- package/lib/sync-accumulator.js +23 -12
- package/lib/sync-accumulator.js.map +1 -1
- package/lib/sync.d.ts +10 -13
- package/lib/sync.d.ts.map +1 -1
- package/lib/sync.js +94 -115
- package/lib/sync.js.map +1 -1
- package/lib/testing.d.ts +0 -48
- package/lib/testing.d.ts.map +1 -1
- package/lib/testing.js +0 -105
- package/lib/testing.js.map +1 -1
- package/lib/types.d.ts +0 -1
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js.map +1 -1
- package/package.json +10 -11
- package/src/@types/event.ts +2 -36
- package/src/@types/global.d.ts +21 -4
- package/src/autodiscovery.ts +1 -1
- package/src/base64.ts +38 -40
- package/src/browser-index.ts +0 -11
- package/src/client.ts +68 -3087
- package/src/digest.ts +3 -3
- package/src/embedded.ts +38 -134
- package/src/event-mapper.ts +0 -4
- package/src/matrix.ts +0 -41
- package/src/models/MSC3089Branch.ts +0 -3
- package/src/models/event-timeline-set.ts +17 -38
- package/src/models/event-timeline.ts +10 -5
- package/src/models/event.ts +8 -295
- package/src/models/poll.ts +0 -6
- package/src/models/relations-container.ts +1 -8
- package/src/models/relations.ts +0 -8
- package/src/models/room-state.ts +4 -37
- package/src/models/room.ts +18 -68
- package/src/models/thread.ts +4 -3
- package/src/sliding-sync-sdk.ts +10 -83
- package/src/sliding-sync.ts +6 -6
- package/src/store/indexeddb.ts +1 -1
- package/src/sync-accumulator.ts +33 -16
- package/src/sync.ts +112 -143
- package/src/testing.ts +0 -108
- package/src/types.ts +0 -1
- package/CHANGELOG.md +0 -5910
- package/lib/@types/AESEncryptedSecretStoragePayload.d.ts +0 -14
- package/lib/@types/AESEncryptedSecretStoragePayload.d.ts.map +0 -1
- package/lib/@types/AESEncryptedSecretStoragePayload.js +0 -1
- package/lib/@types/AESEncryptedSecretStoragePayload.js.map +0 -1
- package/lib/@types/crypto.d.ts +0 -47
- package/lib/@types/crypto.d.ts.map +0 -1
- package/lib/@types/crypto.js +0 -1
- package/lib/@types/crypto.js.map +0 -1
- package/lib/@types/matrix-sdk-crypto-wasm.d.js +0 -1
- package/lib/@types/matrix-sdk-crypto-wasm.d.js.map +0 -1
- package/lib/common-crypto/CryptoBackend.d.ts +0 -240
- package/lib/common-crypto/CryptoBackend.d.ts.map +0 -1
- package/lib/common-crypto/CryptoBackend.js +0 -73
- package/lib/common-crypto/CryptoBackend.js.map +0 -1
- package/lib/common-crypto/key-passphrase.d.ts +0 -14
- package/lib/common-crypto/key-passphrase.d.ts.map +0 -1
- package/lib/common-crypto/key-passphrase.js +0 -33
- package/lib/common-crypto/key-passphrase.js.map +0 -1
- package/lib/crypto/CrossSigning.d.ts +0 -184
- package/lib/crypto/CrossSigning.d.ts.map +0 -1
- package/lib/crypto/CrossSigning.js +0 -718
- package/lib/crypto/CrossSigning.js.map +0 -1
- package/lib/crypto/DeviceList.d.ts +0 -216
- package/lib/crypto/DeviceList.d.ts.map +0 -1
- package/lib/crypto/DeviceList.js +0 -892
- package/lib/crypto/DeviceList.js.map +0 -1
- package/lib/crypto/EncryptionSetup.d.ts +0 -152
- package/lib/crypto/EncryptionSetup.d.ts.map +0 -1
- package/lib/crypto/EncryptionSetup.js +0 -356
- package/lib/crypto/EncryptionSetup.js.map +0 -1
- package/lib/crypto/OlmDevice.d.ts +0 -457
- package/lib/crypto/OlmDevice.d.ts.map +0 -1
- package/lib/crypto/OlmDevice.js +0 -1241
- package/lib/crypto/OlmDevice.js.map +0 -1
- package/lib/crypto/OutgoingRoomKeyRequestManager.d.ts +0 -109
- package/lib/crypto/OutgoingRoomKeyRequestManager.d.ts.map +0 -1
- package/lib/crypto/OutgoingRoomKeyRequestManager.js +0 -415
- package/lib/crypto/OutgoingRoomKeyRequestManager.js.map +0 -1
- package/lib/crypto/RoomList.d.ts +0 -26
- package/lib/crypto/RoomList.d.ts.map +0 -1
- package/lib/crypto/RoomList.js +0 -71
- package/lib/crypto/RoomList.js.map +0 -1
- package/lib/crypto/SecretSharing.d.ts +0 -24
- package/lib/crypto/SecretSharing.d.ts.map +0 -1
- package/lib/crypto/SecretSharing.js +0 -194
- package/lib/crypto/SecretSharing.js.map +0 -1
- package/lib/crypto/SecretStorage.d.ts +0 -55
- package/lib/crypto/SecretStorage.d.ts.map +0 -1
- package/lib/crypto/SecretStorage.js +0 -118
- package/lib/crypto/SecretStorage.js.map +0 -1
- package/lib/crypto/aes.d.ts +0 -6
- package/lib/crypto/aes.d.ts.map +0 -1
- package/lib/crypto/aes.js +0 -24
- package/lib/crypto/aes.js.map +0 -1
- package/lib/crypto/algorithms/base.d.ts +0 -156
- package/lib/crypto/algorithms/base.d.ts.map +0 -1
- package/lib/crypto/algorithms/base.js +0 -187
- package/lib/crypto/algorithms/base.js.map +0 -1
- package/lib/crypto/algorithms/index.d.ts +0 -4
- package/lib/crypto/algorithms/index.d.ts.map +0 -1
- package/lib/crypto/algorithms/index.js +0 -20
- package/lib/crypto/algorithms/index.js.map +0 -1
- package/lib/crypto/algorithms/megolm.d.ts +0 -385
- package/lib/crypto/algorithms/megolm.d.ts.map +0 -1
- package/lib/crypto/algorithms/megolm.js +0 -1822
- package/lib/crypto/algorithms/megolm.js.map +0 -1
- package/lib/crypto/algorithms/olm.d.ts +0 -5
- package/lib/crypto/algorithms/olm.d.ts.map +0 -1
- package/lib/crypto/algorithms/olm.js +0 -299
- package/lib/crypto/algorithms/olm.js.map +0 -1
- package/lib/crypto/api.d.ts +0 -32
- package/lib/crypto/api.d.ts.map +0 -1
- package/lib/crypto/api.js +0 -22
- package/lib/crypto/api.js.map +0 -1
- package/lib/crypto/backup.d.ts +0 -227
- package/lib/crypto/backup.d.ts.map +0 -1
- package/lib/crypto/backup.js +0 -824
- package/lib/crypto/backup.js.map +0 -1
- package/lib/crypto/crypto.d.ts +0 -3
- package/lib/crypto/crypto.d.ts.map +0 -1
- package/lib/crypto/crypto.js +0 -19
- package/lib/crypto/crypto.js.map +0 -1
- package/lib/crypto/dehydration.d.ts +0 -34
- package/lib/crypto/dehydration.d.ts.map +0 -1
- package/lib/crypto/dehydration.js +0 -252
- package/lib/crypto/dehydration.js.map +0 -1
- package/lib/crypto/device-converter.d.ts +0 -9
- package/lib/crypto/device-converter.d.ts.map +0 -1
- package/lib/crypto/device-converter.js +0 -42
- package/lib/crypto/device-converter.js.map +0 -1
- package/lib/crypto/deviceinfo.d.ts +0 -99
- package/lib/crypto/deviceinfo.d.ts.map +0 -1
- package/lib/crypto/deviceinfo.js +0 -148
- package/lib/crypto/deviceinfo.js.map +0 -1
- package/lib/crypto/index.d.ts +0 -1210
- package/lib/crypto/index.d.ts.map +0 -1
- package/lib/crypto/index.js +0 -4101
- package/lib/crypto/index.js.map +0 -1
- package/lib/crypto/key_passphrase.d.ts +0 -14
- package/lib/crypto/key_passphrase.d.ts.map +0 -1
- package/lib/crypto/key_passphrase.js +0 -44
- package/lib/crypto/key_passphrase.js.map +0 -1
- package/lib/crypto/keybackup.d.ts +0 -18
- package/lib/crypto/keybackup.d.ts.map +0 -1
- package/lib/crypto/keybackup.js +0 -1
- package/lib/crypto/keybackup.js.map +0 -1
- package/lib/crypto/olmlib.d.ts +0 -129
- package/lib/crypto/olmlib.d.ts.map +0 -1
- package/lib/crypto/olmlib.js +0 -492
- package/lib/crypto/olmlib.js.map +0 -1
- package/lib/crypto/recoverykey.d.ts +0 -2
- package/lib/crypto/recoverykey.d.ts.map +0 -1
- package/lib/crypto/recoverykey.js +0 -19
- package/lib/crypto/recoverykey.js.map +0 -1
- package/lib/crypto/store/base.d.ts +0 -252
- package/lib/crypto/store/base.d.ts.map +0 -1
- package/lib/crypto/store/base.js +0 -64
- package/lib/crypto/store/base.js.map +0 -1
- package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts +0 -187
- package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts.map +0 -1
- package/lib/crypto/store/indexeddb-crypto-store-backend.js +0 -1145
- package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +0 -1
- package/lib/crypto/store/indexeddb-crypto-store.d.ts +0 -432
- package/lib/crypto/store/indexeddb-crypto-store.d.ts.map +0 -1
- package/lib/crypto/store/indexeddb-crypto-store.js +0 -728
- package/lib/crypto/store/indexeddb-crypto-store.js.map +0 -1
- package/lib/crypto/store/localStorage-crypto-store.d.ts +0 -119
- package/lib/crypto/store/localStorage-crypto-store.d.ts.map +0 -1
- package/lib/crypto/store/localStorage-crypto-store.js +0 -531
- package/lib/crypto/store/localStorage-crypto-store.js.map +0 -1
- package/lib/crypto/store/memory-crypto-store.d.ts +0 -215
- package/lib/crypto/store/memory-crypto-store.d.ts.map +0 -1
- package/lib/crypto/store/memory-crypto-store.js +0 -622
- package/lib/crypto/store/memory-crypto-store.js.map +0 -1
- package/lib/crypto/verification/Base.d.ts +0 -105
- package/lib/crypto/verification/Base.d.ts.map +0 -1
- package/lib/crypto/verification/Base.js +0 -372
- package/lib/crypto/verification/Base.js.map +0 -1
- package/lib/crypto/verification/Error.d.ts +0 -35
- package/lib/crypto/verification/Error.d.ts.map +0 -1
- package/lib/crypto/verification/Error.js +0 -86
- package/lib/crypto/verification/Error.js.map +0 -1
- package/lib/crypto/verification/IllegalMethod.d.ts +0 -15
- package/lib/crypto/verification/IllegalMethod.d.ts.map +0 -1
- package/lib/crypto/verification/IllegalMethod.js +0 -43
- package/lib/crypto/verification/IllegalMethod.js.map +0 -1
- package/lib/crypto/verification/QRCode.d.ts +0 -51
- package/lib/crypto/verification/QRCode.d.ts.map +0 -1
- package/lib/crypto/verification/QRCode.js +0 -277
- package/lib/crypto/verification/QRCode.js.map +0 -1
- package/lib/crypto/verification/SAS.d.ts +0 -27
- package/lib/crypto/verification/SAS.d.ts.map +0 -1
- package/lib/crypto/verification/SAS.js +0 -485
- package/lib/crypto/verification/SAS.js.map +0 -1
- package/lib/crypto/verification/SASDecimal.d.ts +0 -8
- package/lib/crypto/verification/SASDecimal.d.ts.map +0 -1
- package/lib/crypto/verification/SASDecimal.js +0 -34
- package/lib/crypto/verification/SASDecimal.js.map +0 -1
- package/lib/crypto/verification/request/Channel.d.ts +0 -18
- package/lib/crypto/verification/request/Channel.d.ts.map +0 -1
- package/lib/crypto/verification/request/Channel.js +0 -1
- package/lib/crypto/verification/request/Channel.js.map +0 -1
- package/lib/crypto/verification/request/InRoomChannel.d.ts +0 -113
- package/lib/crypto/verification/request/InRoomChannel.d.ts.map +0 -1
- package/lib/crypto/verification/request/InRoomChannel.js +0 -351
- package/lib/crypto/verification/request/InRoomChannel.js.map +0 -1
- package/lib/crypto/verification/request/ToDeviceChannel.d.ts +0 -105
- package/lib/crypto/verification/request/ToDeviceChannel.d.ts.map +0 -1
- package/lib/crypto/verification/request/ToDeviceChannel.js +0 -328
- package/lib/crypto/verification/request/ToDeviceChannel.js.map +0 -1
- package/lib/crypto/verification/request/VerificationRequest.d.ts +0 -227
- package/lib/crypto/verification/request/VerificationRequest.d.ts.map +0 -1
- package/lib/crypto/verification/request/VerificationRequest.js +0 -937
- package/lib/crypto/verification/request/VerificationRequest.js.map +0 -1
- package/lib/crypto-api/CryptoEvent.d.ts +0 -69
- package/lib/crypto-api/CryptoEvent.d.ts.map +0 -1
- package/lib/crypto-api/CryptoEvent.js +0 -33
- package/lib/crypto-api/CryptoEvent.js.map +0 -1
- package/lib/crypto-api/CryptoEventHandlerMap.d.ts +0 -16
- package/lib/crypto-api/CryptoEventHandlerMap.d.ts.map +0 -1
- package/lib/crypto-api/CryptoEventHandlerMap.js +0 -22
- package/lib/crypto-api/CryptoEventHandlerMap.js.map +0 -1
- package/lib/crypto-api/index.d.ts +0 -978
- package/lib/crypto-api/index.d.ts.map +0 -1
- package/lib/crypto-api/index.js +0 -304
- package/lib/crypto-api/index.js.map +0 -1
- package/lib/crypto-api/key-passphrase.d.ts +0 -11
- package/lib/crypto-api/key-passphrase.d.ts.map +0 -1
- package/lib/crypto-api/key-passphrase.js +0 -51
- package/lib/crypto-api/key-passphrase.js.map +0 -1
- package/lib/crypto-api/keybackup.d.ts +0 -88
- package/lib/crypto-api/keybackup.d.ts.map +0 -1
- package/lib/crypto-api/keybackup.js +0 -1
- package/lib/crypto-api/keybackup.js.map +0 -1
- package/lib/crypto-api/recovery-key.d.ts +0 -11
- package/lib/crypto-api/recovery-key.d.ts.map +0 -1
- package/lib/crypto-api/recovery-key.js +0 -65
- package/lib/crypto-api/recovery-key.js.map +0 -1
- package/lib/crypto-api/verification.d.ts +0 -344
- package/lib/crypto-api/verification.d.ts.map +0 -1
- package/lib/crypto-api/verification.js +0 -91
- package/lib/crypto-api/verification.js.map +0 -1
- package/lib/matrixrtc/CallMembership.d.ts +0 -66
- package/lib/matrixrtc/CallMembership.d.ts.map +0 -1
- package/lib/matrixrtc/CallMembership.js +0 -197
- package/lib/matrixrtc/CallMembership.js.map +0 -1
- package/lib/matrixrtc/LivekitFocus.d.ts +0 -16
- package/lib/matrixrtc/LivekitFocus.d.ts.map +0 -1
- package/lib/matrixrtc/LivekitFocus.js +0 -20
- package/lib/matrixrtc/LivekitFocus.js.map +0 -1
- package/lib/matrixrtc/MatrixRTCSession.d.ts +0 -295
- package/lib/matrixrtc/MatrixRTCSession.d.ts.map +0 -1
- package/lib/matrixrtc/MatrixRTCSession.js +0 -1043
- package/lib/matrixrtc/MatrixRTCSession.js.map +0 -1
- package/lib/matrixrtc/MatrixRTCSessionManager.d.ts +0 -40
- package/lib/matrixrtc/MatrixRTCSessionManager.d.ts.map +0 -1
- package/lib/matrixrtc/MatrixRTCSessionManager.js +0 -146
- package/lib/matrixrtc/MatrixRTCSessionManager.js.map +0 -1
- package/lib/matrixrtc/focus.d.ts +0 -10
- package/lib/matrixrtc/focus.d.ts.map +0 -1
- package/lib/matrixrtc/focus.js +0 -1
- package/lib/matrixrtc/focus.js.map +0 -1
- package/lib/matrixrtc/index.d.ts +0 -7
- package/lib/matrixrtc/index.d.ts.map +0 -1
- package/lib/matrixrtc/index.js +0 -21
- package/lib/matrixrtc/index.js.map +0 -1
- package/lib/matrixrtc/types.d.ts +0 -19
- package/lib/matrixrtc/types.d.ts.map +0 -1
- package/lib/matrixrtc/types.js +0 -1
- package/lib/matrixrtc/types.js.map +0 -1
- package/lib/rendezvous/MSC4108SignInWithQR.d.ts +0 -112
- package/lib/rendezvous/MSC4108SignInWithQR.d.ts.map +0 -1
- package/lib/rendezvous/MSC4108SignInWithQR.js +0 -392
- package/lib/rendezvous/MSC4108SignInWithQR.js.map +0 -1
- package/lib/rendezvous/RendezvousChannel.d.ts +0 -27
- package/lib/rendezvous/RendezvousChannel.d.ts.map +0 -1
- package/lib/rendezvous/RendezvousChannel.js +0 -1
- package/lib/rendezvous/RendezvousChannel.js.map +0 -1
- package/lib/rendezvous/RendezvousCode.d.ts +0 -9
- package/lib/rendezvous/RendezvousCode.d.ts.map +0 -1
- package/lib/rendezvous/RendezvousCode.js +0 -1
- package/lib/rendezvous/RendezvousCode.js.map +0 -1
- package/lib/rendezvous/RendezvousError.d.ts +0 -6
- package/lib/rendezvous/RendezvousError.d.ts.map +0 -1
- package/lib/rendezvous/RendezvousError.js +0 -23
- package/lib/rendezvous/RendezvousError.js.map +0 -1
- package/lib/rendezvous/RendezvousFailureReason.d.ts +0 -31
- package/lib/rendezvous/RendezvousFailureReason.d.ts.map +0 -1
- package/lib/rendezvous/RendezvousFailureReason.js +0 -38
- package/lib/rendezvous/RendezvousFailureReason.js.map +0 -1
- package/lib/rendezvous/RendezvousIntent.d.ts +0 -5
- package/lib/rendezvous/RendezvousIntent.d.ts.map +0 -1
- package/lib/rendezvous/RendezvousIntent.js +0 -22
- package/lib/rendezvous/RendezvousIntent.js.map +0 -1
- package/lib/rendezvous/RendezvousTransport.d.ts +0 -36
- package/lib/rendezvous/RendezvousTransport.d.ts.map +0 -1
- package/lib/rendezvous/RendezvousTransport.js +0 -1
- package/lib/rendezvous/RendezvousTransport.js.map +0 -1
- package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts +0 -58
- package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts.map +0 -1
- package/lib/rendezvous/channels/MSC4108SecureChannel.js +0 -246
- package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +0 -1
- package/lib/rendezvous/channels/index.d.ts +0 -2
- package/lib/rendezvous/channels/index.d.ts.map +0 -1
- package/lib/rendezvous/channels/index.js +0 -18
- package/lib/rendezvous/channels/index.js.map +0 -1
- package/lib/rendezvous/index.d.ts +0 -10
- package/lib/rendezvous/index.d.ts.map +0 -1
- package/lib/rendezvous/index.js +0 -23
- package/lib/rendezvous/index.js.map +0 -1
- package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts +0 -61
- package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts.map +0 -1
- package/lib/rendezvous/transports/MSC4108RendezvousSession.js +0 -253
- package/lib/rendezvous/transports/MSC4108RendezvousSession.js.map +0 -1
- package/lib/rendezvous/transports/index.d.ts +0 -2
- package/lib/rendezvous/transports/index.d.ts.map +0 -1
- package/lib/rendezvous/transports/index.js +0 -18
- package/lib/rendezvous/transports/index.js.map +0 -1
- package/lib/rust-crypto/CrossSigningIdentity.d.ts +0 -33
- package/lib/rust-crypto/CrossSigningIdentity.d.ts.map +0 -1
- package/lib/rust-crypto/CrossSigningIdentity.js +0 -157
- package/lib/rust-crypto/CrossSigningIdentity.js.map +0 -1
- package/lib/rust-crypto/DehydratedDeviceManager.d.ts +0 -98
- package/lib/rust-crypto/DehydratedDeviceManager.d.ts.map +0 -1
- package/lib/rust-crypto/DehydratedDeviceManager.js +0 -285
- package/lib/rust-crypto/DehydratedDeviceManager.js.map +0 -1
- package/lib/rust-crypto/KeyClaimManager.d.ts +0 -33
- package/lib/rust-crypto/KeyClaimManager.d.ts.map +0 -1
- package/lib/rust-crypto/KeyClaimManager.js +0 -82
- package/lib/rust-crypto/KeyClaimManager.js.map +0 -1
- package/lib/rust-crypto/OutgoingRequestProcessor.d.ts +0 -43
- package/lib/rust-crypto/OutgoingRequestProcessor.d.ts.map +0 -1
- package/lib/rust-crypto/OutgoingRequestProcessor.js +0 -195
- package/lib/rust-crypto/OutgoingRequestProcessor.js.map +0 -1
- package/lib/rust-crypto/OutgoingRequestsManager.d.ts +0 -47
- package/lib/rust-crypto/OutgoingRequestsManager.d.ts.map +0 -1
- package/lib/rust-crypto/OutgoingRequestsManager.js +0 -148
- package/lib/rust-crypto/OutgoingRequestsManager.js.map +0 -1
- package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts +0 -120
- package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts.map +0 -1
- package/lib/rust-crypto/PerSessionKeyBackupDownloader.js +0 -467
- package/lib/rust-crypto/PerSessionKeyBackupDownloader.js.map +0 -1
- package/lib/rust-crypto/RoomEncryptor.d.ts +0 -98
- package/lib/rust-crypto/RoomEncryptor.d.ts.map +0 -1
- package/lib/rust-crypto/RoomEncryptor.js +0 -299
- package/lib/rust-crypto/RoomEncryptor.js.map +0 -1
- package/lib/rust-crypto/backup.d.ts +0 -254
- package/lib/rust-crypto/backup.d.ts.map +0 -1
- package/lib/rust-crypto/backup.js +0 -837
- package/lib/rust-crypto/backup.js.map +0 -1
- package/lib/rust-crypto/constants.d.ts +0 -3
- package/lib/rust-crypto/constants.d.ts.map +0 -1
- package/lib/rust-crypto/constants.js +0 -19
- package/lib/rust-crypto/constants.js.map +0 -1
- package/lib/rust-crypto/device-converter.d.ts +0 -28
- package/lib/rust-crypto/device-converter.d.ts.map +0 -1
- package/lib/rust-crypto/device-converter.js +0 -123
- package/lib/rust-crypto/device-converter.js.map +0 -1
- package/lib/rust-crypto/index.d.ts +0 -61
- package/lib/rust-crypto/index.d.ts.map +0 -1
- package/lib/rust-crypto/index.js +0 -152
- package/lib/rust-crypto/index.js.map +0 -1
- package/lib/rust-crypto/libolm_migration.d.ts +0 -81
- package/lib/rust-crypto/libolm_migration.d.ts.map +0 -1
- package/lib/rust-crypto/libolm_migration.js +0 -459
- package/lib/rust-crypto/libolm_migration.js.map +0 -1
- package/lib/rust-crypto/rust-crypto.d.ts +0 -556
- package/lib/rust-crypto/rust-crypto.d.ts.map +0 -1
- package/lib/rust-crypto/rust-crypto.js +0 -2016
- package/lib/rust-crypto/rust-crypto.js.map +0 -1
- package/lib/rust-crypto/secret-storage.d.ts +0 -22
- package/lib/rust-crypto/secret-storage.d.ts.map +0 -1
- package/lib/rust-crypto/secret-storage.js +0 -63
- package/lib/rust-crypto/secret-storage.js.map +0 -1
- package/lib/rust-crypto/verification.d.ts +0 -319
- package/lib/rust-crypto/verification.d.ts.map +0 -1
- package/lib/rust-crypto/verification.js +0 -816
- package/lib/rust-crypto/verification.js.map +0 -1
- package/lib/secret-storage.d.ts +0 -370
- package/lib/secret-storage.d.ts.map +0 -1
- package/lib/secret-storage.js +0 -466
- package/lib/secret-storage.js.map +0 -1
- package/lib/utils/decryptAESSecretStorageItem.d.ts +0 -12
- package/lib/utils/decryptAESSecretStorageItem.d.ts.map +0 -1
- package/lib/utils/decryptAESSecretStorageItem.js +0 -50
- package/lib/utils/decryptAESSecretStorageItem.js.map +0 -1
- package/lib/utils/encryptAESSecretStorageItem.d.ts +0 -16
- package/lib/utils/encryptAESSecretStorageItem.d.ts.map +0 -1
- package/lib/utils/encryptAESSecretStorageItem.js +0 -68
- package/lib/utils/encryptAESSecretStorageItem.js.map +0 -1
- package/lib/utils/internal/deriveKeys.d.ts +0 -10
- package/lib/utils/internal/deriveKeys.d.ts.map +0 -1
- package/lib/utils/internal/deriveKeys.js +0 -60
- package/lib/utils/internal/deriveKeys.js.map +0 -1
- package/lib/webrtc/audioContext.d.ts +0 -15
- package/lib/webrtc/audioContext.d.ts.map +0 -1
- package/lib/webrtc/audioContext.js +0 -46
- package/lib/webrtc/audioContext.js.map +0 -1
- package/lib/webrtc/call.d.ts +0 -560
- package/lib/webrtc/call.d.ts.map +0 -1
- package/lib/webrtc/call.js +0 -2541
- package/lib/webrtc/call.js.map +0 -1
- package/lib/webrtc/callEventHandler.d.ts +0 -37
- package/lib/webrtc/callEventHandler.d.ts.map +0 -1
- package/lib/webrtc/callEventHandler.js +0 -344
- package/lib/webrtc/callEventHandler.js.map +0 -1
- package/lib/webrtc/callEventTypes.d.ts +0 -73
- package/lib/webrtc/callEventTypes.d.ts.map +0 -1
- package/lib/webrtc/callEventTypes.js +0 -13
- package/lib/webrtc/callEventTypes.js.map +0 -1
- package/lib/webrtc/callFeed.d.ts +0 -128
- package/lib/webrtc/callFeed.d.ts.map +0 -1
- package/lib/webrtc/callFeed.js +0 -289
- package/lib/webrtc/callFeed.js.map +0 -1
- package/lib/webrtc/groupCall.d.ts +0 -323
- package/lib/webrtc/groupCall.d.ts.map +0 -1
- package/lib/webrtc/groupCall.js +0 -1337
- package/lib/webrtc/groupCall.js.map +0 -1
- package/lib/webrtc/groupCallEventHandler.d.ts +0 -31
- package/lib/webrtc/groupCallEventHandler.d.ts.map +0 -1
- package/lib/webrtc/groupCallEventHandler.js +0 -178
- package/lib/webrtc/groupCallEventHandler.js.map +0 -1
- package/lib/webrtc/mediaHandler.d.ts +0 -89
- package/lib/webrtc/mediaHandler.d.ts.map +0 -1
- package/lib/webrtc/mediaHandler.js +0 -437
- package/lib/webrtc/mediaHandler.js.map +0 -1
- package/lib/webrtc/stats/callFeedStatsReporter.d.ts +0 -8
- package/lib/webrtc/stats/callFeedStatsReporter.d.ts.map +0 -1
- package/lib/webrtc/stats/callFeedStatsReporter.js +0 -82
- package/lib/webrtc/stats/callFeedStatsReporter.js.map +0 -1
- package/lib/webrtc/stats/callStatsReportGatherer.d.ts +0 -25
- package/lib/webrtc/stats/callStatsReportGatherer.d.ts.map +0 -1
- package/lib/webrtc/stats/callStatsReportGatherer.js +0 -199
- package/lib/webrtc/stats/callStatsReportGatherer.js.map +0 -1
- package/lib/webrtc/stats/callStatsReportSummary.d.ts +0 -17
- package/lib/webrtc/stats/callStatsReportSummary.d.ts.map +0 -1
- package/lib/webrtc/stats/callStatsReportSummary.js +0 -1
- package/lib/webrtc/stats/callStatsReportSummary.js.map +0 -1
- package/lib/webrtc/stats/connectionStats.d.ts +0 -28
- package/lib/webrtc/stats/connectionStats.d.ts.map +0 -1
- package/lib/webrtc/stats/connectionStats.js +0 -26
- package/lib/webrtc/stats/connectionStats.js.map +0 -1
- package/lib/webrtc/stats/connectionStatsBuilder.d.ts +0 -5
- package/lib/webrtc/stats/connectionStatsBuilder.d.ts.map +0 -1
- package/lib/webrtc/stats/connectionStatsBuilder.js +0 -27
- package/lib/webrtc/stats/connectionStatsBuilder.js.map +0 -1
- package/lib/webrtc/stats/connectionStatsReportBuilder.d.ts +0 -7
- package/lib/webrtc/stats/connectionStatsReportBuilder.d.ts.map +0 -1
- package/lib/webrtc/stats/connectionStatsReportBuilder.js +0 -121
- package/lib/webrtc/stats/connectionStatsReportBuilder.js.map +0 -1
- package/lib/webrtc/stats/groupCallStats.d.ts +0 -22
- package/lib/webrtc/stats/groupCallStats.d.ts.map +0 -1
- package/lib/webrtc/stats/groupCallStats.js +0 -78
- package/lib/webrtc/stats/groupCallStats.js.map +0 -1
- package/lib/webrtc/stats/media/mediaSsrcHandler.d.ts +0 -10
- package/lib/webrtc/stats/media/mediaSsrcHandler.d.ts.map +0 -1
- package/lib/webrtc/stats/media/mediaSsrcHandler.js +0 -57
- package/lib/webrtc/stats/media/mediaSsrcHandler.js.map +0 -1
- package/lib/webrtc/stats/media/mediaTrackHandler.d.ts +0 -12
- package/lib/webrtc/stats/media/mediaTrackHandler.d.ts.map +0 -1
- package/lib/webrtc/stats/media/mediaTrackHandler.js +0 -62
- package/lib/webrtc/stats/media/mediaTrackHandler.js.map +0 -1
- package/lib/webrtc/stats/media/mediaTrackStats.d.ts +0 -86
- package/lib/webrtc/stats/media/mediaTrackStats.d.ts.map +0 -1
- package/lib/webrtc/stats/media/mediaTrackStats.js +0 -142
- package/lib/webrtc/stats/media/mediaTrackStats.js.map +0 -1
- package/lib/webrtc/stats/media/mediaTrackStatsHandler.d.ts +0 -22
- package/lib/webrtc/stats/media/mediaTrackStatsHandler.d.ts.map +0 -1
- package/lib/webrtc/stats/media/mediaTrackStatsHandler.js +0 -76
- package/lib/webrtc/stats/media/mediaTrackStatsHandler.js.map +0 -1
- package/lib/webrtc/stats/statsReport.d.ts +0 -99
- package/lib/webrtc/stats/statsReport.d.ts.map +0 -1
- package/lib/webrtc/stats/statsReport.js +0 -32
- package/lib/webrtc/stats/statsReport.js.map +0 -1
- package/lib/webrtc/stats/statsReportEmitter.d.ts +0 -15
- package/lib/webrtc/stats/statsReportEmitter.d.ts.map +0 -1
- package/lib/webrtc/stats/statsReportEmitter.js +0 -33
- package/lib/webrtc/stats/statsReportEmitter.js.map +0 -1
- package/lib/webrtc/stats/summaryStatsReportGatherer.d.ts +0 -16
- package/lib/webrtc/stats/summaryStatsReportGatherer.d.ts.map +0 -1
- package/lib/webrtc/stats/summaryStatsReportGatherer.js +0 -116
- package/lib/webrtc/stats/summaryStatsReportGatherer.js.map +0 -1
- package/lib/webrtc/stats/trackStatsBuilder.d.ts +0 -19
- package/lib/webrtc/stats/trackStatsBuilder.d.ts.map +0 -1
- package/lib/webrtc/stats/trackStatsBuilder.js +0 -168
- package/lib/webrtc/stats/trackStatsBuilder.js.map +0 -1
- package/lib/webrtc/stats/transportStats.d.ts +0 -11
- package/lib/webrtc/stats/transportStats.d.ts.map +0 -1
- package/lib/webrtc/stats/transportStats.js +0 -1
- package/lib/webrtc/stats/transportStats.js.map +0 -1
- package/lib/webrtc/stats/transportStatsBuilder.d.ts +0 -5
- package/lib/webrtc/stats/transportStatsBuilder.d.ts.map +0 -1
- package/lib/webrtc/stats/transportStatsBuilder.js +0 -34
- package/lib/webrtc/stats/transportStatsBuilder.js.map +0 -1
- package/lib/webrtc/stats/valueFormatter.d.ts +0 -4
- package/lib/webrtc/stats/valueFormatter.d.ts.map +0 -1
- package/lib/webrtc/stats/valueFormatter.js +0 -25
- package/lib/webrtc/stats/valueFormatter.js.map +0 -1
- package/src/@types/AESEncryptedSecretStoragePayload.ts +0 -29
- package/src/@types/crypto.ts +0 -73
- package/src/@types/matrix-sdk-crypto-wasm.d.ts +0 -44
- package/src/common-crypto/CryptoBackend.ts +0 -302
- package/src/common-crypto/README.md +0 -4
- package/src/common-crypto/key-passphrase.ts +0 -43
- package/src/crypto/CrossSigning.ts +0 -773
- package/src/crypto/DeviceList.ts +0 -989
- package/src/crypto/EncryptionSetup.ts +0 -351
- package/src/crypto/OlmDevice.ts +0 -1500
- package/src/crypto/OutgoingRoomKeyRequestManager.ts +0 -485
- package/src/crypto/RoomList.ts +0 -70
- package/src/crypto/SecretSharing.ts +0 -240
- package/src/crypto/SecretStorage.ts +0 -136
- package/src/crypto/aes.ts +0 -23
- package/src/crypto/algorithms/base.ts +0 -236
- package/src/crypto/algorithms/index.ts +0 -20
- package/src/crypto/algorithms/megolm.ts +0 -2216
- package/src/crypto/algorithms/olm.ts +0 -381
- package/src/crypto/api.ts +0 -70
- package/src/crypto/backup.ts +0 -922
- package/src/crypto/crypto.ts +0 -18
- package/src/crypto/dehydration.ts +0 -272
- package/src/crypto/device-converter.ts +0 -45
- package/src/crypto/deviceinfo.ts +0 -158
- package/src/crypto/index.ts +0 -4418
- package/src/crypto/key_passphrase.ts +0 -42
- package/src/crypto/keybackup.ts +0 -47
- package/src/crypto/olmlib.ts +0 -539
- package/src/crypto/recoverykey.ts +0 -18
- package/src/crypto/store/base.ts +0 -348
- package/src/crypto/store/indexeddb-crypto-store-backend.ts +0 -1250
- package/src/crypto/store/indexeddb-crypto-store.ts +0 -845
- package/src/crypto/store/localStorage-crypto-store.ts +0 -579
- package/src/crypto/store/memory-crypto-store.ts +0 -680
- package/src/crypto/verification/Base.ts +0 -409
- package/src/crypto/verification/Error.ts +0 -76
- package/src/crypto/verification/IllegalMethod.ts +0 -50
- package/src/crypto/verification/QRCode.ts +0 -310
- package/src/crypto/verification/SAS.ts +0 -494
- package/src/crypto/verification/SASDecimal.ts +0 -37
- package/src/crypto/verification/request/Channel.ts +0 -34
- package/src/crypto/verification/request/InRoomChannel.ts +0 -371
- package/src/crypto/verification/request/ToDeviceChannel.ts +0 -354
- package/src/crypto/verification/request/VerificationRequest.ts +0 -976
- package/src/crypto-api/CryptoEvent.ts +0 -93
- package/src/crypto-api/CryptoEventHandlerMap.ts +0 -32
- package/src/crypto-api/index.ts +0 -1175
- package/src/crypto-api/key-passphrase.ts +0 -58
- package/src/crypto-api/keybackup.ts +0 -115
- package/src/crypto-api/recovery-key.ts +0 -69
- package/src/crypto-api/verification.ts +0 -408
- package/src/matrixrtc/CallMembership.ts +0 -247
- package/src/matrixrtc/LivekitFocus.ts +0 -39
- package/src/matrixrtc/MatrixRTCSession.ts +0 -1319
- package/src/matrixrtc/MatrixRTCSessionManager.ts +0 -166
- package/src/matrixrtc/focus.ts +0 -25
- package/src/matrixrtc/index.ts +0 -22
- package/src/matrixrtc/types.ts +0 -36
- package/src/rendezvous/MSC4108SignInWithQR.ts +0 -444
- package/src/rendezvous/RendezvousChannel.ts +0 -48
- package/src/rendezvous/RendezvousCode.ts +0 -25
- package/src/rendezvous/RendezvousError.ts +0 -26
- package/src/rendezvous/RendezvousFailureReason.ts +0 -49
- package/src/rendezvous/RendezvousIntent.ts +0 -20
- package/src/rendezvous/RendezvousTransport.ts +0 -58
- package/src/rendezvous/channels/MSC4108SecureChannel.ts +0 -270
- package/src/rendezvous/channels/index.ts +0 -17
- package/src/rendezvous/index.ts +0 -25
- package/src/rendezvous/transports/MSC4108RendezvousSession.ts +0 -270
- package/src/rendezvous/transports/index.ts +0 -17
- package/src/rust-crypto/CrossSigningIdentity.ts +0 -183
- package/src/rust-crypto/DehydratedDeviceManager.ts +0 -306
- package/src/rust-crypto/KeyClaimManager.ts +0 -86
- package/src/rust-crypto/OutgoingRequestProcessor.ts +0 -236
- package/src/rust-crypto/OutgoingRequestsManager.ts +0 -143
- package/src/rust-crypto/PerSessionKeyBackupDownloader.ts +0 -501
- package/src/rust-crypto/RoomEncryptor.ts +0 -352
- package/src/rust-crypto/backup.ts +0 -881
- package/src/rust-crypto/constants.ts +0 -18
- package/src/rust-crypto/device-converter.ts +0 -128
- package/src/rust-crypto/index.ts +0 -237
- package/src/rust-crypto/libolm_migration.ts +0 -530
- package/src/rust-crypto/rust-crypto.ts +0 -2205
- package/src/rust-crypto/secret-storage.ts +0 -60
- package/src/rust-crypto/verification.ts +0 -830
- package/src/secret-storage.ts +0 -693
- package/src/utils/decryptAESSecretStorageItem.ts +0 -54
- package/src/utils/encryptAESSecretStorageItem.ts +0 -73
- package/src/utils/internal/deriveKeys.ts +0 -63
- package/src/webrtc/audioContext.ts +0 -44
- package/src/webrtc/call.ts +0 -3074
- package/src/webrtc/callEventHandler.ts +0 -425
- package/src/webrtc/callEventTypes.ts +0 -93
- package/src/webrtc/callFeed.ts +0 -364
- package/src/webrtc/groupCall.ts +0 -1735
- package/src/webrtc/groupCallEventHandler.ts +0 -234
- package/src/webrtc/mediaHandler.ts +0 -484
- package/src/webrtc/stats/callFeedStatsReporter.ts +0 -94
- package/src/webrtc/stats/callStatsReportGatherer.ts +0 -219
- package/src/webrtc/stats/callStatsReportSummary.ts +0 -30
- package/src/webrtc/stats/connectionStats.ts +0 -47
- package/src/webrtc/stats/connectionStatsBuilder.ts +0 -28
- package/src/webrtc/stats/connectionStatsReportBuilder.ts +0 -140
- package/src/webrtc/stats/groupCallStats.ts +0 -93
- package/src/webrtc/stats/media/mediaSsrcHandler.ts +0 -57
- package/src/webrtc/stats/media/mediaTrackHandler.ts +0 -76
- package/src/webrtc/stats/media/mediaTrackStats.ts +0 -176
- package/src/webrtc/stats/media/mediaTrackStatsHandler.ts +0 -90
- package/src/webrtc/stats/statsReport.ts +0 -133
- package/src/webrtc/stats/statsReportEmitter.ts +0 -49
- package/src/webrtc/stats/summaryStatsReportGatherer.ts +0 -148
- package/src/webrtc/stats/trackStatsBuilder.ts +0 -207
- package/src/webrtc/stats/transportStats.ts +0 -26
- package/src/webrtc/stats/transportStatsBuilder.ts +0 -48
- package/src/webrtc/stats/valueFormatter.ts +0 -27
package/src/models/room.ts
CHANGED
@@ -494,7 +494,6 @@ export class Room extends ReadReceipt<RoomEmittedEvents, RoomEventHandlerMap> {
|
|
494
494
|
});
|
495
495
|
events.forEach(async (serializedEvent: Partial<IEvent>) => {
|
496
496
|
const event = mapper(serializedEvent);
|
497
|
-
await client.decryptEventIfNeeded(event);
|
498
497
|
event.setStatus(EventStatus.NOT_SENT);
|
499
498
|
this.addPendingEvent(event, event.getTxnId()!);
|
500
499
|
});
|
@@ -533,52 +532,6 @@ export class Room extends ReadReceipt<RoomEmittedEvents, RoomEventHandlerMap> {
|
|
533
532
|
return null;
|
534
533
|
}
|
535
534
|
|
536
|
-
/**
|
537
|
-
* Bulk decrypt critical events in a room
|
538
|
-
*
|
539
|
-
* Critical events represents the minimal set of events to decrypt
|
540
|
-
* for a typical UI to function properly
|
541
|
-
*
|
542
|
-
* - Last event of every room (to generate likely message preview)
|
543
|
-
* - All events up to the read receipt (to calculate an accurate notification count)
|
544
|
-
*
|
545
|
-
* @returns Signals when all events have been decrypted
|
546
|
-
*/
|
547
|
-
public async decryptCriticalEvents(): Promise<void> {
|
548
|
-
if (!this.client.isCryptoEnabled()) return;
|
549
|
-
|
550
|
-
const readReceiptEventId = this.getEventReadUpTo(this.client.getUserId()!, true);
|
551
|
-
const events = this.getLiveTimeline().getEvents();
|
552
|
-
const readReceiptTimelineIndex = events.findIndex((matrixEvent) => {
|
553
|
-
return matrixEvent.event.event_id === readReceiptEventId;
|
554
|
-
});
|
555
|
-
|
556
|
-
const decryptionPromises = events
|
557
|
-
.slice(readReceiptTimelineIndex)
|
558
|
-
.reverse()
|
559
|
-
.map((event) => this.client.decryptEventIfNeeded(event));
|
560
|
-
|
561
|
-
await Promise.allSettled(decryptionPromises);
|
562
|
-
}
|
563
|
-
|
564
|
-
/**
|
565
|
-
* Bulk decrypt events in a room
|
566
|
-
*
|
567
|
-
* @returns Signals when all events have been decrypted
|
568
|
-
*/
|
569
|
-
public async decryptAllEvents(): Promise<void> {
|
570
|
-
if (!this.client.isCryptoEnabled()) return;
|
571
|
-
|
572
|
-
const decryptionPromises = this.getUnfilteredTimelineSet()
|
573
|
-
.getLiveTimeline()
|
574
|
-
.getEvents()
|
575
|
-
.slice(0) // copy before reversing
|
576
|
-
.reverse()
|
577
|
-
.map((event) => this.client.decryptEventIfNeeded(event));
|
578
|
-
|
579
|
-
await Promise.allSettled(decryptionPromises);
|
580
|
-
}
|
581
|
-
|
582
535
|
/**
|
583
536
|
* Gets the creator of the room
|
584
537
|
* @returns The creator of the room, or null if it could not be determined
|
@@ -1739,10 +1692,11 @@ export class Room extends ReadReceipt<RoomEmittedEvents, RoomEventHandlerMap> {
|
|
1739
1692
|
public addEventsToTimeline(
|
1740
1693
|
events: MatrixEvent[],
|
1741
1694
|
toStartOfTimeline: boolean,
|
1695
|
+
addToState: boolean,
|
1742
1696
|
timeline: EventTimeline,
|
1743
1697
|
paginationToken?: string,
|
1744
1698
|
): void {
|
1745
|
-
timeline.getTimelineSet().addEventsToTimeline(events, toStartOfTimeline, timeline, paginationToken);
|
1699
|
+
timeline.getTimelineSet().addEventsToTimeline(events, toStartOfTimeline, addToState, timeline, paginationToken);
|
1746
1700
|
}
|
1747
1701
|
|
1748
1702
|
/**
|
@@ -1907,7 +1861,7 @@ export class Room extends ReadReceipt<RoomEmittedEvents, RoomEventHandlerMap> {
|
|
1907
1861
|
// see https://github.com/vector-im/vector-web/issues/2109
|
1908
1862
|
|
1909
1863
|
unfilteredLiveTimeline.getEvents().forEach(function (event) {
|
1910
|
-
timelineSet.addLiveEvent(event);
|
1864
|
+
timelineSet.addLiveEvent(event, { addToState: false }); // Filtered timeline sets should not track state
|
1911
1865
|
});
|
1912
1866
|
|
1913
1867
|
// find the earliest unfiltered timeline
|
@@ -1994,6 +1948,7 @@ export class Room extends ReadReceipt<RoomEmittedEvents, RoomEventHandlerMap> {
|
|
1994
1948
|
if (filterType !== ThreadFilterType.My || currentUserParticipated) {
|
1995
1949
|
timelineSet.getLiveTimeline().addEvent(thread.rootEvent!, {
|
1996
1950
|
toStartOfTimeline: false,
|
1951
|
+
addToState: false,
|
1997
1952
|
});
|
1998
1953
|
}
|
1999
1954
|
});
|
@@ -2062,12 +2017,12 @@ export class Room extends ReadReceipt<RoomEmittedEvents, RoomEventHandlerMap> {
|
|
2062
2017
|
return threadAMetadata.latest_event.origin_server_ts - threadBMetadata.latest_event.origin_server_ts;
|
2063
2018
|
});
|
2064
2019
|
|
2065
|
-
let latestMyThreadsRootEvent: MatrixEvent | undefined;
|
2066
2020
|
const roomState = this.getLiveTimeline().getState(EventTimeline.FORWARDS);
|
2067
2021
|
for (const rootEvent of threadRoots) {
|
2068
2022
|
const opts = {
|
2069
2023
|
duplicateStrategy: DuplicateStrategy.Ignore,
|
2070
2024
|
fromCache: false,
|
2025
|
+
addToState: false,
|
2071
2026
|
roomState,
|
2072
2027
|
};
|
2073
2028
|
this.threadsTimelineSets[0]?.addLiveEvent(rootEvent, opts);
|
@@ -2077,16 +2032,10 @@ export class Room extends ReadReceipt<RoomEmittedEvents, RoomEventHandlerMap> {
|
|
2077
2032
|
);
|
2078
2033
|
if (threadRelationship?.current_user_participated) {
|
2079
2034
|
this.threadsTimelineSets[1]?.addLiveEvent(rootEvent, opts);
|
2080
|
-
latestMyThreadsRootEvent = rootEvent;
|
2081
2035
|
}
|
2082
2036
|
}
|
2083
2037
|
|
2084
2038
|
this.processThreadRoots(threadRoots, true);
|
2085
|
-
|
2086
|
-
this.client.decryptEventIfNeeded(threadRoots[threadRoots.length - 1]);
|
2087
|
-
if (latestMyThreadsRootEvent) {
|
2088
|
-
this.client.decryptEventIfNeeded(latestMyThreadsRootEvent);
|
2089
|
-
}
|
2090
2039
|
}
|
2091
2040
|
|
2092
2041
|
this.on(ThreadEvent.NewReply, this.onThreadReply);
|
@@ -2110,7 +2059,6 @@ export class Room extends ReadReceipt<RoomEmittedEvents, RoomEventHandlerMap> {
|
|
2110
2059
|
* Try to decrypt the event. Promise resolution does not guarantee a successful decryption.
|
2111
2060
|
* Retry is handled in {@link processPollEvent}.
|
2112
2061
|
*/
|
2113
|
-
await this.client.decryptEventIfNeeded(event);
|
2114
2062
|
this.processPollEvent(event);
|
2115
2063
|
} catch (err) {
|
2116
2064
|
logger.warn("Error processing poll event", event.getId(), err);
|
@@ -2129,13 +2077,6 @@ export class Room extends ReadReceipt<RoomEmittedEvents, RoomEventHandlerMap> {
|
|
2129
2077
|
* @param event - Event that could be a poll event
|
2130
2078
|
*/
|
2131
2079
|
private async processPollEvent(event: MatrixEvent): Promise<void> {
|
2132
|
-
if (event.isDecryptionFailure()) {
|
2133
|
-
event.once(MatrixEventEvent.Decrypted, (maybeDecryptedEvent: MatrixEvent) => {
|
2134
|
-
this.processPollEvent(maybeDecryptedEvent);
|
2135
|
-
});
|
2136
|
-
return;
|
2137
|
-
}
|
2138
|
-
|
2139
2080
|
if (M_POLL_START.matches(event.getType())) {
|
2140
2081
|
try {
|
2141
2082
|
const poll = new Poll(event, this.client, this);
|
@@ -2190,6 +2131,7 @@ export class Room extends ReadReceipt<RoomEmittedEvents, RoomEventHandlerMap> {
|
|
2190
2131
|
duplicateStrategy: DuplicateStrategy.Replace,
|
2191
2132
|
fromCache: false,
|
2192
2133
|
roomState,
|
2134
|
+
addToState: false,
|
2193
2135
|
});
|
2194
2136
|
}
|
2195
2137
|
}
|
@@ -2381,9 +2323,13 @@ export class Room extends ReadReceipt<RoomEmittedEvents, RoomEventHandlerMap> {
|
|
2381
2323
|
duplicateStrategy: DuplicateStrategy.Replace,
|
2382
2324
|
fromCache: false,
|
2383
2325
|
roomState: this.currentState,
|
2326
|
+
addToState: false,
|
2384
2327
|
});
|
2385
2328
|
} else {
|
2386
|
-
timelineSet.addEventToTimeline(thread.rootEvent, timelineSet.getLiveTimeline(), {
|
2329
|
+
timelineSet.addEventToTimeline(thread.rootEvent, timelineSet.getLiveTimeline(), {
|
2330
|
+
toStartOfTimeline,
|
2331
|
+
addToState: false,
|
2332
|
+
});
|
2387
2333
|
}
|
2388
2334
|
}
|
2389
2335
|
};
|
@@ -2540,7 +2486,7 @@ export class Room extends ReadReceipt<RoomEmittedEvents, RoomEventHandlerMap> {
|
|
2540
2486
|
* Fires {@link RoomEvent.Timeline}
|
2541
2487
|
*/
|
2542
2488
|
private addLiveEvent(event: MatrixEvent, addLiveEventOptions: IAddLiveEventOptions): void {
|
2543
|
-
const { duplicateStrategy, timelineWasEmpty, fromCache } = addLiveEventOptions;
|
2489
|
+
const { duplicateStrategy, timelineWasEmpty, fromCache, addToState } = addLiveEventOptions;
|
2544
2490
|
|
2545
2491
|
// add to our timeline sets
|
2546
2492
|
for (const timelineSet of this.timelineSets) {
|
@@ -2548,6 +2494,7 @@ export class Room extends ReadReceipt<RoomEmittedEvents, RoomEventHandlerMap> {
|
|
2548
2494
|
duplicateStrategy,
|
2549
2495
|
fromCache,
|
2550
2496
|
timelineWasEmpty,
|
2497
|
+
addToState,
|
2551
2498
|
});
|
2552
2499
|
}
|
2553
2500
|
|
@@ -2631,11 +2578,13 @@ export class Room extends ReadReceipt<RoomEmittedEvents, RoomEventHandlerMap> {
|
|
2631
2578
|
if (timelineSet.getFilter()!.filterRoomTimeline([event]).length) {
|
2632
2579
|
timelineSet.addEventToTimeline(event, timelineSet.getLiveTimeline(), {
|
2633
2580
|
toStartOfTimeline: false,
|
2581
|
+
addToState: false, // We don't support localEcho of state events yet
|
2634
2582
|
});
|
2635
2583
|
}
|
2636
2584
|
} else {
|
2637
2585
|
timelineSet.addEventToTimeline(event, timelineSet.getLiveTimeline(), {
|
2638
2586
|
toStartOfTimeline: false,
|
2587
|
+
addToState: false, // We don't support localEcho of state events yet
|
2639
2588
|
});
|
2640
2589
|
}
|
2641
2590
|
}
|
@@ -2886,8 +2835,8 @@ export class Room extends ReadReceipt<RoomEmittedEvents, RoomEventHandlerMap> {
|
|
2886
2835
|
* @param addLiveEventOptions - addLiveEvent options
|
2887
2836
|
* @throws If `duplicateStrategy` is not falsey, 'replace' or 'ignore'.
|
2888
2837
|
*/
|
2889
|
-
public async addLiveEvents(events: MatrixEvent[], addLiveEventOptions
|
2890
|
-
const { duplicateStrategy, fromCache, timelineWasEmpty = false } = addLiveEventOptions
|
2838
|
+
public async addLiveEvents(events: MatrixEvent[], addLiveEventOptions: IAddLiveEventOptions): Promise<void> {
|
2839
|
+
const { duplicateStrategy, fromCache, timelineWasEmpty = false, addToState } = addLiveEventOptions;
|
2891
2840
|
if (duplicateStrategy && ["replace", "ignore"].indexOf(duplicateStrategy) === -1) {
|
2892
2841
|
throw new Error("duplicateStrategy MUST be either 'replace' or 'ignore'");
|
2893
2842
|
}
|
@@ -2902,6 +2851,7 @@ export class Room extends ReadReceipt<RoomEmittedEvents, RoomEventHandlerMap> {
|
|
2902
2851
|
duplicateStrategy,
|
2903
2852
|
fromCache,
|
2904
2853
|
timelineWasEmpty,
|
2854
|
+
addToState,
|
2905
2855
|
};
|
2906
2856
|
|
2907
2857
|
// List of extra events to check for being parents of any relations encountered
|
package/src/models/thread.ts
CHANGED
@@ -208,6 +208,7 @@ export class Thread extends ReadReceipt<ThreadEmittedEvents, ThreadEventHandlerM
|
|
208
208
|
|
209
209
|
public static setServerSideSupport(status: FeatureSupport): void {
|
210
210
|
Thread.hasServerSideSupport = status;
|
211
|
+
// XXX: This global latching behaviour is really unexpected and means that you can't undo when moving to a server without support
|
211
212
|
if (status !== FeatureSupport.Stable) {
|
212
213
|
FILTER_RELATED_BY_SENDERS.setPreferUnstable(true);
|
213
214
|
FILTER_RELATED_BY_REL_TYPES.setPreferUnstable(true);
|
@@ -317,6 +318,7 @@ export class Thread extends ReadReceipt<ThreadEmittedEvents, ThreadEventHandlerM
|
|
317
318
|
toStartOfTimeline,
|
318
319
|
fromCache: false,
|
319
320
|
roomState: this.roomState,
|
321
|
+
addToState: false,
|
320
322
|
});
|
321
323
|
}
|
322
324
|
}
|
@@ -343,7 +345,7 @@ export class Thread extends ReadReceipt<ThreadEmittedEvents, ThreadEventHandlerM
|
|
343
345
|
if (this.findEventById(eventId)) {
|
344
346
|
return;
|
345
347
|
}
|
346
|
-
this.timelineSet.insertEventIntoTimeline(event, this.liveTimeline, this.roomState);
|
348
|
+
this.timelineSet.insertEventIntoTimeline(event, this.liveTimeline, this.roomState, false);
|
347
349
|
}
|
348
350
|
|
349
351
|
public addEvents(events: MatrixEvent[], toStartOfTimeline: boolean): void {
|
@@ -372,7 +374,6 @@ export class Thread extends ReadReceipt<ThreadEmittedEvents, ThreadEventHandlerM
|
|
372
374
|
if (!Thread.hasServerSideSupport) {
|
373
375
|
// When there's no server-side support, just add it to the end of the timeline.
|
374
376
|
this.addEventToTimeline(event, toStartOfTimeline);
|
375
|
-
this.client.decryptEventIfNeeded(event);
|
376
377
|
} else if (event.isRelation(RelationType.Annotation) || event.isRelation(RelationType.Replace)) {
|
377
378
|
this.addRelatedThreadEvent(event, toStartOfTimeline);
|
378
379
|
return;
|
@@ -618,7 +619,7 @@ export class Thread extends ReadReceipt<ThreadEmittedEvents, ThreadEventHandlerM
|
|
618
619
|
// if the thread has regular events, this will just load the last reply.
|
619
620
|
// if the thread is newly created, this will load the root event.
|
620
621
|
if (this.replyCount === 0 && this.rootEvent) {
|
621
|
-
this.timelineSet.addEventsToTimeline([this.rootEvent], true, this.liveTimeline, null);
|
622
|
+
this.timelineSet.addEventsToTimeline([this.rootEvent], true, false, this.liveTimeline, null);
|
622
623
|
this.liveTimeline.setPaginationToken(null, Direction.Backward);
|
623
624
|
} else {
|
624
625
|
this.initalEventFetchProm = this.client.paginateEventTimeline(this.liveTimeline, {
|
package/src/sliding-sync-sdk.ts
CHANGED
@@ -14,7 +14,6 @@ See the License for the specific language governing permissions and
|
|
14
14
|
limitations under the License.
|
15
15
|
*/
|
16
16
|
|
17
|
-
import type { SyncCryptoCallbacks } from "./common-crypto/CryptoBackend.ts";
|
18
17
|
import { NotificationCountType, Room, RoomEvent } from "./models/room.ts";
|
19
18
|
import { logger } from "./logger.ts";
|
20
19
|
import { promiseMapSeries } from "./utils.ts";
|
@@ -24,13 +23,10 @@ import {
|
|
24
23
|
ISyncStateData,
|
25
24
|
SyncState,
|
26
25
|
_createAndReEmitRoom,
|
27
|
-
SyncApiOptions,
|
28
26
|
defaultClientOpts,
|
29
|
-
defaultSyncApiOpts,
|
30
27
|
SetPresence,
|
31
28
|
} from "./sync.ts";
|
32
29
|
import { MatrixEvent } from "./models/event.ts";
|
33
|
-
import { Crypto } from "./crypto/index.ts";
|
34
30
|
import { IMinimalEvent, IRoomEvent, IStateEvent, IStrippedState, ISyncResponse } from "./sync-accumulator.ts";
|
35
31
|
import { MatrixError } from "./http-api/index.ts";
|
36
32
|
import {
|
@@ -53,54 +49,6 @@ import { KnownMembership } from "./@types/membership.ts";
|
|
53
49
|
// keepAlive is successful but the server /sync fails.
|
54
50
|
const FAILED_SYNC_ERROR_THRESHOLD = 3;
|
55
51
|
|
56
|
-
type ExtensionE2EERequest = {
|
57
|
-
enabled: boolean;
|
58
|
-
};
|
59
|
-
|
60
|
-
type ExtensionE2EEResponse = Pick<
|
61
|
-
ISyncResponse,
|
62
|
-
| "device_lists"
|
63
|
-
| "device_one_time_keys_count"
|
64
|
-
| "device_unused_fallback_key_types"
|
65
|
-
| "org.matrix.msc2732.device_unused_fallback_key_types"
|
66
|
-
>;
|
67
|
-
|
68
|
-
class ExtensionE2EE implements Extension<ExtensionE2EERequest, ExtensionE2EEResponse> {
|
69
|
-
public constructor(private readonly crypto: Crypto) {}
|
70
|
-
|
71
|
-
public name(): string {
|
72
|
-
return "e2ee";
|
73
|
-
}
|
74
|
-
|
75
|
-
public when(): ExtensionState {
|
76
|
-
return ExtensionState.PreProcess;
|
77
|
-
}
|
78
|
-
|
79
|
-
public onRequest(isInitial: boolean): ExtensionE2EERequest | undefined {
|
80
|
-
if (!isInitial) {
|
81
|
-
return undefined;
|
82
|
-
}
|
83
|
-
return {
|
84
|
-
enabled: true, // this is sticky so only send it on the initial request
|
85
|
-
};
|
86
|
-
}
|
87
|
-
|
88
|
-
public async onResponse(data: ExtensionE2EEResponse): Promise<void> {
|
89
|
-
// Handle device list updates
|
90
|
-
if (data.device_lists) {
|
91
|
-
await this.crypto.processDeviceLists(data.device_lists);
|
92
|
-
}
|
93
|
-
|
94
|
-
// Handle one_time_keys_count and unused_fallback_key_types
|
95
|
-
await this.crypto.processKeyCounts(
|
96
|
-
data.device_one_time_keys_count,
|
97
|
-
data["device_unused_fallback_key_types"] || data["org.matrix.msc2732.device_unused_fallback_key_types"],
|
98
|
-
);
|
99
|
-
|
100
|
-
this.crypto.onSyncCompleted({});
|
101
|
-
}
|
102
|
-
}
|
103
|
-
|
104
52
|
type ExtensionToDeviceRequest = {
|
105
53
|
since?: string;
|
106
54
|
limit?: number;
|
@@ -117,7 +65,6 @@ class ExtensionToDevice implements Extension<ExtensionToDeviceRequest, Extension
|
|
117
65
|
|
118
66
|
public constructor(
|
119
67
|
private readonly client: MatrixClient,
|
120
|
-
private readonly cryptoCallbacks?: SyncCryptoCallbacks,
|
121
68
|
) {}
|
122
69
|
|
123
70
|
public name(): string {
|
@@ -141,10 +88,7 @@ class ExtensionToDevice implements Extension<ExtensionToDeviceRequest, Extension
|
|
141
88
|
|
142
89
|
public async onResponse(data: ExtensionToDeviceResponse): Promise<void> {
|
143
90
|
const cancelledKeyVerificationTxns: string[] = [];
|
144
|
-
|
145
|
-
if (events.length > 0 && this.cryptoCallbacks) {
|
146
|
-
events = await this.cryptoCallbacks.preprocessToDeviceMessages(events);
|
147
|
-
}
|
91
|
+
const events = data["events"] || [];
|
148
92
|
events
|
149
93
|
.map(this.client.getEventMapper())
|
150
94
|
.map((toDeviceEvent) => {
|
@@ -345,7 +289,6 @@ class ExtensionReceipts implements Extension<ExtensionReceiptsRequest, Extension
|
|
345
289
|
*/
|
346
290
|
export class SlidingSyncSdk {
|
347
291
|
private readonly opts: IStoredClientOpts;
|
348
|
-
private readonly syncOpts: SyncApiOptions;
|
349
292
|
private syncState: SyncState | null = null;
|
350
293
|
private syncStateData?: ISyncStateData;
|
351
294
|
private lastPos: string | null = null;
|
@@ -356,10 +299,8 @@ export class SlidingSyncSdk {
|
|
356
299
|
private readonly slidingSync: SlidingSync,
|
357
300
|
private readonly client: MatrixClient,
|
358
301
|
opts?: IStoredClientOpts,
|
359
|
-
syncOpts?: SyncApiOptions,
|
360
302
|
) {
|
361
303
|
this.opts = defaultClientOpts(opts);
|
362
|
-
this.syncOpts = defaultSyncApiOpts(syncOpts);
|
363
304
|
|
364
305
|
if (client.getNotifTimelineSet()) {
|
365
306
|
client.reEmitter.reEmit(client.getNotifTimelineSet()!, [RoomEvent.Timeline, RoomEvent.TimelineReset]);
|
@@ -368,14 +309,11 @@ export class SlidingSyncSdk {
|
|
368
309
|
this.slidingSync.on(SlidingSyncEvent.Lifecycle, this.onLifecycle.bind(this));
|
369
310
|
this.slidingSync.on(SlidingSyncEvent.RoomData, this.onRoomData.bind(this));
|
370
311
|
const extensions: Extension<any, any>[] = [
|
371
|
-
new ExtensionToDevice(this.client
|
312
|
+
new ExtensionToDevice(this.client),
|
372
313
|
new ExtensionAccountData(this.client),
|
373
314
|
new ExtensionTyping(this.client),
|
374
315
|
new ExtensionReceipts(this.client),
|
375
316
|
];
|
376
|
-
if (this.syncOpts.crypto) {
|
377
|
-
extensions.push(new ExtensionE2EE(this.syncOpts.crypto));
|
378
|
-
}
|
379
317
|
extensions.forEach((ext) => {
|
380
318
|
this.slidingSync.registerExtension(ext);
|
381
319
|
});
|
@@ -612,7 +550,7 @@ export class SlidingSyncSdk {
|
|
612
550
|
timelineEvents = newEvents;
|
613
551
|
if (oldEvents.length > 0) {
|
614
552
|
// old events are scrollback, insert them now
|
615
|
-
room.addEventsToTimeline(oldEvents, true, room.getLiveTimeline(), roomData.prev_batch);
|
553
|
+
room.addEventsToTimeline(oldEvents, true, false, room.getLiveTimeline(), roomData.prev_batch);
|
616
554
|
}
|
617
555
|
}
|
618
556
|
|
@@ -734,9 +672,6 @@ export class SlidingSyncSdk {
|
|
734
672
|
|
735
673
|
const processRoomEvent = async (e: MatrixEvent): Promise<void> => {
|
736
674
|
client.emit(ClientEvent.Event, e);
|
737
|
-
if (e.isState() && e.getType() == EventType.RoomEncryption && this.syncOpts.cryptoCallbacks) {
|
738
|
-
await this.syncOpts.cryptoCallbacks.onCryptoEvent(room, e);
|
739
|
-
}
|
740
675
|
};
|
741
676
|
|
742
677
|
await promiseMapSeries(stateEvents, processRoomEvent);
|
@@ -744,17 +679,12 @@ export class SlidingSyncSdk {
|
|
744
679
|
ephemeralEvents.forEach(function (e) {
|
745
680
|
client.emit(ClientEvent.Event, e);
|
746
681
|
});
|
747
|
-
|
748
|
-
// Decrypt only the last message in all rooms to make sure we can generate a preview
|
749
|
-
// And decrypt all events after the recorded read receipt to ensure an accurate
|
750
|
-
// notification count
|
751
|
-
room.decryptCriticalEvents();
|
752
682
|
}
|
753
683
|
|
754
684
|
/**
|
755
685
|
* Injects events into a room's model.
|
756
686
|
* @param stateEventList - A list of state events. This is the state
|
757
|
-
* at the *
|
687
|
+
* at the *END* of the timeline list if it is supplied.
|
758
688
|
* @param timelineEventList - A list of timeline events. Lower index
|
759
689
|
* is earlier in time. Higher index is later.
|
760
690
|
* @param numLive - the number of events in timelineEventList which just happened,
|
@@ -763,13 +693,9 @@ export class SlidingSyncSdk {
|
|
763
693
|
public async injectRoomEvents(
|
764
694
|
room: Room,
|
765
695
|
stateEventList: MatrixEvent[],
|
766
|
-
timelineEventList
|
767
|
-
numLive
|
696
|
+
timelineEventList: MatrixEvent[] = [],
|
697
|
+
numLive: number = 0,
|
768
698
|
): Promise<void> {
|
769
|
-
timelineEventList = timelineEventList || [];
|
770
|
-
stateEventList = stateEventList || [];
|
771
|
-
numLive = numLive || 0;
|
772
|
-
|
773
699
|
// If there are no events in the timeline yet, initialise it with
|
774
700
|
// the given state events
|
775
701
|
const liveTimeline = room.getLiveTimeline();
|
@@ -820,16 +746,17 @@ export class SlidingSyncSdk {
|
|
820
746
|
timelineEventList = timelineEventList.slice(0, -1 * liveTimelineEvents.length);
|
821
747
|
}
|
822
748
|
|
823
|
-
//
|
824
|
-
// if the timeline has any state events in it.
|
749
|
+
// Execute the timeline events.
|
825
750
|
// This also needs to be done before running push rules on the events as they need
|
826
751
|
// to be decorated with sender etc.
|
827
752
|
await room.addLiveEvents(timelineEventList, {
|
828
753
|
fromCache: true,
|
754
|
+
addToState: false,
|
829
755
|
});
|
830
756
|
if (liveTimelineEvents.length > 0) {
|
831
757
|
await room.addLiveEvents(liveTimelineEvents, {
|
832
758
|
fromCache: false,
|
759
|
+
addToState: false,
|
833
760
|
});
|
834
761
|
}
|
835
762
|
|
@@ -966,7 +893,7 @@ export class SlidingSyncSdk {
|
|
966
893
|
return a.getTs() - b.getTs();
|
967
894
|
});
|
968
895
|
this.notifEvents.forEach((event) => {
|
969
|
-
this.client.getNotifTimelineSet()?.addLiveEvent(event);
|
896
|
+
this.client.getNotifTimelineSet()?.addLiveEvent(event, { addToState: false });
|
970
897
|
});
|
971
898
|
this.notifEvents = [];
|
972
899
|
}
|
package/src/sliding-sync.ts
CHANGED
@@ -196,8 +196,8 @@ class SlidingList {
|
|
196
196
|
* @param list - The new list parameters
|
197
197
|
*/
|
198
198
|
public replaceList(list: MSC3575List): void {
|
199
|
-
list.filters = list.filters
|
200
|
-
list.ranges = list.ranges
|
199
|
+
list.filters = list.filters ?? {};
|
200
|
+
list.ranges = list.ranges ?? [];
|
201
201
|
this.list = JSON.parse(JSON.stringify(list));
|
202
202
|
this.isModified = true;
|
203
203
|
|
@@ -894,9 +894,9 @@ export class SlidingSync extends TypedEventEmitter<SlidingSyncEvent, SlidingSync
|
|
894
894
|
l.setModified(false);
|
895
895
|
});
|
896
896
|
// set default empty values so we don't need to null check
|
897
|
-
resp.lists = resp.lists
|
898
|
-
resp.rooms = resp.rooms
|
899
|
-
resp.extensions = resp.extensions
|
897
|
+
resp.lists = resp.lists ?? {};
|
898
|
+
resp.rooms = resp.rooms ?? {};
|
899
|
+
resp.extensions = resp.extensions ?? {};
|
900
900
|
Object.keys(resp.lists).forEach((key: string) => {
|
901
901
|
const list = this.lists.get(key);
|
902
902
|
if (!list || !resp) {
|
@@ -934,7 +934,7 @@ export class SlidingSync extends TypedEventEmitter<SlidingSyncEvent, SlidingSync
|
|
934
934
|
const listKeysWithUpdates: Set<string> = new Set();
|
935
935
|
if (!doNotUpdateList) {
|
936
936
|
for (const [key, list] of Object.entries(resp.lists)) {
|
937
|
-
list.ops = list.ops
|
937
|
+
list.ops = list.ops ?? [];
|
938
938
|
if (list.ops.length > 0) {
|
939
939
|
listKeysWithUpdates.add(key);
|
940
940
|
}
|
package/src/store/indexeddb.ts
CHANGED
@@ -42,7 +42,7 @@ const WRITE_DELAY_MS = 1000 * 60 * 5; // once every 5 minutes
|
|
42
42
|
|
43
43
|
interface IOpts extends IBaseOpts {
|
44
44
|
/** The Indexed DB interface e.g. `window.indexedDB` */
|
45
|
-
indexedDB
|
45
|
+
indexedDB?: IDBFactory;
|
46
46
|
/** Optional database name. The same name must be used to open the same database. */
|
47
47
|
dbName?: string;
|
48
48
|
/** Optional factory to spin up a Worker to execute the IDB transactions within. */
|
package/src/sync-accumulator.ts
CHANGED
@@ -77,7 +77,9 @@ export interface ITimeline {
|
|
77
77
|
|
78
78
|
export interface IJoinedRoom {
|
79
79
|
"summary": IRoomSummary;
|
80
|
-
|
80
|
+
// One of `state` or `state_after` is required.
|
81
|
+
"state"?: IState;
|
82
|
+
"org.matrix.msc4222.state_after"?: IState; // https://github.com/matrix-org/matrix-spec-proposals/pull/4222
|
81
83
|
"timeline": ITimeline;
|
82
84
|
"ephemeral": IEphemeral;
|
83
85
|
"account_data": IAccountData;
|
@@ -106,9 +108,11 @@ export interface IInvitedRoom {
|
|
106
108
|
}
|
107
109
|
|
108
110
|
export interface ILeftRoom {
|
109
|
-
state
|
110
|
-
|
111
|
-
|
111
|
+
// One of `state` or `state_after` is required.
|
112
|
+
"state"?: IState;
|
113
|
+
"org.matrix.msc4222.state_after"?: IState;
|
114
|
+
"timeline": ITimeline;
|
115
|
+
"account_data": IAccountData;
|
112
116
|
}
|
113
117
|
|
114
118
|
export interface IKnockedRoom {
|
@@ -481,13 +485,18 @@ export class SyncAccumulator {
|
|
481
485
|
// Work out the current state. The deltas need to be applied in the order:
|
482
486
|
// - existing state which didn't come down /sync.
|
483
487
|
// - State events under the 'state' key.
|
484
|
-
// - State events in the 'timeline'.
|
488
|
+
// - State events under the 'state_after' key OR state events in the 'timeline' if 'state_after' is not present.
|
485
489
|
data.state?.events?.forEach((e) => {
|
486
490
|
setState(currentData._currentState, e);
|
487
491
|
});
|
488
|
-
data.
|
489
|
-
// this nops if 'e' isn't a state event
|
492
|
+
data["org.matrix.msc4222.state_after"]?.events?.forEach((e) => {
|
490
493
|
setState(currentData._currentState, e);
|
494
|
+
});
|
495
|
+
data.timeline?.events?.forEach((e, index) => {
|
496
|
+
if (!data["org.matrix.msc4222.state_after"]) {
|
497
|
+
// this nops if 'e' isn't a state event
|
498
|
+
setState(currentData._currentState, e);
|
499
|
+
}
|
491
500
|
// append the event to the timeline. The back-pagination token
|
492
501
|
// corresponds to the first event in the timeline
|
493
502
|
let transformedEvent: TaggedEvent;
|
@@ -563,17 +572,22 @@ export class SyncAccumulator {
|
|
563
572
|
});
|
564
573
|
Object.keys(this.joinRooms).forEach((roomId) => {
|
565
574
|
const roomData = this.joinRooms[roomId];
|
566
|
-
const roomJson: IJoinedRoom
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
575
|
+
const roomJson: IJoinedRoom & {
|
576
|
+
// We track both `state` and `state_after` for downgrade compatibility
|
577
|
+
"state": IState;
|
578
|
+
"org.matrix.msc4222.state_after": IState;
|
579
|
+
} = {
|
580
|
+
"ephemeral": { events: [] },
|
581
|
+
"account_data": { events: [] },
|
582
|
+
"state": { events: [] },
|
583
|
+
"org.matrix.msc4222.state_after": { events: [] },
|
584
|
+
"timeline": {
|
571
585
|
events: [],
|
572
586
|
prev_batch: null,
|
573
587
|
},
|
574
|
-
unread_notifications: roomData._unreadNotifications,
|
575
|
-
unread_thread_notifications: roomData._unreadThreadNotifications,
|
576
|
-
summary: roomData._summary as IRoomSummary,
|
588
|
+
"unread_notifications": roomData._unreadNotifications,
|
589
|
+
"unread_thread_notifications": roomData._unreadThreadNotifications,
|
590
|
+
"summary": roomData._summary as IRoomSummary,
|
577
591
|
};
|
578
592
|
// Add account data
|
579
593
|
Object.keys(roomData._accountData).forEach((evType) => {
|
@@ -650,8 +664,11 @@ export class SyncAccumulator {
|
|
650
664
|
Object.keys(roomData._currentState).forEach((evType) => {
|
651
665
|
Object.keys(roomData._currentState[evType]).forEach((stateKey) => {
|
652
666
|
let ev = roomData._currentState[evType][stateKey];
|
667
|
+
// Push to both fields to provide downgrade compatibility in the sync accumulator db
|
668
|
+
// the code will prefer `state_after` if it is present
|
669
|
+
roomJson["org.matrix.msc4222.state_after"].events.push(ev);
|
670
|
+
// Roll the state back to the value at the start of the timeline if it was changed
|
653
671
|
if (rollBackState[evType] && rollBackState[evType][stateKey]) {
|
654
|
-
// use the reverse clobbered event instead.
|
655
672
|
ev = rollBackState[evType][stateKey];
|
656
673
|
}
|
657
674
|
roomJson.state.events.push(ev);
|