Add keys to lazy Compose entries

This commit is contained in:
2026-04-17 18:02:22 +02:00
parent 858f599dbd
commit 5a377fc428
11 changed files with 31 additions and 28 deletions

View File

@@ -86,7 +86,7 @@ internal fun TvEpisodeScreenContent(
resetScrollKey = episode.id,
modifier = modifier
) {
item {
item(key = "episode-hero") {
TvMediaDetailBodyBox(
backgroundImageUrl = ImageUrlBuilder.finishImageUrl(episode.imageUrlPrefix, ArtworkKind.PRIMARY),
modifier = it
@@ -101,7 +101,7 @@ internal fun TvEpisodeScreenContent(
Spacer(modifier = Modifier.height(12.dp))
}
}
item {
item(key = "episode-overview") {
Column(modifier = it.fillMaxWidth()) {
Spacer(modifier = Modifier.height(16.dp))
MediaDetailOverviewSection(
@@ -111,7 +111,7 @@ internal fun TvEpisodeScreenContent(
Spacer(modifier = Modifier.height(20.dp))
}
}
item {
item(key = "episode-playback") {
Column(modifier = it.fillMaxWidth()) {
MediaDetailPlaybackSection(
audioTrack = "ENG",
@@ -122,7 +122,7 @@ internal fun TvEpisodeScreenContent(
}
}
if (episode.cast.isNotEmpty()) {
item {
item(key = "episode-cast") {
Column(modifier = it.fillMaxWidth()) {
MediaDetailSectionTitle(text = "Cast")
Spacer(modifier = Modifier.height(14.dp))

View File

@@ -84,11 +84,11 @@ fun TvHomeContent(
.testTag(TvHomeContentViewportTag),
contentPadding = contentPadding
) {
item {
item(key = "tv-home-top-spacer") {
Spacer(modifier = Modifier.height(8.dp))
}
if (hasContinueWatching) {
item {
item(key = "tv-home-continue-watching") {
TvContinueWatchingSection(
items = continueWatching,
onFocusedItem = onMediaFocused,
@@ -102,13 +102,13 @@ fun TvHomeContent(
}
if (hasContinueWatching && (hasNextUp || hasLibraries)) {
item {
item(key = "tv-home-post-continue-gap") {
Spacer(modifier = Modifier.height(20.dp))
}
}
if (hasNextUp) {
item {
item(key = "tv-home-next-up") {
TvNextUpSection(
items = nextUp,
onFocusedItem = onMediaFocused,
@@ -121,7 +121,7 @@ fun TvHomeContent(
}
if (hasLibraries && (hasContinueWatching || hasNextUp)) {
item {
item(key = "tv-home-post-next-up-gap") {
Spacer(modifier = Modifier.height(20.dp))
}
}
@@ -156,7 +156,7 @@ fun TvHomeContent(
}
if (hasVisibleContent) {
item {
item(key = "tv-home-trailing-space") {
Spacer(modifier = Modifier.height(TvHomeBringIntoViewTrailingSpace))
}
}

View File

@@ -105,7 +105,7 @@ fun TvLibraryContent(
verticalArrangement = Arrangement.spacedBy(16.dp),
modifier = Modifier.background(MaterialTheme.colorScheme.background)
) {
items(libraryItems) { item ->
items(libraryItems, key = { item -> item.id }) { item ->
PosterCard(
item = item,
onMovieSelected = onMovieSelected,

View File

@@ -64,7 +64,7 @@ internal fun TvMovieScreenContent(
resetScrollKey = movie.id,
modifier = modifier
) {
item {
item(key = "movie-hero") {
TvMediaDetailBodyBox(
backgroundImageUrl = tvMediaDetailBackgroundImageUrl(movie.imageUrlPrefix),
modifier = it
@@ -78,7 +78,7 @@ internal fun TvMovieScreenContent(
Spacer(modifier = Modifier.height(12.dp))
}
}
item {
item(key = "movie-overview") {
Column(modifier = it.fillMaxWidth()) {
Spacer(modifier = Modifier.height(16.dp))
MediaDetailOverviewSection(
@@ -88,7 +88,7 @@ internal fun TvMovieScreenContent(
Spacer(modifier = Modifier.height(20.dp))
}
}
item {
item(key = "movie-playback") {
Column(modifier = it.fillMaxWidth()) {
MediaDetailPlaybackSection(
audioTrack = movie.audioTrack,
@@ -99,7 +99,7 @@ internal fun TvMovieScreenContent(
}
}
if (movie.cast.isNotEmpty()) {
item {
item(key = "movie-cast") {
Column(modifier = it.fillMaxWidth()) {
MediaDetailSectionTitle(text = "Cast")
Spacer(modifier = Modifier.height(14.dp))

View File

@@ -81,7 +81,7 @@ internal fun TvSeriesScreenContent(
resetScrollKey = series.id,
modifier = modifier
) {
item {
item(key = "series-hero") {
TvMediaDetailBodyBox(
backgroundImageUrl = tvMediaDetailBackgroundImageUrl(series.imageUrlPrefix),
modifier = it
@@ -97,7 +97,7 @@ internal fun TvSeriesScreenContent(
Spacer(modifier = Modifier.height(12.dp))
}
}
item {
item(key = "series-overview") {
Column(modifier = it.fillMaxWidth()) {
Spacer(modifier = Modifier.height(16.dp))
MediaDetailOverviewSection(
@@ -107,7 +107,7 @@ internal fun TvSeriesScreenContent(
Spacer(modifier = Modifier.height(24.dp))
}
}
item {
item(key = "series-season-tabs") {
TvSeasonTabs(
seasons = series.seasons,
selectedSeason = selectedSeason,
@@ -117,7 +117,7 @@ internal fun TvSeriesScreenContent(
modifier = it
)
}
item {
item(key = "series-episodes") {
Spacer(modifier = Modifier.height(20.dp))
TvEpisodeCarousel(
episodes = selectedSeason.episodes,
@@ -125,7 +125,7 @@ internal fun TvSeriesScreenContent(
)
}
if (series.cast.isNotEmpty()) {
item {
item(key = "series-cast") {
Column(modifier = it) {
Spacer(modifier = Modifier.height(20.dp))
MediaDetailSectionTitle(text = "Cast")

View File

@@ -171,7 +171,7 @@ internal fun TvEpisodeCarousel(episodes: List<Episode>, modifier: Modifier = Mod
modifier = modifier,
horizontalArrangement = Arrangement.spacedBy(16.dp)
) {
items(episodes) { episode ->
items(episodes, key = { episode -> episode.id }) { episode ->
TvEpisodeCard(episode = episode)
}
}