From c163e2443475aae31a3111542fe869a008907c10 Mon Sep 17 00:00:00 2001 From: tarsin Date: Sun, 9 Jul 2023 17:14:04 +0800 Subject: [PATCH] Refine ComposeFavScene --- app/src/main/java/com/hippo/ehviewer/EhDB.kt | 4 +++- .../java/com/hippo/ehviewer/dao/LocalFavoritesDao.kt | 4 ++++ .../com/hippo/ehviewer/ui/scene/ComposeFavScene.kt | 12 ++++++++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/EhDB.kt b/app/src/main/java/com/hippo/ehviewer/EhDB.kt index 8f5d58c45..04862ac3d 100644 --- a/app/src/main/java/com/hippo/ehviewer/EhDB.kt +++ b/app/src/main/java/com/hippo/ehviewer/EhDB.kt @@ -268,10 +268,12 @@ object EhDB { dao.update(list) } - @get:Synchronized val historyLazyList: PagingSource get() = db.historyDao().listLazy() + val localFavLazyList: PagingSource + get() = db.localFavoritesDao().listLazy() + @Synchronized fun putHistoryInfo(galleryInfo: GalleryInfo?) { val dao = db.historyDao() diff --git a/app/src/main/java/com/hippo/ehviewer/dao/LocalFavoritesDao.kt b/app/src/main/java/com/hippo/ehviewer/dao/LocalFavoritesDao.kt index 231ff9c6c..f6b711b81 100644 --- a/app/src/main/java/com/hippo/ehviewer/dao/LocalFavoritesDao.kt +++ b/app/src/main/java/com/hippo/ehviewer/dao/LocalFavoritesDao.kt @@ -1,5 +1,6 @@ package com.hippo.ehviewer.dao +import androidx.paging.PagingSource import androidx.room.Dao import androidx.room.Delete import androidx.room.Insert @@ -10,6 +11,9 @@ interface LocalFavoritesDao : BasicDao { @Query("SELECT * FROM LOCAL_FAVORITES ORDER BY TIME DESC") override fun list(): List + @Query("SELECT * FROM LOCAL_FAVORITES ORDER BY TIME DESC") + fun listLazy(): PagingSource + @Query("SELECT * FROM LOCAL_FAVORITES WHERE TITLE LIKE :title ORDER BY TIME DESC") fun list(title: String): List diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/ComposeFavScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/ComposeFavScene.kt index cfb92740b..a3fa08140 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/ComposeFavScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/ComposeFavScene.kt @@ -49,10 +49,12 @@ import androidx.paging.cachedIn import androidx.paging.compose.collectAsLazyPagingItems import androidx.paging.compose.itemContentType import androidx.paging.compose.itemKey +import com.hippo.ehviewer.EhDB import com.hippo.ehviewer.R import com.hippo.ehviewer.Settings import com.hippo.ehviewer.client.EhEngine import com.hippo.ehviewer.client.data.FavListUrlBuilder +import com.hippo.ehviewer.client.data.FavListUrlBuilder.Companion.FAV_CAT_LOCAL import com.hippo.ehviewer.client.data.GalleryInfo import com.hippo.ehviewer.ui.main.GalleryInfoListItem import com.hippo.ehviewer.ui.setMD3Content @@ -72,7 +74,7 @@ class ComposeFavScene : BaseScene() { var active by remember { mutableStateOf(false) } val favCatName: String = when (curFav) { in 0..9 -> Settings.favCat[curFav] - FavListUrlBuilder.FAV_CAT_LOCAL -> stringResource(id = R.string.local_favorites) + FAV_CAT_LOCAL -> stringResource(id = R.string.local_favorites) else -> stringResource(id = R.string.cloud_favorites) } SearchBar( @@ -92,7 +94,12 @@ class ComposeFavScene : BaseScene() { }, ) { val favBuilder = rememberSaveable(curFav) { FavListUrlBuilder(favCat = curFav) } - val data = remember(curFav) { + val localFavData = remember { + Pager(PagingConfig(25)) { + EhDB.localFavLazyList + }.flow.cachedIn(lifecycleScope) + }.collectAsLazyPagingItems() + val cloudData = remember(curFav) { Pager(PagingConfig(25)) { object : PagingSource() { override fun getRefreshKey(state: PagingState): String? = null @@ -116,6 +123,7 @@ class ComposeFavScene : BaseScene() { } }.flow.cachedIn(lifecycleScope) }.collectAsLazyPagingItems() + val data = if (curFav == FAV_CAT_LOCAL) localFavData else cloudData val height = remember { (3 * Settings.listThumbSize * 3).pxToDp.dp } LazyColumn( modifier = Modifier.padding(horizontal = dimensionResource(id = R.dimen.gallery_list_margin_h), vertical = dimensionResource(id = R.dimen.gallery_list_margin_v)),