diff --git a/app/src/main/java/com/futo/platformplayer/SettingsDev.kt b/app/src/main/java/com/futo/platformplayer/SettingsDev.kt index 826a9c0f..39812de6 100644 --- a/app/src/main/java/com/futo/platformplayer/SettingsDev.kt +++ b/app/src/main/java/com/futo/platformplayer/SettingsDev.kt @@ -17,6 +17,7 @@ import com.futo.platformplayer.states.StateAnnouncement import com.futo.platformplayer.states.StateApp import com.futo.platformplayer.states.StateDeveloper import com.futo.platformplayer.states.StateDownloads +import com.futo.platformplayer.states.StateSubscriptions import com.futo.platformplayer.stores.FragmentedStorage import com.futo.platformplayer.stores.FragmentedStorageFileJson import com.futo.platformplayer.views.fields.FieldForm @@ -272,6 +273,15 @@ class SettingsDev : FragmentedStorageFileJson() { @FormField("Other", FieldForm.GROUP, "Others...", 5) val otherTests: OtherTests = OtherTests(); class OtherTests { + @FormField("Unsubscribe all", FieldForm.BUTTON, "Removes all subscriptions", -1) + fun unsubscribeAll() { + val toUnsub = StateSubscriptions.instance.getSubscriptions(); + UIDialogs.toast("Started unsubbing.. (${toUnsub.size})") + toUnsub.forEach { + StateSubscriptions.instance.removeSubscription(it.channel.url); + }; + UIDialogs.toast("Finished unsubbing.. (${toUnsub.size})") + } @FormField("Clear Downloads", FieldForm.BUTTON, "Deletes all ongoing downloads", 1) fun clearDownloads() { StateDownloads.instance.getDownloading().forEach { diff --git a/app/src/main/java/com/futo/platformplayer/api/media/structures/DedupContentPager.kt b/app/src/main/java/com/futo/platformplayer/api/media/structures/DedupContentPager.kt index 1e9d4ca7..da811750 100644 --- a/app/src/main/java/com/futo/platformplayer/api/media/structures/DedupContentPager.kt +++ b/app/src/main/java/com/futo/platformplayer/api/media/structures/DedupContentPager.kt @@ -75,7 +75,9 @@ class DedupContentPager : IPager, IAsyncPager: IRefreshPager, IPager { override fun getResults(): List = synchronized(_pagersReusable){ _currentPager.getResults() }; private fun updatePager(pagerToAdd: IPager?, toReplacePager: IPager? = null, error: Throwable? = null) { - if(pagerToAdd == null) { - if(toReplacePager != null && toReplacePager is PlaceholderPager && error != null) { - val pluginId = toReplacePager.placeholderFactory.invoke().id?.pluginId ?: ""; - - _pagersReusable.add((PlaceholderPager(5) { - return@PlaceholderPager PlatformContentPlaceholder(pluginId, error) - } as IPager).asReusable()); - _currentPager = recreatePager(getCurrentSubPagers()); - - if(_currentPager is MultiParallelPager<*>) - runBlocking { (_currentPager as MultiParallelPager).initialize(); }; - else if(_currentPager is MultiPager<*>) - (_currentPager as MultiPager).initialize() - - onPagerChanged.emit(_currentPager); - } - return; - } synchronized(_pagersReusable) { + if(pagerToAdd == null) { + if(toReplacePager != null && toReplacePager is PlaceholderPager && error != null) { + val pluginId = toReplacePager.placeholderFactory.invoke().id?.pluginId ?: ""; + + _pagersReusable.add((PlaceholderPager(5) { + return@PlaceholderPager PlatformContentPlaceholder(pluginId, error) + } as IPager).asReusable()); + _currentPager = recreatePager(getCurrentSubPagers()); + + if(_currentPager is MultiParallelPager<*>) + runBlocking { (_currentPager as MultiParallelPager).initialize(); }; + else if(_currentPager is MultiPager<*>) + (_currentPager as MultiPager).initialize() + + onPagerChanged.emit(_currentPager); + } + return; + } Logger.i("RefreshMultiDistributionContentPager", "Received new pager for RefreshPager") _pagersReusable.add(pagerToAdd.asReusable());