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 {
|
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(
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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? {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue