From 0d8042479902818a7fa3939026a7fbc913d1e1ac Mon Sep 17 00:00:00 2001 From: Kelvin Date: Wed, 20 Dec 2023 21:54:39 +0100 Subject: [PATCH] Optimized selection creator overlay, global subscription progress listener --- .../mainactivity/main/SubscriptionsFeedFragment.kt | 4 +++- .../platformplayer/states/StateSubscriptions.kt | 8 +++++++- .../views/overlays/CreatorSelectOverlay.kt | 14 ++++++++++++-- 3 files changed, 22 insertions(+), 4 deletions(-) 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 fe0f292d..a12d118b 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 @@ -141,8 +141,10 @@ class SubscriptionsFeedFragment : MainFragment() { recyclerData.lastLoad.getNowDiffSeconds() > 60 ) { recyclerData.lastLoad = OffsetDateTime.now(); - if(StateSubscriptions.instance.getOldestUpdateTime().getNowDiffMinutes() > 5 && Settings.instance.subscriptions.fetchOnTabOpen) + if(StateSubscriptions.instance.getOldestUpdateTime().getNowDiffMinutes() > 5 && Settings.instance.subscriptions.fetchOnTabOpen) { + loadCache(); loadResults(false); + } else if(recyclerData.results.size == 0) { loadCache(); setLoading(false); diff --git a/app/src/main/java/com/futo/platformplayer/states/StateSubscriptions.kt b/app/src/main/java/com/futo/platformplayer/states/StateSubscriptions.kt index 04fd5c70..4f2e60c1 100644 --- a/app/src/main/java/com/futo/platformplayer/states/StateSubscriptions.kt +++ b/app/src/main/java/com/futo/platformplayer/states/StateSubscriptions.kt @@ -51,10 +51,16 @@ class StateSubscriptions { val global: CentralizedFeed = CentralizedFeed(); val feeds: HashMap = hashMapOf(); - val onFeedProgress = Event3(); + val onFeedProgress = Event3(); val onSubscriptionsChanged = Event2, Boolean>(); + init { + global.onUpdateProgress.subscribe { progress, total -> + onFeedProgress.emit(null, progress, total); + } + } + fun getOldestUpdateTime(): OffsetDateTime { val subs = getSubscriptions(); if(subs.size == 0) diff --git a/app/src/main/java/com/futo/platformplayer/views/overlays/CreatorSelectOverlay.kt b/app/src/main/java/com/futo/platformplayer/views/overlays/CreatorSelectOverlay.kt index 04142327..7b97cb5c 100644 --- a/app/src/main/java/com/futo/platformplayer/views/overlays/CreatorSelectOverlay.kt +++ b/app/src/main/java/com/futo/platformplayer/views/overlays/CreatorSelectOverlay.kt @@ -112,8 +112,18 @@ class CreatorSelectOverlay: ConstraintLayout { } fun updateSelected() { - _creators.forEach { p -> p.active = _selected.contains(p.channel.url) }; - _recyclerCreators.notifyContentChanged(); + val changed = arrayListOf() + for(creator in _creators) { + val act = _selected.contains(creator.channel.url); + if(creator.active != act) { + creator.active = act; + changed.add(creator); + } + } + for(change in changed) { + val index = _creatorsFiltered.indexOf(change); + _recyclerCreators.notifyContentChanged(index); + } if(_selected.isNotEmpty()) _buttonSelect.alpha = 1f;