Adventure book into detail if only one chapter is availlable.
This commit is contained in:
parent
28ba73537d
commit
c23dba7669
3 changed files with 20 additions and 6 deletions
|
|
@ -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 = {},
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
)
|
||||
)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue