Skip to content

Commit

Permalink
Cleaned navigation (kind of) and improved screen transitions
Browse files Browse the repository at this point in the history
  • Loading branch information
enthuan committed Mar 25, 2024
1 parent f851b54 commit 8f60a1f
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,4 @@ import org.koin.dsl.module

val androidViewModelModule = module {
viewModel { MainActivityViewModel(get(), get()) }


}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ fun MainLayout(
val navigator = rememberNavigator()
MainNavHost(
mainNavController = navigator,
onSessionClick = { sessionId, roomId, startTimestamp, endTimestamp ->
onSessionClick = { sessionId ->
navigator.navigate("${MainNavigationRoute.SESSION_DETAIL.name}/$sessionId")
},
user = user,
Expand All @@ -49,7 +49,7 @@ private fun MainNavHost(
versionCode: String,
versionName: String,
mainNavController: Navigator,
onSessionClick: (sessionId: String, roomId: String, startTimestamp: Long, endTimestamp: Long) -> Unit,
onSessionClick: (sessionId: String) -> Unit,
user: User?,
navigateToSpeakerDetails: (SpeakerId) -> Unit,
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ import org.jetbrains.compose.ui.tooling.preview.Preview
@Composable
fun AgendaLayout(
agendaFilterDrawerState: DrawerState,
onSessionClick: (sessionId: String, roomId: String, startTimestamp: Long, endTimestamp: Long) -> Unit,
onSessionClick: (sessionId: String) -> Unit,
) {
val agendaLayoutViewModel = koinViewModel(vmClass = AgendaLayoutViewModel::class)
val agendaLayoutState by agendaLayoutViewModel.state.collectAsState()
Expand Down Expand Up @@ -73,7 +73,7 @@ fun AgendaLayout(
@Composable
private fun AgendaPagerOrLoading(
sessionFilters: List<SessionFilter>,
onSessionClick: (sessionId: String, roomId: String, startTimestamp: Long, endTimestamp: Long) -> Unit,
onSessionClick: (sessionId: String) -> Unit,
) {
val viewModel = koinViewModel(vmClass = AgendaPagerViewModel::class)
val favoriteSessions by viewModel.getFavoriteSessions().collectAsState(emptySet())
Expand All @@ -86,10 +86,7 @@ private fun AgendaPagerOrLoading(
filterList = sessionFilters,
onSessionClicked = {
onSessionClick(
it.id,
it.roomId,
it.startDate.toEpochMilliseconds(),
it.endDate.toEpochMilliseconds()
it.id
)
}
)
Expand Down Expand Up @@ -254,6 +251,6 @@ private fun AgendaFilterDrawerPreview() {
private fun AgendaLayoutPreview() {
AgendaLayout(
agendaFilterDrawerState = DrawerState(DrawerValue.Closed, confirmStateChange = { true }),
onSessionClick = { _, _, _, _ -> }
onSessionClick = { _ -> }
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,6 @@ private fun Speakers(
}
}
}

}

@Composable
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.androidmakers.ui.common.navigation

import androidx.compose.animation.ExitTransition
import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
Expand Down Expand Up @@ -57,6 +60,7 @@ import moe.tlaster.precompose.navigation.NavOptions
import moe.tlaster.precompose.navigation.Navigator
import moe.tlaster.precompose.navigation.PopUpTo
import moe.tlaster.precompose.navigation.rememberNavigator
import moe.tlaster.precompose.navigation.transition.NavTransition

/**
* AVA stands for Agenda/Venue/About.
Expand All @@ -68,7 +72,7 @@ import moe.tlaster.precompose.navigation.rememberNavigator
fun AVALayout(
versionCode: String,
versionName: String,
onSessionClick: (sessionId: String, roomId: String, startTimestamp: Long, endTimestamp: Long) -> Unit,
onSessionClick: (sessionId: String) -> Unit,
user: User?,
navigateToSpeakerDetails: (String) -> Unit,
) {
Expand Down Expand Up @@ -229,24 +233,33 @@ private fun AVANavHost(
versionCode: String,
versionName: String,
avaNavController: Navigator,
onSessionClick: (sessionId: String, roomId: String, startTimestamp: Long, endTimestamp: Long) -> Unit,
onSessionClick: (sessionId: String) -> Unit,
agendaFilterDrawerState: DrawerState,
navigateToSpeakerDetails: (String) -> Unit,
) {
NavHost(avaNavController, initialRoute = AVANavigationRoute.AGENDA.name) {

scene(route = AVANavigationRoute.AGENDA.name) {
scene(
route = AVANavigationRoute.AGENDA.name,
navTransition = defaultNavTransition
) {
AgendaLayout(
agendaFilterDrawerState = agendaFilterDrawerState,
onSessionClick = onSessionClick
)
}

scene(route = AVANavigationRoute.VENUE.name) {
scene(
route = AVANavigationRoute.VENUE.name,
navTransition = defaultNavTransition
) {
VenuePager()
}

scene(route = AVANavigationRoute.SPEAKERS.name) {
scene(
route = AVANavigationRoute.SPEAKERS.name,
navTransition = defaultNavTransition
) {

val speakerViewModel = koinViewModel(vmClass = SpeakerListViewModel::class)
SpeakerScreen(
Expand All @@ -255,18 +268,30 @@ private fun AVANavHost(
)
}

scene(route = AVANavigationRoute.ABOUT.name) {
scene(
route = AVANavigationRoute.ABOUT.name,
navTransition = defaultNavTransition
) {
AboutScreen(
versionCode = versionCode,
versionName = versionName
)
}

scene(route = AVANavigationRoute.SPONSORS.name) {
scene(
route = AVANavigationRoute.SPONSORS.name,
navTransition = defaultNavTransition
) {
SponsorsScreen(
onSponsorClick = {}
)
}

}
}

private val defaultNavTransition = NavTransition(
createTransition = fadeIn(),
pauseTransition = fadeOut(),
resumeTransition = fadeIn(),
destroyTransition = fadeOut()
)

0 comments on commit 8f60a1f

Please sign in to comment.