diff --git a/app/src/main/java/org/futo/circles/App.kt b/app/src/main/java/org/futo/circles/App.kt index 1baa30e0051aca6e0b2704aa0b495792aa1f3685..71156c948e7173c4f6907f921fb4c30eb0fe5ccf 100644 --- a/app/src/main/java/org/futo/circles/App.kt +++ b/app/src/main/java/org/futo/circles/App.kt @@ -46,8 +46,12 @@ class App : Application() { BuildConfig.FLAVOR ) .appName(getString(R.string.app_name)) - .euDomain(getString(if (BuildConfig.DEBUG) R.string.debug_eu_domain else R.string.release_eu_domain)) - .usDomain(getString(if (BuildConfig.DEBUG) R.string.debug_us_domain else R.string.release_us_domain)) + .serverDomains( + applicationContext.resources.getStringArray( + if (BuildConfig.DEBUG) R.array.debug_domains + else R.array.release_domains + ).toList() + ) .init() MatrixSessionProvider.initSession( diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 265530ea73f1a1db179ee46ca30f612a65332e54..068dd88563eeb1db52f80932c6b70974d41bf50a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,8 +1,4 @@ <resources> - <string name="debug_eu_domain" translatable="false">matrix.org</string> - <string name="debug_us_domain" translatable="false">nl.circles-dev.net</string> - <string name="release_eu_domain" translatable="false">eu.circu.li</string> - <string name="release_us_domain" translatable="false">circu.li</string> <string name="app_name">Circles</string> <string name="futo">FUTO</string> <string name="circles">Circles</string> @@ -221,6 +217,16 @@ <string name="invite_to_connect">Invite to connect</string> <string name="empty_media_storage_info">0 MB used</string> + <string-array name="debug_domains"> + <item>nl.circles-dev.net</item> + <item>matrix.org</item> + </string-array> + + <string-array name="release_domains"> + <item>circu.li</item> + <item>eu.circu.li</item> + </string-array> + <string-array name="report_categories"> <item>@string/crude_language</item> <item>@string/copyright_violation</item> diff --git a/auth/src/main/java/org/futo/circles/auth/feature/log_in/LogInFragment.kt b/auth/src/main/java/org/futo/circles/auth/feature/log_in/LogInFragment.kt index ec5d06f5d8ea1f4b295b3741a4d1a28c557d4cdb..e1ea34e4acf8ac6f20b42ff02e34cb00300a1437 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/log_in/LogInFragment.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/log_in/LogInFragment.kt @@ -39,7 +39,7 @@ class LogInFragment : Fragment(R.layout.fragment_log_in), HasLoadingState { ArrayAdapter( requireContext(), android.R.layout.simple_dropdown_item_1line, - listOf(CirclesAppConfig.usServerDomain, CirclesAppConfig.euServerDomain) + CirclesAppConfig.serverDomains ) } @@ -71,11 +71,11 @@ class LogInFragment : Fragment(R.layout.fragment_log_in), HasLoadingState { setAdapter(autocompleteAdapter) onFocusChangeListener = OnFocusChangeListener { _, hasFocus -> tilDomain.hint = - if (!hasFocus && tvDomain.text.isEmpty()) CirclesAppConfig.usServerDomain + if (!hasFocus && tvDomain.text.isEmpty()) CirclesAppConfig.serverDomains.first() else getString(R.string.domain) } } - tilDomain.hint = CirclesAppConfig.usServerDomain + tilDomain.hint = CirclesAppConfig.serverDomains.first() binding.rvSwitchUsers.apply { adapter = switchUsersAdapter addItemDecoration( @@ -121,5 +121,5 @@ class LogInFragment : Fragment(R.layout.fragment_log_in), HasLoadingState { } private fun getDomain() = binding.tvDomain.text.toString().takeIf { it.isNotEmpty() } - ?: CirclesAppConfig.usServerDomain + ?: CirclesAppConfig.serverDomains.first() } \ No newline at end of file diff --git a/core/src/main/java/org/futo/circles/core/base/CirclesAppConfig.kt b/core/src/main/java/org/futo/circles/core/base/CirclesAppConfig.kt index e5337064d96c32a3261a87d680c9ec22a38df27e..feb74f9e4d7d5f7241e3461032d1d9de90ee9be1 100644 --- a/core/src/main/java/org/futo/circles/core/base/CirclesAppConfig.kt +++ b/core/src/main/java/org/futo/circles/core/base/CirclesAppConfig.kt @@ -14,10 +14,7 @@ object CirclesAppConfig { var appName = "" private set - var usServerDomain = "" - private set - - var euServerDomain = "" + var serverDomains = emptyList<String>() private set var isMediaBackupEnabled = false @@ -32,9 +29,8 @@ object CirclesAppConfig { private var version: String? = null, private var flavour: String? = null, private var appName: String? = null, - private var usDomain: String? = null, + private var serverDomains: List<String> = emptyList(), private var euDomain: String? = null, - private var subscriptionEnabled: Boolean = false, private var mediaBackupEnabled: Boolean = false, private var rageshakeEnabled: Boolean = false ) { @@ -48,9 +44,7 @@ object CirclesAppConfig { fun appName(appName: String) = apply { this.appName = appName } - fun usDomain(domain: String) = apply { this.usDomain = domain } - - fun euDomain(domain: String) = apply { this.euDomain = domain } + fun serverDomains(domains: List<String>) = apply { this.serverDomains = domains } fun isMediaBackupEnabled(isEnabled: Boolean) = apply { this.mediaBackupEnabled = isEnabled } @@ -70,11 +64,8 @@ object CirclesAppConfig { CirclesAppConfig.appName = appName?.takeIf { it.isNotEmpty() } ?: throw IllegalArgumentException("appName is empty $appName") - usServerDomain = usDomain?.takeIf { it.isNotEmpty() } - ?: throw IllegalArgumentException("Illegal US server domain $usDomain") - - euServerDomain = euDomain?.takeIf { it.isNotEmpty() } - ?: throw IllegalArgumentException("Illegal EU server domain $euDomain") + CirclesAppConfig.serverDomains = serverDomains.takeIf { it.isNotEmpty() } + ?: throw IllegalArgumentException("Illegal empty server domains") isMediaBackupEnabled = mediaBackupEnabled isRageshakeEnabled = rageshakeEnabled diff --git a/core/src/main/java/org/futo/circles/core/base/Constants.kt b/core/src/main/java/org/futo/circles/core/base/Constants.kt index da27a0b25b74bce18534147cb8f1cc15062b7b72..8ead7f0d10d45959d27ef9cef671b3dd6724e1fc 100644 --- a/core/src/main/java/org/futo/circles/core/base/Constants.kt +++ b/core/src/main/java/org/futo/circles/core/base/Constants.kt @@ -1,6 +1,5 @@ package org.futo.circles.core.base -import org.futo.circles.core.BuildConfig import org.futo.circles.core.provider.MatrixSessionProvider const val FILE_PROVIDER_AUTHORITY_EXTENSION = ".provider" @@ -8,9 +7,7 @@ const val MediaCaptionFieldKey = "caption" const val READ_ONLY_ROLE = -10 fun getCirclesDomain(): String { - if (BuildConfig.DEBUG) return CirclesAppConfig.usServerDomain val homeServerUrl = MatrixSessionProvider.currentSession?.sessionParams?.homeServerUrl ?: "" - if (homeServerUrl.contains(CirclesAppConfig.usServerDomain)) return CirclesAppConfig.usServerDomain - if (homeServerUrl.contains(CirclesAppConfig.euServerDomain)) return CirclesAppConfig.euServerDomain - return CirclesAppConfig.usServerDomain + return CirclesAppConfig.serverDomains.firstOrNull { homeServerUrl.contains(it) } + ?: CirclesAppConfig.serverDomains.first() }