diff --git a/app/src/main/java/com/pixelized/biblib/ui/screen/home/detail/BookDetailViewModel.kt b/app/src/main/java/com/pixelized/biblib/ui/screen/home/detail/BookDetailViewModel.kt index 454deff..0cbd933 100644 --- a/app/src/main/java/com/pixelized/biblib/ui/screen/home/detail/BookDetailViewModel.kt +++ b/app/src/main/java/com/pixelized/biblib/ui/screen/home/detail/BookDetailViewModel.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/biblib/ui/screen/home/detail/DetailScreen.kt b/app/src/main/java/com/pixelized/biblib/ui/screen/home/detail/DetailScreen.kt index b69d3bc..db048b8 100644 --- a/app/src/main/java/com/pixelized/biblib/ui/screen/home/detail/DetailScreen.kt +++ b/app/src/main/java/com/pixelized/biblib/ui/screen/home/detail/DetailScreen.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/biblib/ui/screen/home/detail/DetailScreenContent.kt b/app/src/main/java/com/pixelized/biblib/ui/screen/home/detail/DetailScreenContent.kt index f205471..439a495 100644 --- a/app/src/main/java/com/pixelized/biblib/ui/screen/home/detail/DetailScreenContent.kt +++ b/app/src/main/java/com/pixelized/biblib/ui/screen/home/detail/DetailScreenContent.kt @@ -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( diff --git a/app/src/main/java/com/pixelized/biblib/utils/extention/BookEx.kt b/app/src/main/java/com/pixelized/biblib/utils/extention/BookEx.kt index 847e6eb..637caa7 100644 --- a/app/src/main/java/com/pixelized/biblib/utils/extention/BookEx.kt +++ b/app/src/main/java/com/pixelized/biblib/utils/extention/BookEx.kt @@ -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? {