Implement support for pinned messages #39

Open
opened 2026-06-07 12:55:13 -04:00 by istalri · 2 comments
Member

This issue is for tracking the support of pinned messages in the nexus client.

There is not really much to say about it, we need a page to see/browse them and and a way to pin them in the first place.

This issue is for tracking the support of pinned messages in the nexus client. There is not really much to say about it, we need a page to see/browse them and and a way to pin them in the first place.
Henry-Hiles changed title from Implement support for pinned messages. to Implement support for pinned messages 2026-07-02 10:48:56 -04:00
Owner

I do think an end drawer would be the best solution for displaying these. Since each scaffold can only have one endDrawer, i think you would want to wrap the existing scaffold in another scaffold (with endDrawer set to the pins) + builder, to get a context you can show the end drawer in:

- return Scaffold(
+ return Scaffold(
+   endDrawer: SomePinsWidget(),
+   body: Builder(
+     builder: (pinsDrawerContext) => Scaffold(

And then you can use Scaffold.of(pinsDrawerContext).openEndDrawer() to open the pins widget.

I do think an end drawer would be the best solution for displaying these. Since each scaffold can only have one endDrawer, i think you would want to wrap the existing scaffold in another scaffold (with endDrawer set to the pins) + builder, to get a context you can show the end drawer in: ```diff - return Scaffold( + return Scaffold( + endDrawer: SomePinsWidget(), + body: Builder( + builder: (pinsDrawerContext) => Scaffold( ``` And then you can use `Scaffold.of(pinsDrawerContext).openEndDrawer()` to open the pins widget.
Author
Member

The drawer to display is almost done. We also need a new controller to fetch and potentially filter the

m.room.pinned_events

This event is used to “pin” particular events in a room for other participants to review later. The order of the pinned events is guaranteed and based upon the order supplied in the event. Clients should be aware that the current user may not be able to see some of the events pinned due to visibility settings in the room. Clients are responsible for determining if a particular event in the pinned list is displayable, and have the option to not display it if it cannot be pinned in the client.

Source

This was shortly discussed in the Nexus Client room with @Henry-Hiles and more research is needed on what exactly the clients responsibilities are and how to archive them. One idea from @Henry-Hiles was to simply fetch everything and filter out empty messages, but feasibility has still to be determined.

The drawer to display is almost done. We also need a new controller to fetch and potentially filter the > ### m.room.pinned_events > > This event is used to “pin” particular events in a room for other participants to review later. The order of the pinned events is guaranteed and based upon the order supplied in the event. Clients should be aware that the current user may not be able to see some of the events pinned due to visibility settings in the room. Clients are responsible for determining if a particular event in the pinned list is displayable, and have the option to not display it if it cannot be pinned in the client. [Source](https://spec.matrix.org/latest/client-server-api/#mroompinned_events) This was shortly discussed in the Nexus Client room with @Henry-Hiles and more research is needed on what exactly the clients responsibilities are and how to archive them. One idea from @Henry-Hiles was to simply fetch everything and filter out empty messages, but feasibility has still to be determined.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Nexus/nexus#39
No description provided.