diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt index 743e46d82..a68e7b189 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt @@ -108,6 +108,8 @@ class ExtensionManager( updatedInstalledExtensionsStatuses(value) } + var unalteredAvailableExtensions = emptyList() + /** * Relay used to notify the untrusted extensions. */ @@ -145,7 +147,6 @@ class ExtensionManager( installedExtensions = extensions .filterIsInstance() .map { it.extension } - .filterNotBlacklisted() installedExtensions .flatMap { it.sources } // overwrite is needed until the bundled sources are removed @@ -209,6 +210,7 @@ class ExtensionManager( emptyList() } + unalteredAvailableExtensions = extensions availableExtensions = extensions.filterNotBlacklisted() } } @@ -229,11 +231,14 @@ class ExtensionManager( for ((index, installedExt) in mutInstalledExtensions.withIndex()) { val pkgName = installedExt.pkgName - val availableExt = availableExtensions.find { it.pkgName == pkgName } + val availableExt = unalteredAvailableExtensions.find { it.pkgName == pkgName } if (availableExt == null && !installedExt.isObsolete) { mutInstalledExtensions[index] = installedExt.copy(isObsolete = true) changed = true + } else if (installedExt.isBlacklisted() && !installedExt.isRedundant) { + mutInstalledExtensions[index] = installedExt.copy(isRedundant = true) + changed = true } else if (availableExt != null) { val hasUpdate = availableExt.versionCode > installedExt.versionCode if (installedExt.hasUpdate != hasUpdate) { @@ -243,7 +248,7 @@ class ExtensionManager( } } if (changed) { - installedExtensions = mutInstalledExtensions.filterNotBlacklisted() + installedExtensions = mutInstalledExtensions } updatePendingUpdatesCount() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt index 98b0928b5..aa2780f13 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt @@ -14,6 +14,7 @@ import eu.kanade.tachiyomi.extension.util.ExtensionLoader import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.NetworkHelper import eu.kanade.tachiyomi.network.await +import exh.source.BlacklistedSources import java.util.Date import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext @@ -46,9 +47,12 @@ internal class ExtensionGithubApi { preferences.lastExtCheck().set(Date().time) + val blacklistEnabled = preferences.eh_enableSourceBlacklist().get() + val installedExtensions = ExtensionLoader.loadExtensions(context) .filterIsInstance() .map { it.extension } + .filter { it.pkgName in BlacklistedSources.BLACKLISTED_EXTENSIONS && blacklistEnabled } val extensionsWithUpdate = mutableListOf() for (installedExt in installedExtensions) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/model/Extension.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/model/Extension.kt index c8f8626da..bca99bbaf 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/model/Extension.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/model/Extension.kt @@ -19,7 +19,8 @@ sealed class Extension { override val lang: String, val hasUpdate: Boolean = false, val isObsolete: Boolean = false, - val isUnofficial: Boolean = false + val isUnofficial: Boolean = false, + val isRedundant: Boolean = false ) : Extension() data class Available( diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionDetailsController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionDetailsController.kt index b66c03cdb..9326411a5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionDetailsController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionDetailsController.kt @@ -64,6 +64,11 @@ class ExtensionDetailsController(bundle: Bundle? = null) : binding.extensionWarningBanner.setText(R.string.unofficial_extension_message) } + if (extension.isRedundant) { + binding.extensionWarningBanner.visible() + binding.extensionWarningBanner.setText(R.string.redundant_extension_message) + } + if (presenter.extension?.sources?.find { it is ConfigurableSource } != null) { binding.extensionPrefs.visible() binding.extensionPrefs.clicks() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionHolder.kt index 00645722c..4a29b6dc8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionHolder.kt @@ -95,6 +95,10 @@ class ExtensionHolder(view: View, override val adapter: ExtensionAdapter) : setTextColor(context.getResourceColor(R.attr.colorError)) setText(R.string.ext_unofficial) } + extension.isRedundant -> { + setTextColor(context.getResourceColor(R.attr.colorError)) + setText(R.string.ext_redundant) + } else -> { setText(R.string.ext_details) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionPresenter.kt index cf1be5fe4..930ab802b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionPresenter.kt @@ -61,7 +61,7 @@ open class ExtensionPresenter( val items = mutableListOf() val updatesSorted = installed.filter { it.hasUpdate }.sortedBy { it.pkgName } - val installedSorted = installed.filter { !it.hasUpdate }.sortedWith(compareBy({ !it.isObsolete }, { it.pkgName })) + val installedSorted = installed.filter { !it.hasUpdate }.sortedWith(compareBy({ !it.isObsolete && !it.isRedundant }, { it.pkgName })) val untrustedSorted = untrusted.sortedBy { it.pkgName } val availableSorted = available // Filter out already installed extensions and disabled languages diff --git a/app/src/main/res/values/strings_extra.xml b/app/src/main/res/values/strings_extra.xml index 941d53054..df0b423b5 100644 --- a/app/src/main/res/values/strings_extra.xml +++ b/app/src/main/res/values/strings_extra.xml @@ -30,6 +30,10 @@ Use last saved pre-migration preferences and sources to mass migrate + + Redundant + This extension is redundant and will not be used inside this version of Tachiyomi. + For %1$d titles @@ -112,6 +116,7 @@ Finish Auto Webtoon Mode Detection Reading webtoon style + Loading gallery… See Recommendations