diff --git a/library/ui-strings/src/main/res/values-de/strings.xml b/library/ui-strings/src/main/res/values-de/strings.xml
index 38f1e47756d..32582889787 100644
--- a/library/ui-strings/src/main/res/values-de/strings.xml
+++ b/library/ui-strings/src/main/res/values-de/strings.xml
@@ -1057,7 +1057,8 @@
Los geht\'s
Wähle einen Server
Genau wie bei E-Mails haben Accounts ein Zuhause, auch wenn du mit jedem kommunizieren kannst
- Tausche dich aus - mit dem sicheren Messenger im kirchlichen Bereich
+ Folge Millionen Anderen kostenlos auf dem größten öffentlichen Server
+ Tausche dich aus - mit dem sicheren Messenger im kirchlichen Bereich
Premium-Hosting für Organisationen
Mehr erfahren
Andere
diff --git a/library/ui-strings/src/main/res/values/strings.xml b/library/ui-strings/src/main/res/values/strings.xml
index d40315697fa..09f12f3fe8b 100644
--- a/library/ui-strings/src/main/res/values/strings.xml
+++ b/library/ui-strings/src/main/res/values/strings.xml
@@ -2126,7 +2126,8 @@
Select a server
Just like email, accounts have one home, although you can talk to anyone
- Communicate - using the secure messenger for congregations
+ Join millions for free on the largest public server
+ Communicate - using the secure messenger for congregations
Premium hosting for organisations
Learn more
Other
diff --git a/vector-config/src/main/res/values/config.xml b/vector-config/src/main/res/values/config.xml
index 205a826c7f2..2928f1ebc0f 100755
--- a/vector-config/src/main/res/values/config.xml
+++ b/vector-config/src/main/res/values/config.xml
@@ -4,7 +4,8 @@
- https://synod.im
+ https://matrix.org
+ https://synod.im
https://bugs.synod.im
diff --git a/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt b/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt
index d22ea908564..e2c1ebcb51d 100644
--- a/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt
@@ -613,6 +613,16 @@ class HomeActivity :
override fun handlePrepareMenu(menu: Menu) {
menu.findItem(R.id.menu_home_init_sync_legacy).isVisible = vectorPreferences.developerMode()
menu.findItem(R.id.menu_home_init_sync_optimized).isVisible = vectorPreferences.developerMode()
+ // Changed for Synod.im: Disable bug reporting when on third party home server.
+ // Rage shake is still possible to keep the code changes minimal.
+ if (activeSessionHolder.hasActiveSession()) {
+ val homeServerUrlBase = activeSessionHolder.getActiveSession().sessionParams.homeServerUrlBase;
+ val defaultHomeServerUrl = getString(im.vector.app.config.R.string.synod_im_server_url)
+ if (homeServerUrlBase != defaultHomeServerUrl) {
+ menu.findItem(R.id.menu_home_report_bug).isVisible = false
+ menu.findItem(R.id.menu_home_suggestion).isVisible = false
+ }
+ }
}
override fun handleMenuItemSelected(item: MenuItem): Boolean {
diff --git a/vector/src/main/java/im/vector/app/features/homeserver/ServerUrlsRepository.kt b/vector/src/main/java/im/vector/app/features/homeserver/ServerUrlsRepository.kt
index d5a5fc8a602..bd3ae447d4f 100644
--- a/vector/src/main/java/im/vector/app/features/homeserver/ServerUrlsRepository.kt
+++ b/vector/src/main/java/im/vector/app/features/homeserver/ServerUrlsRepository.kt
@@ -80,5 +80,5 @@ class ServerUrlsRepository @Inject constructor(
/**
* Return default homeserver url from resources.
*/
- private fun getDefaultHomeServerUrl() = stringProvider.getString(im.vector.app.config.R.string.matrix_org_server_url)
+ private fun getDefaultHomeServerUrl() = stringProvider.getString(im.vector.app.config.R.string.synod_im_server_url)
}
diff --git a/vector/src/main/java/im/vector/app/features/login/LoginActivity.kt b/vector/src/main/java/im/vector/app/features/login/LoginActivity.kt
index cbf13acc986..67d098a79af 100644
--- a/vector/src/main/java/im/vector/app/features/login/LoginActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/login/LoginActivity.kt
@@ -247,6 +247,7 @@ open class LoginActivity : VectorBaseActivity(), UnlockedA
private fun onServerSelectionDone(loginViewEvents: LoginViewEvents.OnServerSelectionDone) {
when (loginViewEvents.serverType) {
ServerType.MatrixOrg -> Unit // In this case, we wait for the login flow
+ ServerType.SynodIm -> Unit // In this case, we wait for the login flow
ServerType.EMS,
ServerType.Other -> addFragmentToBackstack(
views.loginFragmentContainer,
diff --git a/vector/src/main/java/im/vector/app/features/login/LoginFragment.kt b/vector/src/main/java/im/vector/app/features/login/LoginFragment.kt
index 37cc3fc757c..b52bf969467 100644
--- a/vector/src/main/java/im/vector/app/features/login/LoginFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/login/LoginFragment.kt
@@ -171,12 +171,16 @@ class LoginFragment :
when (state.serverType) {
ServerType.MatrixOrg -> {
- // Changed for Synod.im: Hide matrix.org icon.
- views.loginServerIcon.isVisible = false
+ views.loginServerIcon.isVisible = true
views.loginServerIcon.setImageResource(R.drawable.ic_logo_matrix_org)
views.loginTitle.text = getString(resId, state.homeServerUrlFromUser.toReducedUrl())
views.loginNotice.text = getString(CommonStrings.login_server_matrix_org_text)
}
+ ServerType.SynodIm -> {
+ views.loginServerIcon.isVisible = false
+ views.loginTitle.text = getString(resId, state.homeServerUrlFromUser.toReducedUrl())
+ views.loginNotice.text = getString(CommonStrings.login_server_synod_im_text)
+ }
ServerType.EMS -> {
views.loginServerIcon.isVisible = true
views.loginServerIcon.setImageResource(R.drawable.ic_logo_element_matrix_services)
@@ -259,7 +263,7 @@ class LoginFragment :
override fun updateWithState(state: LoginViewState) {
isSignupMode = state.signMode == SignMode.SignUp
- isNumericOnlyUserIdForbidden = state.serverType == ServerType.MatrixOrg
+ isNumericOnlyUserIdForbidden = state.serverType == ServerType.MatrixOrg || state.serverType == ServerType.SynodIm
setupUi(state)
setupAutoFill(state)
diff --git a/vector/src/main/java/im/vector/app/features/login/LoginSignUpSignInSelectionFragment.kt b/vector/src/main/java/im/vector/app/features/login/LoginSignUpSignInSelectionFragment.kt
index 4797df9c9cf..d00e4c14432 100644
--- a/vector/src/main/java/im/vector/app/features/login/LoginSignUpSignInSelectionFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/login/LoginSignUpSignInSelectionFragment.kt
@@ -47,11 +47,15 @@ class LoginSignUpSignInSelectionFragment :
when (state.serverType) {
ServerType.MatrixOrg -> {
views.loginSignupSigninServerIcon.setImageResource(R.drawable.ic_logo_matrix_org)
- // Changed for Synod.im: Hide matrix.org icon.
- views.loginSignupSigninServerIcon.isVisible = false
+ views.loginSignupSigninServerIcon.isVisible = true
views.loginSignupSigninTitle.text = getString(CommonStrings.login_connect_to, state.homeServerUrlFromUser.toReducedUrl())
views.loginSignupSigninText.text = getString(CommonStrings.login_server_matrix_org_text)
}
+ ServerType.SynodIm -> {
+ views.loginSignupSigninServerIcon.isVisible = false
+ views.loginSignupSigninTitle.text = getString(CommonStrings.login_connect_to, state.homeServerUrlFromUser.toReducedUrl())
+ views.loginSignupSigninText.text = getString(CommonStrings.login_server_synod_im_text)
+ }
ServerType.EMS -> {
views.loginSignupSigninServerIcon.setImageResource(R.drawable.ic_logo_element_matrix_services)
views.loginSignupSigninServerIcon.isVisible = true
diff --git a/vector/src/main/java/im/vector/app/features/login/LoginSplashFragment.kt b/vector/src/main/java/im/vector/app/features/login/LoginSplashFragment.kt
index a1eb1a139a4..c4ed92674c9 100644
--- a/vector/src/main/java/im/vector/app/features/login/LoginSplashFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/login/LoginSplashFragment.kt
@@ -75,7 +75,7 @@ class LoginSplashFragment :
loginViewModel.handle(LoginAction.OnGetStarted(resetLoginConfig = false))
} else {
// Synod.im: skip server selection
- loginViewModel.handle(LoginAction.UpdateHomeServer(getString(im.vector.app.config.R.string.matrix_org_server_url).ensureTrailingSlash()))
+ loginViewModel.handle(LoginAction.UpdateHomeServer(getString(im.vector.app.config.R.string.synod_im_server_url).ensureTrailingSlash()))
}
}
diff --git a/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt b/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt
index 60a45b4ac31..1ba384c76f4 100644
--- a/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt
@@ -82,6 +82,7 @@ class LoginViewModel @AssistedInject constructor(
private var currentHomeServerConnectionConfig: HomeServerConnectionConfig? = null
private val matrixOrgUrl = stringProvider.getString(im.vector.app.config.R.string.matrix_org_server_url).ensureTrailingSlash()
+ private val synodImUrl = stringProvider.getString(im.vector.app.config.R.string.synod_im_server_url).ensureTrailingSlash()
val currentThreePid: String?
get() = registrationWizard?.getCurrentThreePid()
@@ -441,6 +442,9 @@ class LoginViewModel @AssistedInject constructor(
ServerType.MatrixOrg ->
// Request login flow here
handle(LoginAction.UpdateHomeServer(matrixOrgUrl))
+ ServerType.SynodIm ->
+ // Request login flow here
+ handle(LoginAction.UpdateHomeServer(synodImUrl))
ServerType.EMS,
ServerType.Other -> _viewEvents.post(LoginViewEvents.OnServerSelectionDone(action.serverType))
}
@@ -780,6 +784,8 @@ class LoginViewModel @AssistedInject constructor(
// It is also useful to set the value again in the case of a certificate error on matrix.org
serverType = if (homeServerConnectionConfig.homeServerUri.toString() == matrixOrgUrl) {
ServerType.MatrixOrg
+ } else if (homeServerConnectionConfig.homeServerUri.toString() == synodImUrl) {
+ ServerType.SynodIm
} else {
serverTypeOverride ?: serverType
}
@@ -793,8 +799,8 @@ class LoginViewModel @AssistedInject constructor(
setState {
copy(
asyncHomeServerLoginFlowRequest = Uninitialized,
- // If we were trying to retrieve matrix.org login flow, also reset the serverType
- serverType = if (serverType == ServerType.MatrixOrg) ServerType.Unknown else serverType
+ // If we were trying to retrieve matrix.org or synod.im login flow, also reset the serverType
+ serverType = if (serverType == ServerType.MatrixOrg || serverType == ServerType.SynodIm) ServerType.Unknown else serverType
)
}
null
diff --git a/vector/src/main/java/im/vector/app/features/login/ServerType.kt b/vector/src/main/java/im/vector/app/features/login/ServerType.kt
index f4a73e313ce..8c3a715b192 100644
--- a/vector/src/main/java/im/vector/app/features/login/ServerType.kt
+++ b/vector/src/main/java/im/vector/app/features/login/ServerType.kt
@@ -11,5 +11,6 @@ enum class ServerType {
Unknown,
MatrixOrg,
EMS,
- Other
+ Other,
+ SynodIm
}
diff --git a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt
index 73e49a9940d..f94160fe306 100644
--- a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt
@@ -8,6 +8,8 @@
package im.vector.app.features.onboarding
import android.content.Context
+import android.content.res.Resources
+import androidx.core.os.ConfigurationCompat
import com.airbnb.mvrx.MavericksViewModelFactory
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
@@ -115,7 +117,8 @@ class OnboardingViewModel @AssistedInject constructor(
}
private val matrixOrgUrl = stringProvider.getString(im.vector.app.config.R.string.matrix_org_server_url).ensureTrailingSlash()
- private val defaultHomeserverUrl = mdmService.getData(MdmData.DefaultHomeserverUrl, matrixOrgUrl)
+ private val synodImUrl = stringProvider.getString(im.vector.app.config.R.string.synod_im_server_url).ensureTrailingSlash()
+ private val defaultHomeserverUrl = mdmService.getData(MdmData.DefaultHomeserverUrl, synodImUrl)
private val registrationWizard: RegistrationWizard
get() = authenticationService.getRegistrationWizard()
@@ -233,7 +236,7 @@ class OnboardingViewModel @AssistedInject constructor(
private fun handleSplashAction(action: OnboardingAction.SplashAction) {
setState { copy(onboardingFlow = action.onboardingFlow) }
// Changed for Synod.im: Skip server selection
- handle(OnboardingAction.HomeServerChange.SelectHomeServer(matrixOrgUrl))
+ handle(OnboardingAction.HomeServerChange.SelectHomeServer(synodImUrl))
// Previous code: (would show "Server Selection Screen")
// continueToPageAfterSplash(action.onboardingFlow)
}
@@ -473,6 +476,9 @@ class OnboardingViewModel @AssistedInject constructor(
ServerType.MatrixOrg ->
// Request login flow here
handle(OnboardingAction.HomeServerChange.SelectHomeServer(matrixOrgUrl))
+ ServerType.SynodIm ->
+ // Request login flow here
+ handle(OnboardingAction.HomeServerChange.SelectHomeServer(synodImUrl))
ServerType.EMS,
ServerType.Other -> _viewEvents.post(OnboardingViewEvents.OnServerSelectionDone(action.serverType))
}
@@ -822,6 +828,8 @@ class OnboardingViewModel @AssistedInject constructor(
private fun OnboardingViewState.alignServerTypeAfterSubmission(config: HomeServerConnectionConfig, serverTypeOverride: ServerType?): ServerType {
return if (config.homeServerUri.toString() == matrixOrgUrl) {
ServerType.MatrixOrg
+ } else if (config.homeServerUri.toString() == synodImUrl) {
+ ServerType.SynodIm
} else {
serverTypeOverride ?: serverType
}
diff --git a/vector/src/main/java/im/vector/app/features/onboarding/RegistrationActionHandler.kt b/vector/src/main/java/im/vector/app/features/onboarding/RegistrationActionHandler.kt
index d3260141bc8..ecd568285db 100644
--- a/vector/src/main/java/im/vector/app/features/onboarding/RegistrationActionHandler.kt
+++ b/vector/src/main/java/im/vector/app/features/onboarding/RegistrationActionHandler.kt
@@ -30,6 +30,7 @@ class RegistrationActionHandler @Inject constructor(
) {
private val matrixOrgUrl = stringProvider.getString(im.vector.app.config.R.string.matrix_org_server_url).ensureTrailingSlash()
+ private val synodImUrl = stringProvider.getString(im.vector.app.config.R.string.synod_im_server_url).ensureTrailingSlash()
suspend fun processAction(state: SelectedHomeserverState, action: RegisterAction): Result {
val result = registrationWizardActionDelegate.executeAction(action)
@@ -66,7 +67,7 @@ class RegistrationActionHandler @Inject constructor(
private fun findNextStage(state: SelectedHomeserverState, flowResult: FlowResult): Result {
val orderedResult = when {
- state.hasSelectedMatrixOrg() && vectorFeatures.isOnboardingCombinedRegisterEnabled() -> flowResult.copy(
+ state.hasSelectedMatrixOrgOrSynodIm() && vectorFeatures.isOnboardingCombinedRegisterEnabled() -> flowResult.copy(
missingStages = flowResult.missingStages.sortedWith(MatrixOrgRegistrationStagesComparator())
)
else -> flowResult
@@ -80,7 +81,7 @@ class RegistrationActionHandler @Inject constructor(
private suspend fun FlowResult.registrationShouldFallback() = vectorOverrides.forceLoginFallback.first() || missingStages.any { !it.isSupported() }
- private fun SelectedHomeserverState.hasSelectedMatrixOrg() = userFacingUrl == matrixOrgUrl
+ private fun SelectedHomeserverState.hasSelectedMatrixOrgOrSynodIm() = userFacingUrl == matrixOrgUrl || userFacingUrl == synodImUrl
sealed interface Result {
data class RegistrationComplete(val session: Session) : Result
diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthCombinedRegisterFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthCombinedRegisterFragment.kt
index 8b5127b90e4..530e2af487f 100644
--- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthCombinedRegisterFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthCombinedRegisterFragment.kt
@@ -280,4 +280,5 @@ class FtueAuthCombinedRegisterFragment :
private fun OnboardingViewState.isNumericOnlyUserIdForbidden() =
selectedHomeserver.userFacingUrl == getString(im.vector.app.config.R.string.matrix_org_server_url)
+ || selectedHomeserver.userFacingUrl == getString(im.vector.app.config.R.string.synod_im_server_url)
}
diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthLoginFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthLoginFragment.kt
index c7df2e5f5f2..912010c8ec6 100644
--- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthLoginFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthLoginFragment.kt
@@ -186,12 +186,16 @@ class FtueAuthLoginFragment :
when (state.serverType) {
ServerType.MatrixOrg -> {
- // Changed for Synod.im: Hide matrix.org icon.
- views.loginServerIcon.isVisible = false
+ views.loginServerIcon.isVisible = true
views.loginServerIcon.setImageResource(R.drawable.ic_logo_matrix_org)
views.loginTitle.text = getString(resId, state.selectedHomeserver.userFacingUrl.toReducedUrl())
views.loginNotice.text = getString(CommonStrings.login_server_matrix_org_text)
}
+ ServerType.SynodIm -> {
+ views.loginServerIcon.isVisible = false
+ views.loginTitle.text = getString(resId, state.selectedHomeserver.userFacingUrl.toReducedUrl())
+ views.loginNotice.text = getString(CommonStrings.login_server_synod_im_text)
+ }
ServerType.EMS -> {
views.loginServerIcon.isVisible = true
views.loginServerIcon.setImageResource(R.drawable.ic_logo_element_matrix_services)
@@ -293,7 +297,7 @@ class FtueAuthLoginFragment :
override fun updateWithState(state: OnboardingViewState) {
isSignupMode = state.signMode == SignMode.SignUp
- isNumericOnlyUserIdForbidden = state.serverType == ServerType.MatrixOrg
+ isNumericOnlyUserIdForbidden = state.serverType == ServerType.MatrixOrg || state.serverType == ServerType.SynodIm
setupUi(state)
setupAutoFill(state)
diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSignUpSignInSelectionFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSignUpSignInSelectionFragment.kt
index 78d8a01719d..1ded7c46799 100644
--- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSignUpSignInSelectionFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSignUpSignInSelectionFragment.kt
@@ -55,11 +55,15 @@ class FtueAuthSignUpSignInSelectionFragment :
private fun render(state: OnboardingViewState) {
when (state.serverType) {
ServerType.MatrixOrg -> renderServerInformation(
- // Changed for Synod.im: Hide matrix.org icon.
- icon = null, // R.drawable.ic_logo_matrix_org,
+ icon = R.drawable.ic_logo_matrix_org,
title = getString(CommonStrings.login_connect_to, state.selectedHomeserver.userFacingUrl.toReducedUrl()),
subtitle = getString(CommonStrings.login_server_matrix_org_text)
)
+ ServerType.SynodIm -> renderServerInformation(
+ icon = null,
+ title = getString(CommonStrings.login_connect_to, state.selectedHomeserver.userFacingUrl.toReducedUrl()),
+ subtitle = getString(CommonStrings.login_server_synod_im_text)
+ )
ServerType.EMS -> renderServerInformation(
icon = R.drawable.ic_logo_element_matrix_services,
title = getString(CommonStrings.login_connect_to_modular),
diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthVariant.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthVariant.kt
index b6d73676565..4f0671e6ea9 100644
--- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthVariant.kt
+++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthVariant.kt
@@ -299,6 +299,7 @@ class FtueAuthVariant(
private fun onServerSelectionDone(onboardingViewEvents: OnboardingViewEvents.OnServerSelectionDone) {
when (onboardingViewEvents.serverType) {
ServerType.MatrixOrg -> Unit // In this case, we wait for the login flow
+ ServerType.SynodIm -> Unit // In this case, we wait for the login flow
ServerType.EMS,
ServerType.Other -> activity.addFragmentToBackstack(
views.loginFragmentContainer,