diff --git a/app/src/main/java/org/koitharu/kotatsu/core/network/MirrorSwitchInterceptor.kt b/app/src/main/java/org/koitharu/kotatsu/core/network/MirrorSwitchInterceptor.kt index 67da24e09..034a6513e 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/network/MirrorSwitchInterceptor.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/network/MirrorSwitchInterceptor.kt @@ -11,6 +11,7 @@ import okhttp3.internal.closeQuietly import okhttp3.internal.publicsuffix.PublicSuffixDatabase import org.koitharu.kotatsu.core.parser.MangaRepository import org.koitharu.kotatsu.core.parser.RemoteMangaRepository +import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.parsers.model.MangaSource import javax.inject.Inject import javax.inject.Singleton @@ -18,10 +19,14 @@ import javax.inject.Singleton @Singleton class MirrorSwitchInterceptor @Inject constructor( private val mangaRepositoryFactoryLazy: Lazy, + private val settings: AppSettings, ) : Interceptor { override fun intercept(chain: Interceptor.Chain): Response { val request = chain.request() + if (!settings.isMirrorSwitchingAvailable) { + return chain.proceed(request) + } return try { val response = chain.proceed(request) if (response.isFailed) { diff --git a/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt b/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt index bfae12594..4c05c7662 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt @@ -165,6 +165,9 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { get() = prefs.getBoolean(KEY_PROTECT_APP_BIOMETRIC, true) set(value) = prefs.edit { putBoolean(KEY_PROTECT_APP_BIOMETRIC, value) } + val isMirrorSwitchingAvailable: Boolean + get() = prefs.getBoolean(KEY_MIRROR_SWITCHING, true) + val isExitConfirmationEnabled: Boolean get() = prefs.getBoolean(KEY_EXIT_CONFIRM, false) @@ -405,6 +408,7 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { const val KEY_TIPS_CLOSED = "tips_closed" const val KEY_SSL_BYPASS = "ssl_bypass" const val KEY_READER_AUTOSCROLL_SPEED = "as_speed" + const val KEY_MIRROR_SWITCHING = "mirror_switching" // About const val KEY_APP_UPDATE = "app_update" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7bb343771..eafc92e1f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -438,4 +438,7 @@ Synchronization settings Server address You can use a self-hosted synchronization server or a default one. Don\'t change this if you\'re not sure what you\'re doing. + Ignore SSL errors + Choose mirror automatically + Automatically switch domains for remote sources on errors if mirrors are available diff --git a/app/src/main/res/xml/pref_content.xml b/app/src/main/res/xml/pref_content.xml index fd971b20c..ebe1806db 100644 --- a/app/src/main/res/xml/pref_content.xml +++ b/app/src/main/res/xml/pref_content.xml @@ -59,7 +59,13 @@ + android:title="@string/ignore_ssl_errors" /> + +