From ff914bbdf44882c59a0b74654280d71283bfff6c Mon Sep 17 00:00:00 2001 From: Kelvin Date: Thu, 9 Nov 2023 19:49:45 +0100 Subject: [PATCH] Temporary subscription workarounds --- .../java/com/futo/platformplayer/Settings.kt | 6 ++++++ .../platformplayer/cache/ChannelContentCache.kt | 2 +- .../main/SubscriptionsFeedFragment.kt | 17 ++++++++++++++--- app/src/main/res/values/strings.xml | 4 ++++ 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/futo/platformplayer/Settings.kt b/app/src/main/java/com/futo/platformplayer/Settings.kt index f074d7c4..8c8e4c0a 100644 --- a/app/src/main/java/com/futo/platformplayer/Settings.kt +++ b/app/src/main/java/com/futo/platformplayer/Settings.kt @@ -216,6 +216,9 @@ class Settings : FragmentedStorageFileJson() { @Serializable(with = FlexibleBooleanSerializer::class) var fetchOnAppBoot: Boolean = true; + @FormField(R.string.fetch_on_tab_opened, FieldForm.TOGGLE, R.string.fetch_on_tab_opened_description, 6) + var fetchOnTabOpen: Boolean = true; + @FormField(R.string.background_update, FieldForm.DROPDOWN, R.string.experimental_background_update_for_subscriptions_cache, 7) @DropdownFieldOptionsId(R.array.background_interval) var subscriptionsBackgroundUpdateInterval: Int = 0; @@ -246,6 +249,9 @@ class Settings : FragmentedStorageFileJson() { @FormField(R.string.track_playtime_locally, FieldForm.TOGGLE, R.string.track_playtime_locally_description, 10) var allowPlaytimeTracking: Boolean = true; + + @FormField(R.string.always_reload_from_cache, FieldForm.TOGGLE, R.string.always_reload_from_cache_description, 11) + var alwaysReloadFromCache: Boolean = false; } @FormField(R.string.player, "group", R.string.change_behavior_of_the_player, 4) diff --git a/app/src/main/java/com/futo/platformplayer/cache/ChannelContentCache.kt b/app/src/main/java/com/futo/platformplayer/cache/ChannelContentCache.kt index 34bd4935..ad0364c2 100644 --- a/app/src/main/java/com/futo/platformplayer/cache/ChannelContentCache.kt +++ b/app/src/main/java/com/futo/platformplayer/cache/ChannelContentCache.kt @@ -83,7 +83,7 @@ class ChannelContentCache { val items = validStores.flatMap { it.getItems() } .sortedByDescending { it.datetime }; - return DedupContentPager(PlatformContentPager(items, Math.min(150, items.size)), StatePlatform.instance.getEnabledClients().map { it.id }); + return DedupContentPager(PlatformContentPager(items, Math.min(30, items.size)), StatePlatform.instance.getEnabledClients().map { it.id }); } fun uncacheContent(content: SerializedPlatformContent) { diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SubscriptionsFeedFragment.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SubscriptionsFeedFragment.kt index 87b12759..efb5e021 100644 --- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SubscriptionsFeedFragment.kt +++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SubscriptionsFeedFragment.kt @@ -121,7 +121,7 @@ class SubscriptionsFeedFragment : MainFragment() { recyclerData.lastLoad.getNowDiffSeconds() > 60 ) { recyclerData.lastLoad = OffsetDateTime.now(); - if(StateSubscriptions.instance.getOldestUpdateTime().getNowDiffMinutes() > 5) + if(StateSubscriptions.instance.getOldestUpdateTime().getNowDiffMinutes() > 5 && Settings.instance.subscriptions.fetchOnTabOpen) loadResults(false); else if(recyclerData.results.size == 0) loadCache(); @@ -193,7 +193,15 @@ class SubscriptionsFeedFragment : MainFragment() { return@TaskHandler resp; }) - .success { loadedResult(it); } + .success { + if(!Settings.instance.subscriptions.alwaysReloadFromCache) + loadedResult(it); + else { + finishRefreshLayoutLoader(); + setLoading(false); + loadCache(); + } + } //TODO: Remove .exception { fragment.lifecycleScope.launch(Dispatchers.IO) { val subs = StateSubscriptions.instance.getSubscriptions(); @@ -256,7 +264,10 @@ class SubscriptionsFeedFragment : MainFragment() { else null; _filterSettings.save(); }; - loadResults(false) + if(Settings.instance.subscriptions.fetchOnTabOpen) //TODO: Do this different, temporary workaround + loadResults(false); + else + loadCache(); } override fun filterResults(results: List): List { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 477f317c..eb583b4a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -315,6 +315,10 @@ App Language May require restart Fetch on app boot + Fetch on tab opened + Fetch new results when the tab is opened (if no results yet, disabling is not recommended unless you have issues) + Always reload from cache + This is not recommended, but a possible workaround for some issues. Get answers to common questions Give feedback on the application Info