edit is displayed in the WYSIWYG, but the send button still sends a new message instead of correcting the edit

This commit is contained in:
Mauro Romito
2022-10-07 18:35:13 +02:00
parent 36122591cf
commit c99d5ffcd2
4 changed files with 28 additions and 4 deletions
@@ -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
+10 -1
View File
@@ -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)];
@@ -33,8 +33,16 @@ class SelfSizingHostingController<Content>: UIHostingController<Content> 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
}