mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-15 07:37:03 +05:30
refactor(android): move navigation extensions to their own file
This commit is contained in:
parent
99a45ab5df
commit
cf390de486
5 changed files with 34 additions and 27 deletions
|
@ -23,8 +23,8 @@ import androidx.compose.ui.graphics.vector.ImageVector
|
||||||
import androidx.compose.ui.platform.testTag
|
import androidx.compose.ui.platform.testTag
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
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.Destination
|
||||||
|
import dev.msfjarvis.claw.android.ui.navigation.matches
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
|
|
||||||
const val AnimationDuration = 100
|
const val AnimationDuration = 100
|
||||||
|
|
|
@ -23,7 +23,7 @@ import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.platform.testTag
|
import androidx.compose.ui.platform.testTag
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
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
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|
|
@ -13,17 +13,12 @@ import androidx.activity.ComponentActivity
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.navigation.NavController
|
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.Comments
|
||||||
import dev.msfjarvis.claw.android.ui.navigation.Destination
|
|
||||||
import dev.msfjarvis.claw.android.viewmodel.ClawViewModel
|
import dev.msfjarvis.claw.android.viewmodel.ClawViewModel
|
||||||
import dev.msfjarvis.claw.common.posts.PostActions
|
import dev.msfjarvis.claw.common.posts.PostActions
|
||||||
import dev.msfjarvis.claw.common.urllauncher.UrlLauncher
|
import dev.msfjarvis.claw.common.urllauncher.UrlLauncher
|
||||||
import dev.msfjarvis.claw.model.LinkMetadata
|
import dev.msfjarvis.claw.model.LinkMetadata
|
||||||
import dev.msfjarvis.claw.model.UIPost
|
import dev.msfjarvis.claw.model.UIPost
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
|
||||||
|
|
||||||
fun Context.getActivity(): ComponentActivity? {
|
fun Context.getActivity(): ComponentActivity? {
|
||||||
return when (this) {
|
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<Destination>): Boolean {
|
|
||||||
return destinations.any { this?.matches(it) == true }
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Check if this [NavDestination] [matches] none of the potential navigation [destinations]. */
|
|
||||||
fun NavDestination?.none(destinations: ImmutableList<Destination>): Boolean {
|
|
||||||
return destinations.none { this?.matches(it) == true }
|
|
||||||
}
|
|
||||||
|
|
|
@ -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<Destination>): Boolean {
|
||||||
|
return destinations.any { this?.matches(it) == true }
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Check if this [NavDestination] [matches] none of the potential navigation [destinations]. */
|
||||||
|
fun NavDestination?.none(destinations: ImmutableList<Destination>): Boolean {
|
||||||
|
return destinations.none { this?.matches(it) == true }
|
||||||
|
}
|
|
@ -62,7 +62,6 @@ import com.mikepenz.aboutlibraries.ui.compose.m3.LibrariesContainer
|
||||||
import dev.msfjarvis.claw.android.MainActivity
|
import dev.msfjarvis.claw.android.MainActivity
|
||||||
import dev.msfjarvis.claw.android.R
|
import dev.msfjarvis.claw.android.R
|
||||||
import dev.msfjarvis.claw.android.SearchActivity
|
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.ClawNavigationBar
|
||||||
import dev.msfjarvis.claw.android.ui.decorations.ClawNavigationRail
|
import dev.msfjarvis.claw.android.ui.decorations.ClawNavigationRail
|
||||||
import dev.msfjarvis.claw.android.ui.decorations.NavigationItem
|
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.Saved
|
||||||
import dev.msfjarvis.claw.android.ui.navigation.Settings
|
import dev.msfjarvis.claw.android.ui.navigation.Settings
|
||||||
import dev.msfjarvis.claw.android.ui.navigation.User
|
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.ui.rememberPostActions
|
||||||
import dev.msfjarvis.claw.android.viewmodel.ClawViewModel
|
import dev.msfjarvis.claw.android.viewmodel.ClawViewModel
|
||||||
import dev.msfjarvis.claw.common.comments.CommentsPage
|
import dev.msfjarvis.claw.common.comments.CommentsPage
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue