diff --git a/src/id/cosmicscansid/build.gradle b/src/id/cosmicscansid/build.gradle index 305c9b819..9666fecf1 100644 --- a/src/id/cosmicscansid/build.gradle +++ b/src/id/cosmicscansid/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.CosmicScansID' themePkg = 'mangathemesia' baseUrl = 'https://lc2.cosmicscans.asia' - overrideVersionCode = 10 + overrideVersionCode = 11 isNsfw = true } diff --git a/src/id/cosmicscansid/src/eu/kanade/tachiyomi/extension/id/cosmicscansid/CosmicScansID.kt b/src/id/cosmicscansid/src/eu/kanade/tachiyomi/extension/id/cosmicscansid/CosmicScansID.kt index ed1fad847..57e0f5e16 100644 --- a/src/id/cosmicscansid/src/eu/kanade/tachiyomi/extension/id/cosmicscansid/CosmicScansID.kt +++ b/src/id/cosmicscansid/src/eu/kanade/tachiyomi/extension/id/cosmicscansid/CosmicScansID.kt @@ -1,5 +1,8 @@ package eu.kanade.tachiyomi.extension.id.cosmicscansid +import android.content.SharedPreferences +import android.widget.Toast +import androidx.preference.EditTextPreference import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.lib.randomua.addRandomUAPreferenceToScreen import eu.kanade.tachiyomi.lib.randomua.getPrefCustomUA @@ -25,7 +28,25 @@ class CosmicScansID : ), ConfigurableSource { - private val preferences = getPreferences() + private val defaultBaseUrl: String = super.baseUrl + + private val preferences = getPreferences { + getString(DEFAULT_BASE_URL_PREF, defaultBaseUrl).let { domain -> + if (domain != defaultBaseUrl) { + edit() + .putString(BASE_URL_PREF, defaultBaseUrl) + .putString(DEFAULT_BASE_URL_PREF, defaultBaseUrl) + .apply() + } + } + } + + private val isCi = System.getenv("CI") == "true" + + override val baseUrl: String get() = when { + isCi -> defaultBaseUrl + else -> preferences.prefBaseUrl + } override val client: OkHttpClient = super.client.newBuilder() .setRandomUserAgent( @@ -37,6 +58,19 @@ class CosmicScansID : override val hasProjectPage = true + private var _cachedBaseUrl: String? = null + private var SharedPreferences.prefBaseUrl: String + get() { + if (_cachedBaseUrl == null) { + _cachedBaseUrl = getString(BASE_URL_PREF, defaultBaseUrl)!! + } + return _cachedBaseUrl!! + } + set(value) { + _cachedBaseUrl = value + edit().putString(BASE_URL_PREF, value).apply() + } + // search override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { if (query.isBlank()) { @@ -61,5 +95,23 @@ class CosmicScansID : override fun setupPreferenceScreen(screen: PreferenceScreen) { addRandomUAPreferenceToScreen(screen) + + EditTextPreference(screen.context).apply { + key = BASE_URL_PREF + title = "Edit source URL" + summary = "For temporary use, if the extension is updated the change will be lost." + dialogTitle = title + dialogMessage = "Default URL:\n$defaultBaseUrl" + setDefaultValue(defaultBaseUrl) + setOnPreferenceChangeListener { _, _ -> + Toast.makeText(screen.context, "Restart the application to apply the changes", Toast.LENGTH_LONG).show() + true + } + }.also { screen.addPreference(it) } + } + + companion object { + private const val BASE_URL_PREF = "overrideBaseUrl" + private const val DEFAULT_BASE_URL_PREF = "defaultBaseUrl" } }