diff --git a/app/src/main/java/com/github/libretube/constants/PreferenceKeys.kt b/app/src/main/java/com/github/libretube/constants/PreferenceKeys.kt index 66a335d62..8d572348c 100644 --- a/app/src/main/java/com/github/libretube/constants/PreferenceKeys.kt +++ b/app/src/main/java/com/github/libretube/constants/PreferenceKeys.kt @@ -19,6 +19,7 @@ object PreferenceKeys { const val AUTO_ROTATION = "auto_rotation" const val BREAK_REMINDER_TOGGLE = "break_reminder_toggle" const val BREAK_REMINDER = "break_reminder" + const val SAVE_FEED = "save_feed" /** * Appearance diff --git a/app/src/main/java/com/github/libretube/fragments/SubscriptionsFragment.kt b/app/src/main/java/com/github/libretube/fragments/SubscriptionsFragment.kt index fe89aa229..eb8412763 100644 --- a/app/src/main/java/com/github/libretube/fragments/SubscriptionsFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/SubscriptionsFragment.kt @@ -39,6 +39,11 @@ class SubscriptionsFragment : BaseFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + val loadFeedInBackground = PreferenceHelper.getBoolean( + PreferenceKeys.SAVE_FEED, + false + ) + binding.subRefresh.isEnabled = true binding.subProgress.visibility = View.VISIBLE @@ -50,7 +55,10 @@ class SubscriptionsFragment : BaseFragment() { binding.subFeed.layoutManager = GridLayoutManager(view.context, grid.toInt()) - if (viewModel.videoFeed.value == null) viewModel.fetchFeed() + if (viewModel.videoFeed.value == null || !loadFeedInBackground) { + viewModel.videoFeed.value = null + viewModel.fetchFeed() + } // listen for error responses viewModel.errorResponse.observe(viewLifecycleOwner) { diff --git a/app/src/main/java/com/github/libretube/preferences/PlayerSettings.kt b/app/src/main/java/com/github/libretube/preferences/PlayerSettings.kt index 90ff99b20..aaa869e0f 100644 --- a/app/src/main/java/com/github/libretube/preferences/PlayerSettings.kt +++ b/app/src/main/java/com/github/libretube/preferences/PlayerSettings.kt @@ -25,7 +25,7 @@ class PlayerSettings : MaterialPreferenceFragment() { findPreference(PreferenceKeys.AUTO_FULLSCREEN) // only show the player orientation option if auto fullscreen is disabled - playerOrientation?.isEnabled != PreferenceHelper.getBoolean( + playerOrientation?.isEnabled = !PreferenceHelper.getBoolean( PreferenceKeys.AUTO_FULLSCREEN, false ) diff --git a/app/src/main/res/drawable/ic_loading.xml b/app/src/main/res/drawable/ic_loading.xml new file mode 100644 index 000000000..b49213e11 --- /dev/null +++ b/app/src/main/res/drawable/ic_loading.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 01d657560..4cfdce884 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -327,6 +327,8 @@ Local subscriptions Preferences Custom Instances + Load feed in background + Load the subscription feed in the background and prevent it from being auto-refreshed. Download Service diff --git a/app/src/main/res/xml/advanced_settings.xml b/app/src/main/res/xml/advanced_settings.xml index a596e7237..b48fd81bb 100644 --- a/app/src/main/res/xml/advanced_settings.xml +++ b/app/src/main/res/xml/advanced_settings.xml @@ -30,6 +30,12 @@ app:key="new_videos_badge" app:title="@string/new_videos_badge" /> + +