From 9c9b8b74cd592d0e41b545d3de1bc43ce9479cb8 Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Thu, 5 Sep 2024 20:46:23 +0800 Subject: [PATCH] Fix crash on random button click with empty list --- .../main/kotlin/com/hippo/ehviewer/dao/LocalFavoritesDao.kt | 2 +- .../kotlin/com/hippo/ehviewer/ui/screen/DownloadsScreen.kt | 4 +++- .../kotlin/com/hippo/ehviewer/ui/screen/FavoritesScreen.kt | 5 +++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/dao/LocalFavoritesDao.kt b/app/src/main/kotlin/com/hippo/ehviewer/dao/LocalFavoritesDao.kt index 85fdc1f58..11099f119 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/dao/LocalFavoritesDao.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/dao/LocalFavoritesDao.kt @@ -27,7 +27,7 @@ interface LocalFavoritesDao { fun joinListLazy(title: String): PagingSource @Query("SELECT GALLERIES.* FROM LOCAL_FAVORITES JOIN GALLERIES USING(GID) ORDER BY RANDOM() LIMIT 1") - suspend fun random(): BaseGalleryInfo + suspend fun random(): BaseGalleryInfo? @Query("SELECT EXISTS(SELECT * FROM LOCAL_FAVORITES WHERE GID = :gid)") suspend fun contains(gid: Long): Boolean diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/DownloadsScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/DownloadsScreen.kt index 73d63f37d..c07b91ae4 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/DownloadsScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/DownloadsScreen.kt @@ -648,7 +648,9 @@ fun AnimatedVisibilityScope.DownloadsScreen(navigator: DestinationsNavigator) = ) { if (!selectMode) { onClick(Icons.Default.Shuffle) { - withUIContext { navToReader(list.random().galleryInfo) } + if (list.isNotEmpty()) { + withUIContext { navToReader(list.random().galleryInfo) } + } } onClick(Icons.AutoMirrored.Default.Sort) { val oldMode = SortMode.from(sortMode) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/FavoritesScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/FavoritesScreen.kt index de55ca553..0f5fa3add 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/FavoritesScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/FavoritesScreen.kt @@ -356,8 +356,9 @@ fun AnimatedVisibilityScope.FavouritesScreen(navigator: DestinationsNavigator) = if (!selectMode) { if (isLocalFav) { onClick(Icons.Default.Shuffle) { - val random = EhDB.randomLocalFav() - withUIContext { navigate(random.asDst()) } + EhDB.randomLocalFav()?.let { info -> + withUIContext { navigate(info.asDst()) } + } } } onClick(EhIcons.Default.GoTo) {