From 66b6099f77d0122bdb02957fcf7f33aa6390bc2c Mon Sep 17 00:00:00 2001 From: oxy Date: Sat, 13 Jan 2024 19:11:28 +0800 Subject: [PATCH] fix: remove haze. --- .../playlist/components/TvStreamItem.kt | 27 ++++++++++++-- .../playlist/impl/TvPlaylistScreenImpl.kt | 35 +++++-------------- gradle/libs.versions.toml | 2 -- material/build.gradle.kts | 1 - 4 files changed, 34 insertions(+), 31 deletions(-) diff --git a/features/playlist/src/main/java/com/m3u/features/playlist/components/TvStreamItem.kt b/features/playlist/src/main/java/com/m3u/features/playlist/components/TvStreamItem.kt index f7a89f45f..a33d4a0d9 100644 --- a/features/playlist/src/main/java/com/m3u/features/playlist/components/TvStreamItem.kt +++ b/features/playlist/src/main/java/com/m3u/features/playlist/components/TvStreamItem.kt @@ -1,18 +1,23 @@ package com.m3u.features.playlist.components +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.rounded.BrokenImage import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.unit.dp import androidx.tv.material3.Card +import androidx.tv.material3.Icon import androidx.tv.material3.Text -import coil.compose.AsyncImage +import coil.compose.SubcomposeAsyncImage import com.m3u.data.database.model.Stream import com.m3u.material.model.LocalSpacing @@ -43,10 +48,28 @@ internal fun TvStreamItem( maxLines = 1 ) } else { - AsyncImage( + SubcomposeAsyncImage( model = stream.cover, contentScale = ContentScale.Crop, contentDescription = stream.title, + error = { + Column( + verticalArrangement = Arrangement.SpaceAround, + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier + .fillMaxSize() + .padding(spacing.medium) + ) { + Text( + text = stream.title, + maxLines = 1 + ) + Icon( + imageVector = Icons.Rounded.BrokenImage, + contentDescription = null + ) + } + }, modifier = Modifier.fillMaxSize() ) } diff --git a/features/playlist/src/main/java/com/m3u/features/playlist/impl/TvPlaylistScreenImpl.kt b/features/playlist/src/main/java/com/m3u/features/playlist/impl/TvPlaylistScreenImpl.kt index cf4689cf4..5741f8ad0 100644 --- a/features/playlist/src/main/java/com/m3u/features/playlist/impl/TvPlaylistScreenImpl.kt +++ b/features/playlist/src/main/java/com/m3u/features/playlist/impl/TvPlaylistScreenImpl.kt @@ -12,7 +12,6 @@ import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons @@ -42,7 +41,6 @@ import androidx.compose.ui.unit.dp import androidx.tv.foundation.lazy.list.TvLazyColumn import androidx.tv.foundation.lazy.list.TvLazyRow import androidx.tv.foundation.lazy.list.items -import androidx.tv.material3.Card import androidx.tv.material3.DrawerValue import androidx.tv.material3.Icon import androidx.tv.material3.ImmersiveList @@ -91,8 +89,8 @@ internal fun TvPlaylistScreenImpl( val helper = LocalHelper.current val spacing = LocalSpacing.current val focusRequester = remember { FocusRequester() } - - val maxBrowserHeight = 180.dp + val multiCatalogs = channels.size > 1 + val maxBrowserHeight = if (multiCatalogs) 256.dp else 180.dp val drawerState = rememberDrawerState(DrawerValue.Closed) @@ -302,33 +300,18 @@ internal fun TvPlaylistScreenImpl( ) ) { items(channels) { channel -> + if (multiCatalogs) { + Text( + text = channel.title, + style = MaterialTheme.typography.headlineMedium, + modifier = Modifier.padding(spacing.medium) + ) + } val streams = channel.streams TvLazyRow( horizontalArrangement = Arrangement.spacedBy(spacing.medium), contentPadding = PaddingValues(horizontal = spacing.medium) ) { - if (channels.size > 1) { - item { - Card( - onClick = {}, - onLongClick = {}, - modifier = Modifier - .height(128.dp) - .aspectRatio(4 / 3f) - ) { - Box( - contentAlignment = Alignment.Center, - modifier = Modifier.fillMaxSize() - ) { - Text( - text = channel.title, - style = MaterialTheme.typography.displayMedium - ) - } - } - } - } - items( count = streams.size, key = { i -> streams[i].id }, diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 327928629..deb5f9fe9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -49,7 +49,6 @@ parser-m3u = "1.3.0" servlet = "3.1.0" jetty = "9.3.14.v20161028" nanohttpd = "2.3.1" -haze = "0.4.1" kaml = "0.55.0" jupnp = "2.7.1" symbol-processing-api = "1.9.21-1.0.16" @@ -144,7 +143,6 @@ jetty-servlet = { group = "org.eclipse.jetty", name = "jetty-servlet", version.r jetty-client = { group = "org.eclipse.jetty", name = "jetty-client", version.ref = "jetty" } nanohttpd = { group = "org.nanohttpd", name = "nanohttpd", version.ref = "nanohttpd" } -haze = { group = "dev.chrisbanes.haze", name = "haze-jetpack-compose", version.ref = "haze" } jupnp = { group = "org.jupnp", name = "org.jupnp", version.ref = "jupnp" } jupnp-support = { group = "org.jupnp", name = "org.jupnp.support", version.ref = "jupnp" } diff --git a/material/build.gradle.kts b/material/build.gradle.kts index dc0561ead..7c8e6234d 100644 --- a/material/build.gradle.kts +++ b/material/build.gradle.kts @@ -55,7 +55,6 @@ dependencies { api(libs.io.coil.kt.coil.compose) implementation(libs.com.airbnb.android.lottie.compose) - api(libs.haze) api(libs.kotlinx.collections.immutable)