1
0
Fork 0
forked from Nexus/nexus

First Draft: Support for pinned messages.

This commit is contained in:
istalri 2026-07-07 00:54:40 +02:00
commit a2d2aeca7a
5 changed files with 224 additions and 3 deletions

View file

@ -17,6 +17,7 @@ import "package:nexus/models/event.dart";
import "package:nexus/models/relation_type.dart";
import "package:nexus/widgets/composer/composer.dart";
import "package:nexus/widgets/emoji_picker_button.dart";
import "package:nexus/widgets/pinned_messages.dart";
import "package:nexus/widgets/renderers/event.dart";
import "package:nexus/widgets/member_list.dart";
import "package:nexus/widgets/room_appbar.dart";
@ -63,6 +64,7 @@ class RoomChat extends HookConsumerWidget {
isDesktop: isDesktop,
onOpenDrawer: (_) => Scaffold.of(context).openDrawer(),
onOpenMemberList: null,
onOpenPinnedMessagesList: null,
),
body: nothing,
);
@ -390,7 +392,15 @@ class RoomChat extends HookConsumerWidget {
onOpenDrawer: (_) => Scaffold.of(context).openDrawer(),
onOpenMemberList: (thisContext) {
memberListOpened.value = !memberListOpened.value;
Scaffold.of(thisContext).openEndDrawer();
if (!showMembersByDefault) {
Scaffold.of(thisContext).openEndDrawer();
}
},
onOpenPinnedMessagesList: (thisContext) {
memberListOpened.value = false;
WidgetsBinding.instance.addPostFrameCallback((_) {
Scaffold.of(thisContext).openEndDrawer();
});
},
),
body: Row(
@ -508,7 +518,14 @@ class RoomChat extends HookConsumerWidget {
MemberList(roomId),
],
),
endDrawer: showMembersByDefault ? null : MemberList(roomId),
endDrawer: showMembersByDefault && memberListOpened.value
? null
: Drawer(
shape: Border(),
child: memberListOpened.value
? MemberList(roomId)
: PinnedMessages(roomId, getEventOptions: getEventOptions),
),
);
}
}