From dc751cf584869f559d08e38103e58d6364675845 Mon Sep 17 00:00:00 2001 From: Mauro Romito Date: Fri, 14 Oct 2022 12:49:13 +0200 Subject: [PATCH 1/4] opacity transition implemented --- .../WysiwygInputToolbarView.swift | 2 +- .../Modules/Room/Composer/View/Composer.swift | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Riot/Modules/Room/Views/WYSIWYGInputToolbar/WysiwygInputToolbarView.swift b/Riot/Modules/Room/Views/WYSIWYGInputToolbar/WysiwygInputToolbarView.swift index 957968eb8..4313add91 100644 --- a/Riot/Modules/Room/Views/WYSIWYGInputToolbar/WysiwygInputToolbarView.swift +++ b/Riot/Modules/Room/Views/WYSIWYGInputToolbar/WysiwygInputToolbarView.swift @@ -38,7 +38,7 @@ class WysiwygInputToolbarView: MXKRoomInputToolbarView, NibLoadable, HtmlRoomInp private var heightConstraint: NSLayoutConstraint! private var hostingViewController: VectorHostingController! private var wysiwygViewModel = WysiwygComposerViewModel(textColor: ThemeService.shared().theme.colors.primaryContent) - private var viewModel: ComposerViewModelProtocol! = ComposerViewModel(initialViewState: ComposerViewState()) + private var viewModel: ComposerViewModelProtocol = ComposerViewModel(initialViewState: ComposerViewState()) // MARK: Public diff --git a/RiotSwiftUI/Modules/Room/Composer/View/Composer.swift b/RiotSwiftUI/Modules/Room/Composer/View/Composer.swift index 8d459d77b..e4b74bc29 100644 --- a/RiotSwiftUI/Modules/Room/Composer/View/Composer.swift +++ b/RiotSwiftUI/Modules/Room/Composer/View/Composer.swift @@ -26,7 +26,7 @@ struct Composer: View { @Environment(\.theme) private var theme: ThemeSwiftUI @State private var focused = false - @State private var showSendButton = false + @State private var isActionButtonEnabled = false private let horizontalPadding: CGFloat = 12 private let borderHeight: CGFloat = 44 @@ -161,20 +161,18 @@ struct Composer: View { } label: { if viewModel.viewState.sendMode == .edit { Image(Asset.Images.saveIcon.name) - .foregroundColor(theme.colors.tertiaryContent) } else { Image(Asset.Images.sendIcon.name) - .foregroundColor(theme.colors.tertiaryContent) } } + .disabled(!isActionButtonEnabled) + .opacity(isActionButtonEnabled ? 1 : 0.3) + .animation(.easeInOut(duration: 0.25), value: isActionButtonEnabled) .accessibilityIdentifier(actionButtonAccessibilityIdentifier) .accessibilityLabel(VectorL10n.send) - .isHidden(!showSendButton) } .onChange(of: wysiwygViewModel.isContentEmpty) { empty in - withAnimation(.easeInOut(duration: 0.25)) { - showSendButton = !empty - } + isActionButtonEnabled = !empty } } .padding(.horizontal, 16) From 158a4bf9493b07192052bc405c72af220e99e74e Mon Sep 17 00:00:00 2001 From: Mauro Romito Date: Fri, 14 Oct 2022 12:53:33 +0200 Subject: [PATCH 2/4] 0.15 animation --- RiotSwiftUI/Modules/Room/Composer/View/Composer.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RiotSwiftUI/Modules/Room/Composer/View/Composer.swift b/RiotSwiftUI/Modules/Room/Composer/View/Composer.swift index e4b74bc29..d56b69ebd 100644 --- a/RiotSwiftUI/Modules/Room/Composer/View/Composer.swift +++ b/RiotSwiftUI/Modules/Room/Composer/View/Composer.swift @@ -167,7 +167,7 @@ struct Composer: View { } .disabled(!isActionButtonEnabled) .opacity(isActionButtonEnabled ? 1 : 0.3) - .animation(.easeInOut(duration: 0.25), value: isActionButtonEnabled) + .animation(.easeInOut(duration: 0.15), value: isActionButtonEnabled) .accessibilityIdentifier(actionButtonAccessibilityIdentifier) .accessibilityLabel(VectorL10n.send) } From f64a77f5a5d17dde75a0e5458378e59aa109eb6d Mon Sep 17 00:00:00 2001 From: Mauro Romito Date: Fri, 14 Oct 2022 13:04:32 +0200 Subject: [PATCH 3/4] updated UI tests --- .../Room/Composer/Test/UI/ComposerUITests.swift | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/RiotSwiftUI/Modules/Room/Composer/Test/UI/ComposerUITests.swift b/RiotSwiftUI/Modules/Room/Composer/Test/UI/ComposerUITests.swift index 7ddb1b337..1a37c020b 100644 --- a/RiotSwiftUI/Modules/Room/Composer/Test/UI/ComposerUITests.swift +++ b/RiotSwiftUI/Modules/Room/Composer/Test/UI/ComposerUITests.swift @@ -25,10 +25,11 @@ final class ComposerUITests: MockScreenTestCase { let wysiwygTextView = app.textViews.allElementsBoundByIndex[0] XCTAssertTrue(wysiwygTextView.exists) let sendButton = app.buttons["sendButton"] - XCTAssertFalse(sendButton.exists) + XCTAssertTrue(sendButton.exists) + XCTAssertFalse(sendButton.isEnabled) wysiwygTextView.tap() wysiwygTextView.typeText("test") - XCTAssertTrue(sendButton.exists) + XCTAssertTrue(sendButton.isEnabled) XCTAssertFalse(app.buttons["editButton"].exists) } @@ -38,7 +39,8 @@ final class ComposerUITests: MockScreenTestCase { let wysiwygTextView = app.textViews.allElementsBoundByIndex[0] XCTAssertTrue(wysiwygTextView.exists) let sendButton = app.buttons["sendButton"] - XCTAssertFalse(sendButton.exists) + XCTAssertTrue(sendButton.exists) + XCTAssertFalse(sendButton.isEnabled) let cancelButton = app.buttons["cancelButton"] XCTAssertTrue(cancelButton.exists) @@ -49,7 +51,7 @@ final class ComposerUITests: MockScreenTestCase { wysiwygTextView.tap() wysiwygTextView.typeText("test") - XCTAssertTrue(sendButton.exists) + XCTAssertTrue(sendButton.isEnabled) XCTAssertFalse(app.buttons["editButton"].exists) cancelButton.tap() @@ -64,7 +66,8 @@ final class ComposerUITests: MockScreenTestCase { let wysiwygTextView = app.textViews.allElementsBoundByIndex[0] XCTAssertTrue(wysiwygTextView.exists) let editButton = app.buttons["editButton"] - XCTAssert(!editButton.exists) + XCTAssertTrue(editButton.exists) + XCTAssertFalse(editButton.isEnabled) let cancelButton = app.buttons["cancelButton"] XCTAssertTrue(cancelButton.exists) @@ -75,7 +78,7 @@ final class ComposerUITests: MockScreenTestCase { wysiwygTextView.tap() wysiwygTextView.typeText("test") - XCTAssertTrue(editButton.exists) + XCTAssertTrue(editButton.isEnabled) XCTAssertFalse(app.buttons["sendButton"].exists) cancelButton.tap() From 188c17d0c5885b361bec2b4f0f7f9b8904fa5d21 Mon Sep 17 00:00:00 2001 From: Mauro Romito Date: Fri, 14 Oct 2022 13:21:10 +0200 Subject: [PATCH 4/4] project yml with the latest working version of the package --- project.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.yml b/project.yml index 95fa810e9..6544a8e8f 100644 --- a/project.yml +++ b/project.yml @@ -53,7 +53,7 @@ packages: branch: main WysiwygComposer: url: https://github.com/matrix-org/matrix-wysiwyg-composer-swift - branch: main + revision: b945a33cea78fb36a386d4ef7f1934b00b1d445c DeviceKit: url: https://github.com/devicekit/DeviceKit majorVersion: 4.7.0