Skip to content

Commit c311919

Browse files
Fixed bug with ephemeral messages
1 parent e0a7164 commit c311919

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

Sources/StreamChatSwiftUI/ChatChannel/ChatChannelViewModel.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,8 @@ open class ChatChannelViewModel: ObservableObject, MessagesDataSource {
397397
return .animated
398398
case let .update(message, index: index):
399399
if index.row < messages.count,
400-
message.messageId != messages[index.row].messageId {
400+
message.messageId != messages[index.row].messageId
401+
|| message.type == .ephemeral {
401402
skipChanges = false
402403
}
403404
default:

StreamChatSwiftUITests/Tests/ChatChannel/ChatChannelViewModel_Tests.swift

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,41 @@ class ChatChannelViewModel_Tests: StreamChatTestCase {
261261
XCTAssert(initial[0].messageId == after[0].messageId)
262262
}
263263

264+
func test_chatChannelVM_ephemeral() {
265+
// Given
266+
let channelController = makeChannelController()
267+
let viewModel = ChatChannelViewModel(channelController: channelController)
268+
let messageId = String.unique
269+
let message = ChatMessage.mock(
270+
id: messageId,
271+
cid: .unique,
272+
text: "Some text",
273+
author: .mock(id: .unique)
274+
)
275+
let newMessage = ChatMessage.mock(
276+
id: messageId,
277+
cid: .unique,
278+
text: "Some text",
279+
type: .ephemeral,
280+
author: .mock(id: .unique)
281+
)
282+
283+
// When
284+
channelController.simulate(
285+
messages: [message],
286+
changes: [.update(message, index: .init(row: 0, section: 0))]
287+
)
288+
let initial = viewModel.messages
289+
channelController.simulate(
290+
messages: [newMessage],
291+
changes: [.update(newMessage, index: .init(row: 0, section: 0))]
292+
)
293+
let after = viewModel.messages
294+
295+
// Then
296+
XCTAssert(initial[0].type != after[0].type)
297+
}
298+
264299
func test_chatChannelVM_animatedChanges() {
265300
// Given
266301
let channelController = makeChannelController()

0 commit comments

Comments
 (0)