From ddc9d474d2d636ca37bba42b2929894c0b0437bb Mon Sep 17 00:00:00 2001 From: Daniel Cardona Rojas Date: Fri, 19 Sep 2025 06:00:26 -0500 Subject: [PATCH 1/2] Fix race condition when clearing text (#955) --- .../ChatChannel/Composer/MessageComposerViewModel.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/Sources/StreamChatSwiftUI/ChatChannel/Composer/MessageComposerViewModel.swift b/Sources/StreamChatSwiftUI/ChatChannel/Composer/MessageComposerViewModel.swift index 40723d73..0a2e089d 100644 --- a/Sources/StreamChatSwiftUI/ChatChannel/Composer/MessageComposerViewModel.swift +++ b/Sources/StreamChatSwiftUI/ChatChannel/Composer/MessageComposerViewModel.swift @@ -743,7 +743,6 @@ open class MessageComposerViewModel: ObservableObject { } private func clearInputData() { - text = "" addedAssets = [] addedFileURLs = [] addedVoiceRecordings = [] From 9692c6cda457896a80def55ecb543bda3cac0a3f Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Fri, 19 Sep 2025 12:02:48 +0100 Subject: [PATCH 2/2] Adjust tests and add a changelog entry --- CHANGELOG.md | 1 + .../MessageComposerViewModel_Tests.swift | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f88fad8a..fc1bcedc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Fix replacing an image while editing a message not showing the new image in the message list [#956](https://github.com/GetStream/stream-chat-swiftui/pull/956) - Improve precision when scrolling to the newest message with long text [#958](https://github.com/GetStream/stream-chat-swiftui/pull/958) - Fix draft attachments being sent with local file urls to the server [#964](https://github.com/GetStream/stream-chat-swiftui/pull/964) +- Fix race condition when clearing text in a regular TextField [#955](https://github.com/GetStream/stream-chat-swiftui/pull/955) ### 🔄 Changed - Change the gallery header view to show the message timestamp instead of online status [#962](https://github.com/GetStream/stream-chat-swiftui/pull/962) diff --git a/StreamChatSwiftUITests/Tests/ChatChannel/MessageComposerViewModel_Tests.swift b/StreamChatSwiftUITests/Tests/ChatChannel/MessageComposerViewModel_Tests.swift index e78154c0..17623396 100644 --- a/StreamChatSwiftUITests/Tests/ChatChannel/MessageComposerViewModel_Tests.swift +++ b/StreamChatSwiftUITests/Tests/ChatChannel/MessageComposerViewModel_Tests.swift @@ -996,8 +996,12 @@ class MessageComposerViewModel_Tests: StreamChatTestCase { viewModel.sendMessage(quotedMessage: nil, editedMessage: nil) {} // Then - // Sending a message will clear the input, deleting the draft message. - XCTAssertEqual(channelController.deleteDraftMessage_callCount, 1) + let expectation = XCTestExpectation(description: "Text cleared") + DispatchQueue.main.asyncAfter(deadline: .now() + 0.15) { + XCTAssertEqual(channelController.deleteDraftMessage_callCount, 1) + expectation.fulfill() + } + wait(for: [expectation], timeout: 1.0) } func test_messageComposerVM_whenMessagePublished_deleteDraftReply() { @@ -1020,7 +1024,12 @@ class MessageComposerViewModel_Tests: StreamChatTestCase { viewModel.sendMessage(quotedMessage: nil, editedMessage: nil) {} // Then - XCTAssertEqual(messageController.deleteDraftReply_callCount, 1) + let expectation = XCTestExpectation(description: "Text cleared") + DispatchQueue.main.asyncAfter(deadline: .now() + 0.15) { + XCTAssertEqual(messageController.deleteDraftReply_callCount, 1) + expectation.fulfill() + } + wait(for: [expectation], timeout: 1.0) } func test_messageComposerVM_draftMessageUpdatedEvent() throws {