diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 44e5680d4..9e29cc44c 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -276,6 +276,7 @@ kotlin { ksp { arg("room.schemaLocation", "$projectDir/schemas") arg("room.generateKotlin", "true") + arg("compose-destinations.codeGenPackageName", "com.hippo.ehviewer.ui") } aboutLibraries { 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 1230504bf..ab0156cac 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt @@ -89,6 +89,7 @@ import androidx.compose.ui.graphics.BlurEffect import androidx.compose.ui.graphics.RectangleShape import androidx.compose.ui.graphics.TileMode import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.platform.LocalConfiguration @@ -144,7 +145,7 @@ import com.hippo.ehviewer.util.isAtLeastS import com.hippo.unifile.asUniFile import com.hippo.unifile.sha1 import com.ramcosta.composedestinations.DestinationsNavHost -import com.ramcosta.composedestinations.rememberNavHostEngine +import com.ramcosta.composedestinations.spec.DirectionDestinationSpec import com.ramcosta.composedestinations.utils.currentDestinationAsState import eu.kanade.tachiyomi.util.lang.withIOContext import kotlinx.coroutines.channels.BufferOverflow @@ -158,7 +159,7 @@ import moe.tarsin.coroutines.runSuspendCatching import splitties.systemservices.clipboardManager import splitties.systemservices.connectivityManager -private val navItems = arrayOf( +private val navItems = arrayOf>( Triple(HomePageScreenDestination, R.string.homepage, Icons.Default.Home), Triple(SubscriptionScreenDestination, R.string.subscription, EhIcons.Default.Subscriptions), Triple(WhatshotScreenDestination, R.string.whats_hot, Icons.Default.Whatshot), @@ -446,12 +447,8 @@ class MainActivity : EhActivity() { ) { DestinationsNavHost( navGraph = NavGraphs.root, - startRoute = if (Settings.needSignIn) { - SignInScreenDestination - } else { - StartDestination - }, - engine = rememberNavHostEngine(rootDefaultAnimations = rememberEhNavAnim()), + startRoute = if (Settings.needSignIn) SignInScreenDestination else StartDestination, + defaultTransitions = rememberEhNavAnim(), navController = navController, ) } diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/Theme.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/Theme.kt index e0ea4bd97..60784877d 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/Theme.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/Theme.kt @@ -2,17 +2,21 @@ package com.hippo.ehviewer.ui import androidx.activity.ComponentActivity import androidx.activity.compose.setContent +import androidx.compose.animation.AnimatedContentTransitionScope +import androidx.compose.animation.EnterTransition +import androidx.compose.animation.ExitTransition import androidx.compose.material3.LocalContentColor import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.remember import androidx.compose.ui.platform.ComposeView +import androidx.navigation.NavBackStackEntry import com.hippo.ehviewer.ui.theme.EhTheme import com.hippo.ehviewer.ui.tools.DialogState import com.hippo.ehviewer.ui.tools.LocalDialogState import com.hippo.ehviewer.ui.tools.ProvideVectorPainterCache -import com.ramcosta.composedestinations.animations.defaults.RootNavGraphDefaultAnimations +import com.ramcosta.composedestinations.animations.NavHostAnimatedDestinationStyle import soup.compose.material.motion.animation.materialSharedAxisXIn import soup.compose.material.motion.animation.materialSharedAxisXOut import soup.compose.material.motion.animation.rememberSlideDistance @@ -46,14 +50,14 @@ inline fun ComponentActivity.setMD3Content(crossinline content: @Composable () - } @Composable -fun rememberEhNavAnim(): RootNavGraphDefaultAnimations { +fun rememberEhNavAnim(): NavHostAnimatedDestinationStyle { val slideDistance = rememberSlideDistance() - return remember { - RootNavGraphDefaultAnimations( - enterTransition = { materialSharedAxisXIn(true, slideDistance) }, - exitTransition = { materialSharedAxisXOut(true, slideDistance) }, - popEnterTransition = { materialSharedAxisXIn(false, slideDistance) }, - popExitTransition = { materialSharedAxisXOut(false, slideDistance) }, - ) + return remember(slideDistance) { + object : NavHostAnimatedDestinationStyle() { + override val enterTransition: AnimatedContentTransitionScope.() -> EnterTransition = { materialSharedAxisXIn(true, slideDistance) } + override val exitTransition: AnimatedContentTransitionScope.() -> ExitTransition = { materialSharedAxisXOut(true, slideDistance) } + override val popEnterTransition: AnimatedContentTransitionScope.() -> EnterTransition = { materialSharedAxisXIn(false, slideDistance) } + override val popExitTransition: AnimatedContentTransitionScope.() -> ExitTransition = { materialSharedAxisXOut(false, slideDistance) } + } } } diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/login/SignInScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/login/SignInScreen.kt index bd6cc5bc4..8f7aca57f 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/login/SignInScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/login/SignInScreen.kt @@ -43,11 +43,10 @@ import com.hippo.ehviewer.ui.openBrowser import com.hippo.ehviewer.ui.screen.popNavigate import com.hippo.ehviewer.ui.tools.LocalWindowSizeClass import com.ramcosta.composedestinations.annotation.Destination -import com.ramcosta.composedestinations.annotation.RootNavGraph +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator -@RootNavGraph(start = true) -@Destination +@Destination(start = true) @Composable fun SignInScreen(navigator: DestinationsNavigator) { LockDrawer(true) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/login/WebViewSignInScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/login/WebViewSignInScreen.kt index f7ac7856d..f6c719b02 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/login/WebViewSignInScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/login/WebViewSignInScreen.kt @@ -18,13 +18,14 @@ import com.hippo.ehviewer.ui.StartDestination import com.hippo.ehviewer.ui.screen.popNavigate import com.hippo.ehviewer.util.setDefaultSettings import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator import eu.kanade.tachiyomi.util.lang.launchIO import eu.kanade.tachiyomi.util.lang.withNonCancellableContext import eu.kanade.tachiyomi.util.lang.withUIContext import io.ktor.http.Url -@Destination +@Destination @Composable fun WebViewSignInScreen(navigator: DestinationsNavigator) { LockDrawer(true) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/ReaderScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/ReaderScreen.kt index f1107346c..00c6c4947 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/ReaderScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/ReaderScreen.kt @@ -42,6 +42,7 @@ import com.hippo.ehviewer.ui.LockDrawer import com.hippo.ehviewer.ui.composing import com.hippo.ehviewer.ui.tools.Deferred import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator import eu.kanade.tachiyomi.ui.reader.PageIndicatorText import eu.kanade.tachiyomi.ui.reader.ReaderAppBars @@ -53,7 +54,7 @@ import kotlin.coroutines.resume import kotlinx.coroutines.launch import moe.tarsin.kt.unreachable -@Destination +@Destination @Composable fun ReaderScreen(info: BaseGalleryInfo, page: Int = -1, navigator: DestinationsNavigator) = composing(navigator) { // Workaround for incorrect fling velocity on zoom gesture end 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 74001c8be..0d76c772b 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 @@ -114,6 +114,7 @@ import com.hippo.ehviewer.ui.tools.rememberInVM import com.hippo.ehviewer.util.findActivity import com.hippo.ehviewer.util.mapToLongArray import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator import eu.kanade.tachiyomi.util.lang.launchIO import eu.kanade.tachiyomi.util.lang.withNonCancellableContext @@ -126,7 +127,7 @@ import moe.tarsin.coroutines.onEachLatest import sh.calvin.reorderable.ReorderableItem import sh.calvin.reorderable.rememberReorderableLazyColumnState -@Destination +@Destination @Composable fun DownloadsScreen(navigator: DestinationsNavigator) = composing(navigator) { var gridView by Settings.gridView.asMutableState() 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 e5a3e6481..766276bb4 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 @@ -80,6 +80,7 @@ import com.hippo.ehviewer.ui.tools.rememberInVM import com.hippo.ehviewer.util.displayString import com.hippo.ehviewer.util.mapToLongArray import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator import eu.kanade.tachiyomi.util.lang.withIOContext import eu.kanade.tachiyomi.util.lang.withUIContext @@ -90,7 +91,7 @@ import kotlinx.coroutines.launch import moe.tarsin.coroutines.onEachLatest import moe.tarsin.coroutines.runSuspendCatching -@Destination +@Destination @Composable fun FavouritesScreen(navigator: DestinationsNavigator) = composing(navigator) { // Immutables diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryCommentsScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryCommentsScreen.kt index 718b39a8b..4416bc5b1 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryCommentsScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryCommentsScreen.kt @@ -98,6 +98,7 @@ import com.hippo.ehviewer.util.TextUrl import com.hippo.ehviewer.util.addTextToClipboard import com.hippo.ehviewer.util.displayString import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator import eu.kanade.tachiyomi.util.lang.launchIO import eu.kanade.tachiyomi.util.lang.withIOContext @@ -143,7 +144,7 @@ private fun Context.generateComment( private val MinimumContentPaddingEditText = 88.dp -@Destination +@Destination @Composable fun GalleryCommentsScreen(gid: Long, navigator: DestinationsNavigator) = composing(navigator) { LockDrawer(true) 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 f033dab58..553479f4b 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 @@ -156,6 +156,7 @@ import com.hippo.ehviewer.util.isAtLeastQ import com.hippo.ehviewer.util.requestPermission import com.hippo.unifile.asUniFile import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator import eu.kanade.tachiyomi.util.lang.launchIO import eu.kanade.tachiyomi.util.lang.launchUI @@ -210,7 +211,7 @@ private fun List.getArtistTag(): String? { return null } -@Destination +@Destination @Composable fun GalleryDetailScreen(args: GalleryDetailScreenArgs, navigator: DestinationsNavigator) = composing(navigator) { LockDrawer(true) 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 579cdcdf1..baab0a515 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 @@ -140,6 +140,7 @@ import com.hippo.ehviewer.util.pickVisualMedia import com.hippo.unifile.asUniFile import com.hippo.unifile.sha1 import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator import com.ramcosta.composedestinations.spec.Direction import eu.kanade.tachiyomi.util.lang.launchIO @@ -154,23 +155,23 @@ import moe.tarsin.coroutines.runSuspendCatching import sh.calvin.reorderable.ReorderableItem import sh.calvin.reorderable.rememberReorderableLazyColumnState -@Destination +@Destination @Composable fun HomePageScreen(navigator: DestinationsNavigator) = GalleryListScreen(ListUrlBuilder(), navigator) -@Destination +@Destination @Composable fun SubscriptionScreen(navigator: DestinationsNavigator) = GalleryListScreen(ListUrlBuilder(MODE_SUBSCRIPTION), navigator) -@Destination +@Destination @Composable fun WhatshotScreen(navigator: DestinationsNavigator) = GalleryListScreen(ListUrlBuilder(MODE_WHATS_HOT), navigator) -@Destination +@Destination @Composable fun ToplistScreen(navigator: DestinationsNavigator) = GalleryListScreen(ListUrlBuilder(MODE_TOPLIST, mKeyword = Settings.recentToplist), navigator) -@Destination +@Destination @Composable fun GalleryListScreen(lub: ListUrlBuilder, navigator: DestinationsNavigator) = composing(navigator) { val searchFieldState = rememberTextFieldState() diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryPreviewScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryPreviewScreen.kt index 39e50c106..d58e2f5ba 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryPreviewScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryPreviewScreen.kt @@ -51,11 +51,12 @@ import com.hippo.ehviewer.ui.tools.getOffset import com.hippo.ehviewer.ui.tools.rememberInVM import com.hippo.ehviewer.util.flattenForEach import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator import eu.kanade.tachiyomi.util.lang.withIOContext import moe.tarsin.coroutines.runSuspendCatching -@Destination +@Destination @Composable fun GalleryPreviewScreen(detail: GalleryDetail, toNextPage: Boolean, navigator: DestinationsNavigator) = composing(navigator) { LockDrawer(true) 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 013779c1d..656f79b03 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 @@ -56,12 +56,13 @@ import com.hippo.ehviewer.ui.tools.SwipeToDismissBox2 import com.hippo.ehviewer.ui.tools.rememberInVM import com.hippo.ehviewer.util.FavouriteStatusRouter import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator import kotlin.math.roundToInt import kotlinx.coroutines.delay import kotlinx.coroutines.launch -@Destination +@Destination @Composable fun HistoryScreen(navigator: DestinationsNavigator) = composing(navigator) { val title = stringResource(id = R.string.history) 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 b01b986e1..8a2c82e06 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 @@ -27,11 +27,12 @@ import com.hippo.ehviewer.icons.big.SadAndroid import com.hippo.ehviewer.ui.LockDrawer import com.hippo.ehviewer.util.displayString import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator import eu.kanade.tachiyomi.util.lang.withUIContext import moe.tarsin.coroutines.runSuspendCatching -@Destination +@Destination @Composable fun ProgressScreen(gid: Long, token: String, page: Int, navigator: DestinationsNavigator) { LockDrawer(true) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AboutScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AboutScreen.kt index 022e89313..24ffedf66 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AboutScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AboutScreen.kt @@ -41,6 +41,7 @@ import com.hippo.ehviewer.util.AppConfig import com.hippo.ehviewer.util.displayString import com.hippo.ehviewer.util.installPackage import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator import eu.kanade.tachiyomi.util.lang.withUIContext import java.io.File @@ -59,7 +60,7 @@ private fun versionCode() = "${BuildConfig.VERSION_NAME} (${BuildConfig.COMMIT_S @Stable private fun author() = stringResource(R.string.settings_about_author_summary).replace('$', '@').parseAsHtml() -@Destination +@Destination @Composable fun AboutScreen(navigator: DestinationsNavigator) { val context = LocalContext.current diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt index a03d880c6..db59e46ad 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt @@ -43,6 +43,7 @@ import com.hippo.ehviewer.util.AppConfig import com.hippo.ehviewer.util.Crash import com.hippo.ehviewer.util.ReadableTime import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator import eu.kanade.tachiyomi.util.system.logcat import java.io.File @@ -53,7 +54,7 @@ import kotlinx.coroutines.delay import kotlinx.coroutines.launch import moe.tarsin.coroutines.runSuspendCatching -@Destination +@Destination @Composable fun AdvancedScreen(navigator: DestinationsNavigator) { val context = LocalContext.current diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/DownloadScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/DownloadScreen.kt index 4524f8fbf..5b978066b 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/DownloadScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/DownloadScreen.kt @@ -50,6 +50,7 @@ import com.hippo.unifile.UniFile import com.hippo.unifile.asUniFile import com.hippo.unifile.displayPath import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator import eu.kanade.tachiyomi.util.lang.launchNonCancellable import eu.kanade.tachiyomi.util.system.logcat @@ -58,7 +59,7 @@ import kotlinx.coroutines.launch import moe.tarsin.coroutines.runSuspendCatching import splitties.init.appCtx -@Destination +@Destination @Composable fun DownloadScreen(navigator: DestinationsNavigator) { val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior() diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/EhScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/EhScreen.kt index ef5aa0f34..76398fdb7 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/EhScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/EhScreen.kt @@ -59,6 +59,7 @@ import com.hippo.ehviewer.util.displayString import com.hippo.ehviewer.util.isAtLeastT import com.jamal.composeprefs3.ui.prefs.SwitchPref import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator import eu.kanade.tachiyomi.util.lang.withIOContext import eu.kanade.tachiyomi.util.lang.withUIContext @@ -67,7 +68,7 @@ import kotlinx.coroutines.launch import kotlinx.datetime.LocalTime import moe.tarsin.coroutines.runSuspendCatching -@Destination +@Destination @Composable fun EhScreen(navigator: DestinationsNavigator) { val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior() diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/FilterScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/FilterScreen.kt index 424a56dab..083df7c9b 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/FilterScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/FilterScreen.kt @@ -58,13 +58,14 @@ import com.hippo.ehviewer.dao.FilterMode import com.hippo.ehviewer.ui.tools.Deferred import com.hippo.ehviewer.ui.tools.LocalDialogState import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator import kotlin.coroutines.resume import kotlinx.coroutines.async import kotlinx.coroutines.launch import moe.tarsin.coroutines.groupByToObserved -@Destination +@Destination @Composable fun FilterScreen(navigator: DestinationsNavigator) { val scope = rememberCoroutineScope() diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/LicenseScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/LicenseScreen.kt index 87d84a544..d81158a4c 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/LicenseScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/LicenseScreen.kt @@ -21,9 +21,10 @@ import com.hippo.ehviewer.ui.openBrowser import com.mikepenz.aboutlibraries.ui.compose.m3.LibrariesContainer import com.mikepenz.aboutlibraries.ui.compose.m3.LibraryDefaults import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator -@Destination +@Destination @Composable fun LicenseScreen(navigator: DestinationsNavigator) { val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior() diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/MyTagsScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/MyTagsScreen.kt index 4270d7311..d502b5052 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/MyTagsScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/MyTagsScreen.kt @@ -19,9 +19,10 @@ import com.hippo.ehviewer.client.EhUrl import com.hippo.ehviewer.ui.LockDrawer import com.hippo.ehviewer.util.setDefaultSettings import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator -@Destination +@Destination @Composable fun MyTagsScreen(navigator: DestinationsNavigator) { val url = EhUrl.myTagsUrl diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/PreferenceWidgets.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/PreferenceWidgets.kt index f165aa8d0..e86804bae 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/PreferenceWidgets.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/PreferenceWidgets.kt @@ -34,7 +34,6 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.unit.dp import arrow.atomic.Atomic -import com.hippo.ehviewer.ui.destinations.DirectionDestination import com.hippo.ehviewer.ui.openBrowser import com.hippo.ehviewer.ui.settings.PreferenceTokens.PreferenceTextPadding import com.hippo.ehviewer.util.ProgressDialog @@ -45,6 +44,7 @@ import com.jamal.composeprefs3.ui.prefs.SpannedTextPref import com.jamal.composeprefs3.ui.prefs.SwitchPref import com.jamal.composeprefs3.ui.prefs.TextPref import com.ramcosta.composedestinations.navigation.DestinationsNavigator +import com.ramcosta.composedestinations.spec.DirectionDestinationSpec import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine import kotlin.math.roundToInt @@ -64,7 +64,7 @@ object PreferenceTokens { fun PreferenceHeader( icon: Painter, @StringRes title: Int, - childRoute: DirectionDestination, + childRoute: DirectionDestinationSpec, navigator: DestinationsNavigator, ) { Row( @@ -82,7 +82,7 @@ fun PreferenceHeader( fun PreferenceHeader( icon: ImageVector, @StringRes title: Int, - childRoute: DirectionDestination, + childRoute: DirectionDestinationSpec, navigator: DestinationsNavigator, ) = PreferenceHeader( icon = rememberVectorPainter(image = icon), diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/PrivacyScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/PrivacyScreen.kt index 01b9f495f..2ba096564 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/PrivacyScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/PrivacyScreen.kt @@ -29,11 +29,12 @@ import com.hippo.ehviewer.ui.tools.LocalDialogState import com.hippo.ehviewer.ui.tools.observed import com.hippo.ehviewer.ui.tools.rememberedAccessor import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -@Destination +@Destination @Composable fun PrivacyScreen(navigator: DestinationsNavigator) { val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior() diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/SettingsScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/SettingsScreen.kt index 38f2bf06e..0a375e887 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/SettingsScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/SettingsScreen.kt @@ -27,9 +27,10 @@ import com.hippo.ehviewer.ui.destinations.DownloadScreenDestination import com.hippo.ehviewer.ui.destinations.EhScreenDestination import com.hippo.ehviewer.ui.destinations.PrivacyScreenDestination import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator -@Destination +@Destination @Composable fun SettingsScreen(navigator: DestinationsNavigator) { val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior() diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/UConfigScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/UConfigScreen.kt index c37a3d10d..51f0b12d2 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/UConfigScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/UConfigScreen.kt @@ -28,11 +28,12 @@ import com.hippo.ehviewer.client.EhUrl import com.hippo.ehviewer.ui.LockDrawer import com.hippo.ehviewer.util.setDefaultSettings import com.ramcosta.composedestinations.annotation.Destination +import com.ramcosta.composedestinations.annotation.RootGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator private const val APPLY_JS = "javascript:(function(){var apply = document.getElementById(\"apply\").children[0];apply.click();})();" -@Destination +@Destination @Composable fun UConfigScreen(navigator: DestinationsNavigator) { LockDrawer(true) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 93305a60a..340e8a3ec 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -19,7 +19,7 @@ arrow = "1.2.3" coil = "3.0.0-alpha06" compose-bom = "2024.03.00-alpha02" compose-compiler = "1.5.11-dev-k2.0.0-Beta5-b5a216d0ac6" -compose-destinations = "1.10.2" +compose-destinations = "2.1.0-beta01" kotlin = "2.0.0-Beta5" kotlinx-coroutines = "1.8.0" kotlinx-datetime = "0.6.0-RC.2"