From 86908ceeaa3dc8ce3c10511f821afcabae8a1e88 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 10 May 2019 12:00:20 +0200 Subject: [PATCH 1/4] the calculated ETag should be compared to the stored ETag Thanks to @amiraliakbari for tracking this down! closes fdroid/fdroidclient#1737 --- app/src/main/java/org/fdroid/fdroid/net/HttpDownloader.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/net/HttpDownloader.java b/app/src/main/java/org/fdroid/fdroid/net/HttpDownloader.java index 231484639..243613425 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/HttpDownloader.java +++ b/app/src/main/java/org/fdroid/fdroid/net/HttpDownloader.java @@ -147,9 +147,9 @@ public class HttpDownloader extends Downloader { } else { String calcedETag = String.format("\"%x-%x\"", tmpConn.getLastModified() / 1000, contentLength); - if (calcedETag.equals(headETag)) { + if (cacheTag.equals(calcedETag)) { Utils.debugLog(TAG, urlString + " cached based on calced ETag, not downloading: " + - headETag); + calcedETag); return; } } From dffc8e5925c5fce25f0400203431f14119063376 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 14 May 2019 13:48:02 +0200 Subject: [PATCH 2/4] make sure ImageLoader is inited before trying to use it closes #1782 --- app/src/main/java/org/fdroid/fdroid/FDroidApp.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java index b7558cce6..5a4af4d7b 100644 --- a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java +++ b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java @@ -343,14 +343,21 @@ public class FDroidApp extends Application { public void onTrimMemory(int level) { super.onTrimMemory(level); if (level >= TRIM_MEMORY_BACKGROUND) { - ImageLoader.getInstance().clearMemoryCache(); + clearImageLoaderMemoryCache(); } } @Override public void onLowMemory() { super.onLowMemory(); - ImageLoader.getInstance().clearMemoryCache(); + clearImageLoaderMemoryCache(); + } + + private void clearImageLoaderMemoryCache() { + ImageLoader imageLoader = ImageLoader.getInstance(); + if (imageLoader.isInited()) { + imageLoader.clearMemoryCache(); + } } @Override From 1cc14b34991de8f347be4a00fcf78eb8f8613d92 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 15 May 2019 15:24:21 +0200 Subject: [PATCH 3/4] show progress spinner on Updates Tab if index is being updated The "Congrats, your apps are up to date" message isn't quite right in this context. closes #1769 --- .../views/updates/UpdatesViewBinder.java | 36 +++++++++++++++++-- app/src/main/res/layout/main_tab_updates.xml | 9 +++++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesViewBinder.java b/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesViewBinder.java index 1a8bf2a56..fecfe188b 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesViewBinder.java +++ b/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesViewBinder.java @@ -1,5 +1,10 @@ package org.fdroid.fdroid.views.updates; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.support.v4.content.LocalBroadcastManager; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; @@ -8,8 +13,8 @@ import android.support.v7.widget.helper.ItemTouchHelper; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; +import android.widget.ProgressBar; import android.widget.TextView; - import org.fdroid.fdroid.R; import org.fdroid.fdroid.UpdateService; import org.fdroid.fdroid.Utils; @@ -20,8 +25,11 @@ public class UpdatesViewBinder { private final RecyclerView list; private final TextView emptyState; private final ImageView emptyImage; + private final ProgressBar emptyUpdatingProgress; + private final AppCompatActivity activity; public UpdatesViewBinder(final AppCompatActivity activity, FrameLayout parent) { + this.activity = activity; View view = activity.getLayoutInflater().inflate(R.layout.main_tab_updates, parent, true); adapter = new UpdatesAdapter(activity); @@ -37,6 +45,7 @@ public class UpdatesViewBinder { emptyState = (TextView) view.findViewById(R.id.empty_state); emptyImage = (ImageView) view.findViewById(R.id.image); + emptyUpdatingProgress = view.findViewById(R.id.empty_updating_progress); final SwipeRefreshLayout swipeToRefresh = (SwipeRefreshLayout) view.findViewById(R.id.swipe_to_refresh); Utils.applySwipeLayoutColors(swipeToRefresh); @@ -61,12 +70,16 @@ public class UpdatesViewBinder { private void updateEmptyState() { if (adapter.getItemCount() == 0) { list.setVisibility(View.GONE); - emptyState.setVisibility(View.VISIBLE); emptyImage.setVisibility(View.VISIBLE); + setUpEmptyUpdatingProgress(UpdateService.isUpdating()); + LocalBroadcastManager.getInstance(activity).registerReceiver(updateServiceStatusReceiver, + new IntentFilter(UpdateService.LOCAL_ACTION_STATUS)); } else { list.setVisibility(View.VISIBLE); emptyState.setVisibility(View.GONE); emptyImage.setVisibility(View.GONE); + LocalBroadcastManager.getInstance(activity).unregisterReceiver(updateServiceStatusReceiver); + emptyUpdatingProgress.setVisibility(View.GONE); } } @@ -87,4 +100,23 @@ public class UpdatesViewBinder { updateEmptyState(); } }; + + private final BroadcastReceiver updateServiceStatusReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + // Anything other than a STATUS_INFO broadcast signifies that it was complete + boolean isUpdating = intent.getIntExtra(UpdateService.EXTRA_STATUS_CODE, 0) == UpdateService.STATUS_INFO; + setUpEmptyUpdatingProgress(isUpdating); + } + }; + + private void setUpEmptyUpdatingProgress(boolean isUpdating) { + if (isUpdating) { + emptyState.setVisibility(View.GONE); + emptyUpdatingProgress.setVisibility(View.VISIBLE); + } else { + emptyState.setVisibility(View.VISIBLE); + emptyUpdatingProgress.setVisibility(View.GONE); + } + } } diff --git a/app/src/main/res/layout/main_tab_updates.xml b/app/src/main/res/layout/main_tab_updates.xml index e201a42c1..95a187d68 100644 --- a/app/src/main/res/layout/main_tab_updates.xml +++ b/app/src/main/res/layout/main_tab_updates.xml @@ -36,6 +36,15 @@ android:visibility="gone" android:text="@string/empty_can_update_app_list" /> + + Date: Mon, 20 May 2019 12:15:49 +0200 Subject: [PATCH 4/4] fix bottom bar loading the wrong "Updates" string closes #1785 --- app/src/basic/res/menu/main_activity_screens.xml | 2 +- app/src/full/res/menu/main_activity_screens.xml | 2 +- app/src/main/res/values-de/strings.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/basic/res/menu/main_activity_screens.xml b/app/src/basic/res/menu/main_activity_screens.xml index b4a139661..aa90a0cd5 100644 --- a/app/src/basic/res/menu/main_activity_screens.xml +++ b/app/src/basic/res/menu/main_activity_screens.xml @@ -7,7 +7,7 @@ app:showAsAction="ifRoom|withText" android:id="@+id/whats_new" /> diff --git a/app/src/full/res/menu/main_activity_screens.xml b/app/src/full/res/menu/main_activity_screens.xml index a172646df..c7c174d7e 100644 --- a/app/src/full/res/menu/main_activity_screens.xml +++ b/app/src/full/res/menu/main_activity_screens.xml @@ -17,7 +17,7 @@ app:showAsAction="ifRoom|withText" android:id="@+id/nearby" /> diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index e93c6a4b2..a456afdce 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -294,7 +294,7 @@ Suche löschen Neueste Kategorien - Aktualisierungen + Aufgaben Direkt Version %1$s (Empfohlen) Neu