mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
Improve beta check logic
Check the last 10 releases, as stable versions may come out after the beta Also fix the app thinking a beta on the same version is a new release, also also fix checking if one beta is newer than another
This commit is contained in:
parent
475abad6f6
commit
1293adf624
1 changed files with 18 additions and 6 deletions
|
@ -32,11 +32,12 @@ class AppUpdateChecker {
|
||||||
.await()
|
.await()
|
||||||
.parseAs<List<GithubRelease>>()
|
.parseAs<List<GithubRelease>>()
|
||||||
.let {
|
.let {
|
||||||
val release = it.firstOrNull() ?: return@let AppUpdateResult.NoNewUpdate
|
val releases = it.take(10)
|
||||||
|
// Check if any of the latest versions are newer than the current version
|
||||||
|
val release = releases.find { release -> isNewVersion(release.version) }
|
||||||
preferences.lastAppCheck().set(Date().time)
|
preferences.lastAppCheck().set(Date().time)
|
||||||
|
|
||||||
// Check if latest version is different from current version
|
if (release != null) {
|
||||||
if (isNewVersion(release.version)) {
|
|
||||||
AppUpdateResult.NewUpdate(release)
|
AppUpdateResult.NewUpdate(release)
|
||||||
} else {
|
} else {
|
||||||
AppUpdateResult.NoNewUpdate
|
AppUpdateResult.NoNewUpdate
|
||||||
|
@ -50,7 +51,7 @@ class AppUpdateChecker {
|
||||||
.let {
|
.let {
|
||||||
preferences.lastAppCheck().set(Date().time)
|
preferences.lastAppCheck().set(Date().time)
|
||||||
|
|
||||||
// Check if latest version is different from current version
|
// Check if latest version is newer than the current version
|
||||||
if (isNewVersion(it.version)) {
|
if (isNewVersion(it.version)) {
|
||||||
AppUpdateResult.NewUpdate(it)
|
AppUpdateResult.NewUpdate(it)
|
||||||
} else {
|
} else {
|
||||||
|
@ -89,8 +90,19 @@ class AppUpdateChecker {
|
||||||
return if (newSemVer.size > oldSemVer.size) {
|
return if (newSemVer.size > oldSemVer.size) {
|
||||||
true
|
true
|
||||||
} else {
|
} else {
|
||||||
// For production versions from beta (new: 1.2.3 vs old: 1.2.3-b1, return true)
|
// If the version numbers match, check the beta versions
|
||||||
(newPreReleaseVer.getOrNull(1) != null) != (oldPreReleaseVer.getOrNull(1) != null)
|
val newPreVersion =
|
||||||
|
newPreReleaseVer.getOrNull(1)?.replace("[^\\d.-]".toRegex(), "")?.toIntOrNull()
|
||||||
|
val oldPreVersion =
|
||||||
|
oldPreReleaseVer.getOrNull(1)?.replace("[^\\d.-]".toRegex(), "")?.toIntOrNull()
|
||||||
|
when {
|
||||||
|
// For prod, don't bother with betas (current: 1.2.3 vs new: 1.2.3-b1)
|
||||||
|
oldPreVersion == null -> false
|
||||||
|
// For betas, always use prod builds (current: 1.2.3-b1 vs new: 1.2.3)
|
||||||
|
newPreVersion == null -> true
|
||||||
|
// For betas, higher beta ver is newer (current: 1.2.3-b1 vs new: 1.2.3-b2)
|
||||||
|
else -> (oldPreVersion < newPreVersion)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue