From 71b0493d23ff548fe4a0c8e5cf5ab7a59187a05a Mon Sep 17 00:00:00 2001 From: sttanner <2830501+sttanner@users.noreply.github.com> Date: Sat, 22 Mar 2025 15:27:54 -0500 Subject: [PATCH 01/19] Mark posts as read on scroll --- .../redreader/common/PrefsUtility.java | 7 ++++ .../fragments/PostListingFragment.java | 36 +++++++++++++++++++ .../redreader/views/RedditPostView.java | 4 +++ src/main/res/values/strings.xml | 4 +++ src/main/res/xml/prefs_behaviour.xml | 4 +++ 5 files changed, 55 insertions(+) diff --git a/src/main/java/org/quantumbadger/redreader/common/PrefsUtility.java b/src/main/java/org/quantumbadger/redreader/common/PrefsUtility.java index 1262439fb..cf671bae0 100644 --- a/src/main/java/org/quantumbadger/redreader/common/PrefsUtility.java +++ b/src/main/java/org/quantumbadger/redreader/common/PrefsUtility.java @@ -113,6 +113,7 @@ public static boolean isRefreshRequired(final Context context, final String key) || key.equals(context.getString(R.string.pref_behaviour_fling_post_right_key)) || key.equals(context.getString(R.string.pref_behaviour_nsfw_key)) || key.equals(context.getString(R.string.pref_behaviour_postcount_key)) + || key.equals(context.getString(R.string.pref_behaviour_mark_read_on_scroll_key)) || key.equals(context.getString(R.string.pref_behaviour_comment_min_key)) || key.equals(context.getString(R.string.pref_behaviour_pinned_subredditsort_key)) || key.equals(context.getString( @@ -1772,6 +1773,12 @@ public static boolean pref_behaviour_keep_screen_awake() { false); } + public static boolean pref_mark_read_on_scroll() { + return getBoolean( + R.string.pref_behaviour_mark_read_on_scroll_key, + false); + } + @Nullable public static String pref_reddit_client_id_override() { final String value = getString(R.string.pref_reddit_client_id_override_key, null); diff --git a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java index 573aebabd..35ff620bf 100644 --- a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java +++ b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java @@ -526,6 +526,42 @@ private void onLoadMoreItemsCheck() { General.checkThisIsUIThread(); + final LinearLayoutManager layoutManager + = (LinearLayoutManager)mRecyclerView.getLayoutManager(); + + final boolean markReadOnScroll = PrefsUtility.pref_mark_read_on_scroll(); + + if((layoutManager != null) && markReadOnScroll) { + + final int firstVisibleItemPosition + = layoutManager.findFirstVisibleItemPosition(); + + final int firstCompletelyVisibleItemPosition + = layoutManager.findFirstCompletelyVisibleItemPosition(); + + // Mark the first visible post read on scroll + if(firstVisibleItemPosition >= 1 + && firstCompletelyVisibleItemPosition != 0) { + + final RedditPostView view = (RedditPostView) layoutManager.getChildAt(0); + + final int position = + (view != null) ? layoutManager.getPosition(view) : RecyclerView.NO_POSITION; + + final RedditPreparedPost post + = (position == firstVisibleItemPosition) ? view.getPost() : null; + + if ((post != null) && !post.isRead()) { + new Thread() { + @Override + public void run() { + post.markAsRead(getActivity()); + } + }.start(); + } + } + } + if(mReadyToDownloadMore && mAfter != null && !mAfter.equals(mLastAfter)) { final LinearLayoutManager layoutManager diff --git a/src/main/java/org/quantumbadger/redreader/views/RedditPostView.java b/src/main/java/org/quantumbadger/redreader/views/RedditPostView.java index 6bce3e40d..c43697c7d 100644 --- a/src/main/java/org/quantumbadger/redreader/views/RedditPostView.java +++ b/src/main/java/org/quantumbadger/redreader/views/RedditPostView.java @@ -667,4 +667,8 @@ private void showPrefPrompt() { .apply(); }); } + + @Nullable public RedditPreparedPost getPost() { + return mPost; + } } diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 89b7aa7e2..2e4e14641 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -1907,4 +1907,8 @@ Change video speed Choose playback speed Speed + + + pref_behaviour_mark_read_on_scroll + Mark posts as read on scroll diff --git a/src/main/res/xml/prefs_behaviour.xml b/src/main/res/xml/prefs_behaviour.xml index ff44f146e..a5d63882f 100644 --- a/src/main/res/xml/prefs_behaviour.xml +++ b/src/main/res/xml/prefs_behaviour.xml @@ -181,6 +181,10 @@ android:entryValues="@array/pref_behaviour_postcount_items_return" android:defaultValue="ALL"/> + + From 69991cbedfca0bb9d8b137687bd8e1c01c31b764 Mon Sep 17 00:00:00 2001 From: sttanner <2830501+sttanner@users.noreply.github.com> Date: Sat, 22 Mar 2025 15:45:51 -0500 Subject: [PATCH 02/19] Remove duplicate layoutManager declaration --- .../quantumbadger/redreader/fragments/PostListingFragment.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java index 35ff620bf..a77d0f2a7 100644 --- a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java +++ b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java @@ -564,9 +564,6 @@ public void run() { if(mReadyToDownloadMore && mAfter != null && !mAfter.equals(mLastAfter)) { - final LinearLayoutManager layoutManager - = (LinearLayoutManager)mRecyclerView.getLayoutManager(); - if((layoutManager.getItemCount() - layoutManager.findLastVisibleItemPosition() < 20 && (mPostCountLimit <= 0 || mPostRefreshCount.get() > 0) From 1a28ab42f12a2d69d1407fce906738d500e2efc8 Mon Sep 17 00:00:00 2001 From: sttanner <2830501+sttanner@users.noreply.github.com> Date: Sat, 22 Mar 2025 15:54:11 -0500 Subject: [PATCH 03/19] Cleanup trailing space --- .../quantumbadger/redreader/fragments/PostListingFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java index a77d0f2a7..d535a238a 100644 --- a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java +++ b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java @@ -526,7 +526,7 @@ private void onLoadMoreItemsCheck() { General.checkThisIsUIThread(); - final LinearLayoutManager layoutManager + final LinearLayoutManager layoutManager = (LinearLayoutManager)mRecyclerView.getLayoutManager(); final boolean markReadOnScroll = PrefsUtility.pref_mark_read_on_scroll(); From 67b51b3c6bb616f70156ca065e0a7f4397941554 Mon Sep 17 00:00:00 2001 From: sttanner <2830501+sttanner@users.noreply.github.com> Date: Sat, 22 Mar 2025 17:12:09 -0500 Subject: [PATCH 04/19] Remove markReadOnScroll variable --- .../redreader/fragments/PostListingFragment.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java index d535a238a..ff146a1c1 100644 --- a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java +++ b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java @@ -529,9 +529,7 @@ private void onLoadMoreItemsCheck() { final LinearLayoutManager layoutManager = (LinearLayoutManager)mRecyclerView.getLayoutManager(); - final boolean markReadOnScroll = PrefsUtility.pref_mark_read_on_scroll(); - - if((layoutManager != null) && markReadOnScroll) { + if((layoutManager != null) && PrefsUtility.pref_mark_read_on_scroll();) { final int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition(); @@ -539,7 +537,6 @@ private void onLoadMoreItemsCheck() { final int firstCompletelyVisibleItemPosition = layoutManager.findFirstCompletelyVisibleItemPosition(); - // Mark the first visible post read on scroll if(firstVisibleItemPosition >= 1 && firstCompletelyVisibleItemPosition != 0) { @@ -551,6 +548,7 @@ private void onLoadMoreItemsCheck() { final RedditPreparedPost post = (position == firstVisibleItemPosition) ? view.getPost() : null; + // Mark the first visible post read if it is unread if ((post != null) && !post.isRead()) { new Thread() { @Override From c0a8b972a03379f8a538da617dab9ee03056d392 Mon Sep 17 00:00:00 2001 From: sttanner <2830501+sttanner@users.noreply.github.com> Date: Sat, 22 Mar 2025 18:48:38 -0500 Subject: [PATCH 05/19] Fix typo in PrefsUtility.pref_mark_read_on_scroll() --- .../quantumbadger/redreader/fragments/PostListingFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java index ff146a1c1..226fd5ca3 100644 --- a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java +++ b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java @@ -529,7 +529,7 @@ private void onLoadMoreItemsCheck() { final LinearLayoutManager layoutManager = (LinearLayoutManager)mRecyclerView.getLayoutManager(); - if((layoutManager != null) && PrefsUtility.pref_mark_read_on_scroll();) { + if((layoutManager != null) && PrefsUtility.pref_mark_read_on_scroll()) { final int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition(); From c0265469d737252df6b290b9a17fea3b238ea902 Mon Sep 17 00:00:00 2001 From: sttanner <2830501+sttanner@users.noreply.github.com> Date: Sun, 23 Mar 2025 12:35:02 -0500 Subject: [PATCH 06/19] Refactor for readability --- .../fragments/PostListingFragment.java | 48 +++++++++++-------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java index 226fd5ca3..b60d719e4 100644 --- a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java +++ b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java @@ -526,42 +526,48 @@ private void onLoadMoreItemsCheck() { General.checkThisIsUIThread(); - final LinearLayoutManager layoutManager - = (LinearLayoutManager)mRecyclerView.getLayoutManager(); + if(PrefsUtility.pref_mark_read_on_scroll()) { + + final LinearLayoutManager layoutManager + = (LinearLayoutManager)mRecyclerView.getLayoutManager(); - if((layoutManager != null) && PrefsUtility.pref_mark_read_on_scroll()) { + if (layoutManager != null) { - final int firstVisibleItemPosition - = layoutManager.findFirstVisibleItemPosition(); + final int firstVisibleItemPosition + = layoutManager.findFirstVisibleItemPosition(); - final int firstCompletelyVisibleItemPosition - = layoutManager.findFirstCompletelyVisibleItemPosition(); + final int firstCompletelyVisibleItemPosition + = layoutManager.findFirstCompletelyVisibleItemPosition(); - if(firstVisibleItemPosition >= 1 - && firstCompletelyVisibleItemPosition != 0) { + if(firstVisibleItemPosition >= 1 + && firstCompletelyVisibleItemPosition != 0) { - final RedditPostView view = (RedditPostView) layoutManager.getChildAt(0); + final RedditPostView view = (RedditPostView) layoutManager.getChildAt(0); - final int position = + final int position = (view != null) ? layoutManager.getPosition(view) : RecyclerView.NO_POSITION; - final RedditPreparedPost post - = (position == firstVisibleItemPosition) ? view.getPost() : null; + final RedditPreparedPost post + = (position == firstVisibleItemPosition) ? view.getPost() : null; - // Mark the first visible post read if it is unread - if ((post != null) && !post.isRead()) { - new Thread() { - @Override - public void run() { - post.markAsRead(getActivity()); - } - }.start(); + // Mark the first visible post read if it is unread + if ((post != null) && !post.isRead()) { + new Thread() { + @Override + public void run() { + post.markAsRead(getActivity()); + } + }.start(); + } } } } if(mReadyToDownloadMore && mAfter != null && !mAfter.equals(mLastAfter)) { + final LinearLayoutManager layoutManager + = (LinearLayoutManager)mRecyclerView.getLayoutManager(); + if((layoutManager.getItemCount() - layoutManager.findLastVisibleItemPosition() < 20 && (mPostCountLimit <= 0 || mPostRefreshCount.get() > 0) From a22105af4772c8d0ed2fb9d998904a08a8fc379e Mon Sep 17 00:00:00 2001 From: sttanner <2830501+sttanner@users.noreply.github.com> Date: Sun, 23 Mar 2025 12:37:41 -0500 Subject: [PATCH 07/19] Whitespace cleanup --- .../quantumbadger/redreader/fragments/PostListingFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java index b60d719e4..a0c307b2d 100644 --- a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java +++ b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java @@ -567,7 +567,7 @@ public void run() { final LinearLayoutManager layoutManager = (LinearLayoutManager)mRecyclerView.getLayoutManager(); - + if((layoutManager.getItemCount() - layoutManager.findLastVisibleItemPosition() < 20 && (mPostCountLimit <= 0 || mPostRefreshCount.get() > 0) From c080948d5391aeb8fc4df3a593c4f60438cb40f8 Mon Sep 17 00:00:00 2001 From: sttanner <2830501+sttanner@users.noreply.github.com> Date: Sun, 23 Mar 2025 12:51:18 -0500 Subject: [PATCH 08/19] More closely match the style of existing code --- .../redreader/fragments/PostListingFragment.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java index a0c307b2d..937536e00 100644 --- a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java +++ b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java @@ -531,7 +531,7 @@ private void onLoadMoreItemsCheck() { final LinearLayoutManager layoutManager = (LinearLayoutManager)mRecyclerView.getLayoutManager(); - if (layoutManager != null) { + if(layoutManager != null) { final int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition(); @@ -551,7 +551,7 @@ private void onLoadMoreItemsCheck() { = (position == firstVisibleItemPosition) ? view.getPost() : null; // Mark the first visible post read if it is unread - if ((post != null) && !post.isRead()) { + if((post != null) && !post.isRead()) { new Thread() { @Override public void run() { From 6a7564ed638f7526f047860bfcbaba867a84fd79 Mon Sep 17 00:00:00 2001 From: sttanner <2830501+sttanner@users.noreply.github.com> Date: Thu, 13 Nov 2025 17:58:44 -0600 Subject: [PATCH 09/19] Prepare for rebase against v1.25 by removing updates to string.xml --- src/main/res/values/strings.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 2e4e14641..89b7aa7e2 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -1907,8 +1907,4 @@ Change video speed Choose playback speed Speed - - - pref_behaviour_mark_read_on_scroll - Mark posts as read on scroll From 811dd82eb6ea44f94e3483f429a0e945b65a0744 Mon Sep 17 00:00:00 2001 From: sttanner <2830501+sttanner@users.noreply.github.com> Date: Sat, 22 Mar 2025 15:27:54 -0500 Subject: [PATCH 10/19] Mark posts as read on scroll --- .../redreader/common/PrefsUtility.java | 7 ++++ .../fragments/PostListingFragment.java | 36 +++++++++++++++++++ .../redreader/views/RedditPostView.java | 4 +++ src/main/res/values/strings.xml | 2 +- src/main/res/xml/prefs_behaviour.xml | 4 +++ 5 files changed, 52 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/quantumbadger/redreader/common/PrefsUtility.java b/src/main/java/org/quantumbadger/redreader/common/PrefsUtility.java index c47ce987d..a8444102a 100644 --- a/src/main/java/org/quantumbadger/redreader/common/PrefsUtility.java +++ b/src/main/java/org/quantumbadger/redreader/common/PrefsUtility.java @@ -114,6 +114,7 @@ public static boolean isRefreshRequired(final Context context, final String key) || key.equals(context.getString(R.string.pref_behaviour_fling_post_right_key)) || key.equals(context.getString(R.string.pref_behaviour_nsfw_key)) || key.equals(context.getString(R.string.pref_behaviour_postcount_key)) + || key.equals(context.getString(R.string.pref_behaviour_mark_read_on_scroll_key)) || key.equals(context.getString(R.string.pref_behaviour_comment_min_key)) || key.equals(context.getString(R.string.pref_behaviour_pinned_subredditsort_key)) || key.equals(context.getString( @@ -1784,6 +1785,12 @@ public static boolean pref_behaviour_keep_screen_awake() { false); } + public static boolean pref_mark_read_on_scroll() { + return getBoolean( + R.string.pref_behaviour_mark_read_on_scroll_key, + false); + } + @Nullable public static String pref_reddit_client_id_override() { final String value = getString(R.string.pref_reddit_client_id_override_key, null); diff --git a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java index ad6f08728..f38c7eb59 100644 --- a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java +++ b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java @@ -507,6 +507,42 @@ private void onLoadMoreItemsCheck() { General.checkThisIsUIThread(); + final LinearLayoutManager layoutManager + = (LinearLayoutManager)mRecyclerView.getLayoutManager(); + + final boolean markReadOnScroll = PrefsUtility.pref_mark_read_on_scroll(); + + if((layoutManager != null) && markReadOnScroll) { + + final int firstVisibleItemPosition + = layoutManager.findFirstVisibleItemPosition(); + + final int firstCompletelyVisibleItemPosition + = layoutManager.findFirstCompletelyVisibleItemPosition(); + + // Mark the first visible post read on scroll + if(firstVisibleItemPosition >= 1 + && firstCompletelyVisibleItemPosition != 0) { + + final RedditPostView view = (RedditPostView) layoutManager.getChildAt(0); + + final int position = + (view != null) ? layoutManager.getPosition(view) : RecyclerView.NO_POSITION; + + final RedditPreparedPost post + = (position == firstVisibleItemPosition) ? view.getPost() : null; + + if ((post != null) && !post.isRead()) { + new Thread() { + @Override + public void run() { + post.markAsRead(getActivity()); + } + }.start(); + } + } + } + if(mReadyToDownloadMore && mAfter != null && !mAfter.equals(mLastAfter)) { final LinearLayoutManager layoutManager diff --git a/src/main/java/org/quantumbadger/redreader/views/RedditPostView.java b/src/main/java/org/quantumbadger/redreader/views/RedditPostView.java index 6bce3e40d..c43697c7d 100644 --- a/src/main/java/org/quantumbadger/redreader/views/RedditPostView.java +++ b/src/main/java/org/quantumbadger/redreader/views/RedditPostView.java @@ -667,4 +667,8 @@ private void showPrefPrompt() { .apply(); }); } + + @Nullable public RedditPreparedPost getPost() { + return mPost; + } } diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 41afeea77..e03ecfc2d 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -1921,4 +1921,4 @@ Reddit login issue There was a problem logging into Reddit. Try again in an different browser? - + \ No newline at end of file diff --git a/src/main/res/xml/prefs_behaviour.xml b/src/main/res/xml/prefs_behaviour.xml index b64412042..6cd1e69ec 100644 --- a/src/main/res/xml/prefs_behaviour.xml +++ b/src/main/res/xml/prefs_behaviour.xml @@ -185,6 +185,10 @@ android:entryValues="@array/pref_behaviour_postcount_items_return" android:defaultValue="ALL"/> + + From a3b3c6f06e0b3ef3caa05a4a2e605133472f409b Mon Sep 17 00:00:00 2001 From: sttanner <2830501+sttanner@users.noreply.github.com> Date: Sat, 22 Mar 2025 15:45:51 -0500 Subject: [PATCH 11/19] Remove duplicate layoutManager declaration --- .../quantumbadger/redreader/fragments/PostListingFragment.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java index f38c7eb59..c56bc40e7 100644 --- a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java +++ b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java @@ -545,9 +545,6 @@ public void run() { if(mReadyToDownloadMore && mAfter != null && !mAfter.equals(mLastAfter)) { - final LinearLayoutManager layoutManager - = (LinearLayoutManager)mRecyclerView.getLayoutManager(); - if((layoutManager.getItemCount() - layoutManager.findLastVisibleItemPosition() < 20 && (mPostCountLimit <= 0 || mPostRefreshCount.get() > 0) From cef9dddbab36721991905007c479beaab43a165f Mon Sep 17 00:00:00 2001 From: sttanner <2830501+sttanner@users.noreply.github.com> Date: Sat, 22 Mar 2025 15:54:11 -0500 Subject: [PATCH 12/19] Cleanup trailing space --- .../quantumbadger/redreader/fragments/PostListingFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java index c56bc40e7..06e525c52 100644 --- a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java +++ b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java @@ -507,7 +507,7 @@ private void onLoadMoreItemsCheck() { General.checkThisIsUIThread(); - final LinearLayoutManager layoutManager + final LinearLayoutManager layoutManager = (LinearLayoutManager)mRecyclerView.getLayoutManager(); final boolean markReadOnScroll = PrefsUtility.pref_mark_read_on_scroll(); From 71a51044a7ff2476f7ba7ad91c59b3025dfe2583 Mon Sep 17 00:00:00 2001 From: sttanner <2830501+sttanner@users.noreply.github.com> Date: Sat, 22 Mar 2025 17:12:09 -0500 Subject: [PATCH 13/19] Remove markReadOnScroll variable --- .../redreader/fragments/PostListingFragment.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java index 06e525c52..64a7fccaf 100644 --- a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java +++ b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java @@ -510,9 +510,7 @@ private void onLoadMoreItemsCheck() { final LinearLayoutManager layoutManager = (LinearLayoutManager)mRecyclerView.getLayoutManager(); - final boolean markReadOnScroll = PrefsUtility.pref_mark_read_on_scroll(); - - if((layoutManager != null) && markReadOnScroll) { + if((layoutManager != null) && PrefsUtility.pref_mark_read_on_scroll();) { final int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition(); @@ -520,7 +518,6 @@ private void onLoadMoreItemsCheck() { final int firstCompletelyVisibleItemPosition = layoutManager.findFirstCompletelyVisibleItemPosition(); - // Mark the first visible post read on scroll if(firstVisibleItemPosition >= 1 && firstCompletelyVisibleItemPosition != 0) { @@ -532,6 +529,7 @@ private void onLoadMoreItemsCheck() { final RedditPreparedPost post = (position == firstVisibleItemPosition) ? view.getPost() : null; + // Mark the first visible post read if it is unread if ((post != null) && !post.isRead()) { new Thread() { @Override From 781fb78337ba5827acb570468f2504394bb317bc Mon Sep 17 00:00:00 2001 From: sttanner <2830501+sttanner@users.noreply.github.com> Date: Sat, 22 Mar 2025 18:48:38 -0500 Subject: [PATCH 14/19] Fix typo in PrefsUtility.pref_mark_read_on_scroll() --- .../quantumbadger/redreader/fragments/PostListingFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java index 64a7fccaf..b0bf837f7 100644 --- a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java +++ b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java @@ -510,7 +510,7 @@ private void onLoadMoreItemsCheck() { final LinearLayoutManager layoutManager = (LinearLayoutManager)mRecyclerView.getLayoutManager(); - if((layoutManager != null) && PrefsUtility.pref_mark_read_on_scroll();) { + if((layoutManager != null) && PrefsUtility.pref_mark_read_on_scroll()) { final int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition(); From 8ac8b0326dde077e623e4cca1b6e4dcc15998758 Mon Sep 17 00:00:00 2001 From: sttanner <2830501+sttanner@users.noreply.github.com> Date: Sun, 23 Mar 2025 12:35:02 -0500 Subject: [PATCH 15/19] Refactor for readability --- .../fragments/PostListingFragment.java | 48 +++++++++++-------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java index b0bf837f7..c2fdaf335 100644 --- a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java +++ b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java @@ -507,42 +507,48 @@ private void onLoadMoreItemsCheck() { General.checkThisIsUIThread(); - final LinearLayoutManager layoutManager - = (LinearLayoutManager)mRecyclerView.getLayoutManager(); + if(PrefsUtility.pref_mark_read_on_scroll()) { + + final LinearLayoutManager layoutManager + = (LinearLayoutManager)mRecyclerView.getLayoutManager(); - if((layoutManager != null) && PrefsUtility.pref_mark_read_on_scroll()) { + if (layoutManager != null) { - final int firstVisibleItemPosition - = layoutManager.findFirstVisibleItemPosition(); + final int firstVisibleItemPosition + = layoutManager.findFirstVisibleItemPosition(); - final int firstCompletelyVisibleItemPosition - = layoutManager.findFirstCompletelyVisibleItemPosition(); + final int firstCompletelyVisibleItemPosition + = layoutManager.findFirstCompletelyVisibleItemPosition(); - if(firstVisibleItemPosition >= 1 - && firstCompletelyVisibleItemPosition != 0) { + if(firstVisibleItemPosition >= 1 + && firstCompletelyVisibleItemPosition != 0) { - final RedditPostView view = (RedditPostView) layoutManager.getChildAt(0); + final RedditPostView view = (RedditPostView) layoutManager.getChildAt(0); - final int position = + final int position = (view != null) ? layoutManager.getPosition(view) : RecyclerView.NO_POSITION; - final RedditPreparedPost post - = (position == firstVisibleItemPosition) ? view.getPost() : null; + final RedditPreparedPost post + = (position == firstVisibleItemPosition) ? view.getPost() : null; - // Mark the first visible post read if it is unread - if ((post != null) && !post.isRead()) { - new Thread() { - @Override - public void run() { - post.markAsRead(getActivity()); - } - }.start(); + // Mark the first visible post read if it is unread + if ((post != null) && !post.isRead()) { + new Thread() { + @Override + public void run() { + post.markAsRead(getActivity()); + } + }.start(); + } } } } if(mReadyToDownloadMore && mAfter != null && !mAfter.equals(mLastAfter)) { + final LinearLayoutManager layoutManager + = (LinearLayoutManager)mRecyclerView.getLayoutManager(); + if((layoutManager.getItemCount() - layoutManager.findLastVisibleItemPosition() < 20 && (mPostCountLimit <= 0 || mPostRefreshCount.get() > 0) From b22b661efef2a8340535ab132db07fd07a60a685 Mon Sep 17 00:00:00 2001 From: sttanner <2830501+sttanner@users.noreply.github.com> Date: Sun, 23 Mar 2025 12:37:41 -0500 Subject: [PATCH 16/19] Whitespace cleanup --- .../quantumbadger/redreader/fragments/PostListingFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java index c2fdaf335..e259683ee 100644 --- a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java +++ b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java @@ -548,7 +548,7 @@ public void run() { final LinearLayoutManager layoutManager = (LinearLayoutManager)mRecyclerView.getLayoutManager(); - + if((layoutManager.getItemCount() - layoutManager.findLastVisibleItemPosition() < 20 && (mPostCountLimit <= 0 || mPostRefreshCount.get() > 0) From bcc93b1efccb91bdbb7bd5c8cec708f9f3730900 Mon Sep 17 00:00:00 2001 From: sttanner <2830501+sttanner@users.noreply.github.com> Date: Sun, 23 Mar 2025 12:51:18 -0500 Subject: [PATCH 17/19] More closely match the style of existing code --- .../redreader/fragments/PostListingFragment.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java index e259683ee..bee659053 100644 --- a/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java +++ b/src/main/java/org/quantumbadger/redreader/fragments/PostListingFragment.java @@ -512,7 +512,7 @@ private void onLoadMoreItemsCheck() { final LinearLayoutManager layoutManager = (LinearLayoutManager)mRecyclerView.getLayoutManager(); - if (layoutManager != null) { + if(layoutManager != null) { final int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition(); @@ -532,7 +532,7 @@ private void onLoadMoreItemsCheck() { = (position == firstVisibleItemPosition) ? view.getPost() : null; // Mark the first visible post read if it is unread - if ((post != null) && !post.isRead()) { + if((post != null) && !post.isRead()) { new Thread() { @Override public void run() { From b75d8ec3477d88686e42756a69448b988cb55868 Mon Sep 17 00:00:00 2001 From: sttanner <2830501+sttanner@users.noreply.github.com> Date: Thu, 13 Nov 2025 18:08:27 -0600 Subject: [PATCH 18/19] Rebase against v1.25 and reapply updates to strings.xml --- src/main/res/values/strings.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index e03ecfc2d..1003f3dfb 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -1921,4 +1921,8 @@ Reddit login issue There was a problem logging into Reddit. Try again in an different browser? + + + pref_behaviour_mark_read_on_scroll + Mark posts as read on scroll \ No newline at end of file From d7688b6a6eb2bc3dd8bbb1d75fb23916dadfda4c Mon Sep 17 00:00:00 2001 From: sttanner <2830501+sttanner@users.noreply.github.com> Date: Wed, 10 Dec 2025 20:31:59 -0600 Subject: [PATCH 19/19] Update strings.xml --- src/main/res/values/strings.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index b6f435c0c..95c6f54c5 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -1924,4 +1924,8 @@ No messages yet. + + + pref_behaviour_mark_read_on_scroll + Mark posts as read on scroll \ No newline at end of file