refactor navigation code

This commit is contained in:
Owen LeJeune
2023-06-11 17:17:38 -04:00
parent 97d7fbd841
commit f36dc741e9
12 changed files with 28 additions and 20 deletions

View File

@@ -45,7 +45,7 @@ fun MediaResultCard(
.clickable(
onClick = {
appNavController.navigate(
"${AppNavItem.DetailView.route}/${mediaViewType}/${id}"
AppNavItem.DetailView.withArgs(mediaViewType, id)
)
}
)

View File

@@ -186,7 +186,7 @@ fun ProfileMenuOverlay(
} else {
SessionManager.signInPart1(context) {
appNavController.navigate(
AppNavItem.WebLinkView.route.plus("/$it")
AppNavItem.WebLinkView.withArgs(it)
)
}
}

View File

@@ -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

View File

@@ -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")

View File

@@ -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

View File

@@ -305,7 +305,7 @@ fun RecommendedAccountTabContent(
lazyPagingItems = mediaListItems,
onClick = { id ->
appNavController.navigate(
"${AppNavItem.DetailView.route}/${mediaViewType}/${id}"
AppNavItem.DetailView.withArgs(mediaViewType, id)
)
}
)

View File

@@ -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)
)
}
)

View File

@@ -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

View File

@@ -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)
)
}
}

View File

@@ -188,7 +188,7 @@ private fun TopLevelSettingsCard(
.wrapContentHeight()
.clickable(
onClick = {
appNavController.navigate("${AppNavItem.SettingsView.route}/${settingsView.route}")
appNavController.navigate(AppNavItem.SettingsView.withArgs(settingsView.route))
}
)
) {

View File

@@ -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)
)
}
)

View File

@@ -43,7 +43,7 @@ fun PeopleTab(
},
onClick = { id ->
appNavController.navigate(
"${AppNavItem.DetailView.route}/${MediaViewType.PERSON}/${id}"
AppNavItem.DetailView.withArgs(MediaViewType.PERSON, id)
)
}
)