From 28c8bd5fc67ec772f9f785d9d47055636faeceb4 Mon Sep 17 00:00:00 2001 From: althafvly Date: Mon, 28 Aug 2023 15:48:34 +0530 Subject: [PATCH 1/3] Updater: Cleanup check for update code - Remove unused code. - Use variable for duplicated code of lines. Change-Id: Iad699dcd958f0f99e9aec72b02f3c7d778e15d5f --- src/org/lineageos/updater/misc/Utils.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/org/lineageos/updater/misc/Utils.java b/src/org/lineageos/updater/misc/Utils.java index cc83ccd4..6093b16c 100644 --- a/src/org/lineageos/updater/misc/Utils.java +++ b/src/org/lineageos/updater/misc/Utils.java @@ -341,9 +341,11 @@ public class Utils { int[] updateVersionParts = parseSemVer(update.getVersion()); int updateMajorVersion = updateVersionParts[0]; int updateMinorVersion = updateVersionParts[1]; - int updateMaintenanceVersion = updateVersionParts.length > 2 ? updateVersionParts[2] : 0; - float thisUpdate = Float.parseFloat(updateMajorVersion + "." + updateMinorVersion); - if (updateMajorVersion*10000+updateMinorVersion*100+updateMaintenanceVersion >= highestMajorVersion*10000+highestMinorVersion*100+highestMaintenanceVersion) { + int updateMaintenanceVersion = updateVersionParts.length > 2 + ? updateVersionParts[2] : 0; + if (updateMajorVersion * 10000 + updateMinorVersion * 100 + updateMaintenanceVersion + >= highestMajorVersion * 10000 + highestMinorVersion * 100 + + highestMaintenanceVersion) { highestMajorVersion = updateMajorVersion; highestMinorVersion = updateMinorVersion; highestMaintenanceVersion = updateMaintenanceVersion; @@ -351,11 +353,13 @@ public class Utils { hasUpdate = true; } } + String updateVersion = highestMajorVersion + "." + highestMinorVersion + + (highestMaintenanceVersion > 0 ? "." + highestMaintenanceVersion : ""); if (hasUpdate) { - updateSystemUpdaterService(context, STATUS_WAITING_DOWNLOAD, highestMajorVersion + "." + highestMinorVersion + (highestMaintenanceVersion > 0 ? "." + highestMaintenanceVersion : "")); + updateSystemUpdaterService(context, STATUS_WAITING_DOWNLOAD, updateVersion); return true; } else { - updateSystemUpdaterService(context, STATUS_IDLE, highestMajorVersion+"."+highestMinorVersion+(highestMaintenanceVersion > 0 ? "." + highestMaintenanceVersion : "")); + updateSystemUpdaterService(context, STATUS_IDLE, updateVersion); return false; } } -- GitLab From 8a3a3d2a42cdc1f1dc9e1e56709ef9a3435f8949 Mon Sep 17 00:00:00 2001 From: althafvly Date: Mon, 28 Aug 2023 17:37:31 +0530 Subject: [PATCH 2/3] Updater: Fix checking android version Change-Id: Idadeb0f087b4c13e9eaaa8e3cd8194a72e7c82d7 --- src/org/lineageos/updater/misc/Utils.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/org/lineageos/updater/misc/Utils.java b/src/org/lineageos/updater/misc/Utils.java index 6093b16c..659c0aec 100644 --- a/src/org/lineageos/updater/misc/Utils.java +++ b/src/org/lineageos/updater/misc/Utils.java @@ -68,7 +68,9 @@ import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import java.util.Locale; +import java.util.Objects; import java.util.UUID; +import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; @@ -129,11 +131,20 @@ public class Utils { return update; } + public static int parseAndroidVersion(String versionString) { + // Parse android versions such as 8.1.0. + // Older updates still shows in ota requests. + Pattern pattern = Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)"); + Matcher matcher = pattern.matcher(versionString); + return matcher.matches() ? Integer.parseInt(Objects.requireNonNull(matcher.group(1))) + : Float.valueOf(versionString).intValue(); + } + public static boolean isCompatible(UpdateBaseInfo update) { String updateAndroidVersion = update.getAndroidVersion(); if (!updateAndroidVersion.isEmpty()) { - final int updateOSVersion = Float.valueOf(updateAndroidVersion).intValue(); - final int deviceOSVersion = Float.valueOf(Build.VERSION.RELEASE).intValue(); + final int updateOSVersion = parseAndroidVersion(updateAndroidVersion); + final int deviceOSVersion = parseAndroidVersion(Build.VERSION.RELEASE); if (deviceOSVersion > updateOSVersion) { Log.d(TAG, "Update : Skipping " + update.getName() + " since the installed version " + deviceOSVersion + " is newer than update " + updateOSVersion); -- GitLab From 76251ab464587d722fc89570cee4cd0a865cd78c Mon Sep 17 00:00:00 2001 From: althafvly Date: Tue, 29 Aug 2023 20:01:35 +0530 Subject: [PATCH 3/3] Updater: Avoid nullexception for android version check - mAndroidVersion wasn't before update so getAndroidVersion() was null. Change-Id: Ic195cc09dbbc4e7a082a6004316bc190ffe89dac --- src/org/lineageos/updater/UpdatesListAdapter.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/org/lineageos/updater/UpdatesListAdapter.java b/src/org/lineageos/updater/UpdatesListAdapter.java index 82474312..a238e070 100644 --- a/src/org/lineageos/updater/UpdatesListAdapter.java +++ b/src/org/lineageos/updater/UpdatesListAdapter.java @@ -273,9 +273,10 @@ public class UpdatesListAdapter extends RecyclerView.Adapter