From d2e5e947dbcb8a37a54228c15603a936a896d0ec Mon Sep 17 00:00:00 2001 From: yostyle Date: Thu, 3 Oct 2024 14:01:22 +0200 Subject: [PATCH] Replace agentconnect by proconnect --- .../src/main/res/values-fr/strings.xml | 2 +- .../src/main/res/values-fr/strings_tchap.xml | 3 +- .../src/main/res/values/strings.xml | 2 +- .../src/main/res/values/strings_tchap.xml | 3 +- .../res/drawable/ic_tchap_agentconnect.xml | 10 --- .../main/res/drawable/ic_tchap_proconnect.xml | 34 ++++++++ .../debug/features/DebugVectorFeatures.kt | 2 + .../src/btchap/res/values/config-features.xml | 1 + .../devTchap/res/values/config-features.xml | 1 + .../src/tchap/res/values/config-features.xml | 1 + .../im/vector/app/features/VectorFeatures.kt | 2 + .../im/vector/app/features/login/SignMode.kt | 2 +- .../ftueauth/AbstractFtueAuthFragment.kt | 3 +- .../ftueauth/FtueAuthLoginFragment.kt | 55 ++++++++----- .../ftueauth/FtueAuthSplashFragment.kt | 19 +++-- vector/src/main/res/layout/fragment_login.xml | 81 +++++++++++-------- .../res/layout/fragment_tchap_welcome.xml | 23 +++--- 17 files changed, 155 insertions(+), 89 deletions(-) delete mode 100644 library/ui-styles/src/main/res/drawable/ic_tchap_agentconnect.xml create mode 100644 library/ui-styles/src/main/res/drawable/ic_tchap_proconnect.xml diff --git a/library/ui-strings/src/main/res/values-fr/strings.xml b/library/ui-strings/src/main/res/values-fr/strings.xml index 65e56f47f8..b380a479a1 100644 --- a/library/ui-strings/src/main/res/values-fr/strings.xml +++ b/library/ui-strings/src/main/res/values-fr/strings.xml @@ -1054,7 +1054,7 @@ S’authentifier sur %1$s Je m’inscris Je me connecte - Continuer avec AgentConnect + Continuer avec %s Adresse Element Matrix Services Adresse Hébergement privé pour les organisations diff --git a/library/ui-strings/src/main/res/values-fr/strings_tchap.xml b/library/ui-strings/src/main/res/values-fr/strings_tchap.xml index ac64aa8035..df5dec1793 100644 --- a/library/ui-strings/src/main/res/values-fr/strings_tchap.xml +++ b/library/ui-strings/src/main/res/values-fr/strings_tchap.xml @@ -78,8 +78,7 @@ Se connecter par mot de passe La messagerie instantanée du secteur public - S’identifier avec \nAgentConnect - ➜ Qu’est-ce que AgentConnect ? + ➜ Qu’est-ce que %s ? Adresse mail professionnelle Utilisez votre adresse professionnelle Votre mot de passe doit contenir au moins 8 caractères, avec au moins un caractère de chaque type : majuscule, minuscule, chiffre, caractère spécial. diff --git a/library/ui-strings/src/main/res/values/strings.xml b/library/ui-strings/src/main/res/values/strings.xml index 3bca8e05b4..6250091d5c 100644 --- a/library/ui-strings/src/main/res/values/strings.xml +++ b/library/ui-strings/src/main/res/values/strings.xml @@ -2127,7 +2127,7 @@ Sign in to %1$s Sign Up Sign In - Continue with SSO + Continue with %s Clear history Element Matrix Services Address diff --git a/library/ui-strings/src/main/res/values/strings_tchap.xml b/library/ui-strings/src/main/res/values/strings_tchap.xml index cf48ef357e..2b9d1c49f8 100644 --- a/library/ui-strings/src/main/res/values/strings_tchap.xml +++ b/library/ui-strings/src/main/res/values/strings_tchap.xml @@ -78,8 +78,7 @@ Login by password Instant messaging of public sector - Authenticate with \nAgentConnect - ➜ What is AgentConnect ? + ➜ What is %s ? Professional email Use your business address Your password must include a lower-case letter, an upper-case letter, a number and a symbol and be at a minimum 8 characters in length. diff --git a/library/ui-styles/src/main/res/drawable/ic_tchap_agentconnect.xml b/library/ui-styles/src/main/res/drawable/ic_tchap_agentconnect.xml deleted file mode 100644 index e83f6298dd..0000000000 --- a/library/ui-styles/src/main/res/drawable/ic_tchap_agentconnect.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/library/ui-styles/src/main/res/drawable/ic_tchap_proconnect.xml b/library/ui-styles/src/main/res/drawable/ic_tchap_proconnect.xml new file mode 100644 index 0000000000..225b46e561 --- /dev/null +++ b/library/ui-styles/src/main/res/drawable/ic_tchap_proconnect.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + diff --git a/vector-app/src/debug/java/im/vector/app/features/debug/features/DebugVectorFeatures.kt b/vector-app/src/debug/java/im/vector/app/features/debug/features/DebugVectorFeatures.kt index 6a3b20899a..f0fba975ae 100644 --- a/vector-app/src/debug/java/im/vector/app/features/debug/features/DebugVectorFeatures.kt +++ b/vector-app/src/debug/java/im/vector/app/features/debug/features/DebugVectorFeatures.kt @@ -52,6 +52,8 @@ class DebugVectorFeatures( override fun tchapIsSecureBackupRequired() = vectorFeatures.tchapIsSecureBackupRequired() + override fun tchapIsSSOEnabled() = vectorFeatures.tchapIsSSOEnabled() + override fun onboardingVariant(): OnboardingVariant { return readPreferences().getEnum() ?: vectorFeatures.onboardingVariant() } diff --git a/vector-config/src/btchap/res/values/config-features.xml b/vector-config/src/btchap/res/values/config-features.xml index 60e0cb1865..f5041ac0a0 100755 --- a/vector-config/src/btchap/res/values/config-features.xml +++ b/vector-config/src/btchap/res/values/config-features.xml @@ -4,6 +4,7 @@ true false true + false diff --git a/vector-config/src/devTchap/res/values/config-features.xml b/vector-config/src/devTchap/res/values/config-features.xml index 60e0cb1865..c890574e82 100755 --- a/vector-config/src/devTchap/res/values/config-features.xml +++ b/vector-config/src/devTchap/res/values/config-features.xml @@ -4,6 +4,7 @@ true false true + true diff --git a/vector-config/src/tchap/res/values/config-features.xml b/vector-config/src/tchap/res/values/config-features.xml index 54960855f6..4dc7bee4bc 100755 --- a/vector-config/src/tchap/res/values/config-features.xml +++ b/vector-config/src/tchap/res/values/config-features.xml @@ -4,6 +4,7 @@ true false true + false agent.dinum.tchap.gouv.fr diff --git a/vector/src/main/java/im/vector/app/features/VectorFeatures.kt b/vector/src/main/java/im/vector/app/features/VectorFeatures.kt index f0b8a6c060..64029ac065 100644 --- a/vector/src/main/java/im/vector/app/features/VectorFeatures.kt +++ b/vector/src/main/java/im/vector/app/features/VectorFeatures.kt @@ -32,6 +32,7 @@ interface VectorFeatures { fun tchapIsThreadEnabled(): Boolean fun tchapIsLabsVisible(domain: String): Boolean fun tchapIsSecureBackupRequired(): Boolean + fun tchapIsSSOEnabled(): Boolean fun onboardingVariant(): OnboardingVariant fun isOnboardingAlreadyHaveAccountSplashEnabled(): Boolean fun isOnboardingSplashCarouselEnabled(): Boolean @@ -72,6 +73,7 @@ class DefaultVectorFeatures @Inject constructor( override fun tchapIsLabsVisible(domain: String) = booleanProvider.getBoolean(im.vector.app.config.R.bool.settings_root_labs_visible) || domain == appNameProvider.getAppName() override fun tchapIsSecureBackupRequired() = booleanProvider.getBoolean(im.vector.app.config.R.bool.tchap_is_secure_backup_required) + override fun tchapIsSSOEnabled() = booleanProvider.getBoolean(im.vector.app.config.R.bool.tchap_is_sso_enabled) override fun onboardingVariant() = Config.ONBOARDING_VARIANT override fun isOnboardingAlreadyHaveAccountSplashEnabled() = true override fun isOnboardingSplashCarouselEnabled() = false // TCHAP no carousel diff --git a/vector/src/main/java/im/vector/app/features/login/SignMode.kt b/vector/src/main/java/im/vector/app/features/login/SignMode.kt index 3f4885f373..336a0a7eef 100644 --- a/vector/src/main/java/im/vector/app/features/login/SignMode.kt +++ b/vector/src/main/java/im/vector/app/features/login/SignMode.kt @@ -23,7 +23,7 @@ enum class SignMode { // TCHAP Account creation TchapSignUp, - // TCHAP Login with AgentConnect + // TCHAP Login with SSO TchapSignInWithSSO, Unknown, diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/AbstractFtueAuthFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/AbstractFtueAuthFragment.kt index 50c54ccbd0..6ff552e706 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/AbstractFtueAuthFragment.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/AbstractFtueAuthFragment.kt @@ -169,6 +169,7 @@ abstract class AbstractFtueAuthFragment : VectorBaseFragment() { @Inject lateinit var buildMeta: BuildMeta + @Inject lateinit var vectorFeatures: VectorFeatures private val tchap = Tchap() @@ -245,18 +249,13 @@ class FtueAuthLoginFragment : views.loginServerIcon.isVisible = false views.loginNotice.isVisible = false if (state.signMode == SignMode.TchapSignInWithSSO) { - views.passwordFieldTil.isVisible = false - views.loginTitle.text = getString(resId, "AgentConnect") - views.loginACHelp.isVisible = true - views.loginSubmit.setLeftDrawable(im.vector.lib.ui.styles.R.drawable.ic_tchap_agentconnect) + views.loginTitle.text = getString(resId, TCHAP_SSO_PROVIDER) } else { views.loginTitle.text = getString(resId, buildMeta.applicationName) - views.loginACHelp.isVisible = false } } } views.loginPasswordNotice.isVisible = false - views.loginSocialLoginContainer.isVisible = false // TCHAP hide SSO container if (state.selectedHomeserver.preferredLoginMode is LoginMode.SsoAndPassword) { views.loginSocialLoginButtons.render(state.selectedHomeserver.preferredLoginMode, ssoMode(state)) { provider -> @@ -286,10 +285,8 @@ class FtueAuthLoginFragment : SignMode.TchapSignIn, SignMode.SignIn, SignMode.SignInWithMatrixId -> CommonStrings.login_signin - } + }, TCHAP_SSO_PROVIDER ) - - views.loginACHelp.debouncedClicks { openUrlInExternalBrowser(requireContext(), TCHAP_AGENTCONNECT_URL) } } private fun setupSubmitButton() = withState(viewModel) { state -> @@ -298,7 +295,7 @@ class FtueAuthLoginFragment : views.loginField.textChanges().map { it.trim().isNotEmpty() }, views.passwordField.textChanges().map { it.isNotEmpty() } ) { isLoginNotEmpty, isPasswordNotEmpty -> - (isLoginNotEmpty && isPasswordNotEmpty) || state.signMode == SignMode.TchapSignInWithSSO + (isLoginNotEmpty && isPasswordNotEmpty) || state.signMode == SignMode.TchapSignInWithSSO && views.loginField.text?.isEmail().orFalse() } .onEach { views.loginFieldTil.error = null @@ -369,15 +366,35 @@ class FtueAuthLoginFragment : fun setupUi(state: OnboardingViewState) { this@FtueAuthLoginFragment.setupUi(state) // call "super" method - if (state.signMode == SignMode.TchapSignUp) { - views.loginFieldTil.isHelperTextEnabled = true - views.passwordFieldTil.isHelperTextEnabled = true - views.tchapPasswordConfirmationFieldTil.isVisible = true - } else { - views.loginFieldTil.isHelperTextEnabled = false - views.passwordFieldTil.isHelperTextEnabled = false - views.tchapPasswordConfirmationFieldTil.isVisible = false - views.passwordField.imeOptions = EditorInfo.IME_ACTION_DONE + + val isSignUpMode = state.signMode == SignMode.TchapSignUp + views.loginFieldTil.isHelperTextEnabled = isSignUpMode + views.passwordFieldTil.isHelperTextEnabled = isSignUpMode + views.tchapPasswordConfirmationFieldTil.isVisible = isSignUpMode + views.loginSocialLoginContainer.isVisible = isSignUpMode && vectorFeatures.tchapIsSSOEnabled() + + when(state.signMode) { + SignMode.TchapSignUp -> { + views.loginSSOSubmit.text = getString(CommonStrings.login_signin_sso, TCHAP_SSO_PROVIDER) + views.loginSSOSubmit.debouncedClicks { + viewModel.handle( + OnboardingAction.SplashAction.OnIAlreadyHaveAnAccount( + onboardingFlow = OnboardingFlow.TchapSignInWithSSO + ) + ) + } + } + SignMode.TchapSignInWithSSO -> { + views.passwordFieldTil.isVisible = false + views.loginSSOHelp.text = getString(CommonStrings.tchap_connection_sso_help, TCHAP_SSO_PROVIDER) + views.loginSSOHelp.debouncedClicks { openUrlInExternalBrowser(requireContext(), TCHAP_SSO_URL) } + views.loginSSOHelp.isVisible = true + views.loginSubmit.setLeftDrawable(im.vector.lib.ui.styles.R.drawable.ic_tchap_proconnect) + } + else -> { + views.passwordField.imeOptions = EditorInfo.IME_ACTION_DONE + views.loginSSOHelp.isVisible = false + } } } diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashFragment.kt index 3ee30c6e01..0224c8b946 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashFragment.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashFragment.kt @@ -17,7 +17,11 @@ package im.vector.app.features.onboarding.ftueauth import android.annotation.SuppressLint +import android.graphics.Typeface import android.os.Bundle +import android.text.Spannable +import android.text.SpannableString +import android.text.style.StyleSpan import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -56,13 +60,18 @@ class FtueAuthSplashFragment : private fun setupViews() { // TCHAP Login with SSO val isAlreadyHaveAccountEnabled = vectorFeatures.isOnboardingAlreadyHaveAccountSplashEnabled() - views.loginSplashAC.apply { - isVisible = isAlreadyHaveAccountEnabled + views.loginSplashSSO.apply { + val spannable = SpannableString(getString(CommonStrings.login_social_signin_with, TCHAP_SSO_PROVIDER)) + spannable.setSpan(StyleSpan(Typeface.BOLD), spannable.length - TCHAP_SSO_PROVIDER.length, spannable.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + + text = spannable + isVisible = isAlreadyHaveAccountEnabled && vectorFeatures.tchapIsSSOEnabled() debouncedClicks { alreadyHaveAnAccountWithSSO() } } - views.loginSplashACHelp.apply { - isVisible = isAlreadyHaveAccountEnabled - debouncedClicks { openUrlInExternalBrowser(requireContext(), TCHAP_AGENTCONNECT_URL) } + views.loginSplashSSOHelp.apply { + text = getString(CommonStrings.tchap_connection_sso_help, TCHAP_SSO_PROVIDER) + isVisible = isAlreadyHaveAccountEnabled && vectorFeatures.tchapIsSSOEnabled() + debouncedClicks { openUrlInExternalBrowser(requireContext(), TCHAP_SSO_URL) } } views.loginSplashSubmit.apply { setText(if (isAlreadyHaveAccountEnabled) CommonStrings.login_splash_create_account else CommonStrings.login_splash_submit) diff --git a/vector/src/main/res/layout/fragment_login.xml b/vector/src/main/res/layout/fragment_login.xml index 9bb7fa04e7..a0dbd372fa 100644 --- a/vector/src/main/res/layout/fragment_login.xml +++ b/vector/src/main/res/layout/fragment_login.xml @@ -43,11 +43,53 @@ android:textColor="?vctr_content_secondary" tools:text="@string/login_server_matrix_org_text" /> + + + +