aboutsummaryrefslogtreecommitdiff
path: root/org.fox.ttrss/src/main/java/org
diff options
context:
space:
mode:
authorAndrew Dolgov <fox@fakecake.org>2025-05-17 11:51:52 +0300
committerAndrew Dolgov <fox@fakecake.org>2025-05-17 11:51:52 +0300
commit526681bbf9e1a1b1e33f388b8073a75e33285679 (patch)
treed8d8459cb2ba3021576c5b1b20518d949d74cc2f /org.fox.ttrss/src/main/java/org
parent69c0752daaaa2615bee3bd51913e65e85f40dad4 (diff)
add a loading progress indicator for feeds in case of extremely slow connections
Diffstat (limited to 'org.fox.ttrss/src/main/java/org')
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/ApiCommon.java1
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java26
2 files changed, 23 insertions, 4 deletions
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/ApiCommon.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/ApiCommon.java
index 3bbf4df9..17d0c75a 100644
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/ApiCommon.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/ApiCommon.java
@@ -149,6 +149,7 @@ public class ApiCommon {
OkHttpProgressGlideModule.ResponseProgressListener listener = new OkHttpProgressGlideModule.ResponseProgressListener() {
@Override
public void update(HttpUrl url, long bytesRead, long contentLength) {
+ // Log.d(TAG, "[progress] " + url + " " + bytesRead + " of " + contentLength);
if (contentLength > 0)
caller.notifyProgress((int) (bytesRead * 100f / contentLength));
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java
index 07bffaef..03c2a076 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java
@@ -34,6 +34,7 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.materialswitch.MaterialSwitch;
+import com.google.android.material.progressindicator.LinearProgressIndicator;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
@@ -63,6 +64,7 @@ public class FeedsFragment extends Fragment implements OnSharedPreferenceChangeL
protected FeedsAdapter m_adapter;
private RecyclerView m_list;
private RecyclerView.LayoutManager m_layoutManager;
+ private LinearProgressIndicator m_loadingProgress;
public void initialize(@NonNull Feed rootFeed, boolean enableParentBtn) {
Log.d(TAG, "initialize, feed=" + rootFeed);
@@ -249,6 +251,8 @@ public class FeedsFragment extends Fragment implements OnSharedPreferenceChangeL
m_swipeLayout.setOnRefreshListener(this::refresh);
+ m_loadingProgress = view.findViewById(R.id.loading_progress);
+
m_list = view.findViewById(R.id.feeds);
registerForContextMenu(m_list);
@@ -288,15 +292,29 @@ public class FeedsFragment extends Fragment implements OnSharedPreferenceChangeL
FeedsModel model = new ViewModelProvider(this).get(FeedsModel.class);
- model.getUpdatesData().observe(getActivity(), lastUpdate -> {
+ model.getUpdatesData().observe(m_activity, lastUpdate -> {
Log.d(TAG, "observed update=" + lastUpdate);
});
- model.getIsLoading().observe(getActivity(), isLoading -> {
+ model.getLoadingProgress().observe(m_activity, progress -> {
+ Log.d(TAG, "observed feeds loading progress=" + progress);
+
+ if (isAdded() && m_loadingProgress != null) {
+ m_loadingProgress.setVisibility(progress < 100 ? View.VISIBLE : View.GONE);
+ m_loadingProgress.setProgress(progress);
+ }
+ });
+
+ model.getIsLoading().observe(m_activity, isLoading -> {
Log.d(TAG, "observed isLoading=" + isLoading);
- if (isAdded() && m_swipeLayout != null)
- m_swipeLayout.setRefreshing(isLoading);
+ if (isAdded()) {
+ if (m_swipeLayout != null)
+ m_swipeLayout.setRefreshing(isLoading);
+
+ if (m_loadingProgress != null && !isLoading)
+ m_loadingProgress.setVisibility(View.GONE);
+ }
});
model.getFeeds().observe(getActivity(), feeds -> {