Skip to content

Commit 6925b6f

Browse files
authored
Improve navigation transitions (#210)
1 parent 1efc118 commit 6925b6f

File tree

5 files changed

+39
-20
lines changed

5 files changed

+39
-20
lines changed

androidApp/src/main/java/fr/paug/androidmakers/di/ViewModelModule.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,4 @@ import org.koin.dsl.module
66

77
val androidViewModelModule = module {
88
viewModel { MainActivityViewModel(get(), get()) }
9-
10-
119
}

shared/ui/src/commonMain/kotlin/com/androidmakers/ui/MainLayout.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ fun MainLayout(
3232
val navigator = rememberNavigator()
3333
MainNavHost(
3434
mainNavController = navigator,
35-
onSessionClick = { sessionId, roomId, startTimestamp, endTimestamp ->
35+
onSessionClick = { sessionId ->
3636
navigator.navigate("${MainNavigationRoute.SESSION_DETAIL.name}/$sessionId")
3737
},
3838
user = user,
@@ -49,7 +49,7 @@ private fun MainNavHost(
4949
versionCode: String,
5050
versionName: String,
5151
mainNavController: Navigator,
52-
onSessionClick: (sessionId: String, roomId: String, startTimestamp: Long, endTimestamp: Long) -> Unit,
52+
onSessionClick: (sessionId: String) -> Unit,
5353
user: User?,
5454
navigateToSpeakerDetails: (SpeakerId) -> Unit,
5555
) {

shared/ui/src/commonMain/kotlin/com/androidmakers/ui/agenda/AgendaLayout.kt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ import org.jetbrains.compose.ui.tooling.preview.Preview
4343
@Composable
4444
fun AgendaLayout(
4545
agendaFilterDrawerState: DrawerState,
46-
onSessionClick: (sessionId: String, roomId: String, startTimestamp: Long, endTimestamp: Long) -> Unit,
46+
onSessionClick: (sessionId: String) -> Unit,
4747
) {
4848
val agendaLayoutViewModel = koinViewModel(vmClass = AgendaLayoutViewModel::class)
4949
val agendaLayoutState by agendaLayoutViewModel.state.collectAsState()
@@ -73,7 +73,7 @@ fun AgendaLayout(
7373
@Composable
7474
private fun AgendaPagerOrLoading(
7575
sessionFilters: List<SessionFilter>,
76-
onSessionClick: (sessionId: String, roomId: String, startTimestamp: Long, endTimestamp: Long) -> Unit,
76+
onSessionClick: (sessionId: String) -> Unit,
7777
) {
7878
val viewModel = koinViewModel(vmClass = AgendaPagerViewModel::class)
7979
val favoriteSessions by viewModel.getFavoriteSessions().collectAsState(emptySet())
@@ -86,10 +86,7 @@ private fun AgendaPagerOrLoading(
8686
filterList = sessionFilters,
8787
onSessionClicked = {
8888
onSessionClick(
89-
it.id,
90-
it.roomId,
91-
it.startDate.toEpochMilliseconds(),
92-
it.endDate.toEpochMilliseconds()
89+
it.id
9390
)
9491
}
9592
)
@@ -254,6 +251,6 @@ private fun AgendaFilterDrawerPreview() {
254251
private fun AgendaLayoutPreview() {
255252
AgendaLayout(
256253
agendaFilterDrawerState = DrawerState(DrawerValue.Closed, confirmStateChange = { true }),
257-
onSessionClick = { _, _, _, _ -> }
254+
onSessionClick = { _ -> }
258255
)
259256
}

shared/ui/src/commonMain/kotlin/com/androidmakers/ui/agenda/SessionDetailLayout.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,6 @@ private fun Speakers(
317317
}
318318
}
319319
}
320-
321320
}
322321

323322
@Composable

shared/ui/src/commonMain/kotlin/com/androidmakers/ui/common/navigation/AVALayout.kt

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package com.androidmakers.ui.common.navigation
22

3+
import androidx.compose.animation.ExitTransition
4+
import androidx.compose.animation.fadeIn
5+
import androidx.compose.animation.fadeOut
36
import androidx.compose.foundation.Image
47
import androidx.compose.foundation.layout.Arrangement
58
import androidx.compose.foundation.layout.Box
@@ -57,6 +60,7 @@ import moe.tlaster.precompose.navigation.NavOptions
5760
import moe.tlaster.precompose.navigation.Navigator
5861
import moe.tlaster.precompose.navigation.PopUpTo
5962
import moe.tlaster.precompose.navigation.rememberNavigator
63+
import moe.tlaster.precompose.navigation.transition.NavTransition
6064

6165
/**
6266
* AVA stands for Agenda/Venue/About.
@@ -68,7 +72,7 @@ import moe.tlaster.precompose.navigation.rememberNavigator
6872
fun AVALayout(
6973
versionCode: String,
7074
versionName: String,
71-
onSessionClick: (sessionId: String, roomId: String, startTimestamp: Long, endTimestamp: Long) -> Unit,
75+
onSessionClick: (sessionId: String) -> Unit,
7276
user: User?,
7377
navigateToSpeakerDetails: (String) -> Unit,
7478
) {
@@ -229,24 +233,33 @@ private fun AVANavHost(
229233
versionCode: String,
230234
versionName: String,
231235
avaNavController: Navigator,
232-
onSessionClick: (sessionId: String, roomId: String, startTimestamp: Long, endTimestamp: Long) -> Unit,
236+
onSessionClick: (sessionId: String) -> Unit,
233237
agendaFilterDrawerState: DrawerState,
234238
navigateToSpeakerDetails: (String) -> Unit,
235239
) {
236240
NavHost(avaNavController, initialRoute = AVANavigationRoute.AGENDA.name) {
237241

238-
scene(route = AVANavigationRoute.AGENDA.name) {
242+
scene(
243+
route = AVANavigationRoute.AGENDA.name,
244+
navTransition = defaultNavTransition
245+
) {
239246
AgendaLayout(
240247
agendaFilterDrawerState = agendaFilterDrawerState,
241248
onSessionClick = onSessionClick
242249
)
243250
}
244251

245-
scene(route = AVANavigationRoute.VENUE.name) {
252+
scene(
253+
route = AVANavigationRoute.VENUE.name,
254+
navTransition = defaultNavTransition
255+
) {
246256
VenuePager()
247257
}
248258

249-
scene(route = AVANavigationRoute.SPEAKERS.name) {
259+
scene(
260+
route = AVANavigationRoute.SPEAKERS.name,
261+
navTransition = defaultNavTransition
262+
) {
250263

251264
val speakerViewModel = koinViewModel(vmClass = SpeakerListViewModel::class)
252265
SpeakerScreen(
@@ -255,18 +268,30 @@ private fun AVANavHost(
255268
)
256269
}
257270

258-
scene(route = AVANavigationRoute.ABOUT.name) {
271+
scene(
272+
route = AVANavigationRoute.ABOUT.name,
273+
navTransition = defaultNavTransition
274+
) {
259275
AboutScreen(
260276
versionCode = versionCode,
261277
versionName = versionName
262278
)
263279
}
264280

265-
scene(route = AVANavigationRoute.SPONSORS.name) {
281+
scene(
282+
route = AVANavigationRoute.SPONSORS.name,
283+
navTransition = defaultNavTransition
284+
) {
266285
SponsorsScreen(
267286
onSponsorClick = {}
268287
)
269288
}
270-
271289
}
272290
}
291+
292+
private val defaultNavTransition = NavTransition(
293+
createTransition = fadeIn(),
294+
pauseTransition = fadeOut(),
295+
resumeTransition = fadeIn(),
296+
destroyTransition = fadeOut()
297+
)

0 commit comments

Comments
 (0)