Skip to content

Commit 9789941

Browse files
committed
Update composer draft message when draft is updated from event
1 parent dc51245 commit 9789941

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

Sources/StreamChatSwiftUI/ChatChannel/Composer/MessageComposerViewModel.swift

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,10 @@ open class MessageComposerViewModel: ObservableObject {
160160
}
161161

162162
@Published public var audioRecordingInfo = AudioRecordingInfo.initial
163-
163+
164164
public let channelController: ChatChannelController
165165
public var messageController: ChatMessageController?
166+
public let eventsController: EventsController
166167
public var quotedMessage: Binding<ChatMessage?>?
167168
public var waveformTargetSamples: Int = 100
168169
public internal(set) var pendingAudioRecording: AddedVoiceRecording?
@@ -219,10 +220,12 @@ open class MessageComposerViewModel: ObservableObject {
219220
public init(
220221
channelController: ChatChannelController,
221222
messageController: ChatMessageController?,
223+
eventsController: EventsController? = nil,
222224
quotedMessage: Binding<ChatMessage?>? = nil
223225
) {
224226
self.channelController = channelController
225227
self.messageController = messageController
228+
self.eventsController = eventsController ?? channelController.client.eventsController()
226229
self.quotedMessage = quotedMessage
227230

228231
if let messageController {
@@ -231,6 +234,8 @@ open class MessageComposerViewModel: ObservableObject {
231234
draftMessage = channelController.channel?.draftMessage
232235
}
233236

237+
self.eventsController.delegate = self
238+
234239
listenToCooldownUpdates()
235240

236241
NotificationCenter.default.addObserver(
@@ -828,3 +833,15 @@ open class MessageComposerViewModel: ObservableObject {
828833
}
829834
}
830835
}
836+
837+
extension MessageComposerViewModel: EventsControllerDelegate {
838+
public func eventsController(_ controller: EventsController, didReceiveEvent event: any Event) {
839+
if let event = event as? DraftUpdatedEvent, event.cid == channelController.cid {
840+
if let messageController = messageController, messageController.messageId == event.draftMessage.threadId {
841+
draftMessage = event.draftMessage
842+
return
843+
}
844+
draftMessage = event.draftMessage
845+
}
846+
}
847+
}

0 commit comments

Comments
 (0)