Adventure book into detail if only one chapter is availlable.

This commit is contained in:
Andres Gomez, Thomas (ITDV RL) 2024-07-04 10:45:33 +02:00
parent 28ba73537d
commit c23dba7669
3 changed files with 20 additions and 6 deletions

View file

@ -32,6 +32,7 @@ data class AdventureBookUio(
val bookTitle: String,
val bookIcon: Uri?,
val documentId: String,
val adventureTitle: String?,
)
@Composable
@ -83,6 +84,7 @@ private fun AdventureItemPreview() {
bookIcon = null,
bookTitle = "Les chroniques d'une orc",
documentId = "",
adventureTitle = null,
),
onClick = {},
)

View file

@ -42,6 +42,7 @@ import com.pixelized.rplexicon.ui.composable.Loader
import com.pixelized.rplexicon.ui.composable.rememberAnimatedShadow
import com.pixelized.rplexicon.ui.navigation.LocalScreenNavHost
import com.pixelized.rplexicon.ui.navigation.screens.navigateToAdventureChapters
import com.pixelized.rplexicon.ui.navigation.screens.navigateToAdventureDetail
import com.pixelized.rplexicon.ui.theme.LexiconTheme
@OptIn(ExperimentalMaterialApi::class)
@ -67,10 +68,17 @@ fun AdventureBooksScreen(
items = viewModel.books,
onBack = { screen.popBackStack() },
onBook = {
if (it.adventureTitle == null) {
screen.navigateToAdventureChapters(
bookTitle = it.bookTitle,
documentId = it.documentId,
)
} else {
screen.navigateToAdventureDetail(
documentId = it.documentId,
adventureTitle = it.adventureTitle
)
}
},
)
}
@ -169,6 +177,7 @@ private fun AdventureListPreview(
bookTitle = "Les chroniques d'une orc",
bookIcon = null,
documentId = "",
adventureTitle = null,
)
)
)

View file

@ -32,14 +32,17 @@ class AdventureBooksViewModel @Inject constructor(
private val _books = adventureRepository.bookFlow()
.map { adventures ->
adventures
.map { adventure ->
.groupBy { it.documentId }
.mapValues { (_, adventures) ->
val adventure = adventures.first()
AdventureBookUio(
bookTitle = adventure.bookTitle,
bookIcon = adventure.bookIcon,
documentId = adventure.documentId,
adventureTitle = if (adventures.size == 1) adventure.storyTitle else null
)
}
.toSet()
.values
.sortedBy {
it.bookTitle
}