mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-29 07:42:40 +00:00
edit reply completed, just need to polish the UI a bit more.
This commit is contained in:
parent
f76959ee40
commit
16b480d3da
4 changed files with 56 additions and 27 deletions
|
@ -195,6 +195,7 @@ static CGSize kThreadListBarButtonItemImageSize;
|
|||
@property (nonatomic, strong) RoomContextualMenuPresenter *roomContextualMenuPresenter;
|
||||
@property (nonatomic, strong) MXKErrorAlertPresentation *errorPresenter;
|
||||
@property (nonatomic, strong) NSAttributedString *textMessageBeforeEditing;
|
||||
@property (nonatomic, strong) NSString *htmlTextBeforeEditing;
|
||||
@property (nonatomic, strong) EditHistoryCoordinatorBridgePresenter *editHistoryPresenter;
|
||||
@property (nonatomic, strong) MXKDocumentPickerPresenter *documentPickerPresenter;
|
||||
@property (nonatomic, strong) EmojiPickerCoordinatorBridgePresenter *emojiPickerCoordinatorBridgePresenter;
|
||||
|
@ -4614,12 +4615,11 @@ static CGSize kThreadListBarButtonItemImageSize;
|
|||
{
|
||||
MXEvent *event = [self.roomDataSource eventWithEventId:eventId];
|
||||
|
||||
if ([self inputToolbarConformsToHtmlToolbarViewProtocol]) {
|
||||
// TODO: reimplemented the following line when the cancel UI button is implemented in the WYSIWYG toolbar
|
||||
self.textMessageBeforeEditing = self.inputToolbarView.attributedTextMessage;
|
||||
|
||||
if ([self inputToolbarConformsToHtmlToolbarViewProtocol])
|
||||
{
|
||||
MXKRoomInputToolbarView <HtmlRoomInputToolbarViewProtocol> *htmlInputToolBarView = (MXKRoomInputToolbarView <HtmlRoomInputToolbarViewProtocol> *) self.inputToolbarView;
|
||||
[htmlInputToolBarView setHtmlWithContent: [self.customizedRoomDataSource editableHtmlTextMessageFor:event]];
|
||||
self.htmlTextBeforeEditing = htmlInputToolBarView.htmlContent;
|
||||
htmlInputToolBarView.htmlContent = [self.customizedRoomDataSource editableHtmlTextMessageFor:event];
|
||||
}
|
||||
else if ([self inputToolbarConformsToToolbarViewProtocol])
|
||||
{
|
||||
|
@ -4633,12 +4633,19 @@ static CGSize kThreadListBarButtonItemImageSize;
|
|||
- (void)restoreTextMessageBeforeEditing
|
||||
{
|
||||
|
||||
if (self.textMessageBeforeEditing && [self inputToolbarConformsToToolbarViewProtocol])
|
||||
|
||||
if (self.htmlTextBeforeEditing && [self inputToolbarConformsToHtmlToolbarViewProtocol])
|
||||
{
|
||||
MXKRoomInputToolbarView <HtmlRoomInputToolbarViewProtocol> *htmlInputToolBarView = (MXKRoomInputToolbarView <HtmlRoomInputToolbarViewProtocol> *) self.inputToolbarView;
|
||||
htmlInputToolBarView.htmlContent = self.htmlTextBeforeEditing;
|
||||
}
|
||||
else if (self.textMessageBeforeEditing && [self inputToolbarConformsToToolbarViewProtocol])
|
||||
{
|
||||
self.inputToolbarView.attributedTextMessage = self.textMessageBeforeEditing;
|
||||
}
|
||||
|
||||
self.textMessageBeforeEditing = nil;
|
||||
self.htmlTextBeforeEditing = nil;
|
||||
}
|
||||
|
||||
- (BOOL)inputToolbarConformsToHtmlToolbarViewProtocol
|
||||
|
@ -4966,7 +4973,7 @@ static CGSize kThreadListBarButtonItemImageSize;
|
|||
}
|
||||
}
|
||||
|
||||
- (void)roomInputToolbarViewDidTapCancel:(RoomInputToolbarView*)toolbarView
|
||||
- (void)roomInputToolbarViewDidTapCancel:(MXKRoomInputToolbarView<RoomInputToolbarViewProtocol>*)toolbarView
|
||||
{
|
||||
[self cancelEventSelection];
|
||||
}
|
||||
|
|
|
@ -34,19 +34,34 @@ class SelfSizingHostingController<Content>: UIHostingController<Content> where C
|
|||
}
|
||||
|
||||
@objc protocol HtmlRoomInputToolbarViewProtocol: RoomInputToolbarViewProtocol {
|
||||
@objc func setHtml(content: String)
|
||||
@objc var htmlContent: String { get set }
|
||||
}
|
||||
|
||||
class WysiwygInputToolbarView: MXKRoomInputToolbarView, NibLoadable, HtmlRoomInputToolbarViewProtocol {
|
||||
var htmlContent: String {
|
||||
get {
|
||||
self.hostingViewController.rootView.wysiwygViewModel.content.html
|
||||
}
|
||||
set {
|
||||
self.hostingViewController.rootView.wysiwygViewModel.setHtmlContent(newValue)
|
||||
}
|
||||
}
|
||||
|
||||
var eventSenderDisplayName: String! {
|
||||
didSet {
|
||||
viewModel.setEventSenderDisplayName(eventSenderDisplayName)
|
||||
get {
|
||||
viewModel.eventSenderDisplayName
|
||||
}
|
||||
set {
|
||||
viewModel.eventSenderDisplayName = newValue
|
||||
}
|
||||
}
|
||||
var sendMode: RoomInputToolbarViewSendMode = .send {
|
||||
didSet {
|
||||
viewModel.setSendMode(sendMode)
|
||||
|
||||
var sendMode: RoomInputToolbarViewSendMode {
|
||||
get {
|
||||
viewModel.sendMode
|
||||
}
|
||||
set {
|
||||
viewModel.sendMode = newValue
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -118,10 +133,6 @@ class WysiwygInputToolbarView: MXKRoomInputToolbarView, NibLoadable, HtmlRoomInp
|
|||
self.backgroundColor = .clear
|
||||
}
|
||||
|
||||
func setHtml(content: String) {
|
||||
hostingViewController.rootView.wysiwygViewModel.setHtmlContent(content)
|
||||
}
|
||||
|
||||
func setVoiceMessageToolbarView(_ voiceMessageToolbarView: UIView!) {
|
||||
//TODO embed the voice messages UI
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ import SwiftUI
|
|||
typealias ComposerViewModelType = StateStoreViewModel<ComposerViewState, ComposerViewAction>
|
||||
|
||||
class ComposerViewModel: ComposerViewModelType, ComposerViewModelProtocol {
|
||||
|
||||
// MARK: - Properties
|
||||
|
||||
// MARK: Private
|
||||
|
@ -26,14 +27,25 @@ class ComposerViewModel: ComposerViewModelType, ComposerViewModelProtocol {
|
|||
// MARK: Public
|
||||
var callback: ((ComposerViewModelResult) -> Void)?
|
||||
|
||||
// MARK: - Public
|
||||
func setSendMode(_ sendMode: RoomInputToolbarViewSendMode) {
|
||||
state.sendMode = sendMode
|
||||
var sendMode: RoomInputToolbarViewSendMode {
|
||||
get {
|
||||
state.sendMode
|
||||
}
|
||||
set {
|
||||
state.sendMode = newValue
|
||||
}
|
||||
}
|
||||
|
||||
func setEventSenderDisplayName(_ eventSenderDisplayName: String?) {
|
||||
state.eventSenderDisplayName = eventSenderDisplayName
|
||||
var eventSenderDisplayName: String? {
|
||||
get {
|
||||
state.eventSenderDisplayName
|
||||
}
|
||||
set {
|
||||
state.eventSenderDisplayName = newValue
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Public
|
||||
|
||||
override func process(viewAction: ComposerViewAction) {
|
||||
switch viewAction {
|
||||
|
|
|
@ -19,7 +19,6 @@ import Foundation
|
|||
protocol ComposerViewModelProtocol {
|
||||
var context: ComposerViewModelType.Context { get }
|
||||
var callback: ((ComposerViewModelResult) -> Void)? { get set }
|
||||
|
||||
func setSendMode(_ sendMode: RoomInputToolbarViewSendMode)
|
||||
func setEventSenderDisplayName(_ eventSenderDisplayName: String?)
|
||||
var sendMode: RoomInputToolbarViewSendMode { get set }
|
||||
var eventSenderDisplayName: String? { get set }
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue