Skip to content

Commit 5f7faa6

Browse files
authored
Fix composer deleting newly entered text after deleting draft text (#1030)
* Fix new input text in the composer deleted after quickly deleting previous text from draft * Update CHANGELOG.md
1 parent 308a1d3 commit 5f7faa6

File tree

3 files changed

+2
-77
lines changed

3 files changed

+2
-77
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
33

44
# Upcoming
55

6-
### 🔄 Changed
6+
### 🐞 Fixed
7+
- Fix composer deleting newly entered text after deleting draft text [#1030](https://github.com/GetStream/stream-chat-swiftui/pull/1030)
78

89
# [4.91.0](https://github.com/GetStream/stream-chat-swiftui/releases/tag/4.91.0)
910
_October 22, 2025_

Sources/StreamChatSwiftUI/ChatChannel/Composer/MessageComposerViewModel.swift

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -908,14 +908,6 @@ extension MessageComposerViewModel: EventsControllerDelegate {
908908
fillDraftMessage()
909909
}
910910
}
911-
912-
if let event = event as? DraftDeletedEvent {
913-
let isFromSameThread = messageController?.messageId == event.threadId
914-
let isFromSameChannel = channelController.cid == event.cid && messageController == nil
915-
if isFromSameThread || isFromSameChannel {
916-
clearInputData()
917-
}
918-
}
919911
}
920912
}
921913

StreamChatSwiftUITests/Tests/ChatChannel/MessageComposerViewModel_Tests.swift

Lines changed: 0 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1109,74 +1109,6 @@ class MessageComposerViewModel_Tests: StreamChatTestCase {
11091109
XCTAssertEqual(viewModel.text, "Draft")
11101110
}
11111111

1112-
func test_messageComposerVM_draftMessageDeletedEvent() throws {
1113-
// Given
1114-
let channelController = makeChannelController()
1115-
channelController.channel_mock = .mock(cid: .unique, draftMessage: .mock(text: "Draft"))
1116-
let viewModel = makeComposerDraftsViewModel(
1117-
channelController: channelController,
1118-
messageController: nil
1119-
)
1120-
1121-
// When
1122-
channelController.channel_mock = .mock(cid: .unique, draftMessage: nil)
1123-
let cid = try XCTUnwrap(channelController.cid)
1124-
let event = DraftDeletedEvent(cid: cid, threadId: nil, createdAt: .unique)
1125-
viewModel.eventsController(viewModel.eventsController, didReceiveEvent: event)
1126-
1127-
// Then
1128-
XCTAssertEqual(viewModel.text, "")
1129-
}
1130-
1131-
func test_messageComposerVM_draftReplyDeletedEvent() throws {
1132-
// Given
1133-
let channelController = makeChannelController()
1134-
let messageController = ChatMessageControllerSUI_Mock.mock(
1135-
chatClient: chatClient,
1136-
cid: channelController.cid!,
1137-
messageId: .unique
1138-
)
1139-
messageController.message_mock = .mock(draftReply: .mock(text: "Draft"))
1140-
let viewModel = makeComposerDraftsViewModel(
1141-
channelController: channelController,
1142-
messageController: messageController
1143-
)
1144-
1145-
// When
1146-
messageController.message_mock = .mock(draftReply: nil)
1147-
let cid = try XCTUnwrap(channelController.cid)
1148-
let event = DraftDeletedEvent(cid: cid, threadId: messageController.messageId, createdAt: .unique)
1149-
viewModel.eventsController(viewModel.eventsController, didReceiveEvent: event)
1150-
1151-
// Then
1152-
XCTAssertEqual(viewModel.text, "")
1153-
}
1154-
1155-
func test_messageComposerVM_draftReplyDeletedEventFromOtherThread_shouldNotUpdate() throws {
1156-
// Given
1157-
let channelController = makeChannelController()
1158-
let messageController = ChatMessageControllerSUI_Mock.mock(
1159-
chatClient: chatClient,
1160-
cid: channelController.cid!,
1161-
messageId: .unique
1162-
)
1163-
messageController.message_mock = .mock(draftReply: .mock(text: "Draft"))
1164-
let viewModel = makeComposerDraftsViewModel(
1165-
channelController: channelController,
1166-
messageController: messageController
1167-
)
1168-
viewModel.fillDraftMessage()
1169-
1170-
// When
1171-
messageController.message_mock = .mock(draftReply: nil)
1172-
let cid = try XCTUnwrap(channelController.cid)
1173-
let event = DraftDeletedEvent(cid: cid, threadId: .unique, createdAt: .unique)
1174-
viewModel.eventsController(viewModel.eventsController, didReceiveEvent: event)
1175-
1176-
// Then
1177-
XCTAssertEqual(viewModel.text, "Draft")
1178-
}
1179-
11801112
func test_messageComposerVM_whenLastAssetRemoved_shouldDeleteDraft() {
11811113
// Given
11821114
let channelController = makeChannelController()

0 commit comments

Comments
 (0)