updated action modal

This commit is contained in:
Deven Joshi
2021-11-09 14:19:28 +05:30
parent c60524ef96
commit c10a2be6ed
3 changed files with 19 additions and 29 deletions
@@ -18,9 +18,6 @@ class MessageActionsModal extends StatefulWidget {
required this.message, required this.message,
required this.messageWidget, required this.messageWidget,
required this.messageTheme, required this.messageTheme,
this.showReactions = true,
this.showDeleteMessage = true,
this.showEditMessage = true,
this.onReplyTap, this.onReplyTap,
this.onThreadReplyTap, this.onThreadReplyTap,
this.showCopyMessage = true, this.showCopyMessage = true,
@@ -28,7 +25,6 @@ class MessageActionsModal extends StatefulWidget {
this.showResendMessage = true, this.showResendMessage = true,
this.showThreadReplyMessage = true, this.showThreadReplyMessage = true,
this.showFlagButton = true, this.showFlagButton = true,
this.showPinButton = true,
this.editMessageInputBuilder, this.editMessageInputBuilder,
this.reverse = false, this.reverse = false,
this.customActions = const [], this.customActions = const [],
@@ -53,21 +49,12 @@ class MessageActionsModal extends StatefulWidget {
/// [MessageThemeData] for message /// [MessageThemeData] for message
final MessageThemeData messageTheme; final MessageThemeData messageTheme;
/// Flag for showing reactions
final bool showReactions;
/// Callback when copy is tapped /// Callback when copy is tapped
final OnMessageTap? onCopyTap; final OnMessageTap? onCopyTap;
/// Callback when delete is tapped
final bool showDeleteMessage;
/// Flag for showing copy action /// Flag for showing copy action
final bool showCopyMessage; final bool showCopyMessage;
/// Flag for showing edit action
final bool showEditMessage;
/// Flag for showing resend action /// Flag for showing resend action
final bool showResendMessage; final bool showResendMessage;
@@ -80,9 +67,6 @@ class MessageActionsModal extends StatefulWidget {
/// Flag for showing flag action /// Flag for showing flag action
final bool showFlagButton; final bool showFlagButton;
/// Flag for showing pin action
final bool showPinButton;
/// Flag for reversing message /// Flag for reversing message
final bool reverse; final bool reverse;
@@ -95,6 +79,7 @@ class MessageActionsModal extends StatefulWidget {
class _MessageActionsModalState extends State<MessageActionsModal> { class _MessageActionsModalState extends State<MessageActionsModal> {
bool _showActions = true; bool _showActions = true;
late List<String> _userPermissions;
@override @override
Widget build(BuildContext context) => _showMessageOptionsModal(); Widget build(BuildContext context) => _showMessageOptionsModal();
@@ -138,7 +123,7 @@ class _MessageActionsModalState extends State<MessageActionsModal> {
? CrossAxisAlignment.end ? CrossAxisAlignment.end
: CrossAxisAlignment.start, : CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
if (widget.showReactions && if (_userPermissions.contains(PermissionType.sendReaction) &&
(widget.message.status == MessageSendingStatus.sent)) (widget.message.status == MessageSendingStatus.sent))
Align( Align(
alignment: Alignment( alignment: Alignment(
@@ -185,11 +170,16 @@ class _MessageActionsModalState extends State<MessageActionsModal> {
_buildThreadReplyButton(context), _buildThreadReplyButton(context),
if (widget.showResendMessage) if (widget.showResendMessage)
_buildResendMessage(context), _buildResendMessage(context),
if (widget.showEditMessage) _buildEditMessage(context), if (_userPermissions
.contains(PermissionType.updateOwnMessage))
_buildEditMessage(context),
if (widget.showCopyMessage) _buildCopyButton(context), if (widget.showCopyMessage) _buildCopyButton(context),
if (widget.showFlagButton) _buildFlagButton(context), if (widget.showFlagButton) _buildFlagButton(context),
if (widget.showPinButton) _buildPinButton(context), if (_userPermissions
if (widget.showDeleteMessage) .contains(PermissionType.pinMessage))
_buildPinButton(context),
if (_userPermissions
.contains(PermissionType.deleteOwnMessage))
_buildDeleteButton(context), _buildDeleteButton(context),
...widget.customActions ...widget.customActions
.map((action) => _buildCustomAction( .map((action) => _buildCustomAction(
@@ -650,4 +640,13 @@ class _MessageActionsModalState extends State<MessageActionsModal> {
), ),
); );
} }
@override
void didChangeDependencies() {
final newStreamChannel = StreamChannel.of(context);
_userPermissions =
newStreamChannel.channel.state?.channelState.channel?.ownCapabilities ??
[];
super.didChangeDependencies();
}
} }
@@ -1104,7 +1104,6 @@ class _MessageWidgetState extends State<MessageWidget>
Clipboard.setData(ClipboardData(text: message.text)), Clipboard.setData(ClipboardData(text: message.text)),
messageTheme: widget.messageTheme, messageTheme: widget.messageTheme,
reverse: widget.reverse, reverse: widget.reverse,
showDeleteMessage: widget.showDeleteMessage || isDeleteFailed,
message: widget.message, message: widget.message,
editMessageInputBuilder: widget.editMessageInputBuilder, editMessageInputBuilder: widget.editMessageInputBuilder,
onReplyTap: widget.onReplyTap, onReplyTap: widget.onReplyTap,
@@ -1114,11 +1113,6 @@ class _MessageWidgetState extends State<MessageWidget>
showCopyMessage: widget.showCopyMessage && showCopyMessage: widget.showCopyMessage &&
!isFailedState && !isFailedState &&
widget.message.text?.trim().isNotEmpty == true, widget.message.text?.trim().isNotEmpty == true,
showEditMessage: widget.showEditMessage &&
!isDeleteFailed &&
!widget.message.attachments
.any((element) => element.type == 'giphy'),
showReactions: widget.showReactions,
showReplyMessage: widget.showReplyMessage && showReplyMessage: widget.showReplyMessage &&
!isFailedState && !isFailedState &&
widget.onReplyTap != null, widget.onReplyTap != null,
@@ -1126,7 +1120,6 @@ class _MessageWidgetState extends State<MessageWidget>
!isFailedState && !isFailedState &&
widget.onThreadTap != null, widget.onThreadTap != null,
showFlagButton: widget.showFlagButton, showFlagButton: widget.showFlagButton,
showPinButton: widget.showPinButton,
customActions: widget.customActions, customActions: widget.customActions,
), ),
), ),
@@ -78,9 +78,7 @@ void main() {
client: client, client: client,
child: SizedBox( child: SizedBox(
child: MessageActionsModal( child: MessageActionsModal(
showEditMessage: false,
showCopyMessage: false, showCopyMessage: false,
showDeleteMessage: false,
showReplyMessage: false, showReplyMessage: false,
showThreadReplyMessage: false, showThreadReplyMessage: false,
message: Message( message: Message(