diff --git a/app/src/main/java/org/schabi/newpipe/local/feed/service/FeedLoadManager.kt b/app/src/main/java/org/schabi/newpipe/local/feed/service/FeedLoadManager.kt index 5dc7b0d28..8d0a3e663 100644 --- a/app/src/main/java/org/schabi/newpipe/local/feed/service/FeedLoadManager.kt +++ b/app/src/main/java/org/schabi/newpipe/local/feed/service/FeedLoadManager.kt @@ -26,6 +26,7 @@ import org.schabi.newpipe.util.ChannelTabHelper import org.schabi.newpipe.util.ExtractorHelper.getChannelInfo import org.schabi.newpipe.util.ExtractorHelper.getChannelTab import org.schabi.newpipe.util.ExtractorHelper.getMoreChannelTabItems +import org.schabi.newpipe.util.StreamTypeUtil import java.time.OffsetDateTime import java.time.ZoneOffset import java.util.concurrent.ConcurrentHashMap @@ -82,6 +83,11 @@ class FeedLoadManager(private val context: Context) { true ) + val filterLivestreams = defaultSharedPreferences.getBoolean( + context.getString(R.string.filter_livestreams_key), + false + ) + val outdatedThreshold = if (ignoreOutdatedThreshold) { OffsetDateTime.now(ZoneOffset.UTC) } else { @@ -214,7 +220,7 @@ class FeedLoadManager(private val context: Context) { } .filterIsInstance() } - streams = streams?.filterNot { it.isRoundPlayStream || (filterFutureItems && it.uploadDate != null && it.uploadDate!!.offsetDateTime().isAfter(OffsetDateTime.now())) } + streams = streams?.filterNot { it.isRoundPlayStream || (filterFutureItems && it.uploadDate != null && it.uploadDate!!.offsetDateTime().isAfter(OffsetDateTime.now())) || (filterLivestreams && StreamTypeUtil.isLiveStream(it.streamType)) } return@defer Flowable.just( FeedUpdateInfo( diff --git a/app/src/main/java/org/schabi/newpipe/settings/FilterSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/FilterSettingsFragment.java index 9d6a36f92..3b8271fdb 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/FilterSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/FilterSettingsFragment.java @@ -18,6 +18,7 @@ public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable S Preference filter_shorts = findPreference(getString(R.string.filter_shorts_key)); Preference filter_paid_contents = findPreference(getString(R.string.filter_paid_contents_key)); Preference filter_future_items = findPreference(getString(R.string.filter_future_items_key)); + Preference filter_livestreams = findPreference(getString(R.string.filter_livestreams_key)); Preference filter_type = findPreference(getString(R.string.filter_type_key)); filter_by_keyword.setOnPreferenceClickListener(preference -> { @@ -53,6 +54,13 @@ public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable S return true; }); + filter_livestreams.setOnPreferenceChangeListener((preference, newValue) -> { + new Handler().postDelayed(() -> { + ServiceHelper.initServices(getContext()); + }, 100); + return true; + }); + filter_type.setOnPreferenceChangeListener((preference, newValue) -> { new Handler().postDelayed(() -> { ServiceHelper.initServices(getContext()); diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml index 35cb70911..998552af7 100644 --- a/app/src/main/res/values/settings_keys.xml +++ b/app/src/main/res/values/settings_keys.xml @@ -1726,6 +1726,7 @@ @string/description_tab_description filter_future_items_key + filter_livestreams_key use_experimental_new_ui force_end_on_overtime use_old_search_filter diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b07c10eb0..c59ce3655 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1038,6 +1038,8 @@ Configure which tabs to show on video detail screen Filter future items Remove items scheduled for a future release +Filter livestreams +Remove livestreams from the feed Pin video to top Keep the video pinned to the top while scrolling the video detail page Behavior diff --git a/app/src/main/res/xml/filter_settings.xml b/app/src/main/res/xml/filter_settings.xml index 6e8a4c3cf..7be5f5656 100644 --- a/app/src/main/res/xml/filter_settings.xml +++ b/app/src/main/res/xml/filter_settings.xml @@ -35,6 +35,13 @@ android:title="@string/filter_future_items_title" app:singleLineTitle="false" app:iconSpaceReserved="false" /> +