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 { 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 { private suspend fun getBookDetail(id: Int): BookDetailUio {
val factory = BookFactory() val factory = BookFactory()
val response = client.service.detail(id) val response = client.service.detail(id)
val book = factory.fromDetailResponseToBook(response) val book = factory.fromDetailResponseToBook(response)
return book.toDetailUio() return book.toDetailUio(placeHolder = false)
} }
private fun toDetailErrorUio(bookId: Int) = BookDetailUioErrorUio.GetDetailInput( 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 kotlinx.coroutines.launch
import java.io.Serializable 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 @Stable
@Immutable @Immutable
sealed class BookDetailUioErrorUio( 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.Download
import androidx.compose.material.icons.filled.Send import androidx.compose.material.icons.filled.Send
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.Immutable
import androidx.compose.runtime.Stable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.ContentScale 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.pixelized.biblib.utils.extention.default
import com.skydoves.landscapist.CircularReveal import com.skydoves.landscapist.CircularReveal
import com.skydoves.landscapist.glide.GlideImage 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 @Composable
fun DetailScreenContent( fun DetailScreenContent(
@ -171,7 +204,7 @@ fun DetailScreenContent(
SpannedText( SpannedText(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.placeholder(visible = book.description.isEmpty()), .placeholder(visible = book.placeHolder),
style = MaterialTheme.typography.body1, style = MaterialTheme.typography.body1,
color = MaterialTheme.colors.onSurface, color = MaterialTheme.colors.onSurface,
text = HtmlCompat.fromHtml( text = HtmlCompat.fromHtml(

View file

@ -52,7 +52,8 @@ fun Book.toLargeBookThumbnailUio(
) )
fun Book.toDetailUio( fun Book.toDetailUio(
@CoverUrl coverBaseUrl: String = IBibLibClient.COVER_URL @CoverUrl coverBaseUrl: String = IBibLibClient.COVER_URL,
placeHolder: Boolean,
) = BookDetailUio( ) = BookDetailUio(
id = id, id = id,
title = title, title = title,
@ -63,6 +64,7 @@ fun Book.toDetailUio(
series = toLabel(series), series = toLabel(series),
description = synopsis ?: "", description = synopsis ?: "",
cover = "${coverBaseUrl}/$id.jpg", cover = "${coverBaseUrl}/$id.jpg",
placeHolder = placeHolder,
) )
fun Book.toLabel(series: Series?): String? { fun Book.toLabel(series: Series?): String? {