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.messageWidget,
required this.messageTheme,
this.showReactions = true,
this.showDeleteMessage = true,
this.showEditMessage = true,
this.onReplyTap,
this.onThreadReplyTap,
this.showCopyMessage = true,
@@ -28,7 +25,6 @@ class MessageActionsModal extends StatefulWidget {
this.showResendMessage = true,
this.showThreadReplyMessage = true,
this.showFlagButton = true,
this.showPinButton = true,
this.editMessageInputBuilder,
this.reverse = false,
this.customActions = const [],
@@ -53,21 +49,12 @@ class MessageActionsModal extends StatefulWidget {
/// [MessageThemeData] for message
final MessageThemeData messageTheme;
/// Flag for showing reactions
final bool showReactions;
/// Callback when copy is tapped
final OnMessageTap? onCopyTap;
/// Callback when delete is tapped
final bool showDeleteMessage;
/// Flag for showing copy action
final bool showCopyMessage;
/// Flag for showing edit action
final bool showEditMessage;
/// Flag for showing resend action
final bool showResendMessage;
@@ -80,9 +67,6 @@ class MessageActionsModal extends StatefulWidget {
/// Flag for showing flag action
final bool showFlagButton;
/// Flag for showing pin action
final bool showPinButton;
/// Flag for reversing message
final bool reverse;
@@ -95,6 +79,7 @@ class MessageActionsModal extends StatefulWidget {
class _MessageActionsModalState extends State<MessageActionsModal> {
bool _showActions = true;
late List<String> _userPermissions;
@override
Widget build(BuildContext context) => _showMessageOptionsModal();
@@ -138,7 +123,7 @@ class _MessageActionsModalState extends State<MessageActionsModal> {
? CrossAxisAlignment.end
: CrossAxisAlignment.start,
children: <Widget>[
if (widget.showReactions &&
if (_userPermissions.contains(PermissionType.sendReaction) &&
(widget.message.status == MessageSendingStatus.sent))
Align(
alignment: Alignment(
@@ -185,11 +170,16 @@ class _MessageActionsModalState extends State<MessageActionsModal> {
_buildThreadReplyButton(context),
if (widget.showResendMessage)
_buildResendMessage(context),
if (widget.showEditMessage) _buildEditMessage(context),
if (_userPermissions
.contains(PermissionType.updateOwnMessage))
_buildEditMessage(context),
if (widget.showCopyMessage) _buildCopyButton(context),
if (widget.showFlagButton) _buildFlagButton(context),
if (widget.showPinButton) _buildPinButton(context),
if (widget.showDeleteMessage)
if (_userPermissions
.contains(PermissionType.pinMessage))
_buildPinButton(context),
if (_userPermissions
.contains(PermissionType.deleteOwnMessage))
_buildDeleteButton(context),
...widget.customActions
.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)),
messageTheme: widget.messageTheme,
reverse: widget.reverse,
showDeleteMessage: widget.showDeleteMessage || isDeleteFailed,
message: widget.message,
editMessageInputBuilder: widget.editMessageInputBuilder,
onReplyTap: widget.onReplyTap,
@@ -1114,11 +1113,6 @@ class _MessageWidgetState extends State<MessageWidget>
showCopyMessage: widget.showCopyMessage &&
!isFailedState &&
widget.message.text?.trim().isNotEmpty == true,
showEditMessage: widget.showEditMessage &&
!isDeleteFailed &&
!widget.message.attachments
.any((element) => element.type == 'giphy'),
showReactions: widget.showReactions,
showReplyMessage: widget.showReplyMessage &&
!isFailedState &&
widget.onReplyTap != null,
@@ -1126,7 +1120,6 @@ class _MessageWidgetState extends State<MessageWidget>
!isFailedState &&
widget.onThreadTap != null,
showFlagButton: widget.showFlagButton,
showPinButton: widget.showPinButton,
customActions: widget.customActions,
),
),
@@ -78,9 +78,7 @@ void main() {
client: client,
child: SizedBox(
child: MessageActionsModal(
showEditMessage: false,
showCopyMessage: false,
showDeleteMessage: false,
showReplyMessage: false,
showThreadReplyMessage: false,
message: Message(