This is mostly useful when you need to change the subscription depending
on the room. For example, unencrypted rooms have lazy-loaded members, but
encrypted rooms do not.
Unfortunately there are still other methods that could race with leave and result in broken group call state, such as enter and terminate. For the future, should consider writing a more careful specification of how the whole group call state machine is meant to work.
* Fix bug where undefined vs null in pagination tokens wasn't correctly handled
* Fix bug where thread list results were sorted incorrectly
* Allow removing the relationship of an event to a thread
* Implement feature detection for new threads MSCs and specs
* Prefix dir parameter for threads pagination if necessary
* Make threads conform to the same timeline APIs as any other timeline
* Extract thread timeline loading out of thread class
* fix thread roots not being updated correctly
* fix jumping to events by link
* implement new thread timeline loading
* Fix fetchRoomEvent incorrect return type
Co-authored-by: Germain <germains@element.io>
Co-authored-by: Germain <germain@souquet.com>
* TS strict mode compliance in the call / groupcall code
* Also the test
* Fix initOpponentCrypto
to not panic if it doesn't actually need to init crypto
In sliding sync, with an empty list, it is possible for the proxy
to send back DELETE 0, INSERT 0 !room which has the net result of
`[!room]`. Previously, the JS SDK would not handle this correctly.
Now it does. With tests.
* Fix screenshare failing after several attempts
Re-use any existing transceivers when screen sharing. This prevents
transceivers accumulating and making the SDP too big: see linked bug.
This also switches from `addTrack()` to `addTransceiver ()` which is
not that large of a change, other than having to explicitly find the
transceivers after an offer has arrived rather than just adding tracks
and letting WebRTC take care of it.
Fixes https://github.com/vector-im/element-call/issues/625
* Fix tests
* Unused import
* Use a map instead of an array
* Add comment
* more comment
* Remove commented code
* Remove unintentional debugging
* Add test for screenshare transceiver re-use
* Type alias for transceiver map
* Clean implementation of MSC3886 and MSC3903
* Refactor to use object initialiser instead of lots of args + handle non-compliant fetch better
* Start of some unit tests
* Make AES work on Node.js as well as browser
* Tests for ECDH/X25519
* stric mode linting
* Fix incorrect test
* Refactor full rendezvous logic out of react-sdk into js-sdk
* Use correct unstable import
* Pass fetch around
* Make correct usage of fetch in tests
* fix: you can't call fetch when it's not on window
* Use class names to make it clearer that these are unstable MSC implementations
* Linting
* Clean implementation of MSC3886 and MSC3903
* Refactor to use object initialiser instead of lots of args + handle non-compliant fetch better
* Start of some unit tests
* Make AES work on Node.js as well as browser
* Tests for ECDH/X25519
* stric mode linting
* Fix incorrect test
* Refactor full rendezvous logic out of react-sdk into js-sdk
* Use correct unstable import
* Pass fetch around
* Make correct usage of fetch in tests
* fix: you can't call fetch when it's not on window
* Use class names to make it clearer that these are unstable MSC implementations
* Linting
* Reduce log noise
* Tidy up interface a bit
* Additional test for transport layer
* Linting
* Refactor dummy transport to be re-usable
* Remove redundant condition
* Handle more error cases
* Initial tests for MSC3906
* Reduce scope of PR to only cover generating a code on existing device
* Strict linting
* Additional test cases
* Lint
* additional test cases and remove some code smells
* More test cases
* Strict lint
* Strict lint
* Test case
* Refactor to handle UIA
* Unstable prefixes
* Lint
* Missed due to lack of strict...
* Test server capabilities using Feature
* Remove redundant assignment
* Refactor ro resuse generateDecimal from SAS
* Update src/rendezvous/transports/simpleHttpTransport.ts
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Update src/rendezvous/transports/simpleHttpTransport.ts
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Update src/rendezvous/channels/ecdhV1.ts
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Update src/rendezvous/transports/simpleHttpTransport.ts
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Rename files to titlecase
* Visibility modifiers
* Resolve public mutability
* Refactor logic to reduce duplication
* Refactor to have better defined data types throughout
* Rebase and remove Node.js crypto
* Wipe AES key out after use
* Add typing for MSC3906 layer
* Strict lint
* Fix double connect detection
* Remove unintended debug statement
* Return types
* Use generics
* Make type of MSC3903ECDHPayload explicit
* Use unstable prefix for RendezvousChannelAlgorithm
* Fix
* Extra unstable type
* Test types
Co-authored-by: Travis Ralston <travisr@matrix.org>
Co-authored-by: Kerry <kerrya@element.io>