From 62f1a60949ae5dc79c5ad92c8d075a1bb8d014bc Mon Sep 17 00:00:00 2001 From: wsdfhjxc Date: Mon, 3 Sep 2018 17:14:36 +0200 Subject: [PATCH 1/3] Use apkName to keep track of expanded version items --- .../fdroid/views/AppDetailsRecyclerViewAdapter.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java b/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java index 485a67f81..d089b1c3a 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java +++ b/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java @@ -107,7 +107,7 @@ public class AppDetailsRecyclerViewAdapter private HeaderViewHolder headerView; private Apk downloadedApk; - private final HashMap versionsExpandTracker = new HashMap<>(); + private final HashMap versionsExpandTracker = new HashMap<>(); public AppDetailsRecyclerViewAdapter(Context context, @NonNull App app, AppDetailsRecyclerViewAdapterCallbacks callbacks) { this.context = context; @@ -131,8 +131,8 @@ public class AppDetailsRecyclerViewAdapter compatibleVersionsDifferentSig.add(apk); if (allowBySig) { versions.add(apk); - if (!versionsExpandTracker.containsKey(apk.versionCode)) { - versionsExpandTracker.put(apk.versionCode, false); + if (!versionsExpandTracker.containsKey(apk.apkName)) { + versionsExpandTracker.put(apk.apkName, false); } } } @@ -1102,7 +1102,7 @@ public class AppDetailsRecyclerViewAdapter } // Expand the view if it was previously expanded or when downloading - expand(versionsExpandTracker.get(apk.versionCode) || isApkDownloading); + expand(versionsExpandTracker.get(apk.apkName) || isApkDownloading); // Toggle expanded view when clicking the whole version item itemView.setOnClickListener(new View.OnClickListener() { @@ -1168,7 +1168,7 @@ public class AppDetailsRecyclerViewAdapter } private void expand(boolean expand) { - versionsExpandTracker.put(apk.versionCode, expand); + versionsExpandTracker.put(apk.apkName, expand); expandedLayout.setVisibility(expand ? View.VISIBLE : View.GONE); expandArrow.setImageDrawable(ContextCompat.getDrawable(context, expand ? R.drawable.ic_expand_less_grey600 : R.drawable.ic_expand_more_grey600)); @@ -1188,7 +1188,7 @@ public class AppDetailsRecyclerViewAdapter return; } - boolean expand = !versionsExpandTracker.get(apk.versionCode); + boolean expand = !versionsExpandTracker.get(apk.apkName); expand(expand); if (expand) { From fe22a849ff7eda68e68dee59d15f8016f35f92e2 Mon Sep 17 00:00:00 2001 From: wsdfhjxc Date: Mon, 3 Sep 2018 17:16:53 +0200 Subject: [PATCH 2/3] Show downgrade button only when version code is smaller than installed --- .../org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java b/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java index d089b1c3a..367ee8dd4 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java +++ b/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java @@ -1077,7 +1077,7 @@ public class AppDetailsRecyclerViewAdapter // Change the label to indicate that pressing this // button will result in upgrading the installed app buttonInstallUpgrade.setText(R.string.menu_upgrade); - } else { + } else if (apk.versionCode < app.installedVersionCode) { // The Downgrade button should be shown in this case buttonInstallUpgrade.setVisibility(View.GONE); showActionButton(buttonDowngrade, false, isApkDownloading); From 2bb49d7dde7b1945e9f61210db539af555a993f9 Mon Sep 17 00:00:00 2001 From: wsdfhjxc Date: Mon, 3 Sep 2018 17:18:56 +0200 Subject: [PATCH 3/3] Differentiate app versions even if their version code is the same --- .../fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java b/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java index 367ee8dd4..75dd50bf5 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java +++ b/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java @@ -1034,11 +1034,12 @@ public class AppDetailsRecyclerViewAdapter this.apk = apk; boolean isAppInstalled = app.isInstalled(context); - boolean isApkInstalled = apk.versionCode == app.installedVersionCode; + boolean isApkInstalled = apk.versionCode == app.installedVersionCode && + TextUtils.equals(apk.sig, app.installedSig); boolean isApkSuggested = apk.versionCode == app.suggestedVersionCode && TextUtils.equals(apk.sig, app.getMostAppropriateSignature()); boolean isApkDownloading = callbacks.isAppDownloading() && downloadedApk != null && - downloadedApk.compareTo(apk) == 0; + downloadedApk.compareTo(apk) == 0 && TextUtils.equals(apk.apkName, downloadedApk.apkName); // Version name and statuses version.setText(apk.versionName);