mirror of
https://github.com/mihonapp/mihon.git
synced 2025-02-12 10:08:55 +01:00
Move to ScreenModel
This commit is contained in:
parent
a7e650067e
commit
b61a6adeb7
@ -72,6 +72,7 @@ fun UpcomingScreenContent(
|
||||
setSelectedYearMonth = setSelectedYearMonth,
|
||||
onClickDay = { onClickDay(it, 0) },
|
||||
onClickUpcoming = onClickUpcoming,
|
||||
mangaCountMap = state.mangaCountMap,
|
||||
)
|
||||
} else {
|
||||
UpcomingScreenSmallImpl(
|
||||
@ -83,6 +84,7 @@ fun UpcomingScreenContent(
|
||||
setSelectedYearMonth = setSelectedYearMonth,
|
||||
onClickDay = { onClickDay(it, 1) },
|
||||
onClickUpcoming = onClickUpcoming,
|
||||
mangaCountMap = state.mangaCountMap,
|
||||
)
|
||||
}
|
||||
}
|
||||
@ -144,6 +146,7 @@ private fun UpcomingScreenSmallImpl(
|
||||
setSelectedYearMonth: (YearMonth) -> Unit,
|
||||
onClickDay: (LocalDate) -> Unit,
|
||||
onClickUpcoming: (manga: Manga) -> Unit,
|
||||
mangaCountMap: ImmutableMap<LocalDate, Int>,
|
||||
) {
|
||||
FastScrollLazyColumn(
|
||||
contentPadding = paddingValues,
|
||||
@ -175,8 +178,7 @@ private fun UpcomingScreenSmallImpl(
|
||||
)
|
||||
}
|
||||
is UpcomingUIModel.Header -> {
|
||||
val mangaCount = items.filterIsInstance<UpcomingUIModel.Item>()
|
||||
.count { it.manga.expectedNextUpdate?.toLocalDate() == item.date }
|
||||
val mangaCount = mangaCountMap[item.date] ?: 0
|
||||
|
||||
DateHeading(
|
||||
date = item.date,
|
||||
@ -198,6 +200,7 @@ private fun UpcomingScreenLargeImpl(
|
||||
setSelectedYearMonth: (YearMonth) -> Unit,
|
||||
onClickDay: (LocalDate) -> Unit,
|
||||
onClickUpcoming: (manga: Manga) -> Unit,
|
||||
mangaCountMap: ImmutableMap<LocalDate, Int>,
|
||||
) {
|
||||
TwoPanelBox(
|
||||
modifier = Modifier.padding(paddingValues),
|
||||
@ -229,8 +232,7 @@ private fun UpcomingScreenLargeImpl(
|
||||
)
|
||||
}
|
||||
is UpcomingUIModel.Header -> {
|
||||
val mangaCount = items.filterIsInstance<UpcomingUIModel.Item>()
|
||||
.count { it.manga.expectedNextUpdate?.toLocalDate() == item.date }
|
||||
val mangaCount = mangaCountMap[item.date] ?: 0
|
||||
|
||||
DateHeading(
|
||||
date = item.date,
|
||||
|
@ -28,13 +28,17 @@ class UpcomingScreenModel(
|
||||
|
||||
init {
|
||||
screenModelScope.launch {
|
||||
getUpcomingManga.subscribe().collectLatest {
|
||||
getUpcomingManga.subscribe().collectLatest { mangaList ->
|
||||
mutableState.update { state ->
|
||||
val upcomingItems = it.toUpcomingUIModels()
|
||||
val upcomingItems = mangaList.toUpcomingUIModels()
|
||||
val mangaCountMap = mangaList.groupBy { it.expectedNextUpdate?.toLocalDate() ?: LocalDate.MAX }
|
||||
.mapValues { it.value.size }
|
||||
.toImmutableMap()
|
||||
state.copy(
|
||||
items = upcomingItems,
|
||||
events = it.toEvents(),
|
||||
events = mangaList.toEvents(),
|
||||
headerIndexes = upcomingItems.getHeaderIndexes(),
|
||||
mangaCountMap = mangaCountMap
|
||||
)
|
||||
}
|
||||
}
|
||||
@ -83,5 +87,6 @@ class UpcomingScreenModel(
|
||||
val items: ImmutableList<UpcomingUIModel> = persistentListOf(),
|
||||
val events: ImmutableMap<LocalDate, Int> = persistentMapOf(),
|
||||
val headerIndexes: ImmutableMap<LocalDate, Int> = persistentMapOf(),
|
||||
val mangaCountMap: ImmutableMap<LocalDate, Int> = persistentMapOf(),
|
||||
)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user