diff --git a/app/src/main/java/com/hippo/ehviewer/EhDB.kt b/app/src/main/java/com/hippo/ehviewer/EhDB.kt index e9a54d0cb..e209f8827 100644 --- a/app/src/main/java/com/hippo/ehviewer/EhDB.kt +++ b/app/src/main/java/com/hippo/ehviewer/EhDB.kt @@ -33,6 +33,7 @@ import com.hippo.ehviewer.dao.LocalFavoriteInfo import com.hippo.ehviewer.dao.QuickSearch import com.hippo.ehviewer.download.DownloadManager import com.hippo.ehviewer.util.sendTo +import kotlinx.coroutines.flow.Flow import splitties.arch.room.roomDb object EhDB { @@ -214,6 +215,9 @@ object EhDB { val localFavLazyList: PagingSource get() = db.localFavoritesDao().listLazy() + val localFavCount: Flow + get() = db.localFavoritesDao().count() + fun searchLocalFav(keyword: String) = db.localFavoritesDao().listLazy("%$keyword%") suspend fun putHistoryInfo(galleryInfo: GalleryInfo) { 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 ad26aa83e..d2ee16234 100644 --- a/app/src/main/java/com/hippo/ehviewer/dao/LocalFavoritesDao.kt +++ b/app/src/main/java/com/hippo/ehviewer/dao/LocalFavoritesDao.kt @@ -4,9 +4,13 @@ import androidx.paging.PagingSource import androidx.room.Dao import androidx.room.Insert import androidx.room.Query +import kotlinx.coroutines.flow.Flow @Dao interface LocalFavoritesDao { + @Query("SELECT COUNT(*) FROM LOCAL_FAVORITES") + fun count(): Flow + @Query("SELECT * FROM LOCAL_FAVORITES ORDER BY TIME DESC") suspend fun list(): List diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.kt index 08c47fc47..238a1ed8f 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.kt @@ -29,7 +29,9 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState import androidx.compose.runtime.currentRecomposeScope +import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.res.stringResource @@ -143,6 +145,7 @@ class VMStorage : ViewModel() { } }.flow.cachedIn(viewModelScope) fun dataflow() = if (urlBuilder.favCat == -2) localFavDataFlow else cloudDataFlow + val localFavCount = EhDB.localFavCount } class FavoritesScene : SearchBarScene() { @@ -413,6 +416,7 @@ class FavoritesScene : SearchBarScene() { savedInstanceState: Bundle?, ) = ComposeView(inflater.context).apply { setMD3Content { + val localFavCount by vm.localFavCount.collectAsState(0) ElevatedCard { TopAppBar(title = { Text(text = stringResource(id = R.string.collections)) }) val scope = currentRecomposeScope @@ -422,7 +426,7 @@ class FavoritesScene : SearchBarScene() { } } val faves = arrayOf( - stringResource(id = R.string.local_favorites) to Settings.favLocalCount, + stringResource(id = R.string.local_favorites) to localFavCount, stringResource(id = R.string.cloud_favorites) to Settings.favCloudCount, *Settings.favCat.zip(Settings.favCount.toTypedArray()).toTypedArray(), )