Update Glance v1.0.0-beta01 (#9551)
This commit is contained in:
+18
-23
@@ -1,17 +1,18 @@
|
||||
package tachiyomi.presentation.widget
|
||||
|
||||
import android.app.Application
|
||||
import android.content.Context
|
||||
import android.graphics.Bitmap
|
||||
import android.os.Build
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.core.graphics.drawable.toBitmap
|
||||
import androidx.glance.GlanceId
|
||||
import androidx.glance.GlanceModifier
|
||||
import androidx.glance.ImageProvider
|
||||
import androidx.glance.appwidget.GlanceAppWidget
|
||||
import androidx.glance.appwidget.GlanceAppWidgetManager
|
||||
import androidx.glance.appwidget.SizeMode
|
||||
import androidx.glance.appwidget.appWidgetBackground
|
||||
import androidx.glance.appwidget.updateAll
|
||||
import androidx.glance.appwidget.provideContent
|
||||
import androidx.glance.background
|
||||
import androidx.glance.layout.fillMaxSize
|
||||
import coil.executeBlocking
|
||||
@@ -23,8 +24,7 @@ import coil.size.Scale
|
||||
import coil.transform.RoundedCornersTransformation
|
||||
import eu.kanade.tachiyomi.core.security.SecurityPreferences
|
||||
import eu.kanade.tachiyomi.util.system.dpToPx
|
||||
import kotlinx.coroutines.MainScope
|
||||
import tachiyomi.core.util.lang.launchIO
|
||||
import tachiyomi.core.util.lang.withIOContext
|
||||
import tachiyomi.domain.manga.model.MangaCover
|
||||
import tachiyomi.domain.updates.interactor.GetUpdates
|
||||
import tachiyomi.domain.updates.model.UpdatesWithRelations
|
||||
@@ -45,33 +45,29 @@ class UpdatesGridGlanceWidget : GlanceAppWidget() {
|
||||
private val app: Application by injectLazy()
|
||||
private val preferences: SecurityPreferences by injectLazy()
|
||||
|
||||
private val coroutineScope = MainScope()
|
||||
|
||||
private var data: List<Pair<Long, Bitmap?>>? = null
|
||||
|
||||
override val sizeMode = SizeMode.Exact
|
||||
|
||||
@Composable
|
||||
override fun Content() {
|
||||
// If app lock enabled, don't do anything
|
||||
if (preferences.useAuthenticator().get()) {
|
||||
LockedWidget()
|
||||
return
|
||||
override suspend fun provideGlance(context: Context, id: GlanceId) {
|
||||
val locked = preferences.useAuthenticator().get()
|
||||
if (!locked) loadData()
|
||||
|
||||
provideContent {
|
||||
// If app lock enabled, don't do anything
|
||||
if (locked) {
|
||||
LockedWidget()
|
||||
return@provideContent
|
||||
}
|
||||
UpdatesWidget(data)
|
||||
}
|
||||
UpdatesWidget(data)
|
||||
}
|
||||
|
||||
fun loadData(list: List<UpdatesWithRelations>? = null) {
|
||||
coroutineScope.launchIO {
|
||||
// Don't show anything when lock is active
|
||||
if (preferences.useAuthenticator().get()) {
|
||||
updateAll(app)
|
||||
return@launchIO
|
||||
}
|
||||
|
||||
private suspend fun loadData(list: List<UpdatesWithRelations>? = null) {
|
||||
withIOContext {
|
||||
val manager = GlanceAppWidgetManager(app)
|
||||
val ids = manager.getGlanceIds(this@UpdatesGridGlanceWidget::class.java)
|
||||
if (ids.isEmpty()) return@launchIO
|
||||
if (ids.isEmpty()) return@withIOContext
|
||||
|
||||
val processList = list
|
||||
?: Injekt.get<GetUpdates>().await(
|
||||
@@ -84,7 +80,6 @@ class UpdatesGridGlanceWidget : GlanceAppWidget() {
|
||||
.calculateRowAndColumnCount()
|
||||
|
||||
data = prepareList(processList, rowCount * columnCount)
|
||||
ids.forEach { update(app, it) }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user