Skip to content

Switch sliding sync support to simplified sliding sync #4400

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 74 commits into from
Mar 18, 2025
Merged

Switch sliding sync support to simplified sliding sync #4400

merged 74 commits into from
Mar 18, 2025

Conversation

dbkr
Copy link
Member

@dbkr dbkr commented Sep 12, 2024

Switches js-sdk's sliding sync support to simplified sliding sync. This is still experimental.

This does not maintain support for regular sliding sync.

Checklist

  • Tests written for new code (and old code if feasible).
  • New or updated public/exported symbols have accurate TSDoc documentation.
  • Linter and other CI checks pass.
  • Sign-off given on the changes (see CONTRIBUTING.md).

Experimental PR to test js-sdk with simlified sliding sync.

This does not maintain support for regulaer sliding sync.
dbkr added a commit to element-hq/matrix-react-sdk that referenced this pull request Sep 12, 2024
Working branch to get SSS functional on element-web.

Requires matrix-org/matrix-js-sdk#4400
@DoM1niC
Copy link

DoM1niC commented Sep 13, 2024

@dbkr loading DMs names are fixed for me but Avatars don't load inital only when I click on a DM (Room) and the Timeline shows only one recent Message, like this
image
after I reopen the Room the History will partially load....

Otherwise when the room next appears the name/avatar reset to
'Empty Room' with no avatar.
Copy link
Member

@richvdh richvdh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few nits but generally lgtm

// just to be sure
this.summaryHeroes = heroes.filter((userId) => {
return userId !== this.myUserId;
if (Array.isArray(heroes) && heroes.length > 0) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do we add this new heroes.length > 0 condition? it seems wrong to me, but maybe it doesn't matter.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mmm, I suppose this is unnecessary and might cause some situation where they aren't cleared when they ought to be.

if (joinedCount !== undefined && Number.isInteger(joinedCount)) {
this.currentState.setJoinedMemberCount(joinedCount);
}
if (invitedCount !== undefined && Number.isInteger(invitedCount)) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ditto

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typescript complains without these checks as Number.isInteger doesn't accept undefined for whatever reason.

@@ -3461,16 +3564,23 @@ export class Room extends ReadReceipt<RoomEmittedEvents, RoomEventHandlerMap> {

// get members that are NOT ourselves and are actually in the room.
let otherNames: string[] = [];
if (this.summaryHeroes) {
if (this.heroes) {
// if we have a summary, the member state events should be in the room state
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this comment feels like it's got a bit lost, as well

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mmm yeah, should be better now.

dbkr and others added 2 commits March 18, 2025 14:44
Co-authored-by: Richard van der Hoff <[email protected]>
Co-authored-by: Richard van der Hoff <[email protected]>
as it wasn't really necessary and may cause heroes not to be cleared?
dbkr and others added 3 commits March 18, 2025 15:05
Co-authored-by: Richard van der Hoff <[email protected]>
as it's necessary to stop typescript complaining
@dbkr dbkr added this pull request to the merge queue Mar 18, 2025
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Mar 18, 2025
@dbkr
Copy link
Member Author

dbkr commented Mar 18, 2025

Force merging because the upstream will be incompatible

@dbkr dbkr merged commit fd47a18 into develop Mar 18, 2025
30 checks passed
@dbkr dbkr deleted the dbkr/sss branch March 18, 2025 17:23
github-merge-queue bot pushed a commit to element-hq/element-web that referenced this pull request Mar 18, 2025
* Experimental SSS

Working branch to get SSS functional on element-web.

Requires matrix-org/matrix-js-sdk#4400

* Adjust tests to use new behaviour

* Remove well-known proxy URL lookup; always use native

This is actually required for SSS because otherwise it would use
the proxy over native support.

* Linting

* Debug logging

* Control the race condition when swapping between rooms

* Dont' filter by space as synapse doesn't support it

* Remove SS code related to registering lists and managing ranges

- Update the spidering code to spider all the relevant lists.
- Add canonical alias to the required_state to allow room name calcs to work.

Room sort order is busted because we don't yet look at `bump_stamp`.

* User bumpStamp if it is present

* Drop initial room load from 20 per list to 10

* Half the batch size to trickle more quickly

* Prettier

* prettier on tests too

* Remove proxy URL & unused import

* Hopefully fix tests to assert what the behaviour is supposed to be

* Move the singleton to the manager tyo fix import loop

* Very well, code, I will remove you

Why were you there in the first place?

* Strip out more unused stuff

* Fix playwright test

Seems like this lack of order updating unless a room is selected
was just always a bug with both regular and non-sliding sync. I
have no idea how the test passed on develop because it won't run.

* Fix test to do maybe what it was supposed to do... possibly?

* Remove test for old pre-simplified sliding sync behaviour

* Unused import

* Remove sliding sync proxy & test

I was wrong about what this test was asserting, it was suposed
to assert that notification dots aren't shown (because SS didn't
support them somehow I guess) but they are fine in SSS so the test
is just no longer relevant.

* Remove now pointless credentials

* Remove subscription removal as SSS doesn't do that

* Update tests

* add test

* Switch to new labs flag & break if old labs flag is enabled

* Remove unused import & fix test

* Fix other test

* Remove name & description from old labs flag

as they're not displayed anywhere so not useful

* Remove old sliding sync option

by making it not a feature

* Add back unread nindicator test but inverted

and minus the bit about disabling notification which surely would have
defeated the original point anyway?

* Reinstate test for room_subscriptions

...and also make tests actually use sliding sync

* Use UserFriendlyError

* Remove empty constructor

* Remove unrelated changes

* Unused import

* Fix import

* Avoid moving import

---------

Co-authored-by: Kegan Dougal <[email protected]>
github-merge-queue bot pushed a commit to element-hq/element-web that referenced this pull request Mar 18, 2025
* Experimental SSS

Working branch to get SSS functional on element-web.

Requires matrix-org/matrix-js-sdk#4400

* Adjust tests to use new behaviour

* Remove well-known proxy URL lookup; always use native

This is actually required for SSS because otherwise it would use
the proxy over native support.

* Linting

* Debug logging

* Control the race condition when swapping between rooms

* Dont' filter by space as synapse doesn't support it

* Remove SS code related to registering lists and managing ranges

- Update the spidering code to spider all the relevant lists.
- Add canonical alias to the required_state to allow room name calcs to work.

Room sort order is busted because we don't yet look at `bump_stamp`.

* User bumpStamp if it is present

* Drop initial room load from 20 per list to 10

* Half the batch size to trickle more quickly

* Prettier

* prettier on tests too

* Remove proxy URL & unused import

* Hopefully fix tests to assert what the behaviour is supposed to be

* Move the singleton to the manager tyo fix import loop

* Very well, code, I will remove you

Why were you there in the first place?

* Strip out more unused stuff

* Fix playwright test

Seems like this lack of order updating unless a room is selected
was just always a bug with both regular and non-sliding sync. I
have no idea how the test passed on develop because it won't run.

* Fix test to do maybe what it was supposed to do... possibly?

* Remove test for old pre-simplified sliding sync behaviour

* Unused import

* Remove sliding sync proxy & test

I was wrong about what this test was asserting, it was suposed
to assert that notification dots aren't shown (because SS didn't
support them somehow I guess) but they are fine in SSS so the test
is just no longer relevant.

* Remove now pointless credentials

* Remove subscription removal as SSS doesn't do that

* Update tests

* add test

* Switch to new labs flag & break if old labs flag is enabled

* Remove unused import & fix test

* Fix other test

* Remove name & description from old labs flag

as they're not displayed anywhere so not useful

* Remove old sliding sync option

by making it not a feature

* Add back unread nindicator test but inverted

and minus the bit about disabling notification which surely would have
defeated the original point anyway?

* Reinstate test for room_subscriptions

...and also make tests actually use sliding sync

* Use UserFriendlyError

* Remove empty constructor

* Remove unrelated changes

* Unused import

* Fix import

* Avoid moving import

---------

Co-authored-by: Kegan Dougal <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants