mirror of
https://github.com/owenlejeune/TVTime.git
synced 2025-11-08 12:42:44 -05:00
refactor navigation code
This commit is contained in:
@@ -45,7 +45,7 @@ fun MediaResultCard(
|
||||
.clickable(
|
||||
onClick = {
|
||||
appNavController.navigate(
|
||||
"${AppNavItem.DetailView.route}/${mediaViewType}/${id}"
|
||||
AppNavItem.DetailView.withArgs(mediaViewType, id)
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -186,7 +186,7 @@ fun ProfileMenuOverlay(
|
||||
} else {
|
||||
SessionManager.signInPart1(context) {
|
||||
appNavController.navigate(
|
||||
AppNavItem.WebLinkView.route.plus("/$it")
|
||||
AppNavItem.WebLinkView.withArgs(it)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -210,7 +210,7 @@ fun SearchView(
|
||||
fab: MutableState<@Composable () -> Unit>,
|
||||
preferences: AppPreferences = KoinJavaComponent.get(AppPreferences::class.java)
|
||||
) {
|
||||
val route = "${AppNavItem.SearchView.route}/${mediaType.ordinal}/$title"
|
||||
val route = AppNavItem.SearchView.withArgs(mediaType, title)
|
||||
if (preferences.showSearchBar) {
|
||||
SearchBar(
|
||||
placeholder = title
|
||||
|
||||
@@ -90,9 +90,9 @@ fun AppNavigationHost(
|
||||
SettingsScreen(appNavController = appNavController)
|
||||
}
|
||||
composable(
|
||||
route = AppNavItem.SearchView.route.plus("/{${NavConstants.SEARCH_ID_KEY}}/{${NavConstants.SEARCH_TITLE_KEY}}"),
|
||||
route = AppNavItem.SearchView.route.plus("?searchType={${NavConstants.SEARCH_ID_KEY}}&pageTitle={${NavConstants.SEARCH_TITLE_KEY}}"),
|
||||
arguments = listOf(
|
||||
navArgument(NavConstants.SEARCH_ID_KEY) { type = NavType.IntType },
|
||||
navArgument(NavConstants.SEARCH_ID_KEY) { type = NavType.EnumType(MediaViewType::class.java) },
|
||||
navArgument(NavConstants.SEARCH_TITLE_KEY) { type = NavType.StringType }
|
||||
)
|
||||
) {
|
||||
@@ -104,7 +104,7 @@ fun AppNavigationHost(
|
||||
)
|
||||
} else {
|
||||
Pair(
|
||||
MediaViewType[arguments.getInt(NavConstants.SEARCH_ID_KEY)],
|
||||
arguments.getSerializable(NavConstants.SEARCH_ID_KEY) as MediaViewType,
|
||||
arguments.getString(NavConstants.SEARCH_TITLE_KEY) ?: ""
|
||||
)
|
||||
}
|
||||
@@ -152,10 +152,18 @@ sealed class AppNavItem(val route: String) {
|
||||
}
|
||||
|
||||
object MainView: AppNavItem("main_route")
|
||||
object DetailView: AppNavItem("detail_route")
|
||||
object SettingsView: AppNavItem("settings_route")
|
||||
object SearchView: AppNavItem("search_route")
|
||||
object WebLinkView: AppNavItem("web_link_route")
|
||||
object DetailView: AppNavItem("detail_route") {
|
||||
fun withArgs(type: MediaViewType, id: Int) = route.plus("/${type}/${id}")
|
||||
}
|
||||
object SettingsView: AppNavItem("settings_route") {
|
||||
fun withArgs(page: String) = route.plus("/$page")
|
||||
}
|
||||
object SearchView: AppNavItem("search_route") {
|
||||
fun withArgs(searchType: MediaViewType, pageTitle: String) = route.plus("?searchType=$searchType&pageTitle=$pageTitle")
|
||||
}
|
||||
object WebLinkView: AppNavItem("web_link_route") {
|
||||
fun withArgs(url: String) = route.plus("/$url")
|
||||
}
|
||||
object AccountView: AppNavItem("account_route")
|
||||
object AboutView: AppNavItem("about_route")
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import androidx.navigation.compose.composable
|
||||
import com.owenlejeune.tvtime.R
|
||||
import com.owenlejeune.tvtime.preferences.AppPreferences
|
||||
import com.owenlejeune.tvtime.ui.screens.AccountViewContent
|
||||
import com.owenlejeune.tvtime.ui.screens.new.tabs.MediaTab
|
||||
import com.owenlejeune.tvtime.ui.screens.tabs.MediaTab
|
||||
import com.owenlejeune.tvtime.utils.types.MediaViewType
|
||||
import com.owenlejeune.tvtime.ui.screens.tabs.PeopleTab
|
||||
import com.owenlejeune.tvtime.utils.ResourceUtils
|
||||
|
||||
@@ -305,7 +305,7 @@ fun RecommendedAccountTabContent(
|
||||
lazyPagingItems = mediaListItems,
|
||||
onClick = { id ->
|
||||
appNavController.navigate(
|
||||
"${AppNavItem.DetailView.route}/${mediaViewType}/${id}"
|
||||
AppNavItem.DetailView.withArgs(mediaViewType, id)
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -459,7 +459,7 @@ private fun ListItemView(
|
||||
.clickable(
|
||||
onClick = {
|
||||
appNavController.navigate(
|
||||
"${AppNavItem.DetailView.route}/${listItem.mediaType}/${listItem.id}"
|
||||
AppNavItem.DetailView.withArgs(listItem.mediaType, listItem.id)
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1138,7 +1138,7 @@ private fun CastCrewCard(appNavController: NavController, person: Person) {
|
||||
subtitleTextColor = MaterialTheme.colorScheme.onSecondary,
|
||||
onItemClicked = {
|
||||
appNavController.navigate(
|
||||
"${AppNavItem.DetailView.route}/${MediaViewType.PERSON}/${person.id}"
|
||||
AppNavItem.DetailView.withArgs(MediaViewType.PERSON, person.id)
|
||||
)
|
||||
}
|
||||
)
|
||||
@@ -1184,7 +1184,7 @@ fun SimilarContentCard(
|
||||
imageUrl = TmdbUtils.getFullPosterPath(content),
|
||||
onItemClicked = {
|
||||
appNavController.navigate(
|
||||
"${AppNavItem.DetailView.route}/${mediaType}/${content.id}"
|
||||
AppNavItem.DetailView.withArgs(mediaType, content.id)
|
||||
)
|
||||
},
|
||||
placeholder = Icons.Filled.Movie
|
||||
|
||||
@@ -127,7 +127,7 @@ fun PersonDetailScreen(
|
||||
onItemClicked = {
|
||||
personId?.let {
|
||||
appNavController.navigate(
|
||||
"${AppNavItem.DetailView.route}/${content.mediaType}/${content.id}"
|
||||
AppNavItem.DetailView.withArgs(content.mediaType, content.id)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -173,7 +173,7 @@ fun PersonDetailScreen(
|
||||
onItemClicked = {
|
||||
personId?.let {
|
||||
appNavController.navigate(
|
||||
"${AppNavItem.DetailView.route}/${content.mediaType}/${content.id}"
|
||||
AppNavItem.DetailView.withArgs(content.mediaType, content.id)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,7 +188,7 @@ private fun TopLevelSettingsCard(
|
||||
.wrapContentHeight()
|
||||
.clickable(
|
||||
onClick = {
|
||||
appNavController.navigate("${AppNavItem.SettingsView.route}/${settingsView.route}")
|
||||
appNavController.navigate(AppNavItem.SettingsView.withArgs(settingsView.route))
|
||||
}
|
||||
)
|
||||
) {
|
||||
|
||||
@@ -73,7 +73,7 @@ fun MediaTabContent(appNavController: NavHostController, mediaType: MediaViewTyp
|
||||
lazyPagingItems = mediaListItems,
|
||||
onClick = { id ->
|
||||
appNavController.navigate(
|
||||
"${AppNavItem.DetailView.route}/${mediaType}/${id}"
|
||||
AppNavItem.DetailView.withArgs(mediaType, id)
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -43,7 +43,7 @@ fun PeopleTab(
|
||||
},
|
||||
onClick = { id ->
|
||||
appNavController.navigate(
|
||||
"${AppNavItem.DetailView.route}/${MediaViewType.PERSON}/${id}"
|
||||
AppNavItem.DetailView.withArgs(MediaViewType.PERSON, id)
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user