Show all installed extensions but label extensions that were hidden before as redundant
This commit is contained in:
parent
a03e668c8f
commit
77dd5bfadd
@ -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()
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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(
|
||||
|
@ -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()
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user