mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-09-21 19:40:38 +02:00
Only updates notification dots once at every 3 seconds.
This commit is contained in:
@@ -32,6 +32,7 @@ import com.vitorpamplona.amethyst.service.OnlineChecker
|
|||||||
import com.vitorpamplona.amethyst.service.ZapPaymentHandler
|
import com.vitorpamplona.amethyst.service.ZapPaymentHandler
|
||||||
import com.vitorpamplona.amethyst.service.checkNotInMainThread
|
import com.vitorpamplona.amethyst.service.checkNotInMainThread
|
||||||
import com.vitorpamplona.amethyst.ui.actions.Dao
|
import com.vitorpamplona.amethyst.ui.actions.Dao
|
||||||
|
import com.vitorpamplona.amethyst.ui.components.BundledInsert
|
||||||
import com.vitorpamplona.amethyst.ui.components.MarkdownParser
|
import com.vitorpamplona.amethyst.ui.components.MarkdownParser
|
||||||
import com.vitorpamplona.amethyst.ui.components.UrlPreviewState
|
import com.vitorpamplona.amethyst.ui.components.UrlPreviewState
|
||||||
import com.vitorpamplona.amethyst.ui.navigation.Route
|
import com.vitorpamplona.amethyst.ui.navigation.Route
|
||||||
@@ -862,6 +863,13 @@ class AccountViewModel(val account: Account, val settings: SettingsState) : View
|
|||||||
|
|
||||||
private var collectorJob: Job? = null
|
private var collectorJob: Job? = null
|
||||||
val notificationDots = HasNotificationDot(bottomNavigationItems, account)
|
val notificationDots = HasNotificationDot(bottomNavigationItems, account)
|
||||||
|
private val bundlerInsert = BundledInsert<Set<Note>>(3000, Dispatchers.IO)
|
||||||
|
|
||||||
|
fun invalidateInsertData(newItems: Set<Note>) {
|
||||||
|
bundlerInsert.invalidateList(newItems) {
|
||||||
|
updateNotificationDots(it.flatten().toSet())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
suspend fun updateNotificationDots(newNotes: Set<Note> = emptySet()) {
|
suspend fun updateNotificationDots(newNotes: Set<Note> = emptySet()) {
|
||||||
val (value, elapsed) = measureTimedValue {
|
val (value, elapsed) = measureTimedValue {
|
||||||
@@ -875,8 +883,7 @@ class AccountViewModel(val account: Account, val settings: SettingsState) : View
|
|||||||
collectorJob = viewModelScope.launch(Dispatchers.IO) {
|
collectorJob = viewModelScope.launch(Dispatchers.IO) {
|
||||||
LocalCache.live.newEventBundles.collect { newNotes ->
|
LocalCache.live.newEventBundles.collect { newNotes ->
|
||||||
Log.d("Rendering Metrics", "Notification Dots Calculation refresh ${this@AccountViewModel}")
|
Log.d("Rendering Metrics", "Notification Dots Calculation refresh ${this@AccountViewModel}")
|
||||||
|
invalidateInsertData(newNotes)
|
||||||
updateNotificationDots(newNotes)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user