Adjust distinct checker in WidgetManager and run on default dispatcher

Co-authored-by: p
This commit is contained in:
AntsyLich 2024-10-12 05:09:51 +06:00
parent 3bddb55385
commit 9b8ab6acc2
No known key found for this signature in database

View file

@ -4,8 +4,10 @@ import android.content.Context
import androidx.glance.appwidget.updateAll
import androidx.lifecycle.LifecycleCoroutineScope
import eu.kanade.tachiyomi.core.security.SecurityPreferences
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import logcat.LogPriority
@ -21,9 +23,12 @@ class WidgetManager(
combine(
getUpdates.subscribe(read = false, after = BaseUpdatesGridGlanceWidget.DateLimit.toEpochMilli()),
securityPreferences.useAuthenticator().changes(),
transform = { a, _ -> a },
transform = { a, b -> a to b },
)
.distinctUntilChanged()
.distinctUntilChanged { old, new ->
old.second == new.second &&
old.first.map { it.chapterId }.toSet() == new.first.map { it.chapterId }.toSet()
}
.onEach {
try {
UpdatesGridGlanceWidget().updateAll(this)
@ -32,6 +37,7 @@ class WidgetManager(
logcat(LogPriority.ERROR, e) { "Failed to update widget" }
}
}
.flowOn(Dispatchers.Default)
.launchIn(scope)
}
}