diff --git a/app/src/main/java/net/jeena/jtubetv/ui/screens/ChannelsScreen.kt b/app/src/main/java/net/jeena/jtubetv/ui/screens/ChannelsScreen.kt index 131a64d..194c71e 100644 --- a/app/src/main/java/net/jeena/jtubetv/ui/screens/ChannelsScreen.kt +++ b/app/src/main/java/net/jeena/jtubetv/ui/screens/ChannelsScreen.kt @@ -317,21 +317,18 @@ fun ChannelsScreen( when { viewModel.loading && viewModel.userRows.isEmpty() -> - // Placeholder rows while the channels load (issue #19): header stub - // + a row of shimmer card-shaped placeholders, twice. + // One row header stub + a single loading card, not a fake grid (#31). androidx.compose.foundation.layout.Column { - repeat(2) { - Box(Modifier.padding(start = 16.dp, top = 12.dp, bottom = 4.dp)) { - Box( - Modifier - .width(180.dp) - .height(22.dp) - .clip(CircleShape) - .background(Color(0xFF232323)), - ) - } - ShimmerRow() + Box(Modifier.padding(start = 16.dp, top = 12.dp, bottom = 4.dp)) { + Box( + Modifier + .width(180.dp) + .height(22.dp) + .clip(CircleShape) + .background(Color(0xFF232323)), + ) } + ShimmerRow(size = 1) } viewModel.error != null && viewModel.userRows.isEmpty() -> Box(Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { diff --git a/app/src/main/java/net/jeena/jtubetv/ui/screens/list/VideoListScreen.kt b/app/src/main/java/net/jeena/jtubetv/ui/screens/list/VideoListScreen.kt index cedb561..8496cb8 100644 --- a/app/src/main/java/net/jeena/jtubetv/ui/screens/list/VideoListScreen.kt +++ b/app/src/main/java/net/jeena/jtubetv/ui/screens/list/VideoListScreen.kt @@ -211,19 +211,12 @@ fun VideoListScreen( // VideoListScreen (My videos, Search, Subscriptions, History, channel pages). item(key = "initial-placeholders", span = { androidx.compose.foundation.lazy.grid.GridItemSpan(maxLineSpan) }) { LaunchedEffect(source) { viewModel.loadMore(force = true) } - androidx.compose.foundation.layout.Column { - repeat(2) { - androidx.compose.foundation.layout.Row { - repeat(cardsPerRow) { - ShimmerCard( - modifier = Modifier - .padding(6.dp) - .width(rowCardWidth()), - ) - } - } - } - } + // A single loading card, not a full fake grid (issue #31). + ShimmerCard( + modifier = Modifier + .padding(6.dp) + .width(rowCardWidth() - 12.dp), + ) } } itemsIndexed(items, key = { _, item -> itemStableKey(item) }) { index, item ->