mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Check for app updates by comparing semver (#7100)
Instead of just checking whether the current app version *matches* with
latest app version in GitHub Releases, compare the semver from the tag
names to check whether the latter is greater and the app needs an update
Reference: semver spec #11 https://semver.org/#spec-item-11
Co-authored-by: Andreas <6576096+ghostbear@users.noreply.github.com>
Co-authored-by: Andreas <6576096+ghostbear@users.noreply.github.com>
(cherry picked from commit e7ed130f2a)
			
			
This commit is contained in:
		@@ -56,6 +56,7 @@ class AppUpdateChecker {
 | 
			
		||||
    private fun isNewVersion(versionTag: String): Boolean {
 | 
			
		||||
        // Removes prefixes like "r" or "v"
 | 
			
		||||
        val newVersion = versionTag.replace("[^\\d.]".toRegex(), "")
 | 
			
		||||
        val oldVersion = BuildConfig.VERSION_NAME.replace("[^\\d.]".toRegex(), "")
 | 
			
		||||
 | 
			
		||||
        return if (BuildConfig.PREVIEW) {
 | 
			
		||||
            // Preview builds: based on releases in "tachiyomiorg/tachiyomi-preview" repo
 | 
			
		||||
@@ -64,7 +65,15 @@ class AppUpdateChecker {
 | 
			
		||||
        } else {
 | 
			
		||||
            // Release builds: based on releases in "tachiyomiorg/tachiyomi" repo
 | 
			
		||||
            // tagged as something like "v0.1.2"
 | 
			
		||||
            newVersion != BuildConfig.VERSION_NAME
 | 
			
		||||
            val newSemVer = newVersion.split(".").map { it.toInt() }
 | 
			
		||||
            val oldSemVer = oldVersion.split(".").map { it.toInt() }
 | 
			
		||||
 | 
			
		||||
            oldSemVer.mapIndexed { index, i ->
 | 
			
		||||
                if (newSemVer[index] > i) {
 | 
			
		||||
                    return true
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            false
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user