komikku/presentation-widget/src/main/java/tachiyomi/presentation/widget/TachiyomiWidgetManager.kt
arkon 5a635af208 Only show unread entries in widget
Closes #9083

(cherry picked from commit 3634b52e3a2c6ede24af8074988373383dc68fae)
2023-03-05 14:33:56 -05:00

35 lines
1.1 KiB
Kotlin

package tachiyomi.presentation.widget
import android.content.Context
import androidx.glance.appwidget.GlanceAppWidgetManager
import androidx.lifecycle.LifecycleCoroutineScope
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.drop
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import tachiyomi.data.DatabaseHandler
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
class TachiyomiWidgetManager(
private val database: DatabaseHandler = Injekt.get(),
) {
fun Context.init(scope: LifecycleCoroutineScope) {
database.subscribeToList {
updatesViewQueries.getUpdatesByReadStatus(
read = false,
after = UpdatesGridGlanceWidget.DateLimit.timeInMillis,
)
}
.drop(1)
.distinctUntilChanged()
.onEach {
val manager = GlanceAppWidgetManager(this)
if (manager.getGlanceIds(UpdatesGridGlanceWidget::class.java).isNotEmpty()) {
UpdatesGridGlanceWidget().loadData(it)
}
}
.launchIn(scope)
}
}