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.onAttachmentTap,
this.textBuilder, this.textBuilder,
this.onLinkTap, this.onLinkTap,
this.pinPermissions = const [],
}) : super(key: key); }) : super(key: key);
/// Function used to build a custom message widget /// Function used to build a custom message widget
@@ -264,6 +265,9 @@ class MessageListView extends StatefulWidget {
/// Callback for when link is tapped /// Callback for when link is tapped
final void Function(String link)? onLinkTap; final void Function(String link)? onLinkTap;
/// A List of user types that have permission to pin messages
final List<String> pinPermissions;
@override @override
_MessageListViewState createState() => _MessageListViewState(); _MessageListViewState createState() => _MessageListViewState();
} }
@@ -800,6 +804,10 @@ class _MessageListViewState extends State<MessageListView> {
) { ) {
final isMyMessage = message.user!.id == StreamChat.of(context).user!.id; final isMyMessage = message.user!.id == StreamChat.of(context).user!.id;
final isOnlyEmoji = message.text!.isOnlyEmoji; 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); final chatThemeData = StreamChatTheme.of(context);
return MessageWidget( return MessageWidget(
@@ -853,6 +861,7 @@ class _MessageListViewState extends State<MessageListView> {
textBuilder: textBuilder:
widget.textBuilder as Widget Function(BuildContext, Message)?, widget.textBuilder as Widget Function(BuildContext, Message)?,
onLinkTap: widget.onLinkTap, onLinkTap: widget.onLinkTap,
showPinButton: widget.pinPermissions.contains(currentUserMember.role),
); );
} }
@@ -939,6 +948,11 @@ class _MessageListViewState extends State<MessageListView> {
? BorderSide.none ? BorderSide.none
: null; : 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); final chatThemeData = StreamChatTheme.of(context);
Widget child = MessageWidget( Widget child = MessageWidget(
key: ValueKey<String>('MESSAGE-${message.id}'), key: ValueKey<String>('MESSAGE-${message.id}'),
@@ -1052,6 +1066,7 @@ class _MessageListViewState extends State<MessageListView> {
textBuilder: textBuilder:
widget.textBuilder as Widget Function(BuildContext, Message)?, widget.textBuilder as Widget Function(BuildContext, Message)?,
onLinkTap: widget.onLinkTap, onLinkTap: widget.onLinkTap,
showPinButton: widget.pinPermissions.contains(currentUserMember.role),
); );
if (!message.isDeleted && if (!message.isDeleted &&