From 11f87d14a5f8ab5ce349019c2bd01db2861cb645 Mon Sep 17 00:00:00 2001 From: Shinokuni Date: Mon, 1 Nov 2021 18:26:38 +0100 Subject: [PATCH] Add preference for marking items read on scroll --- .../readrops/app/itemslist/MainActivity.java | 17 +++++++++++++++++ .../app/utils/SharedPreferencesManager.java | 3 ++- app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/preferences.xml | 5 +++++ 5 files changed, 26 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/readrops/app/itemslist/MainActivity.java b/app/src/main/java/com/readrops/app/itemslist/MainActivity.java index 1a6f475b..b89e32c9 100644 --- a/app/src/main/java/com/readrops/app/itemslist/MainActivity.java +++ b/app/src/main/java/com/readrops/app/itemslist/MainActivity.java @@ -444,6 +444,23 @@ public class MainActivity extends AppCompatActivity implements SwipeRefreshLayou } else { binding.addFeedFab.show(); } + + int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition(); + if (firstVisibleItemPosition - 2 >= 0) { + Item item = adapter.getItemWithFeed(firstVisibleItemPosition - 2).getItem(); + + // Might be better to have a global variable updated when going back from settings + if (!item.isRead() && SharedPreferencesManager.readBoolean(SharedPreferencesManager + .SharedPrefKey.MARK_ITEMS_READ_ON_SCROLL)) { + item.setRead(!item.isRead()); + + viewModel.setItemReadState(item) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .doOnError(throwable -> Utils.showSnackbar(binding.mainRoot, throwable.getMessage())) + .subscribe(); + } + } } }); } diff --git a/app/src/main/java/com/readrops/app/utils/SharedPreferencesManager.java b/app/src/main/java/com/readrops/app/utils/SharedPreferencesManager.java index c514e870..6a4cd5c4 100644 --- a/app/src/main/java/com/readrops/app/utils/SharedPreferencesManager.java +++ b/app/src/main/java/com/readrops/app/utils/SharedPreferencesManager.java @@ -58,7 +58,8 @@ public final class SharedPreferencesManager { OPEN_ITEMS_IN("open_items_in", "0"), DARK_THEME("dark_theme", "false"), AUTO_SYNCHRO("auto_synchro", "0"), - HIDE_SHOW_FEEDS("show_hide_feeds", "true"); + HIDE_SHOW_FEEDS("show_hide_feeds", "true"), + MARK_ITEMS_READ_ON_SCROLL("mark_items_read", false); @NonNull private String key; diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index a71eca41..287cf971 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -141,5 +141,6 @@ Cacher Afficher Afficher ou cacher les flux sans nouveaux items + Marquer les items comme lus pendant le défilement \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c10c6b2f..13a8987c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -147,4 +147,5 @@ Hide Show Show or hide feeds without new items + Mark items read on scroll \ No newline at end of file diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index da214a81..ab80091f 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -43,6 +43,11 @@ android:key="show_hide_feeds" android:title="@string/show_hide_feeds" /> + +