diff --git a/Riot.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Riot.xcworkspace/xcshareddata/swiftpm/Package.resolved index 9d74b7e21..e3f945b3a 100644 --- a/Riot.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Riot.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -15,7 +15,7 @@ "location" : "https://github.com/matrix-org/matrix-wysiwyg-composer-swift", "state" : { "branch" : "main", - "revision" : "37251f58e863b4aa35698dd7cd22b222893667ce" + "revision" : "532183124d973b8432694f29bce3619d184fe1a7" } }, { diff --git a/Riot/Modules/Room/DataSources/RoomDataSource.swift b/Riot/Modules/Room/DataSources/RoomDataSource.swift index f058ad689..4401b3215 100644 --- a/Riot/Modules/Room/DataSources/RoomDataSource.swift +++ b/Riot/Modules/Room/DataSources/RoomDataSource.swift @@ -222,8 +222,11 @@ extension RoomDataSource { return editableTextMessage } - + @objc func editableHtmlTextMessage(for event: MXEvent) -> String? { + let body: String = event.content["formatted_body"] as? String ?? event.content["body"] as? String ?? "" + return body + } } // MARK: - Private Helpers diff --git a/Riot/Modules/Room/RoomViewController.m b/Riot/Modules/Room/RoomViewController.m index 041d3a845..628314841 100644 --- a/Riot/Modules/Room/RoomViewController.m +++ b/Riot/Modules/Room/RoomViewController.m @@ -4630,7 +4630,11 @@ static CGSize kThreadListBarButtonItemImageSize; { MXEvent *event = [self.roomDataSource eventWithEventId:eventId]; - if ([self inputToolbarConformsToToolbarViewProtocol]) + if ([self inputToolbarConformsToHtmlToolbarViewProtocol]) { + self.textMessageBeforeEditing = self.inputToolbarView.attributedTextMessage; + [self.inputToolbarView setHtmlWithContent: [self.customizedRoomDataSource editableHtmlTextMessageFor:event]]; + } + else if ([self inputToolbarConformsToToolbarViewProtocol]) { self.textMessageBeforeEditing = self.inputToolbarView.attributedTextMessage; self.inputToolbarView.attributedTextMessage = [self.customizedRoomDataSource editableAttributedTextMessageFor:event]; @@ -4650,6 +4654,11 @@ static CGSize kThreadListBarButtonItemImageSize; self.textMessageBeforeEditing = nil; } +- (BOOL)inputToolbarConformsToHtmlToolbarViewProtocol +{ + return [self.inputToolbarView conformsToProtocol:@protocol(HtmlRoomInputToolbarViewProtocol)]; +} + - (BOOL)inputToolbarConformsToToolbarViewProtocol { return [self.inputToolbarView conformsToProtocol:@protocol(RoomInputToolbarViewProtocol)]; diff --git a/Riot/Modules/Room/Views/WYSIWYGInputToolbar/WysiwygInputToolbarView.swift b/Riot/Modules/Room/Views/WYSIWYGInputToolbar/WysiwygInputToolbarView.swift index 292beb260..b92bde13b 100644 --- a/Riot/Modules/Room/Views/WYSIWYGInputToolbar/WysiwygInputToolbarView.swift +++ b/Riot/Modules/Room/Views/WYSIWYGInputToolbar/WysiwygInputToolbarView.swift @@ -33,8 +33,16 @@ class SelfSizingHostingController: UIHostingController where C } } +@objc extension MXKRoomInputToolbarView { + func setHtml(content: String) {} +} + +@objc protocol HtmlRoomInputToolbarViewProtocol: RoomInputToolbarViewProtocol { + @objc func setHtml(content: String) +} + @available(iOS 16.0, *) -class WysiwygInputToolbarView: MXKRoomInputToolbarView, NibLoadable, RoomInputToolbarViewProtocol { +class WysiwygInputToolbarView: MXKRoomInputToolbarView, NibLoadable, HtmlRoomInputToolbarViewProtocol { override class func instantiate() -> MXKRoomInputToolbarView! { return loadFromNib() @@ -93,6 +101,10 @@ class WysiwygInputToolbarView: MXKRoomInputToolbarView, NibLoadable, RoomInputTo self.backgroundColor = .clear } + override func setHtml(content: String) { + hostingViewController.rootView.viewModel.setHtmlContent(content) + } + func setVoiceMessageToolbarView(_ voiceMessageToolbarView: UIView!) { //TODO embed the voice messages UI }