Indicate obsolete extensions (#2494)

* Indicate obsolete extensions

* Make obsolete indicators red

* Move obsolete extensions up the list

* Add base button theme for holder

* Use red button color state instead of explicit text color
This commit is contained in:
arkon
2020-01-12 18:27:04 -05:00
committed by GitHub
parent 6b5742c1ff
commit f3e228e8a4
8 changed files with 87 additions and 15 deletions
@@ -71,7 +71,7 @@ class ExtensionManager(
private set(value) {
field = value
availableExtensionsRelay.call(value)
setUpdateFieldOfInstalledExtensions(value)
updatedInstalledExtensionsStatuses(value)
}
/**
@@ -158,18 +158,25 @@ class ExtensionManager(
*
* @param availableExtensions The list of extensions given by the [api].
*/
private fun setUpdateFieldOfInstalledExtensions(availableExtensions: List<Extension.Available>) {
private fun updatedInstalledExtensionsStatuses(availableExtensions: List<Extension.Available>) {
val mutInstalledExtensions = installedExtensions.toMutableList()
var changed = false
for ((index, installedExt) in mutInstalledExtensions.withIndex()) {
val pkgName = installedExt.pkgName
val availableExt = availableExtensions.find { it.pkgName == pkgName } ?: continue
val availableExt = availableExtensions.find { it.pkgName == pkgName }
val hasUpdate = availableExt.versionCode > installedExt.versionCode
if (installedExt.hasUpdate != hasUpdate) {
mutInstalledExtensions[index] = installedExt.copy(hasUpdate = hasUpdate)
changed = true
if (availableExt == null) {
if (!installedExt.isObsolete) {
mutInstalledExtensions[index] = installedExt.copy(isObsolete = true)
changed = true
}
} else {
val hasUpdate = availableExt.versionCode > installedExt.versionCode
if (installedExt.hasUpdate != hasUpdate) {
mutInstalledExtensions[index] = installedExt.copy(hasUpdate = hasUpdate)
changed = true
}
}
}
if (changed) {
@@ -16,7 +16,8 @@ sealed class Extension {
override val versionCode: Int,
val sources: List<Source>,
override val lang: String,
val hasUpdate: Boolean = false) : Extension()
val hasUpdate: Boolean = false,
val isObsolete: Boolean = false) : Extension()
data class Available(override val name: String,
override val pkgName: String,