updated action modal
This commit is contained in:
@@ -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(
|
||||||
|
|||||||
Reference in New Issue
Block a user