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 bookTitle: String,
|
||||||
val bookIcon: Uri?,
|
val bookIcon: Uri?,
|
||||||
val documentId: String,
|
val documentId: String,
|
||||||
|
val adventureTitle: String?,
|
||||||
)
|
)
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -83,6 +84,7 @@ private fun AdventureItemPreview() {
|
||||||
bookIcon = null,
|
bookIcon = null,
|
||||||
bookTitle = "Les chroniques d'une orc",
|
bookTitle = "Les chroniques d'une orc",
|
||||||
documentId = "",
|
documentId = "",
|
||||||
|
adventureTitle = null,
|
||||||
),
|
),
|
||||||
onClick = {},
|
onClick = {},
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ import com.pixelized.rplexicon.ui.composable.Loader
|
||||||
import com.pixelized.rplexicon.ui.composable.rememberAnimatedShadow
|
import com.pixelized.rplexicon.ui.composable.rememberAnimatedShadow
|
||||||
import com.pixelized.rplexicon.ui.navigation.LocalScreenNavHost
|
import com.pixelized.rplexicon.ui.navigation.LocalScreenNavHost
|
||||||
import com.pixelized.rplexicon.ui.navigation.screens.navigateToAdventureChapters
|
import com.pixelized.rplexicon.ui.navigation.screens.navigateToAdventureChapters
|
||||||
|
import com.pixelized.rplexicon.ui.navigation.screens.navigateToAdventureDetail
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterialApi::class)
|
@OptIn(ExperimentalMaterialApi::class)
|
||||||
|
|
@ -67,10 +68,17 @@ fun AdventureBooksScreen(
|
||||||
items = viewModel.books,
|
items = viewModel.books,
|
||||||
onBack = { screen.popBackStack() },
|
onBack = { screen.popBackStack() },
|
||||||
onBook = {
|
onBook = {
|
||||||
screen.navigateToAdventureChapters(
|
if (it.adventureTitle == null) {
|
||||||
bookTitle = it.bookTitle,
|
screen.navigateToAdventureChapters(
|
||||||
documentId = it.documentId,
|
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",
|
bookTitle = "Les chroniques d'une orc",
|
||||||
bookIcon = null,
|
bookIcon = null,
|
||||||
documentId = "",
|
documentId = "",
|
||||||
|
adventureTitle = null,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -32,14 +32,17 @@ class AdventureBooksViewModel @Inject constructor(
|
||||||
private val _books = adventureRepository.bookFlow()
|
private val _books = adventureRepository.bookFlow()
|
||||||
.map { adventures ->
|
.map { adventures ->
|
||||||
adventures
|
adventures
|
||||||
.map { adventure ->
|
.groupBy { it.documentId }
|
||||||
|
.mapValues { (_, adventures) ->
|
||||||
|
val adventure = adventures.first()
|
||||||
AdventureBookUio(
|
AdventureBookUio(
|
||||||
bookTitle = adventure.bookTitle,
|
bookTitle = adventure.bookTitle,
|
||||||
bookIcon = adventure.bookIcon,
|
bookIcon = adventure.bookIcon,
|
||||||
documentId = adventure.documentId,
|
documentId = adventure.documentId,
|
||||||
|
adventureTitle = if (adventures.size == 1) adventure.storyTitle else null
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
.toSet()
|
.values
|
||||||
.sortedBy {
|
.sortedBy {
|
||||||
it.bookTitle
|
it.bookTitle
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue