Show all installed extensions but label extensions that were hidden before as redundant

This commit is contained in:
Jobobby04 2020-05-30 14:10:35 -04:00
parent a03e668c8f
commit 77dd5bfadd
7 changed files with 29 additions and 5 deletions

View File

@ -108,6 +108,8 @@ class ExtensionManager(
updatedInstalledExtensionsStatuses(value)
}
var unalteredAvailableExtensions = emptyList<Extension.Available>()
/**
* Relay used to notify the untrusted extensions.
*/
@ -145,7 +147,6 @@ class ExtensionManager(
installedExtensions = extensions
.filterIsInstance<LoadResult.Success>()
.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()
}

View File

@ -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<LoadResult.Success>()
.map { it.extension }
.filter { it.pkgName in BlacklistedSources.BLACKLISTED_EXTENSIONS && blacklistEnabled }
val extensionsWithUpdate = mutableListOf<Extension.Installed>()
for (installedExt in installedExtensions) {

View File

@ -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(

View File

@ -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()

View File

@ -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)
}

View File

@ -61,7 +61,7 @@ open class ExtensionPresenter(
val items = mutableListOf<ExtensionItem>()
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

View File

@ -30,6 +30,10 @@
<string name="pref_skip_pre_migration_summary">Use last saved pre-migration preferences
and sources to mass migrate</string>
<!-- Extension section -->
<string name="ext_redundant">Redundant</string>
<string name="redundant_extension_message">This extension is redundant and will not be used inside this version of Tachiyomi.</string>
<!-- Library update service notifications -->
<string name="notification_new_chapters_text_old">For %1$d titles</string>
@ -112,6 +116,7 @@
<string name="eh_batch_add_finish">Finish</string>
<string name="eh_auto_webtoon_mode">Auto Webtoon Mode Detection</string>
<string name="eh_auto_webtoon_snack">Reading webtoon style</string>
<string name="loading_gallery">Loading gallery…</string>
<!-- AZ -->
<string name="az_recommends">See Recommendations</string>