Fix the DetailScreen placeHolder.

This commit is contained in:
Thomas Andres Gomez 2022-10-22 16:10:16 +02:00
parent 2a92fd2b8b
commit 529431b4ee
4 changed files with 39 additions and 32 deletions

View file

@ -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(

View file

@ -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(

View file

@ -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(

View file

@ -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? {