parent
98d6ce2eaf
commit
87530f506e
5 changed files with 28 additions and 26 deletions
|
@ -9,11 +9,12 @@ class UpdatesRepositoryImpl(
|
|||
private val databaseHandler: DatabaseHandler,
|
||||
) : UpdatesRepository {
|
||||
|
||||
override suspend fun awaitWithRead(read: Boolean, after: Long): List<UpdatesWithRelations> {
|
||||
override suspend fun awaitWithRead(read: Boolean, after: Long, limit: Long): List<UpdatesWithRelations> {
|
||||
return databaseHandler.awaitList {
|
||||
updatesViewQueries.getUpdatesByReadStatus(
|
||||
read = read,
|
||||
after = after,
|
||||
limit = limit,
|
||||
mapper = updateWithRelationMapper,
|
||||
)
|
||||
}
|
||||
|
@ -25,11 +26,12 @@ class UpdatesRepositoryImpl(
|
|||
}
|
||||
}
|
||||
|
||||
override fun subscribeWithRead(read: Boolean, after: Long): Flow<List<UpdatesWithRelations>> {
|
||||
override fun subscribeWithRead(read: Boolean, after: Long, limit: Long): Flow<List<UpdatesWithRelations>> {
|
||||
return databaseHandler.subscribeToList {
|
||||
updatesViewQueries.getUpdatesByReadStatus(
|
||||
read = read,
|
||||
after = after,
|
||||
limit = limit,
|
||||
mapper = updateWithRelationMapper,
|
||||
)
|
||||
}
|
||||
|
|
|
@ -30,4 +30,5 @@ getUpdatesByReadStatus:
|
|||
SELECT *
|
||||
FROM updatesView
|
||||
WHERE read = :read
|
||||
AND dateUpload > :after;
|
||||
AND dateUpload > :after
|
||||
LIMIT :limit;
|
|
@ -10,7 +10,7 @@ class GetUpdates(
|
|||
) {
|
||||
|
||||
suspend fun await(read: Boolean, after: Long): List<UpdatesWithRelations> {
|
||||
return repository.awaitWithRead(read, after)
|
||||
return repository.awaitWithRead(read, after, limit = 500)
|
||||
}
|
||||
|
||||
fun subscribe(calendar: Calendar): Flow<List<UpdatesWithRelations>> {
|
||||
|
@ -18,6 +18,6 @@ class GetUpdates(
|
|||
}
|
||||
|
||||
fun subscribe(read: Boolean, after: Long): Flow<List<UpdatesWithRelations>> {
|
||||
return repository.subscribeWithRead(read, after)
|
||||
return repository.subscribeWithRead(read, after, limit = 500)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,9 +5,9 @@ import tachiyomi.domain.updates.model.UpdatesWithRelations
|
|||
|
||||
interface UpdatesRepository {
|
||||
|
||||
suspend fun awaitWithRead(read: Boolean, after: Long): List<UpdatesWithRelations>
|
||||
suspend fun awaitWithRead(read: Boolean, after: Long, limit: Long): List<UpdatesWithRelations>
|
||||
|
||||
fun subscribeAll(after: Long, limit: Long): Flow<List<UpdatesWithRelations>>
|
||||
|
||||
fun subscribeWithRead(read: Boolean, after: Long): Flow<List<UpdatesWithRelations>>
|
||||
fun subscribeWithRead(read: Boolean, after: Long, limit: Long): Flow<List<UpdatesWithRelations>>
|
||||
}
|
||||
|
|
|
@ -36,14 +36,14 @@ import tachiyomi.presentation.widget.util.appWidgetBackgroundRadius
|
|||
import tachiyomi.presentation.widget.util.calculateRowAndColumnCount
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import java.util.Calendar
|
||||
import java.util.Date
|
||||
|
||||
class UpdatesGridGlanceWidget : GlanceAppWidget() {
|
||||
|
||||
private val app: Application by injectLazy()
|
||||
private val preferences: SecurityPreferences by injectLazy()
|
||||
class UpdatesGridGlanceWidget(
|
||||
private val context: Context = Injekt.get<Application>(),
|
||||
private val getUpdates: GetUpdates = Injekt.get(),
|
||||
private val preferences: SecurityPreferences = Injekt.get(),
|
||||
) : GlanceAppWidget() {
|
||||
|
||||
private var data: List<Pair<Long, Bitmap?>>? = null
|
||||
|
||||
|
@ -63,23 +63,22 @@ class UpdatesGridGlanceWidget : GlanceAppWidget() {
|
|||
}
|
||||
}
|
||||
|
||||
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@withIOContext
|
||||
private suspend fun loadData() {
|
||||
val manager = GlanceAppWidgetManager(context)
|
||||
val ids = manager.getGlanceIds(this@UpdatesGridGlanceWidget::class.java)
|
||||
if (ids.isEmpty()) return
|
||||
|
||||
val processList = list
|
||||
?: Injekt.get<GetUpdates>().await(
|
||||
read = false,
|
||||
after = DateLimit.timeInMillis,
|
||||
)
|
||||
withIOContext {
|
||||
val updates = getUpdates.await(
|
||||
read = false,
|
||||
after = DateLimit.timeInMillis,
|
||||
)
|
||||
val (rowCount, columnCount) = ids
|
||||
.flatMap { manager.getAppWidgetSizes(it) }
|
||||
.maxBy { it.height.value * it.width.value }
|
||||
.calculateRowAndColumnCount()
|
||||
|
||||
data = prepareList(processList, rowCount * columnCount)
|
||||
data = prepareList(updates, rowCount * columnCount)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -87,12 +86,12 @@ class UpdatesGridGlanceWidget : GlanceAppWidget() {
|
|||
// Resize to cover size
|
||||
val widthPx = CoverWidth.value.toInt().dpToPx
|
||||
val heightPx = CoverHeight.value.toInt().dpToPx
|
||||
val roundPx = app.resources.getDimension(R.dimen.appwidget_inner_radius)
|
||||
val roundPx = context.resources.getDimension(R.dimen.appwidget_inner_radius)
|
||||
return processList
|
||||
.distinctBy { it.mangaId }
|
||||
.take(take)
|
||||
.map { updatesView ->
|
||||
val request = ImageRequest.Builder(app)
|
||||
val request = ImageRequest.Builder(context)
|
||||
.data(
|
||||
MangaCover(
|
||||
mangaId = updatesView.mangaId,
|
||||
|
@ -114,7 +113,7 @@ class UpdatesGridGlanceWidget : GlanceAppWidget() {
|
|||
}
|
||||
}
|
||||
.build()
|
||||
Pair(updatesView.mangaId, app.imageLoader.executeBlocking(request).drawable?.toBitmap())
|
||||
Pair(updatesView.mangaId, context.imageLoader.executeBlocking(request).drawable?.toBitmap())
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Reference in a new issue