Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds support for private rooms and end to end encryption (e2ee).
In this PR, we move from a per-room polling based approach, to using the
sync
API. We are now callingstartClient
which causesmatrix-js-sdk
to call the Matrixsync
API and keeps all rooms in sync. This is necessary becausematrix-js-sdk
takes care of crypto events and key sharing, so we can easily send / receive encrypted messages by reusing the SDK.(Before, we pretty much only used the
matrix-js-sdk
as a wrapper to the Matrix HS APIs, not to keep track of any state like rooms, keys, etc.)This move has a few downsides (which is why we initially went for the per-room polling approach):
Migrating to
startClient
brings a few extra todos:matrixRoomListener
instead (we now use both methods at the same time)MatrixMemberReader
as we can now usemaySendEvent
ofmatrix-js-sdk
Other open todos
getMatrixRoomSecurity
andupdateMatrixRoomAccess
for private roomsmatrix-js-sdk
that supports all UI flows required (cross signing / backups / key management) is quite cumbersome. This should be made easier before we can expect people to actually start using this