[MessageWidget] Move action modal options visibility one layer up
Signed-off-by: Sahil Kumar <[email protected]>
This commit is contained in:
@@ -24,8 +24,8 @@ class MessageActionsModal extends StatelessWidget {
|
|||||||
final bool showCopyMessage;
|
final bool showCopyMessage;
|
||||||
final bool showEditMessage;
|
final bool showEditMessage;
|
||||||
final bool showResendMessage;
|
final bool showResendMessage;
|
||||||
final bool showReply;
|
final bool showReplyMessage;
|
||||||
final bool showThreadReply;
|
final bool showThreadReplyMessage;
|
||||||
final bool reverse;
|
final bool reverse;
|
||||||
final ShapeBorder messageShape;
|
final ShapeBorder messageShape;
|
||||||
final DisplayWidget showUserAvatar;
|
final DisplayWidget showUserAvatar;
|
||||||
@@ -40,9 +40,9 @@ class MessageActionsModal extends StatelessWidget {
|
|||||||
this.onReplyTap,
|
this.onReplyTap,
|
||||||
this.onThreadReplyTap,
|
this.onThreadReplyTap,
|
||||||
this.showCopyMessage = true,
|
this.showCopyMessage = true,
|
||||||
this.showReply = true,
|
this.showReplyMessage = true,
|
||||||
this.showResendMessage = true,
|
this.showResendMessage = true,
|
||||||
this.showThreadReply = true,
|
this.showThreadReplyMessage = true,
|
||||||
this.showUserAvatar = DisplayWidget.show,
|
this.showUserAvatar = DisplayWidget.show,
|
||||||
this.editMessageInputBuilder,
|
this.editMessageInputBuilder,
|
||||||
this.messageShape,
|
this.messageShape,
|
||||||
@@ -129,7 +129,7 @@ class MessageActionsModal extends StatelessWidget {
|
|||||||
showReactions: false,
|
showReactions: false,
|
||||||
showUsername: false,
|
showUsername: false,
|
||||||
showThreadReplyIndicator: false,
|
showThreadReplyIndicator: false,
|
||||||
showReplyIndicator: false,
|
showReplyMessage: false,
|
||||||
showUserAvatar: showUserAvatar,
|
showUserAvatar: showUserAvatar,
|
||||||
showTimestamp: false,
|
showTimestamp: false,
|
||||||
translateUserAvatar: false,
|
translateUserAvatar: false,
|
||||||
@@ -180,13 +180,13 @@ class MessageActionsModal extends StatelessWidget {
|
|||||||
.greyWhisper,
|
.greyWhisper,
|
||||||
context: context,
|
context: context,
|
||||||
tiles: [
|
tiles: [
|
||||||
if (showReply &&
|
if (showReplyMessage &&
|
||||||
(message.status ==
|
(message.status ==
|
||||||
MessageSendingStatus.SENT ||
|
MessageSendingStatus.SENT ||
|
||||||
message.status == null) &&
|
message.status == null) &&
|
||||||
message.parentId == null)
|
message.parentId == null)
|
||||||
_buildReplyButton(context),
|
_buildReplyButton(context),
|
||||||
if (showThreadReply &&
|
if (showThreadReplyMessage &&
|
||||||
(message.status ==
|
(message.status ==
|
||||||
MessageSendingStatus.SENT ||
|
MessageSendingStatus.SENT ||
|
||||||
message.status == null) &&
|
message.status == null) &&
|
||||||
|
|||||||
@@ -369,7 +369,11 @@ class _MessageListViewState extends State<MessageListView> {
|
|||||||
final isNextUserSame =
|
final isNextUserSame =
|
||||||
message.user.id == nextMessage.user?.id;
|
message.user.id == nextMessage.user?.id;
|
||||||
final isThread = message.replyCount > 0;
|
final isThread = message.replyCount > 0;
|
||||||
if (timeDiff >= 1 || !isNextUserSame || isThread) {
|
final isDeleted = message.isDeleted;
|
||||||
|
if (timeDiff >= 1 ||
|
||||||
|
!isNextUserSame ||
|
||||||
|
isThread ||
|
||||||
|
isDeleted) {
|
||||||
return SizedBox(height: 8);
|
return SizedBox(height: 8);
|
||||||
}
|
}
|
||||||
return SizedBox(height: 2);
|
return SizedBox(height: 2);
|
||||||
@@ -713,7 +717,12 @@ class _MessageListViewState extends State<MessageListView> {
|
|||||||
return MessageWidget(
|
return MessageWidget(
|
||||||
showThreadReplyIndicator: false,
|
showThreadReplyIndicator: false,
|
||||||
showInChannelIndicator: false,
|
showInChannelIndicator: false,
|
||||||
showReplyIndicator: false,
|
showReplyMessage: false,
|
||||||
|
showResendMessage: false,
|
||||||
|
showThreadReplyMessage: false,
|
||||||
|
showCopyMessage: false,
|
||||||
|
showDeleteMessage: false,
|
||||||
|
showEditMessage: false,
|
||||||
message: message,
|
message: message,
|
||||||
reverse: isMyMessage,
|
reverse: isMyMessage,
|
||||||
showUsername: !isMyMessage,
|
showUsername: !isMyMessage,
|
||||||
@@ -725,8 +734,6 @@ class _MessageListViewState extends State<MessageListView> {
|
|||||||
),
|
),
|
||||||
showSendingIndicator: false,
|
showSendingIndicator: false,
|
||||||
onThreadTap: _onThreadTap,
|
onThreadTap: _onThreadTap,
|
||||||
showEditMessage: false,
|
|
||||||
showDeleteMessage: false,
|
|
||||||
borderRadiusGeometry: BorderRadius.only(
|
borderRadiusGeometry: BorderRadius.only(
|
||||||
topLeft: Radius.circular(16),
|
topLeft: Radius.circular(16),
|
||||||
bottomLeft: Radius.circular(2),
|
bottomLeft: Radius.circular(2),
|
||||||
@@ -845,6 +852,7 @@ class _MessageListViewState extends State<MessageListView> {
|
|||||||
},
|
},
|
||||||
showEditMessage: isMyMessage,
|
showEditMessage: isMyMessage,
|
||||||
showDeleteMessage: isMyMessage,
|
showDeleteMessage: isMyMessage,
|
||||||
|
showThreadReplyMessage: !isThreadMessage,
|
||||||
borderSide: isMyMessage ? BorderSide.none : null,
|
borderSide: isMyMessage ? BorderSide.none : null,
|
||||||
onThreadTap: _onThreadTap,
|
onThreadTap: _onThreadTap,
|
||||||
onReplyTap: widget.onReplyTap,
|
onReplyTap: widget.onReplyTap,
|
||||||
@@ -870,7 +878,7 @@ class _MessageListViewState extends State<MessageListView> {
|
|||||||
onShowMessage: widget.onShowMessage,
|
onShowMessage: widget.onShowMessage,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!isThreadMessage) {
|
if (!message.isDeleted && !message.isSystem && !message.isEphemeral) {
|
||||||
child = Swipeable(
|
child = Swipeable(
|
||||||
onSwipeEnd: () => widget.onMessageSwiped(message),
|
onSwipeEnd: () => widget.onMessageSwiped(message),
|
||||||
backgroundIcon: StreamSvgIcon.reply(
|
backgroundIcon: StreamSvgIcon.reply(
|
||||||
|
|||||||
+29
-21
@@ -106,9 +106,6 @@ class MessageWidget extends StatefulWidget {
|
|||||||
/// If true the widget will show the thread reply indicator
|
/// If true the widget will show the thread reply indicator
|
||||||
final bool showThreadReplyIndicator;
|
final bool showThreadReplyIndicator;
|
||||||
|
|
||||||
/// If true the widget will show the reply indicator
|
|
||||||
final bool showReplyIndicator;
|
|
||||||
|
|
||||||
/// If true the widget will show the show in channel indicator
|
/// If true the widget will show the show in channel indicator
|
||||||
final bool showInChannelIndicator;
|
final bool showInChannelIndicator;
|
||||||
|
|
||||||
@@ -121,9 +118,6 @@ class MessageWidget extends StatefulWidget {
|
|||||||
/// Used in [MessageReactionsModal] and [MessageActionsModal]
|
/// Used in [MessageReactionsModal] and [MessageActionsModal]
|
||||||
final bool showReactionPickerIndicator;
|
final bool showReactionPickerIndicator;
|
||||||
|
|
||||||
/// If true the widget will show the resendMessage indicator
|
|
||||||
final bool showResendMessage;
|
|
||||||
|
|
||||||
final List<Read> readList;
|
final List<Read> readList;
|
||||||
|
|
||||||
final ShowMessageCallback onShowMessage;
|
final ShowMessageCallback onShowMessage;
|
||||||
@@ -131,8 +125,14 @@ class MessageWidget extends StatefulWidget {
|
|||||||
/// If true show the users username next to the timestamp of the message
|
/// If true show the users username next to the timestamp of the message
|
||||||
final bool showUsername;
|
final bool showUsername;
|
||||||
final bool showTimestamp;
|
final bool showTimestamp;
|
||||||
final bool showDeleteMessage;
|
|
||||||
|
final bool showReplyMessage;
|
||||||
|
final bool showThreadReplyMessage;
|
||||||
final bool showEditMessage;
|
final bool showEditMessage;
|
||||||
|
final bool showCopyMessage;
|
||||||
|
final bool showDeleteMessage;
|
||||||
|
final bool showResendMessage;
|
||||||
|
|
||||||
final Map<String, AttachmentBuilder> attachmentBuilders;
|
final Map<String, AttachmentBuilder> attachmentBuilders;
|
||||||
|
|
||||||
/// Center user avatar with bottom of the message
|
/// Center user avatar with bottom of the message
|
||||||
@@ -160,7 +160,6 @@ class MessageWidget extends StatefulWidget {
|
|||||||
this.showSendingIndicator = true,
|
this.showSendingIndicator = true,
|
||||||
this.showThreadReplyIndicator = true,
|
this.showThreadReplyIndicator = true,
|
||||||
this.showInChannelIndicator = true,
|
this.showInChannelIndicator = true,
|
||||||
this.showReplyIndicator = true,
|
|
||||||
this.onReplyTap,
|
this.onReplyTap,
|
||||||
this.onThreadTap,
|
this.onThreadTap,
|
||||||
this.showUsername = true,
|
this.showUsername = true,
|
||||||
@@ -168,6 +167,10 @@ class MessageWidget extends StatefulWidget {
|
|||||||
this.showReactions = true,
|
this.showReactions = true,
|
||||||
this.showDeleteMessage = true,
|
this.showDeleteMessage = true,
|
||||||
this.showEditMessage = true,
|
this.showEditMessage = true,
|
||||||
|
this.showReplyMessage = true,
|
||||||
|
this.showThreadReplyMessage = true,
|
||||||
|
this.showResendMessage = true,
|
||||||
|
this.showCopyMessage = true,
|
||||||
this.onUserAvatarTap,
|
this.onUserAvatarTap,
|
||||||
this.onLinkTap,
|
this.onLinkTap,
|
||||||
this.onMessageActions,
|
this.onMessageActions,
|
||||||
@@ -175,7 +178,6 @@ class MessageWidget extends StatefulWidget {
|
|||||||
this.editMessageInputBuilder,
|
this.editMessageInputBuilder,
|
||||||
this.textBuilder,
|
this.textBuilder,
|
||||||
Map<String, AttachmentBuilder> customAttachmentBuilders,
|
Map<String, AttachmentBuilder> customAttachmentBuilders,
|
||||||
this.showResendMessage = true,
|
|
||||||
this.readList,
|
this.readList,
|
||||||
this.padding,
|
this.padding,
|
||||||
this.textPadding = const EdgeInsets.symmetric(
|
this.textPadding = const EdgeInsets.symmetric(
|
||||||
@@ -243,6 +245,8 @@ class _MessageWidgetState extends State<MessageWidget> {
|
|||||||
|
|
||||||
bool get showSendingIndicator => widget.showSendingIndicator;
|
bool get showSendingIndicator => widget.showSendingIndicator;
|
||||||
|
|
||||||
|
bool get isDeleted => widget.message.isDeleted;
|
||||||
|
|
||||||
bool get showUsername => widget.showUsername;
|
bool get showUsername => widget.showUsername;
|
||||||
|
|
||||||
bool get showTimeStamp => widget.showTimestamp;
|
bool get showTimeStamp => widget.showTimestamp;
|
||||||
@@ -271,7 +275,9 @@ class _MessageWidgetState extends State<MessageWidget> {
|
|||||||
showThreadReplyIndicator ||
|
showThreadReplyIndicator ||
|
||||||
showUsername ||
|
showUsername ||
|
||||||
showTimeStamp ||
|
showTimeStamp ||
|
||||||
showInChannel;
|
showInChannel ||
|
||||||
|
showSendingIndicator ||
|
||||||
|
isDeleted;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@@ -482,12 +488,12 @@ class _MessageWidgetState extends State<MessageWidget> {
|
|||||||
Widget _buildQuotedMessage() {
|
Widget _buildQuotedMessage() {
|
||||||
final isMyMessage =
|
final isMyMessage =
|
||||||
widget.message.user.id == StreamChat.of(context).user.id;
|
widget.message.user.id == StreamChat.of(context).user.id;
|
||||||
|
final onTap = widget.message?.quotedMessage?.isDeleted != true &&
|
||||||
|
widget.onQuotedMessageTap != null
|
||||||
|
? () => widget.onQuotedMessageTap(widget.message.quotedMessageId)
|
||||||
|
: null;
|
||||||
return QuotedMessageWidget(
|
return QuotedMessageWidget(
|
||||||
onTap: () {
|
onTap: onTap,
|
||||||
if (widget.onQuotedMessageTap != null) {
|
|
||||||
widget.onQuotedMessageTap(widget.message.quotedMessageId);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
message: widget.message.quotedMessage,
|
message: widget.message.quotedMessage,
|
||||||
messageTheme: isMyMessage
|
messageTheme: isMyMessage
|
||||||
? StreamChatTheme.of(context).otherMessageTheme
|
? StreamChatTheme.of(context).otherMessageTheme
|
||||||
@@ -497,7 +503,7 @@ class _MessageWidgetState extends State<MessageWidget> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget get _bottomRow {
|
Widget get _bottomRow {
|
||||||
if (widget.message.isDeleted) {
|
if (isDeleted) {
|
||||||
return Transform(
|
return Transform(
|
||||||
transform: Matrix4.rotationY(widget.reverse ? pi : 0),
|
transform: Matrix4.rotationY(widget.reverse ? pi : 0),
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
@@ -701,14 +707,15 @@ class _MessageWidgetState extends State<MessageWidget> {
|
|||||||
messageTheme: widget.messageTheme,
|
messageTheme: widget.messageTheme,
|
||||||
messageShape: widget.shape ?? _getDefaultShape(context),
|
messageShape: widget.shape ?? _getDefaultShape(context),
|
||||||
reverse: widget.reverse,
|
reverse: widget.reverse,
|
||||||
showDeleteMessage: widget.showDeleteMessage,
|
showDeleteMessage: widget.showDeleteMessage || isDeleteFailed,
|
||||||
message: widget.message,
|
message: widget.message,
|
||||||
editMessageInputBuilder: widget.editMessageInputBuilder,
|
editMessageInputBuilder: widget.editMessageInputBuilder,
|
||||||
onReplyTap: widget.onReplyTap,
|
onReplyTap: widget.onReplyTap,
|
||||||
onThreadReplyTap: widget.onThreadTap,
|
onThreadReplyTap: widget.onThreadTap,
|
||||||
showResendMessage:
|
showResendMessage:
|
||||||
widget.showResendMessage && (isSendFailed || isUpdateFailed),
|
widget.showResendMessage && (isSendFailed || isUpdateFailed),
|
||||||
showCopyMessage: !isFailedState &&
|
showCopyMessage: widget.showCopyMessage &&
|
||||||
|
!isFailedState &&
|
||||||
widget.message.text?.trim()?.isNotEmpty == true,
|
widget.message.text?.trim()?.isNotEmpty == true,
|
||||||
showEditMessage: widget.showEditMessage &&
|
showEditMessage: widget.showEditMessage &&
|
||||||
!isDeleteFailed &&
|
!isDeleteFailed &&
|
||||||
@@ -716,11 +723,12 @@ class _MessageWidgetState extends State<MessageWidget> {
|
|||||||
?.any((element) => element.type == 'giphy') !=
|
?.any((element) => element.type == 'giphy') !=
|
||||||
true,
|
true,
|
||||||
showReactions: widget.showReactions,
|
showReactions: widget.showReactions,
|
||||||
showReply: widget.showReplyIndicator &&
|
showReplyMessage: widget.showReplyMessage &&
|
||||||
!isFailedState &&
|
!isFailedState &&
|
||||||
widget.onReplyTap != null,
|
widget.onReplyTap != null,
|
||||||
showThreadReply:
|
showThreadReplyMessage: widget.showThreadReplyMessage &&
|
||||||
widget.showThreadReplyIndicator && widget.onThreadTap != null,
|
!isFailedState &&
|
||||||
|
widget.onThreadTap != null,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -70,8 +70,8 @@ void main() {
|
|||||||
showEditMessage: false,
|
showEditMessage: false,
|
||||||
showCopyMessage: false,
|
showCopyMessage: false,
|
||||||
showDeleteMessage: false,
|
showDeleteMessage: false,
|
||||||
showReply: false,
|
showReplyMessage: false,
|
||||||
showThreadReply: false,
|
showThreadReplyMessage: false,
|
||||||
message: Message(
|
message: Message(
|
||||||
text: 'test',
|
text: 'test',
|
||||||
user: User(
|
user: User(
|
||||||
|
|||||||
Reference in New Issue
Block a user