TachiyomiWidgetManager.kt 1.1 KB

123456789101112131415161718192021222324252627282930
  1. package tachiyomi.presentation.widget
  2. import android.content.Context
  3. import androidx.glance.appwidget.GlanceAppWidgetManager
  4. import androidx.lifecycle.LifecycleCoroutineScope
  5. import kotlinx.coroutines.flow.distinctUntilChanged
  6. import kotlinx.coroutines.flow.drop
  7. import kotlinx.coroutines.flow.launchIn
  8. import kotlinx.coroutines.flow.onEach
  9. import tachiyomi.data.DatabaseHandler
  10. import uy.kohesive.injekt.Injekt
  11. import uy.kohesive.injekt.api.get
  12. class TachiyomiWidgetManager(
  13. private val database: DatabaseHandler = Injekt.get(),
  14. ) {
  15. fun Context.init(scope: LifecycleCoroutineScope) {
  16. database.subscribeToList { updatesViewQueries.updates(after = UpdatesGridGlanceWidget.DateLimit.timeInMillis) }
  17. .drop(1)
  18. .distinctUntilChanged()
  19. .onEach {
  20. val manager = GlanceAppWidgetManager(this)
  21. if (manager.getGlanceIds(UpdatesGridGlanceWidget::class.java).isNotEmpty()) {
  22. UpdatesGridGlanceWidget().loadData(it)
  23. }
  24. }
  25. .launchIn(scope)
  26. }
  27. }