Skip to content

Commit 1d4f7a7

Browse files
fixed bug with reactions in message threads
1 parent fc4fa1d commit 1d4f7a7

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

Sources/StreamChatSwiftUI/ChatChannel/ChatChannelDataSource.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,13 @@ class MessageThreadDataSource: ChannelDataSource, ChatMessageControllerDelegate
128128
delegate?.dataSource(channelDataSource: self, didUpdateMessages: controller.replies)
129129
}
130130

131+
func messageController(
132+
_ controller: ChatMessageController,
133+
didChangeMessage change: EntityChange<ChatMessage>
134+
) {
135+
delegate?.dataSource(channelDataSource: self, didUpdateMessages: controller.replies)
136+
}
137+
131138
func loadPreviousMessages(
132139
before messageId: MessageId?,
133140
limit: Int,

Sources/StreamChatSwiftUI/ChatChannel/ChatChannelView.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,10 @@ public struct ChatChannelView<Factory: ViewFactory>: View {
8787
: nil
8888
)
8989
.onAppear {
90-
viewModel.reactionsShown = false
90+
viewModel.onViewAppear()
91+
}
92+
.onDisappear {
93+
viewModel.onViewDissappear()
9194
}
9295
}
9396
}

Sources/StreamChatSwiftUI/ChatChannel/ChatChannelViewModel.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public class ChatChannelViewModel: ObservableObject, MessagesDataSource {
2727
currentDateString = messageListDateOverlay.string(from: currentDate)
2828
}
2929
}
30+
31+
private var isActive = true
3032

3133
private let messageListDateOverlay: DateFormatter = {
3234
let df = DateFormatter()
@@ -144,6 +146,10 @@ public class ChatChannelViewModel: ObservableObject, MessagesDataSource {
144146
channelDataSource: ChannelDataSource,
145147
didUpdateMessages messages: LazyCachedMapCollection<ChatMessage>
146148
) {
149+
if !isActive {
150+
return
151+
}
152+
147153
if let message = messageController?.message {
148154
var array = Array(messages)
149155
array.append(message)
@@ -182,6 +188,16 @@ public class ChatChannelViewModel: ObservableObject, MessagesDataSource {
182188
UIGraphicsEndImageContext()
183189
}
184190

191+
func onViewAppear() {
192+
reactionsShown = false
193+
isActive = true
194+
messages = channelDataSource.messages
195+
}
196+
197+
func onViewDissappear() {
198+
isActive = false
199+
}
200+
185201
// MARK: - private
186202

187203
private func checkForNewMessages(index: Int) {

0 commit comments

Comments
 (0)