From 219210fd64f4d617a8fb8d80f8e791f5d183c6f3 Mon Sep 17 00:00:00 2001 From: Marius Butz Date: Thu, 7 May 2026 14:31:46 +0200 Subject: [PATCH] add bookmark badge to poster component --- .../nuvio/app/core/ui/NuvioShelfComponents.kt | 8 ++++++++ .../features/home/components/HomePosterCard.kt | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/core/ui/NuvioShelfComponents.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/core/ui/NuvioShelfComponents.kt index ace10d77..d07b4c1e 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/core/ui/NuvioShelfComponents.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/core/ui/NuvioShelfComponents.kt @@ -107,6 +107,7 @@ fun NuvioPosterCard( bottomLeftLogoUrl: String? = null, bottomLeftText: String? = null, isWatched: Boolean = false, + isSaved: Boolean = false, onClick: (() -> Unit)? = null, onLongClick: (() -> Unit)? = null, ) { @@ -185,6 +186,13 @@ fun NuvioPosterCard( .align(Alignment.TopEnd) .padding(6.dp), ) + + NuvioAnimatedBookmarkedBadge( + isVisible = isSaved, + modifier = Modifier + .align(Alignment.TopStart) + .padding(6.dp), + ) } if (shouldShowTitleBelow) { Text( diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/home/components/HomePosterCard.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/home/components/HomePosterCard.kt index fc8b4133..d917163c 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/home/components/HomePosterCard.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/home/components/HomePosterCard.kt @@ -1,13 +1,17 @@ package com.nuvio.app.features.home.components import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier +import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.nuvio.app.core.format.formatReleaseDateForDisplay import com.nuvio.app.core.ui.NuvioPosterCard import com.nuvio.app.core.ui.NuvioPosterShape import com.nuvio.app.core.ui.rememberPosterCardStyleUiState import com.nuvio.app.features.home.MetaPreview import com.nuvio.app.features.home.PosterShape +import com.nuvio.app.features.library.LibraryRepository @Composable fun HomePosterCard( @@ -18,6 +22,19 @@ fun HomePosterCard( onClick: (() -> Unit)? = null, onLongClick: (() -> Unit)? = null, ) { + val libraryUiState by remember { + LibraryRepository.ensureLoaded() + LibraryRepository.uiState + }.collectAsStateWithLifecycle() + val isSaved = remember( + libraryUiState.items, + libraryUiState.sections, + libraryUiState.sourceMode, + item.id, + item.type, + ) { + LibraryRepository.isSaved(item.id, item.type) + } val posterCardStyle = rememberPosterCardStyleUiState() val isLandscapeMode = useLandscapeBackdropMode || posterCardStyle.catalogLandscapeModeEnabled @@ -31,6 +48,7 @@ fun HomePosterCard( bottomLeftLogoUrl = if (isLandscapeMode) item.logo else null, bottomLeftText = if (isLandscapeMode && item.logo.isNullOrBlank() && !posterCardStyle.hideLabelsEnabled) item.name else null, isWatched = isWatched, + isSaved = isSaved, onClick = onClick, onLongClick = onLongClick, )