diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/adventure/book/AdventureBook.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/adventure/book/AdventureBook.kt index a56f4b2..d618daa 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/adventure/book/AdventureBook.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/adventure/book/AdventureBook.kt @@ -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 = {}, ) diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/adventure/book/AdventureBooksScreen.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/adventure/book/AdventureBooksScreen.kt index 52e8767..801c6f5 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/adventure/book/AdventureBooksScreen.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/adventure/book/AdventureBooksScreen.kt @@ -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 = { - screen.navigateToAdventureChapters( - bookTitle = it.bookTitle, - documentId = it.documentId, - ) + 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, ) ) ) diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/adventure/book/AdventureBooksViewModel.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/adventure/book/AdventureBooksViewModel.kt index 5e5fe0d..3719dce 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/adventure/book/AdventureBooksViewModel.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/adventure/book/AdventureBooksViewModel.kt @@ -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 }