@@ -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