diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt
index af2919e2..49f75028 100644
--- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt
+++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt
@@ -88,7 +88,7 @@ fun LobstersApp(
listOf(
NavigationItem(
label = "Hottest",
- route = Destinations.Hottest.getRoute(),
+ route = Destinations.Hottest.route,
icon = ClawIcons.Flame,
selectedIcon = ClawIcons.FlameFilled,
) {
@@ -96,7 +96,7 @@ fun LobstersApp(
},
NavigationItem(
label = "Newest",
- route = Destinations.Newest.getRoute(),
+ route = Destinations.Newest.route,
icon = ClawIcons.New,
selectedIcon = ClawIcons.NewFilled,
) {
@@ -104,7 +104,7 @@ fun LobstersApp(
},
NavigationItem(
label = "Saved",
- route = Destinations.Saved.getRoute(),
+ route = Destinations.Saved.route,
icon = ClawIcons.HeartBorder,
selectedIcon = ClawIcons.Heart,
) {
@@ -158,12 +158,12 @@ fun LobstersApp(
) { paddingValues ->
MaterialMotionNavHost(
navController = navController,
- startDestination = Destinations.startDestination.getRoute(),
+ startDestination = Destinations.startDestination.route,
modifier = Modifier.padding(paddingValues),
) {
val uri = LobstersApi.BASE_URL
composable(
- route = Destinations.Hottest.getRoute(),
+ route = Destinations.Hottest.route,
deepLinks =
listOf(navDeepLink { uriPattern = uri }, navDeepLink { uriPattern = "$uri/" }),
) {
@@ -177,7 +177,7 @@ fun LobstersApp(
)
}
composable(
- route = Destinations.Newest.getRoute(),
+ route = Destinations.Newest.route,
) {
setWebUri("https://lobste.rs/")
NetworkPosts(
@@ -188,7 +188,7 @@ fun LobstersApp(
postActions = postActions,
)
}
- composable(Destinations.Saved.getRoute()) {
+ composable(Destinations.Saved.route) {
setWebUri(null)
DatabasePosts(
items = savedPosts,
@@ -197,12 +197,12 @@ fun LobstersApp(
)
}
composable(
- route = Destinations.Comments.getRoute("{postId}"),
+ route = Destinations.Comments.route,
arguments = listOf(navArgument("postId") { type = NavType.StringType }),
deepLinks =
listOf(
- navDeepLink { uriPattern = "$uri/s/{postId}/.*" },
- navDeepLink { uriPattern = "$uri/s/{postId}" },
+ navDeepLink { uriPattern = "$uri/s/${Destinations.Comments.placeholder}/.*" },
+ navDeepLink { uriPattern = "$uri/s/${Destinations.Comments.placeholder}" },
),
) { backStackEntry ->
val postId = requireNotNull(backStackEntry.arguments?.getString("postId"))
@@ -214,9 +214,10 @@ fun LobstersApp(
)
}
composable(
- route = Destinations.User.getRoute("{username}"),
+ route = Destinations.User.route,
arguments = listOf(navArgument("username") { type = NavType.StringType }),
- deepLinks = listOf(navDeepLink { uriPattern = "$uri/u/{username}" }),
+ deepLinks =
+ listOf(navDeepLink { uriPattern = "$uri/u/${Destinations.User.placeholder}" }),
) { backStackEntry ->
val username = requireNotNull(backStackEntry.arguments?.getString("username"))
UserProfile(
diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationBar.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationBar.kt
index 3d0e4888..f26f8d15 100644
--- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationBar.kt
+++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationBar.kt
@@ -62,7 +62,7 @@ fun ClawNavigationBar(
return@NavigationBarItem
}
navController.popBackStack(navController.graph.startDestinationRoute!!, false)
- if (navItem.route != Destinations.startDestination.getRoute()) {
+ if (navItem.route != Destinations.startDestination.route) {
navController.navigate(navItem.route)
}
}
diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/ext.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/ext.kt
index fea8f083..a76154ff 100644
--- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/ext.kt
+++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/ext.kt
@@ -43,7 +43,9 @@ fun rememberPostActions(
}
override fun viewComments(postId: String) {
- navController.navigate(Destinations.Comments.getRoute(postId))
+ navController.navigate(
+ Destinations.Comments.route.replace(Destinations.Comments.placeholder, postId)
+ )
}
override fun viewCommentsPage(commentsUrl: String) {
diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/navigation/Destinations.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/navigation/Destinations.kt
index 1cb91f0b..269e0fd6 100644
--- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/navigation/Destinations.kt
+++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/navigation/Destinations.kt
@@ -1,24 +1,28 @@
package dev.msfjarvis.claw.android.ui.navigation
sealed class Destinations {
+ abstract val route: String
+
object Hottest : Destinations() {
- fun getRoute() = "hottest"
+ override val route = "hottest"
}
object Newest : Destinations() {
- fun getRoute() = "newest"
+ override val route = "newest"
}
object Saved : Destinations() {
- fun getRoute() = "saved"
+ override val route = "saved"
}
object Comments : Destinations() {
- fun getRoute(postId: String) = "comments/$postId"
+ const val placeholder = "{postId}"
+ override val route = "comments/$placeholder"
}
object User : Destinations() {
- fun getRoute(username: String) = "user/$username"
+ const val placeholder = "{username}"
+ override val route = "user/$placeholder"
}
companion object {
diff --git a/detekt-baselines/android.xml b/detekt-baselines/android.xml
index f28a63e2..94bd0100 100644
--- a/detekt-baselines/android.xml
+++ b/detekt-baselines/android.xml
@@ -3,9 +3,6 @@
ComposableParamOrder:LobstersApp.kt$LobstersApp
- FunctionOnlyReturningConstant:Destinations.kt$Destinations.Hottest$fun getRoute()
- FunctionOnlyReturningConstant:Destinations.kt$Destinations.Newest$fun getRoute()
- FunctionOnlyReturningConstant:Destinations.kt$Destinations.Saved$fun getRoute()
LongMethod:LobstersApp.kt$@OptIn(ExperimentalMaterial3Api::class, ExperimentalAnimationApi::class) @Composable fun LobstersApp( viewModel: ClawViewModel = viewModel(), urlLauncher: UrlLauncher, htmlConverter: HTMLConverter, setWebUri: (String?) -> Unit, )
LongParameterList:NetworkPosts.kt$( items: LazyPagingItems<LobstersPost>, listState: LazyListState, isPostSaved: suspend (SavedPost) -> Boolean, reloadPosts: () -> Unit, postActions: PostActions, modifier: Modifier = Modifier, )
MagicNumber:ClawApplication.kt$ClawApplication$0.25