Skip to content

Commit 85d6ec5

Browse files
authored
Typing users did not update reliably in the message list because view model did not propagate channel changes to the view (#591)
1 parent e5c85bd commit 85d6ec5

File tree

3 files changed

+27
-4
lines changed

3 files changed

+27
-4
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
55

66
### 🔄 Changed
77

8+
### 🐞 Fixed
9+
- Typing users did not update reliably in the message list [#591](https://github.com/GetStream/stream-chat-swiftui/pull/591)
10+
811
# [4.62.0](https://github.com/GetStream/stream-chat-swiftui/releases/tag/4.62.0)
912
_August 16, 2024_
1013

Sources/StreamChatSwiftUI/ChatChannel/ChatChannelViewModel.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,7 @@ open class ChatChannelViewModel: ObservableObject, MessagesDataSource {
120120
}
121121
}
122122

123-
public var channel: ChatChannel? {
124-
channelController.channel
125-
}
123+
@Published public private(set) var channel: ChatChannel?
126124

127125
public var isMessageThread: Bool {
128126
messageController != nil
@@ -150,6 +148,7 @@ open class ChatChannelViewModel: ObservableObject, MessagesDataSource {
150148
}
151149
channelDataSource.delegate = self
152150
messages = channelDataSource.messages
151+
channel = channelController.channel
153152

154153
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in
155154
if let scrollToMessage, let parentMessageId = scrollToMessage.parentMessageId, messageController == nil {
@@ -445,6 +444,7 @@ open class ChatChannelViewModel: ObservableObject, MessagesDataSource {
445444
didUpdateChannel channel: EntityChange<ChatChannel>,
446445
channelController: ChatChannelController
447446
) {
447+
self.channel = channel.item
448448
checkReadIndicators(for: channel)
449449
checkTypingIndicator()
450450
checkHeaderType()

StreamChatSwiftUITests/Tests/ChatChannel/ChatChannelViewModel_Tests.swift

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,27 @@ import SwiftUI
88
import XCTest
99

1010
class ChatChannelViewModel_Tests: StreamChatTestCase {
11-
11+
func test_chatChannelVM_channelIsUpdated() {
12+
// Given
13+
let cid = ChannelId.unique
14+
let initialChannel = ChatChannel.mock(cid: cid)
15+
let channelController = makeChannelController()
16+
channelController.channel_mock = initialChannel
17+
let viewModel = ChatChannelViewModel(channelController: channelController)
18+
XCTAssertEqual(initialChannel, viewModel.channel)
19+
20+
// When
21+
let updatedChannel = ChatChannel.mock(cid: cid)
22+
channelController.channel_mock = updatedChannel
23+
channelController.delegate?.channelController(
24+
channelController,
25+
didUpdateChannel: .update(updatedChannel)
26+
)
27+
28+
// Then
29+
XCTAssertEqual(updatedChannel, viewModel.channel)
30+
}
31+
1232
func test_chatChannelVM_messagesLoaded() {
1333
// Given
1434
let channelController = makeChannelController()

0 commit comments

Comments
 (0)