diff --git a/packages/stream_chat_flutter/lib/src/message_action/message_actions_builder.dart b/packages/stream_chat_flutter/lib/src/message_action/message_actions_builder.dart index 1bae56bdc8..86616408f0 100644 --- a/packages/stream_chat_flutter/lib/src/message_action/message_actions_builder.dart +++ b/packages/stream_chat_flutter/lib/src/message_action/message_actions_builder.dart @@ -148,7 +148,8 @@ class StreamMessageActionsBuilder { ); } - if (canReceiveReadEvents) { + // Mark unread action is only available for other users' messages. + if (canReceiveReadEvents && !isSentByCurrentUser) { StreamContextMenuAction markUnreadAction() { return StreamContextMenuAction( value: MarkUnread(message: message), @@ -164,7 +165,7 @@ class StreamMessageActionsBuilder { } // If the message is in the channel view, only other user messages can be // marked unread. - else if (!isSentByCurrentUser && (!isThreadMessage || canShowInChannel)) { + else if (!isThreadMessage || canShowInChannel) { messageActions.add(markUnreadAction()); } } diff --git a/packages/stream_chat_flutter/test/src/message_action/message_actions_builder_test.dart b/packages/stream_chat_flutter/test/src/message_action/message_actions_builder_test.dart index 427dd53215..00b288f2b5 100644 --- a/packages/stream_chat_flutter/test/src/message_action/message_actions_builder_test.dart +++ b/packages/stream_chat_flutter/test/src/message_action/message_actions_builder_test.dart @@ -488,6 +488,37 @@ void main() { reason: 'Mark unread unavailable without read events capability', ); }); + + testWidgets( + 'excludes mark unread action for own messages even if parent message', + (tester) async { + final context = await _getContext(tester); + + final channelWithReadEvents = _getChannelWithCapabilities([ + ChannelCapability.sendMessage, + ChannelCapability.sendReply, + ChannelCapability.readEvents, + ]); + + final ownParentMessage = createTestMessage( + userId: currentUser.id, + replyCount: 5, + ); + + final actions = StreamMessageActionsBuilder.buildActions( + context: context, + message: ownParentMessage, + channel: channelWithReadEvents, + currentUser: currentUser, + ); + + actions.notExpects( + reason: + 'Mark unread should not be available for own messages, ' + 'even if it is a parent message', + ); + }, + ); }); group('buildBouncedErrorActions', () {