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