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