feat: Added pin permissions list

This commit is contained in:
Deven Joshi
2021-05-27 14:03:46 +05:30
parent 0e1e9a12f9
commit 259f717ec8
@@ -158,6 +158,7 @@ class MessageListView extends StatefulWidget {
this.onAttachmentTap,
this.textBuilder,
this.onLinkTap,
this.pinPermissions = const [],
}) : super(key: key);
/// Function used to build a custom message widget
@@ -264,6 +265,9 @@ class MessageListView extends StatefulWidget {
/// Callback for when link is tapped
final void Function(String link)? onLinkTap;
/// A List of user types that have permission to pin messages
final List<String> pinPermissions;
@override
_MessageListViewState createState() => _MessageListViewState();
}
@@ -800,6 +804,10 @@ class _MessageListViewState extends State<MessageListView> {
) {
final isMyMessage = message.user!.id == StreamChat.of(context).user!.id;
final isOnlyEmoji = message.text!.isOnlyEmoji;
final currentUser = StreamChat.of(context).user;
final members = StreamChannel.of(context).channel.state?.members ?? [];
final currentUserMember =
members.firstWhere((e) => e.user!.id == currentUser!.id);
final chatThemeData = StreamChatTheme.of(context);
return MessageWidget(
@@ -853,6 +861,7 @@ class _MessageListViewState extends State<MessageListView> {
textBuilder:
widget.textBuilder as Widget Function(BuildContext, Message)?,
onLinkTap: widget.onLinkTap,
showPinButton: widget.pinPermissions.contains(currentUserMember.role),
);
}
@@ -939,6 +948,11 @@ class _MessageListViewState extends State<MessageListView> {
? BorderSide.none
: null;
final currentUser = StreamChat.of(context).user;
final members = StreamChannel.of(context).channel.state?.members ?? [];
final currentUserMember =
members.firstWhere((e) => e.user!.id == currentUser!.id);
final chatThemeData = StreamChatTheme.of(context);
Widget child = MessageWidget(
key: ValueKey<String>('MESSAGE-${message.id}'),
@@ -1052,6 +1066,7 @@ class _MessageListViewState extends State<MessageListView> {
textBuilder:
widget.textBuilder as Widget Function(BuildContext, Message)?,
onLinkTap: widget.onLinkTap,
showPinButton: widget.pinPermissions.contains(currentUserMember.role),
);
if (!message.isDeleted &&