Skip to content

Commit

Permalink
add clock parameter
Browse files Browse the repository at this point in the history
  • Loading branch information
tkhs0604 committed Sep 16, 2023
1 parent 3ed1da1 commit d8a9e0d
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -81,14 +81,11 @@ public enum class DroidKaigi2023Day(
/**
* @return appropriate initial day for now
*/
fun initialSelectedDay(isTest: Boolean = false): DroidKaigi2023Day {
// Timetable tab set initial tab with current date.
// To get the consistent test result, fix selected timetable tab to Day1 here.
if (isTest) return Day1
fun initialSelectedDay(clock: Clock): DroidKaigi2023Day {
val reversedEntries = entries.sortedByDescending { it.day }
var selectedDay = reversedEntries.last()
for (entry in reversedEntries) {
if (Clock.System.now() <= entry.end) selectedDay = entry
if (clock.now() <= entry.end) selectedDay = entry
}
return selectedDay
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ import io.github.droidkaigi.confsched2023.sessions.section.TimetableSheet
import io.github.droidkaigi.confsched2023.sessions.section.TimetableSheetUiState
import io.github.droidkaigi.confsched2023.ui.SnackbarMessageEffect
import kotlinx.collections.immutable.toPersistentMap
import kotlinx.datetime.Clock
import kotlinx.datetime.Instant
import kotlin.math.roundToInt

const val timetableScreenRoute = "timetable"
Expand Down Expand Up @@ -253,7 +255,7 @@ fun PreviewTimetableScreenDark() {
TimetableScreen(
uiState = TimetableScreenUiState(
contentUiState = TimetableSheetUiState.ListTimetable(
mapOf(
timetableListUiStates = mapOf(
DroidKaigi2023Day.Day1 to TimetableListUiState(
mapOf<String, List<TimetableItem>>().toPersistentMap(),
Timetable(),
Expand All @@ -263,6 +265,9 @@ fun PreviewTimetableScreenDark() {
Timetable(),
),
),
clock = object : Clock {
override fun now(): Instant = Instant.parse("2023-09-14T00:00:00Z")
},
),
timetableUiType = TimetableUiType.Grid,
onBookmarkIconClickStatus = false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ class TimetableScreenViewModel @Inject constructor(
timetableUiTypeStateFlow,
) { sessionTimetable, uiType ->
if (sessionTimetable.timetableItems.isEmpty()) {
return@buildUiState TimetableSheetUiState.Empty
return@buildUiState TimetableSheetUiState.Empty()
}
if (uiType == TimetableUiType.List) {
TimetableSheetUiState.ListTimetable(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,18 +36,26 @@ import io.github.droidkaigi.confsched2023.sessions.component.rememberTimetableTa
import io.github.droidkaigi.confsched2023.sessions.section.TimetableSheetUiState.Empty
import io.github.droidkaigi.confsched2023.sessions.section.TimetableSheetUiState.GridTimetable
import io.github.droidkaigi.confsched2023.sessions.section.TimetableSheetUiState.ListTimetable
import io.github.droidkaigi.confsched2023.ui.isTest
import kotlinx.datetime.Clock

const val TimetableTabTestTag = "TimetableTab"

sealed interface TimetableSheetUiState {
data object Empty : TimetableSheetUiState

val clock: Clock

data class Empty(
override val clock: Clock = Clock.System,
) : TimetableSheetUiState

data class ListTimetable(
val timetableListUiStates: Map<DroidKaigi2023Day, TimetableListUiState>,
override val clock: Clock = Clock.System,
) : TimetableSheetUiState

data class GridTimetable(
val timetableGridUiState: Map<DroidKaigi2023Day, TimetableGridUiState>,
override val clock: Clock = Clock.System,
) : TimetableSheetUiState
}

Expand All @@ -60,7 +68,7 @@ fun TimetableSheet(
contentPadding: PaddingValues,
modifier: Modifier = Modifier,
) {
var selectedDay by rememberSaveable { mutableStateOf(DroidKaigi2023Day.initialSelectedDay(isTest())) }
var selectedDay by rememberSaveable { mutableStateOf(DroidKaigi2023Day.initialSelectedDay(uiState.clock)) }
val corner by animateIntAsState(
if (timetableScreenScrollState.isScreenLayoutCalculating || timetableScreenScrollState.isSheetExpandable) 40 else 0,
label = "Timetable corner state",
Expand Down

0 comments on commit d8a9e0d

Please sign in to comment.