Fix the DetailScreen placeHolder.
This commit is contained in:
parent
2a92fd2b8b
commit
529431b4ee
4 changed files with 39 additions and 32 deletions
|
@ -63,14 +63,14 @@ class BookDetailViewModel @Inject constructor(
|
|||
}
|
||||
|
||||
private fun getCacheBookDetail(id: Int): BookDetailUio {
|
||||
return bookRepository.getBook(id = id).toDetailUio()
|
||||
return bookRepository.getBook(id = id).toDetailUio(placeHolder = true)
|
||||
}
|
||||
|
||||
private suspend fun getBookDetail(id: Int): BookDetailUio {
|
||||
val factory = BookFactory()
|
||||
val response = client.service.detail(id)
|
||||
val book = factory.fromDetailResponseToBook(response)
|
||||
return book.toDetailUio()
|
||||
return book.toDetailUio(placeHolder = false)
|
||||
}
|
||||
|
||||
private fun toDetailErrorUio(bookId: Int) = BookDetailUioErrorUio.GetDetailInput(
|
||||
|
|
|
@ -23,34 +23,6 @@ import com.pixelized.biblib.utils.extention.showToast
|
|||
import kotlinx.coroutines.launch
|
||||
import java.io.Serializable
|
||||
|
||||
@Stable
|
||||
@Immutable
|
||||
data class BookDetailUio(
|
||||
val id: Int,
|
||||
val title: String,
|
||||
val author: String,
|
||||
val rating: Float,
|
||||
val language: String,
|
||||
val date: String?,
|
||||
val series: String?,
|
||||
val description: String,
|
||||
val cover: String,
|
||||
) : Serializable {
|
||||
companion object {
|
||||
fun preview() = BookDetailUio(
|
||||
id = 90,
|
||||
title = "Foundation",
|
||||
author = "Asimov",
|
||||
date = "1951",
|
||||
series = "Foundation - 1",
|
||||
description = "En ce début de treizième millénaire, l'Empire n'a jamais été aussi puissant, aussi étendu à travers toute la galaxie. C'est dans sa capitale, Trantor, que l'éminent savant Hari Seldon invente la psychohistoire, une science nouvelle permettant de prédire l'avenir. Grâce à elle, Seldon prévoit l'effondrement de l'Empire d'ici cinq siècles, suivi d'une ère de ténèbres de trente mille ans. Réduire cette période à mille ans est peut-être possible, à condition de mener à terme son projet : la Fondation, chargée de rassembler toutes les connaissances humaines. Une entreprise visionnaire qui rencontre de nombreux et puissants détracteurs...",
|
||||
rating = 4.5f,
|
||||
language = "Français",
|
||||
cover = "",
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Stable
|
||||
@Immutable
|
||||
sealed class BookDetailUioErrorUio(
|
||||
|
|
|
@ -13,6 +13,8 @@ import androidx.compose.material.icons.Icons
|
|||
import androidx.compose.material.icons.filled.Download
|
||||
import androidx.compose.material.icons.filled.Send
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.Immutable
|
||||
import androidx.compose.runtime.Stable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.layout.ContentScale
|
||||
|
@ -33,6 +35,37 @@ import com.pixelized.biblib.utils.extention.bibLib
|
|||
import com.pixelized.biblib.utils.extention.default
|
||||
import com.skydoves.landscapist.CircularReveal
|
||||
import com.skydoves.landscapist.glide.GlideImage
|
||||
import java.io.Serializable
|
||||
|
||||
@Stable
|
||||
@Immutable
|
||||
data class BookDetailUio(
|
||||
val id: Int,
|
||||
val title: String,
|
||||
val author: String,
|
||||
val rating: Float,
|
||||
val language: String,
|
||||
val date: String?,
|
||||
val series: String?,
|
||||
val description: String,
|
||||
val cover: String,
|
||||
val placeHolder: Boolean,
|
||||
) : Serializable {
|
||||
companion object {
|
||||
fun preview() = BookDetailUio(
|
||||
id = 90,
|
||||
title = "Foundation",
|
||||
author = "Asimov",
|
||||
date = "1951",
|
||||
series = "Foundation - 1",
|
||||
description = "En ce début de treizième millénaire, l'Empire n'a jamais été aussi puissant, aussi étendu à travers toute la galaxie. C'est dans sa capitale, Trantor, que l'éminent savant Hari Seldon invente la psychohistoire, une science nouvelle permettant de prédire l'avenir. Grâce à elle, Seldon prévoit l'effondrement de l'Empire d'ici cinq siècles, suivi d'une ère de ténèbres de trente mille ans. Réduire cette période à mille ans est peut-être possible, à condition de mener à terme son projet : la Fondation, chargée de rassembler toutes les connaissances humaines. Une entreprise visionnaire qui rencontre de nombreux et puissants détracteurs...",
|
||||
rating = 4.5f,
|
||||
language = "Français",
|
||||
cover = "",
|
||||
placeHolder = false,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun DetailScreenContent(
|
||||
|
@ -171,7 +204,7 @@ fun DetailScreenContent(
|
|||
SpannedText(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.placeholder(visible = book.description.isEmpty()),
|
||||
.placeholder(visible = book.placeHolder),
|
||||
style = MaterialTheme.typography.body1,
|
||||
color = MaterialTheme.colors.onSurface,
|
||||
text = HtmlCompat.fromHtml(
|
||||
|
|
|
@ -52,7 +52,8 @@ fun Book.toLargeBookThumbnailUio(
|
|||
)
|
||||
|
||||
fun Book.toDetailUio(
|
||||
@CoverUrl coverBaseUrl: String = IBibLibClient.COVER_URL
|
||||
@CoverUrl coverBaseUrl: String = IBibLibClient.COVER_URL,
|
||||
placeHolder: Boolean,
|
||||
) = BookDetailUio(
|
||||
id = id,
|
||||
title = title,
|
||||
|
@ -63,6 +64,7 @@ fun Book.toDetailUio(
|
|||
series = toLabel(series),
|
||||
description = synopsis ?: "",
|
||||
cover = "${coverBaseUrl}/$id.jpg",
|
||||
placeHolder = placeHolder,
|
||||
)
|
||||
|
||||
fun Book.toLabel(series: Series?): String? {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue