From cf390de486b5834620176c8bddc6515539959919 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Thu, 30 May 2024 18:07:23 +0530 Subject: [PATCH] refactor(android): move navigation extensions to their own file --- .../ui/decorations/ClawNavigationBar.kt | 2 +- .../ui/decorations/ClawNavigationRail.kt | 2 +- .../dev/msfjarvis/claw/android/ui/ext.kt | 23 -------------- .../ui/navigation/NavigationExtensions.kt | 30 +++++++++++++++++++ .../android/ui/screens/LobstersPostsScreen.kt | 4 +-- 5 files changed, 34 insertions(+), 27 deletions(-) create mode 100644 android/src/main/kotlin/dev/msfjarvis/claw/android/ui/navigation/NavigationExtensions.kt 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 2c33809b..66fff5fd 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 @@ -23,8 +23,8 @@ import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.testTag import androidx.navigation.NavController import androidx.navigation.compose.currentBackStackEntryAsState -import dev.msfjarvis.claw.android.ui.matches import dev.msfjarvis.claw.android.ui.navigation.Destination +import dev.msfjarvis.claw.android.ui.navigation.matches import kotlinx.collections.immutable.ImmutableList const val AnimationDuration = 100 diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationRail.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationRail.kt index 2a12144b..c7781bef 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationRail.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationRail.kt @@ -23,7 +23,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag import androidx.navigation.NavController import androidx.navigation.compose.currentBackStackEntryAsState -import dev.msfjarvis.claw.android.ui.matches +import dev.msfjarvis.claw.android.ui.navigation.matches import kotlinx.collections.immutable.ImmutableList @Composable 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 7d1a87dc..a2820346 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 @@ -13,17 +13,12 @@ import androidx.activity.ComponentActivity import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.navigation.NavController -import androidx.navigation.NavDestination -import androidx.navigation.NavDestination.Companion.hasRoute -import androidx.navigation.NavDestination.Companion.hierarchy import dev.msfjarvis.claw.android.ui.navigation.Comments -import dev.msfjarvis.claw.android.ui.navigation.Destination import dev.msfjarvis.claw.android.viewmodel.ClawViewModel import dev.msfjarvis.claw.common.posts.PostActions import dev.msfjarvis.claw.common.urllauncher.UrlLauncher import dev.msfjarvis.claw.model.LinkMetadata import dev.msfjarvis.claw.model.UIPost -import kotlinx.collections.immutable.ImmutableList fun Context.getActivity(): ComponentActivity? { return when (this) { @@ -82,21 +77,3 @@ fun rememberPostActions( } } } - -/** - * Walk through the [NavDestination]'s [hierarchy] to see if it has any destination that matches the - * route defined by [dest]. - */ -fun NavDestination?.matches(dest: Destination): Boolean { - return this?.hierarchy?.any { it.hasRoute(dest::class) } == true -} - -/** Check if this [NavDestination] [matches] any of the potential navigation [destinations]. */ -fun NavDestination?.any(destinations: ImmutableList): Boolean { - return destinations.any { this?.matches(it) == true } -} - -/** Check if this [NavDestination] [matches] none of the potential navigation [destinations]. */ -fun NavDestination?.none(destinations: ImmutableList): Boolean { - return destinations.none { this?.matches(it) == true } -} diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/navigation/NavigationExtensions.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/navigation/NavigationExtensions.kt new file mode 100644 index 00000000..d6a7db90 --- /dev/null +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/navigation/NavigationExtensions.kt @@ -0,0 +1,30 @@ +/* + * Copyright © 2024 Harsh Shandilya. + * Use of this source code is governed by an MIT-style + * license that can be found in the LICENSE file or at + * https://opensource.org/licenses/MIT. + */ +package dev.msfjarvis.claw.android.ui.navigation + +import androidx.navigation.NavDestination +import androidx.navigation.NavDestination.Companion.hasRoute +import androidx.navigation.NavDestination.Companion.hierarchy +import kotlinx.collections.immutable.ImmutableList + +/** + * Walk through the [NavDestination]'s [hierarchy] to see if it has any destination that matches the + * route defined by [dest]. + */ +fun NavDestination?.matches(dest: Destination): Boolean { + return this?.hierarchy?.any { it.hasRoute(dest::class) } == true +} + +/** Check if this [NavDestination] [matches] any of the potential navigation [destinations]. */ +fun NavDestination?.any(destinations: ImmutableList): Boolean { + return destinations.any { this?.matches(it) == true } +} + +/** Check if this [NavDestination] [matches] none of the potential navigation [destinations]. */ +fun NavDestination?.none(destinations: ImmutableList): Boolean { + return destinations.none { this?.matches(it) == true } +} diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/LobstersPostsScreen.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/LobstersPostsScreen.kt index 1c06b765..d9b2ebb6 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/LobstersPostsScreen.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/LobstersPostsScreen.kt @@ -62,7 +62,6 @@ import com.mikepenz.aboutlibraries.ui.compose.m3.LibrariesContainer import dev.msfjarvis.claw.android.MainActivity import dev.msfjarvis.claw.android.R import dev.msfjarvis.claw.android.SearchActivity -import dev.msfjarvis.claw.android.ui.any import dev.msfjarvis.claw.android.ui.decorations.ClawNavigationBar import dev.msfjarvis.claw.android.ui.decorations.ClawNavigationRail import dev.msfjarvis.claw.android.ui.decorations.NavigationItem @@ -77,7 +76,8 @@ import dev.msfjarvis.claw.android.ui.navigation.Newest import dev.msfjarvis.claw.android.ui.navigation.Saved import dev.msfjarvis.claw.android.ui.navigation.Settings import dev.msfjarvis.claw.android.ui.navigation.User -import dev.msfjarvis.claw.android.ui.none +import dev.msfjarvis.claw.android.ui.navigation.any +import dev.msfjarvis.claw.android.ui.navigation.none import dev.msfjarvis.claw.android.ui.rememberPostActions import dev.msfjarvis.claw.android.viewmodel.ClawViewModel import dev.msfjarvis.claw.common.comments.CommentsPage