-
Notifications
You must be signed in to change notification settings - Fork 41
Spaces: implement separate per-space views of rooms/dock tabs #636
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
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
showing SpaceLobby entry in the RoomsList, etc. SpaceLobby itself not yet impl'd. Full usage of `SelectedRoom::Space` not yet impl'd.
Still need to add: 1. Filtering displayed rooms in `RoomsList::update_displayed_rooms()`, 2. Saving desktop dock state, and closing rooms not in the selected space, 3. Restoring desktop dock state upon going back to the home tab, 4. Fleshing out the SpaceLobbyScreen
Fix text in SpacesBar to be more accurate regarding whether the displayed spaces are all joined spaces or just those that match the currently-entered keyword(s) in the RoomFilterInputBar.
TODO:
* Invites aren't being properly filtered out.
* Direct messages ("people") also aren't being properly included.
I think what element does is include a DM in the space if the
other member of that DM is *also* a member of that space.
We could do that as well, but it requires storing the member list
of each space.
* It'd be nice to show a loading spinner as the last element of
the RoomsList's PortalList while we're paginating the list of children
in that space. Otherwise, the user won't know
* This could potentially be included in the status message widget,
i.e., to the left of it.
* Need to update the status message widget properly to reflect the
number of joined or matching rooms in the currently-selected space.
Merge branch 'main' into spaces_screen
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 introduces separate, independent views of the dock for each space, and also one for the main home view that shows all rooms.
These views are virtualized, and only one exists at a single time, so we're not wasting tons of memory allocating separate widget instances for each space.
Automatic saving/restoring of per-space view state upon user navigation and programmatic navigation between different top-level nav tabs.
The RoomsList now maintains the full map of spaces and their children, and is responsible for sending space-related requests to the backend async tasks.
Other changes:
RoomNameId(from Use custom struct with Room Name + ID together everywhere to ensure that room names always display nicely #590) to hold all Space names and Space IDs.TabSelectedaction in the RoomsList to update the RoomsListHeader text based on the selected space.makepad_micro_serdeand thus very limited, as it is cannot interop with Serde traits or JSON.TODO: submit a PR to makepad to add feature-gated support for key public types to deriveDone: Add optional serde derives for Serialization/Deserialization on select public types makepad/makepad#831serde::Serialize/serde::Deserialize.Remaining TODOs:
Need to update the status message content to properly reflect the number of joined or matching rooms in the currently-selected space.Fixed by Correctly calculate status message at the end of the RoomsList #643SpaceLobbyScreencontent.Upon opening a new space, we also need to recursively fetch the list of children for all sub-spaces in that space.Fixed by Discover and recursively descend into nested subspaces #644Without this, joined rooms in a nested space will not be shown when its parent space is selected.