From 170fee6967c174607c044ee927a8621b4df1e318 Mon Sep 17 00:00:00 2001 From: Nuno Vieira Date: Tue, 27 May 2025 17:56:16 +0100 Subject: [PATCH 1/5] Fix failed edited message not showing the error indicator --- .../ChatChannel/MessageList/MessageListHelperViews.swift | 3 +-- .../ChatChannel/MessageList/MessageViewModel.swift | 2 +- .../Utils/Common/ChatMessage+Extensions.swift | 8 +++++++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageListHelperViews.swift b/Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageListHelperViews.swift index 03f6a8d99..b0e243be9 100644 --- a/Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageListHelperViews.swift +++ b/Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageListHelperViews.swift @@ -141,8 +141,7 @@ public struct MessageReadIndicatorView: View { } private var isMessageSending: Bool { - localState == .sending - || localState == .pendingSend + localState == .sending || localState == .pendingSend || localState == .syncing } } diff --git a/Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageViewModel.swift b/Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageViewModel.swift index 103b3740e..abf0e5201 100644 --- a/Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageViewModel.swift +++ b/Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageViewModel.swift @@ -57,7 +57,7 @@ open class MessageViewModel: ObservableObject { } public var failureIndicatorShown: Bool { - ((message.localState == .sendingFailed || message.isBounced) && !message.text.isEmpty) + message.isLastActionFailed && !message.text.isEmpty } open var authorAndDateShown: Bool { diff --git a/Sources/StreamChatSwiftUI/Utils/Common/ChatMessage+Extensions.swift b/Sources/StreamChatSwiftUI/Utils/Common/ChatMessage+Extensions.swift index a44103587..41362caed 100644 --- a/Sources/StreamChatSwiftUI/Utils/Common/ChatMessage+Extensions.swift +++ b/Sources/StreamChatSwiftUI/Utils/Common/ChatMessage+Extensions.swift @@ -18,7 +18,13 @@ public extension ChatMessage { /// A boolean value that checks if the last action (`send`, `edit` or `delete`) on the message failed. var isLastActionFailed: Bool { - guard isDeleted == false else { return false } + guard isDeleted == false else { + return false + } + + if isBounced { + return true + } switch localState { case .sendingFailed, .syncingFailed, .deletingFailed: From b0c0d695a504f05389792a2f05d5c1929c744b80 Mon Sep 17 00:00:00 2001 From: Nuno Vieira Date: Tue, 27 May 2025 18:45:07 +0100 Subject: [PATCH 2/5] Fix failed edited message shown read indicator --- .../ChatChannel/MessageList/MessageListHelperViews.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageListHelperViews.swift b/Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageListHelperViews.swift index b0e243be9..9c978e2e4 100644 --- a/Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageListHelperViews.swift +++ b/Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageListHelperViews.swift @@ -124,7 +124,7 @@ public struct MessageReadIndicatorView: View { .customizable() .foregroundColor(!readUsers.isEmpty ? colors.tintColor : Color(colors.textLowEmphasis)) .frame(height: 16) - .opacity(localState == .sendingFailed ? 0.0 : 1) + .opacity(localState == .sendingFailed || localState == .syncingFailed ? 0.0 : 1) .accessibilityLabel( Text( readUsers.isEmpty ? L10n.Message.ReadStatus.seenByNoOne : L10n.Message.ReadStatus.seenByOthers From 76a4059cf13e94e83285d25ef4f950cc4d4c102e Mon Sep 17 00:00:00 2001 From: Nuno Vieira Date: Tue, 27 May 2025 18:45:31 +0100 Subject: [PATCH 3/5] Fix editing local message not showing update instantly --- .../ChatChannel/MessageList/MessageView.swift | 8 +++----- .../ChatChannel/MessageList/MessageViewModel.swift | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageView.swift b/Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageView.swift index d99591ec0..30dbad471 100644 --- a/Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageView.swift +++ b/Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageView.swift @@ -259,16 +259,13 @@ public struct LinkDetectionTextView: View { @Injected(\.utils) var utils var message: ChatMessage - - var text: LocalizedStringKey { - LocalizedStringKey(message.adjustedText) - } // The translations store is used to detect changes so the textContent is re-rendered. // The @Environment(\.messageViewModel) is not reactive like @EnvironmentObject. // TODO: On v5 the TextView should be refactored and not depend directly on the view model. @ObservedObject var originalTranslationsStore = InjectedValues[\.utils].originalTranslationsStore + @State var text: AttributedString? @State var linkDetector = TextLinkDetector() @State var tintColor = InjectedValues[\.colors].tintColor @@ -280,13 +277,14 @@ public struct LinkDetectionTextView: View { public var body: some View { Group { - Text(displayText) + Text(text ?? displayText) } .foregroundColor(textColor(for: message)) .font(fonts.body) .tint(tintColor) .onChange(of: message) { message in messageViewModel?.message = message + text = displayText } } diff --git a/Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageViewModel.swift b/Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageViewModel.swift index abf0e5201..b02d42e6a 100644 --- a/Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageViewModel.swift +++ b/Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageViewModel.swift @@ -10,7 +10,7 @@ open class MessageViewModel: ObservableObject { @Injected(\.utils) private var utils @Injected(\.chatClient) private var chatClient - public internal(set) var message: ChatMessage + @Published public internal(set) var message: ChatMessage public private(set) var channel: ChatChannel? private var cancellables = Set() From 12a51fd778bf9305988e713f2bde705dfb0f9793 Mon Sep 17 00:00:00 2001 From: Nuno Vieira Date: Tue, 27 May 2025 19:06:42 +0100 Subject: [PATCH 4/5] Add test coverage --- .../MessageContainerView_Tests.swift | 36 ++++++++++++++++++ .../MessageReadIndicatorView_Tests.swift | 26 +++++++++++++ ...ContainerView_editingFailed_snapshot.1.png | Bin 0 -> 34096 bytes ...ContainerView_sendingFailed_snapshot.1.png | Bin 0 -> 34096 bytes ...torView_snapshotMessageEditingFailed.1.png | Bin 0 -> 3793 bytes ...ageReadIndicatorView_snapshotSyncing.1.png | Bin 0 -> 2740 bytes 6 files changed, 62 insertions(+) create mode 100644 StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageContainerView_Tests/test_messageContainerView_editingFailed_snapshot.1.png create mode 100644 StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageContainerView_Tests/test_messageContainerView_sendingFailed_snapshot.1.png create mode 100644 StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageReadIndicatorView_Tests/test_messageReadIndicatorView_snapshotMessageEditingFailed.1.png create mode 100644 StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageReadIndicatorView_Tests/test_messageReadIndicatorView_snapshotSyncing.1.png diff --git a/StreamChatSwiftUITests/Tests/ChatChannel/MessageContainerView_Tests.swift b/StreamChatSwiftUITests/Tests/ChatChannel/MessageContainerView_Tests.swift index 560d91db9..2afea3e2a 100644 --- a/StreamChatSwiftUITests/Tests/ChatChannel/MessageContainerView_Tests.swift +++ b/StreamChatSwiftUITests/Tests/ChatChannel/MessageContainerView_Tests.swift @@ -167,6 +167,42 @@ class MessageContainerView_Tests: StreamChatTestCase { assertSnapshot(matching: view, as: .image(perceptualPrecision: precision)) } + func test_messageContainerView_sendingFailed_snapshot() { + // Given + let message = ChatMessage.mock( + id: .unique, + cid: .unique, + text: "Test message", + author: .mock(id: .unique), + attachments: [], + localState: .sendingFailed + ) + + // When + let view = testMessageViewContainer(message: message, channel: .mockNonDMChannel()) + + // Then + assertSnapshot(matching: view, as: .image(perceptualPrecision: precision)) + } + + func test_messageContainerView_editingFailed_snapshot() { + // Given + let message = ChatMessage.mock( + id: .unique, + cid: .unique, + text: "Test message", + author: .mock(id: .unique), + attachments: [], + localState: .syncingFailed + ) + + // When + let view = testMessageViewContainer(message: message, channel: .mockNonDMChannel()) + + // Then + assertSnapshot(matching: view, as: .image(perceptualPrecision: precision)) + } + func test_videoAttachment_snapshotNoText() { // Given let attachment = ChatChannelTestHelpers.videoAttachment diff --git a/StreamChatSwiftUITests/Tests/ChatChannel/MessageReadIndicatorView_Tests.swift b/StreamChatSwiftUITests/Tests/ChatChannel/MessageReadIndicatorView_Tests.swift index 9d709e433..3f83ef912 100644 --- a/StreamChatSwiftUITests/Tests/ChatChannel/MessageReadIndicatorView_Tests.swift +++ b/StreamChatSwiftUITests/Tests/ChatChannel/MessageReadIndicatorView_Tests.swift @@ -72,6 +72,19 @@ class MessageReadIndicatorView_Tests: StreamChatTestCase { assertSnapshot(matching: view, as: .image(perceptualPrecision: precision)) } + func test_messageReadIndicatorView_snapshotSyncing() { + // Given + let view = MessageReadIndicatorView( + readUsers: [], + showReadCount: false, + localState: .syncing + ) + .frame(width: 50, height: 16) + + // Then + assertSnapshot(matching: view, as: .image(perceptualPrecision: precision)) + } + func test_messageReadIndicatorView_snapshotMessageFailed() { // Given let view = MessageReadIndicatorView( @@ -84,4 +97,17 @@ class MessageReadIndicatorView_Tests: StreamChatTestCase { // Then assertSnapshot(matching: view, as: .image(perceptualPrecision: precision)) } + + func test_messageReadIndicatorView_snapshotMessageEditingFailed() { + // Given + let view = MessageReadIndicatorView( + readUsers: [], + showReadCount: false, + localState: .syncingFailed + ) + .frame(width: 50, height: 16) + + // Then + assertSnapshot(matching: view, as: .image(perceptualPrecision: precision)) + } } diff --git a/StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageContainerView_Tests/test_messageContainerView_editingFailed_snapshot.1.png b/StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageContainerView_Tests/test_messageContainerView_editingFailed_snapshot.1.png new file mode 100644 index 0000000000000000000000000000000000000000..0ed7c0c69c636e83f3bd9a7adfd3a0a15e2c5baa GIT binary patch literal 34096 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 j_{REuIX;O^RPie@Ridh;B)07d`a)rL{wjy zG?DeTv$_)np$32U3zVOpvi1^oo;jy#@$_G3W&2l};%-jqfA z=3kBgGi79`7GLLmx&uaxh&aNIw{kf7b+HB~`Tm^P7N42F!u@?ZWsU827F~hTb>2?>)%||OpP+mV@!0tL7rF{P=_QxZ zOFFf-iJTNQ!kvBo9{wNZxST`Mq;jbJ6grzp#(H(?+d9>d`tRI)jrDgqJ#3<2#`@9b zy3Vn4;IZee3c8Bw-*1l*CC2&!xL04X{T?K79--LKAdNz4MAs6Kt$x*uVQ%bTCct!7 z8}PARM8@5h8>lX(sh~(NeU>yuKC$9F{-clUCfFtiQP z8cnQ>-)_$)`ZP)pwfA&j6MB{j6to2eqd9fkjpfwr<>U*GUakML1bbaS6xHzd@a1YO zb;U1{yMi%Gd>i?}zVJsQS)a{>g3Qh(UrK-;C>RJ>8Zyj`Kbhn&8pCPr7P-PJ1i{9D ztM25Kbpm*m$vDP|1Gf{rlIoc{l^llHEN*~vPBtcm6!Z)H5Dp;WS2@F#!#B0sdgYJOf-#voG8GMv!X@ul#mGFr)UA

&)HwrzGMZlwaLt}L3!6G8g41Sx$`Zn`f)k+$WLq8=eIn~^S{j8 zKUMw>Qs%pmRo2RMTKIYgRoG7!;Ja$ihLiQw0j6GRduAMf&QxV$Qa#U>AVB~331Z|o z-z17=$5h+}vSbJ2xn`Nwgms*5!ANyy2Bg#_CfR#j_^`Z6c7Qvihg@Rn4F| zG$q=ZLROaiG^-Z=zNA-IWeJA~Efz2#&P)z+ChTip9qKdNoeyE?X>(LL-FNf80gFk^ z^5m4z)Fm0q$w>a*N0wCTE*zr?8~RlIN-syWsRZ@tzd7yYa|*xZ)zjQATkW{#N1H=k z2IWMph%Zpma&>OTf-DX!?svW7k)xyS%Is%98#P(J2AhI+wSuP;4=C6A<23bK3-v|6 zGxy@egJpk>&pKB&i!G-7Brw%kQ#FLcgWsc?)Oq#1ZKKf|s;|Wyh*1=Kj->63HiXdN z(q>INwRZ0JbxyzEydmn7svSoK61vATR(ey|0QxlrZD^*#sU0b2Xf`!e70BO)7gURe z(Mp65pzbV03!AY76P~wIN`>=~Q{?lVBSf5|XZR%$!W}wj~P`Fiu4o7X82pp%)6BFdMTqN?(#|u z_w)uviZ+zcq>FL#sNxYycjdVVHO&j@a1STF3_0v;=^8q5nt}FODG_;=vi8zy_Hr(( z2&--OsfZ)zDnGu;gmFI*Yqq`$$@(wZeatC+C{Zh=Py6ul^ly_E+AuJR{yT*Pu{vS4 z6f)5`L-($*#qB2)F%)i2le>H^JoHFCDalaB)EIKUb-0Gi?8<oTR_~x1a5kA z`e-D6d~n?ELo@WG<>_ZGgJDfcql9AXkDrbA&_A@{MoU)eI(cPnW?{|OkShtI4-o|f z^E^GMv1N`|ais9qu-7Y852z`r%cv9Bp0hgX(dc>cCymM!ywU@``N0Zht$TCU9T&e9 zU&Y=AWOJqW>Hw8U&AN>}{nMTLl>Kp*XH&-^0tc5}_&zKC)hliGab4ZxF9lS3X9>UF zma+!=PTUEYSeR8A4Q)7+Kaf9oNog2IPKoS-#f>w6Nz+UFnx>dmb}s>XY=eW6Jfx_w zg63Akj6j8T8+_+V=WMXNdQ4zpeFv=UNOy~X1Dws6ZJrI6Kk=6H&TN1*lzBtFF1E|J zh34MP?9?>7R5=Z!S!Sy0ed@z-%NvQ<>fWCS?au{B{`s02zl0T4;nD|*<3`2o#aji) zg3N*dun#+YmM!qupIO0L*}-4auEj1&BHOmIk=_<=*HtN330l1SRQxmHXVs^l94XR|yE3Mv_gL+zZmTTq!Zt#5LQ-MC7ni%Z?Y^V(;}*3vCHc_pmYR5% zy!ZgN9`4T}3-=`9RY?1|mWM6ZhsXPAu;~{kr!!}d&btJlGx|{B)1d>^ z&5OC=dDGpXkv&it=*ISD@p^IPPR~J)5BH5!yHGeowH%5+kt>7kG|&;87)U4lNob?k zao*A1*ZVjBl)Dv;r{ornxSJRk^^L*)^=b5X3PrZqXuT+_D0`}LN<)fyx?`RNAr<9N z(_n`v>&|UNN>WtsMlVwmXqMSaqWSG2%Nm26@TL(^P)P))eP}8@Bt4daMQ(I{LY4{r zh^tRv>fu5X`E55^`kk!YS#j$QOV=<$n0_)j6&&TS5vY+fQ1^h1?H021F(ju8E*bm% zbH5N>_@vmxpu!NI$(+?7Q{gg}VGtl>rw=k@`3QQPC}S@BMD|=b#@JpK;~6`h`bPxx zQOV?94(w&tEN~R-eB&cxwBm@sxW}Yb7%_FyTBFz#m)|iWlzhgJ6~6l zWKsIFT-x;CwS%1ZbfBXLU71}E2Do0{-tT(v{}6+|#PZ$fLR&lA7+;3??ay>=v9y&f zTV9&=eJU>vZH{VQjj2*;eRwi?Q3NrRlsK?&2vPLI1fRt-X^K6sn6QJi{P|gmEMvDC zx3(_7b{RaBTQBRj^oEpStZEuu?7la3A3fhnuL^6{tj_-e(>iL6$8xavgkq4NahurX z!6T@6gT>R3gZkfFP$++c{Di`Ug*X3Gv6dMsvFF@SaLs!kY;EDt*ZdsLv?MCc=?aH1hW8Q|k zh~n%E(Tj<1X}Ehqrlv~pE2ECgIJbh~_ZMoH7vmM>Qw-~bLw8j7f?9E8SX!_|u!Fn% z!4u`ng6V`9NtlCI<7z<3e(l~GR&1q;vyJ`P(M0`-=aPe)L)!?~{L3}H{&*;;cwxJ- zt9cR*eReUM8>vhbwEis)-UZLSu%!LYJ#p!I*mfKk9K^Xrwc~Xmf-7#O#n9$mieH?0 zThB^PIFxchR7DK`4*|!&+MM9- z|9S`kfEW+J-{T7J20X;$Z_VKG_y0dkh$8&gk%l7rS4;i19xOA+gNkKk{#Nu-R2D&CXm0FIG{{gmh B^8o+= literal 0 HcmV?d00001 diff --git a/StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageReadIndicatorView_Tests/test_messageReadIndicatorView_snapshotSyncing.1.png b/StreamChatSwiftUITests/Tests/ChatChannel/__Snapshots__/MessageReadIndicatorView_Tests/test_messageReadIndicatorView_snapshotSyncing.1.png new file mode 100644 index 0000000000000000000000000000000000000000..567c11648da773f3fda74cc9daaaeda9b57a824e GIT binary patch literal 2740 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 Date: Tue, 27 May 2025 19:19:30 +0100 Subject: [PATCH 5/5] Update CHANGELOG.md --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a8183de9..30df0aaf4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Fix mark unread action not removed when read events are disabled [#823](https://github.com/GetStream/stream-chat-swiftui/pull/823) - Fix user mentions not working when commands are disabled [#826](https://github.com/GetStream/stream-chat-swiftui/pull/826) - Fix edit message action shown when user does not have permissions [#835](https://github.com/GetStream/stream-chat-swiftui/pull/835) +- Fix error indicator not shown when editing a message fails [#840](https://github.com/GetStream/stream-chat-swiftui/pull/840) +- Fix read indicator shown for failed edited messages [#840](https://github.com/GetStream/stream-chat-swiftui/pull/840) +- Fix "clock" pending icon not shown when message is syncing (pending to be edited) [#840](https://github.com/GetStream/stream-chat-swiftui/pull/840) # [4.78.0](https://github.com/GetStream/stream-chat-swiftui/releases/tag/4.78.0) _April 24, 2025_