mirror of
https://github.com/twinksoftware/Gearslip.git
synced 2026-11-11 00:12:24 +01:00
updates: offer the final release to people on its beta or alpha
This commit is contained in:
1 parent
5947bc1e63
commit
8fd840bd8d
1 file changed
+15
-2
@@ -409,9 +409,22 @@ object UpdateChecker {
|
|||||||
return release.takeIf { isNewer(it.version, BuildConfig.VERSION_NAME) }
|
return release.takeIf { isNewer(it.version, BuildConfig.VERSION_NAME) }
|
||||||
}
|
}
|
||||||
|
|
||||||
/** "0.2.00-alpha" beats "0.1.10-alpha": the numbers before the dash compare one by one. */
|
/**
|
||||||
|
* "0.2.00-alpha" beats "0.1.10-alpha": the numbers before the dash compare one by one. With the
|
||||||
|
* same numbers, a plain release beats a beta, and a beta beats an alpha, so "0.3.0" reaches
|
||||||
|
* someone on "0.3.0-beta".
|
||||||
|
*/
|
||||||
internal fun isNewer(candidate: String, installed: String): Boolean {
|
internal fun isNewer(candidate: String, installed: String): Boolean {
|
||||||
fun parts(v: String) = v.removePrefix("v").substringBefore('-').split('.').map { it.toIntOrNull() ?: 0 }
|
fun parts(v: String) = v.removePrefix("v").substringBefore('-').split('.').map { it.toIntOrNull() ?: 0 }
|
||||||
|
fun stage(v: String): Int {
|
||||||
|
val tag = v.substringAfter('-', "").lowercase()
|
||||||
|
return when {
|
||||||
|
tag.isEmpty() -> 3
|
||||||
|
"beta" in tag -> 2
|
||||||
|
"alpha" in tag -> 1
|
||||||
|
else -> 0
|
||||||
|
}
|
||||||
|
}
|
||||||
val a = parts(candidate)
|
val a = parts(candidate)
|
||||||
val b = parts(installed)
|
val b = parts(installed)
|
||||||
for (i in 0 until maxOf(a.size, b.size)) {
|
for (i in 0 until maxOf(a.size, b.size)) {
|
||||||
@@ -419,6 +432,6 @@ object UpdateChecker {
|
|||||||
val y = b.getOrElse(i) { 0 }
|
val y = b.getOrElse(i) { 0 }
|
||||||
if (x != y) return x > y
|
if (x != y) return x > y
|
||||||
}
|
}
|
||||||
return false
|
return stage(candidate) > stage(installed)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user