From 80e5f36c4e4dc520cc9329e26c009c57c46f2da0 Mon Sep 17 00:00:00 2001 From: GG Bond Date: Sat, 10 Feb 2024 13:02:58 +0800 Subject: [PATCH] Long.asDstWith -> GalleryDetailScreenDestination --- .../com/hippo/ehviewer/ui/MainActivity.kt | 5 ++--- .../ehviewer/ui/screen/DownloadsScreen.kt | 2 +- .../ehviewer/ui/screen/FavoritesScreen.kt | 6 +++--- .../ehviewer/ui/screen/GalleryDetailScreen.kt | 3 +-- .../ehviewer/ui/screen/GalleryListScreen.kt | 18 +++++------------- .../hippo/ehviewer/ui/screen/HistoryScreen.kt | 2 +- .../com/hippo/ehviewer/ui/screen/MainNav.kt | 10 ++++++++-- .../hippo/ehviewer/ui/screen/ProgressScreen.kt | 3 +-- 8 files changed, 22 insertions(+), 27 deletions(-) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt index 456123d07..a32465555 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt @@ -103,7 +103,6 @@ import com.hippo.ehviewer.image.Image.Companion.decodeBitmap import com.hippo.ehviewer.ui.destinations.DownloadScreenDestination import com.hippo.ehviewer.ui.destinations.DownloadsScreenDestination import com.hippo.ehviewer.ui.destinations.FavouritesScreenDestination -import com.hippo.ehviewer.ui.destinations.GalleryDetailScreenDestination import com.hippo.ehviewer.ui.destinations.GalleryListScreenDestination import com.hippo.ehviewer.ui.destinations.HistoryScreenDestination import com.hippo.ehviewer.ui.destinations.HomePageScreenDestination @@ -113,7 +112,7 @@ import com.hippo.ehviewer.ui.destinations.SignInScreenDestination import com.hippo.ehviewer.ui.destinations.SubscriptionScreenDestination import com.hippo.ehviewer.ui.destinations.ToplistScreenDestination import com.hippo.ehviewer.ui.destinations.WhatshotScreenDestination -import com.hippo.ehviewer.ui.screen.TokenArgs +import com.hippo.ehviewer.ui.screen.asDstWith import com.hippo.ehviewer.ui.screen.navWithUrl import com.hippo.ehviewer.ui.screen.navigate import com.hippo.ehviewer.ui.settings.showNewVersion @@ -329,7 +328,7 @@ class MainActivity : EhActivity() { val result1 = GalleryDetailUrlParser.parse(text, false) var launch: (() -> Unit)? = null if (result1 != null) { - launch = { navController.navigate(GalleryDetailScreenDestination(TokenArgs(result1.gid, result1.token))) } + launch = { navController.navigate(result1.gid asDstWith result1.token) } } val result2 = GalleryPageUrlParser.parse(text, false) if (result2 != null) { 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 4d376e578..2ab7aac34 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 @@ -454,7 +454,7 @@ fun DownloadsScreen(navigator: DestinationsNavigator) { } }, onThumbClick = { - navigator.navigate(info.galleryInfo.asDestination()) + navigator.navigate(info.galleryInfo.asDst()) }, onLongClick = { checkedInfoMap[info.gid] = info 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 639d0d8e1..aa23c8989 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 @@ -279,7 +279,7 @@ fun FavouritesScreen(navigator: DestinationsNavigator) { checkedInfoMap[info.gid] = info } } else { - navigator.navigate(info.asDestination()) + navigator.navigate(info.asDst()) } }, onLongClick = { @@ -304,7 +304,7 @@ fun FavouritesScreen(navigator: DestinationsNavigator) { checkedInfoMap[info.gid] = info } } else { - navigator.navigate(info.asDestination()) + navigator.navigate(info.asDst()) } }, onLongClick = { @@ -343,7 +343,7 @@ fun FavouritesScreen(navigator: DestinationsNavigator) { onClick(Icons.Default.Shuffle) { val random = EhDB.randomLocalFav() withUIContext { - navigator.navigate(random.asDestination()) + navigator.navigate(random.asDst()) } } } diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailScreen.kt index c1d3d9011..0abdb56cd 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailScreen.kt @@ -121,7 +121,6 @@ import com.hippo.ehviewer.ui.LockDrawer import com.hippo.ehviewer.ui.MainActivity import com.hippo.ehviewer.ui.confirmRemoveDownload import com.hippo.ehviewer.ui.destinations.GalleryCommentsScreenDestination -import com.hippo.ehviewer.ui.destinations.GalleryDetailScreenDestination import com.hippo.ehviewer.ui.destinations.GalleryListScreenDestination import com.hippo.ehviewer.ui.destinations.GalleryPreviewScreenDestination import com.hippo.ehviewer.ui.getFavoriteIcon @@ -471,7 +470,7 @@ fun GalleryDetailScreen(args: GalleryDetailScreenArgs, navigator: DestinationsNa val info = galleryDetail.newerVersions[selected] withUIContext { // Can't use GalleryInfoArgs as thumbKey is null - navigator.navigate(GalleryDetailScreenDestination(TokenArgs(info.gid, info.token!!))) + navigator.navigate(info.gid asDstWith info.token!!) } } Spacer(modifier = Modifier.size(dimensionResource(id = R.dimen.keyline_margin))) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryListScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryListScreen.kt index 3a228a70b..7fc36f9d8 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryListScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryListScreen.kt @@ -113,7 +113,6 @@ import com.hippo.ehviewer.icons.filled.GoTo import com.hippo.ehviewer.image.Image.Companion.decodeBitmap import com.hippo.ehviewer.ui.LocalSideSheetState import com.hippo.ehviewer.ui.MainActivity -import com.hippo.ehviewer.ui.destinations.GalleryDetailScreenDestination import com.hippo.ehviewer.ui.destinations.GalleryListScreenDestination import com.hippo.ehviewer.ui.destinations.ProgressScreenDestination import com.hippo.ehviewer.ui.doGalleryInfoAction @@ -516,18 +515,11 @@ fun GalleryListScreen(lub: ListUrlBuilder, navigator: DestinationsNavigator) { abstract val destination: Direction } - class GalleryDetailUrlSuggestion( - gid: Long, - token: String, - ) : UrlSuggestion() { - override val destination = GalleryDetailScreenDestination(TokenArgs(gid, token)) + class GalleryDetailUrlSuggestion(gid: Long, token: String) : UrlSuggestion() { + override val destination = gid asDstWith token } - class GalleryPageUrlSuggestion( - gid: Long, - pToken: String, - page: Int, - ) : UrlSuggestion() { + class GalleryPageUrlSuggestion(gid: Long, pToken: String, page: Int) : UrlSuggestion() { override val destination = ProgressScreenDestination(gid, pToken, page) } @@ -698,7 +690,7 @@ fun GalleryListScreen(lub: ListUrlBuilder, navigator: DestinationsNavigator) { detailItemContent = { info -> GalleryInfoListItem( onClick = { - navigator.navigate(info.asDestination()) + navigator.navigate(info.asDst()) }, onLongClick = { coroutineScope.launch { @@ -715,7 +707,7 @@ fun GalleryListScreen(lub: ListUrlBuilder, navigator: DestinationsNavigator) { thumbItemContent = { info -> GalleryInfoGridItem( onClick = { - navigator.navigate(info.asDestination()) + navigator.navigate(info.asDst()) }, onLongClick = { coroutineScope.launch { diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/HistoryScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/HistoryScreen.kt index a9d1feee2..86d369c93 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/HistoryScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/HistoryScreen.kt @@ -127,7 +127,7 @@ fun HistoryScreen(navigator: DestinationsNavigator) { ) { GalleryInfoListItem( onClick = { - navigator.navigate(info.asDestination()) + navigator.navigate(info.asDst()) }, onLongClick = { coroutineScope.launchIO { diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/MainNav.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/MainNav.kt index 54c0c4b6e..d2e77664a 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/MainNav.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/MainNav.kt @@ -18,7 +18,7 @@ private fun urlToDestination(url: String): Direction? { val ret1 = GalleryListUrlParser.parse(url) if (ret1 != null) return GalleryListScreenDestination(ret1) val ret2 = GalleryDetailUrlParser.parse(url) - if (ret2 != null) return GalleryDetailScreenDestination(TokenArgs(ret2.gid, ret2.token)) + if (ret2 != null) return ret2.gid asDstWith ret2.token val ret3 = GalleryPageUrlParser.parse(url) if (ret3 != null) return ProgressScreenDestination(ret3.gid, ret3.pToken, ret3.page) return null @@ -46,4 +46,10 @@ fun NavController.navWithUrl(url: String): Boolean { @MainThread fun NavController.navigate(direction: Direction) = navigate(direction.route) -fun BaseGalleryInfo.asDestination() = GalleryDetailScreenDestination(GalleryInfoArgs(this)) +fun BaseGalleryInfo.asDst() = GalleryDetailScreenDestination(GalleryInfoArgs(this)) + +infix fun Long.asDstWith(token: String) = GalleryDetailScreenDestination(TokenArgs(this, token)) + +infix fun Long.asDstPageTo(page: Int) = this to page + +infix fun Pair.with(token: String) = GalleryDetailScreenDestination(TokenArgs(first, token, second)) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/ProgressScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/ProgressScreen.kt index 09529f5bf..1b012d645 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/ProgressScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/ProgressScreen.kt @@ -25,7 +25,6 @@ import com.hippo.ehviewer.client.EhEngine import com.hippo.ehviewer.icons.EhIcons import com.hippo.ehviewer.icons.big.SadAndroid import com.hippo.ehviewer.ui.LockDrawer -import com.hippo.ehviewer.ui.destinations.GalleryDetailScreenDestination import com.hippo.ehviewer.util.ExceptionUtils import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.navigation.DestinationsNavigator @@ -48,7 +47,7 @@ fun ProgressScreen(gid: Long, token: String, page: Int, navigator: DestinationsN }.onSuccess { withUIContext { navigator.popBackStack() - navigator.navigate(GalleryDetailScreenDestination(TokenArgs(gid, it, page))) + navigator.navigate(gid asDstPageTo page with it) } }.onFailure { error = ExceptionUtils.getReadableString(it)