diff options
| author | Andrew Dolgov <fox@fakecake.org> | 2025-05-14 16:47:17 +0300 |
|---|---|---|
| committer | Andrew Dolgov <fox@fakecake.org> | 2025-05-14 16:47:17 +0300 |
| commit | c9373800c9f6e7ac3e089f0325e5d284fe7e7b9a (patch) | |
| tree | 1b3afe6cb5f51d8f3d3f455642417ac25de3b98f | |
| parent | 6b50f1e92dda8807dd071a61550cdc7f45425cd1 (diff) | |
add some auto catchup debugging, clear list before refreshing from scratch
| -rwxr-xr-x | org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java | 53 |
1 files changed, 32 insertions, 21 deletions
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java index 67afe85d..196265b8 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java @@ -80,6 +80,7 @@ import org.jsoup.nodes.Element; import java.text.DateFormat; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.TimeZone; @@ -389,25 +390,26 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment { public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); + HeadlinesModel model = Application.getInstance().getHeadlinesModel(); + if (newState == RecyclerView.SCROLL_STATE_IDLE) { - if (m_prefs.getBoolean("headlines_mark_read_scroll", false)) { - if (!m_readArticles.isEmpty()) { + if (!m_readArticles.isEmpty() && !m_isLazyLoading && !model.isLoading() && m_prefs.getBoolean("headlines_mark_read_scroll", false)) { + Log.d(TAG, "marking articles as read, count=" + m_readArticles.size()); - m_activity.setArticlesUnread(m_readArticles, Article.UPDATE_SET_FALSE); + m_activity.setArticlesUnread(m_readArticles, Article.UPDATE_SET_FALSE); - for (Article a : m_readArticles) { - a.unread = false; + for (Article a : m_readArticles) { + a.unread = false; - int position = Application.getArticles().getPositionById(a.id); + int position = Application.getArticles().getPositionById(a.id); - if (position != -1) - m_adapter.notifyItemChanged(position); - } + if (position != -1) + m_adapter.notifyItemChanged(position); + } - m_readArticles.clear(); + m_readArticles.clear(); - new Handler().postDelayed(() -> m_activity.refresh(false), 100); - } + new Handler().postDelayed(() -> m_activity.refresh(false), 100); } } } @@ -461,7 +463,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment { HeadlinesModel model = Application.getInstance().getHeadlinesModel(); model.getLiveData().observe(getActivity(), articles -> { - Log.d(TAG, "observed article list size=" + articles.size()); + Log.d(TAG, "observed article list size=" + articles.size() + " append=" + model.getAppend()); ArticleList tmp = new ArticleList(); @@ -531,22 +533,31 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment { } public void refresh(final boolean append) { + HeadlinesModel model = Application.getInstance().getHeadlinesModel(); + if (!append) { m_activeArticleId = -1; if (m_adapter != null) { ArticleList tmp = new ArticleList(); - m_adapter.submitList(tmp); - } - } + m_adapter.submitList(tmp, () -> { - if (m_swipeLayout != null) - m_swipeLayout.setRefreshing(true); + if (m_swipeLayout != null) + m_swipeLayout.setRefreshing(true); - HeadlinesModel model = Application.getInstance().getHeadlinesModel(); + model.setSearchQuery(getSearchQuery()); + model.startLoading(false, m_feed, m_activity.getResizeWidth()); + + }); + } + } else { + if (m_swipeLayout != null) + m_swipeLayout.setRefreshing(true); + + model.setSearchQuery(getSearchQuery()); + model.startLoading(true, m_feed, m_activity.getResizeWidth()); + } - model.setSearchQuery(getSearchQuery()); - model.startLoading(append, m_feed, m_activity.getResizeWidth()); } static class ArticleViewHolder extends RecyclerView.ViewHolder { |