From dc36db17ff101bc6406a0f84ee5abc34ce8703e7 Mon Sep 17 00:00:00 2001 From: Nuno Vieira Date: Tue, 6 May 2025 19:17:44 +0100 Subject: [PATCH 1/4] Fix mark unread action not removed when read events are disabled --- .../DefaultMessageActions.swift | 2 +- .../ChatChannel/MessageActions_Tests.swift | 35 +++++++++++++++++-- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/Sources/StreamChatSwiftUI/ChatChannel/Reactions/MessageActions/DefaultMessageActions.swift b/Sources/StreamChatSwiftUI/ChatChannel/Reactions/MessageActions/DefaultMessageActions.swift index 8dc7cc287..8a0e9912d 100644 --- a/Sources/StreamChatSwiftUI/ChatChannel/Reactions/MessageActions/DefaultMessageActions.swift +++ b/Sources/StreamChatSwiftUI/ChatChannel/Reactions/MessageActions/DefaultMessageActions.swift @@ -131,7 +131,7 @@ public extension MessageAction { ) messageActions.append(markThreadUnreadAction) } - } else if !message.isSentByCurrentUser { + } else if !message.isSentByCurrentUser && channel.canReceiveReadEvents { if !message.isPartOfThread || message.showReplyInChannel { let markUnreadAction = markAsUnreadAction( for: message, diff --git a/StreamChatSwiftUITests/Tests/ChatChannel/MessageActions_Tests.swift b/StreamChatSwiftUITests/Tests/ChatChannel/MessageActions_Tests.swift index 83e10a087..fd474938b 100644 --- a/StreamChatSwiftUITests/Tests/ChatChannel/MessageActions_Tests.swift +++ b/StreamChatSwiftUITests/Tests/ChatChannel/MessageActions_Tests.swift @@ -72,7 +72,38 @@ class MessageActions_Tests: StreamChatTestCase { XCTAssert(messageActions[4].title == "Mark Unread") XCTAssert(messageActions[5].title == "Mute User") } - + + func test_messageActions_otherUserDefaultReadEventsDisabled() { + // Given + let channel = ChatChannel.mockDMChannel(ownCapabilities: [.sendMessage, .uploadFile, .pinMessage]) + let message = ChatMessage.mock( + id: .unique, + cid: channel.cid, + text: "Test", + author: .mock(id: .unique), + isSentByCurrentUser: false + ) + let factory = DefaultViewFactory.shared + + // When + let messageActions = MessageAction.defaultActions( + factory: factory, + for: message, + channel: channel, + chatClient: chatClient, + onFinish: { _ in }, + onError: { _ in } + ) + + // Then + XCTAssert(messageActions.count == 5) + XCTAssert(messageActions[0].title == "Reply") + XCTAssert(messageActions[1].title == "Thread Reply") + XCTAssert(messageActions[2].title == "Pin to conversation") + XCTAssert(messageActions[3].title == "Copy Message") + XCTAssert(messageActions[4].title == "Mute User") + } + func test_messageActions_otherUserDefaultBlockingEnabled() { // Given streamChat = StreamChat( @@ -297,7 +328,7 @@ class MessageActions_Tests: StreamChatTestCase { private var mockDMChannel: ChatChannel { ChatChannel.mockDMChannel( - ownCapabilities: [.sendMessage, .uploadFile, .pinMessage] + ownCapabilities: [.sendMessage, .uploadFile, .pinMessage, .readEvents] ) } } From e39e9059b5699848b571e7c2cc8ed5286d2208c9 Mon Sep 17 00:00:00 2001 From: Nuno Vieira Date: Tue, 6 May 2025 19:21:25 +0100 Subject: [PATCH 2/4] Update CHANGELOG.md --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7dbb00b89..35bb5d67c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### ✅ Added - Add extra data to user display info [#819](https://github.com/GetStream/stream-chat-swiftui/pull/819) +### 🐞 Fixed +- Fix mark unread action not removed when read events are disabled #823 # [4.78.0](https://github.com/GetStream/stream-chat-swiftui/releases/tag/4.78.0) _April 24, 2025_ From bc745fc4c32806f32d5e79cbf60e32cfbfbc8eac Mon Sep 17 00:00:00 2001 From: Nuno Vieira Date: Tue, 6 May 2025 19:21:39 +0100 Subject: [PATCH 3/4] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 35bb5d67c..1e729d119 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### ✅ Added - Add extra data to user display info [#819](https://github.com/GetStream/stream-chat-swiftui/pull/819) ### 🐞 Fixed -- Fix mark unread action not removed when read events are disabled #823 +- Fix mark unread action not removed when read events are disabled [#823](https://github.com/GetStream/stream-chat-swiftui/pull/823) # [4.78.0](https://github.com/GetStream/stream-chat-swiftui/releases/tag/4.78.0) _April 24, 2025_ From 86236fb52a7c72f373b263332cb7bb4f8272e3db Mon Sep 17 00:00:00 2001 From: Nuno Vieira Date: Wed, 7 May 2025 12:36:24 +0100 Subject: [PATCH 4/4] Fix unit tests --- .../Tests/ChatChannel/MessageActionsViewModel_Tests.swift | 2 +- .../Tests/ChatChannel/ReactionsOverlayView_Tests.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/StreamChatSwiftUITests/Tests/ChatChannel/MessageActionsViewModel_Tests.swift b/StreamChatSwiftUITests/Tests/ChatChannel/MessageActionsViewModel_Tests.swift index 20e07d4d6..3daff5bf7 100644 --- a/StreamChatSwiftUITests/Tests/ChatChannel/MessageActionsViewModel_Tests.swift +++ b/StreamChatSwiftUITests/Tests/ChatChannel/MessageActionsViewModel_Tests.swift @@ -20,7 +20,7 @@ class MessageActionsViewModel_Tests: StreamChatTestCase { text: "test", author: .mock(id: .unique) ), - channel: .mockDMChannel(ownCapabilities: [.sendMessage, .uploadFile, .pinMessage]), + channel: .mockDMChannel(ownCapabilities: [.sendMessage, .uploadFile, .pinMessage, .readEvents]), chatClient: chatClient, onFinish: { _ in }, onError: { _ in } diff --git a/StreamChatSwiftUITests/Tests/ChatChannel/ReactionsOverlayView_Tests.swift b/StreamChatSwiftUITests/Tests/ChatChannel/ReactionsOverlayView_Tests.swift index 03c4f6dbd..7832063a2 100644 --- a/StreamChatSwiftUITests/Tests/ChatChannel/ReactionsOverlayView_Tests.swift +++ b/StreamChatSwiftUITests/Tests/ChatChannel/ReactionsOverlayView_Tests.swift @@ -136,7 +136,7 @@ class ReactionsOverlayView_Tests: StreamChatTestCase { let view = VerticallyCenteredView { ReactionsOverlayView( factory: DefaultViewFactory.shared, - channel: .mockDMChannel(ownCapabilities: [.sendMessage, .uploadFile, .pinMessage]), + channel: .mockDMChannel(ownCapabilities: [.sendMessage, .uploadFile, .pinMessage, .readEvents]), currentSnapshot: self.overlayImage, messageDisplayInfo: messageDisplayInfo, onBackgroundTap: {},