refactor: extract and rename LibraryUiModel

This commit is contained in:
2026-04-29 17:35:52 +02:00
parent 8cc85d1525
commit bd5e43114b
12 changed files with 42 additions and 38 deletions

View File

@@ -22,7 +22,7 @@ import hu.bbara.purefin.model.Movie
import hu.bbara.purefin.ui.model.EpisodeUiModel
import hu.bbara.purefin.ui.model.MediaUiModel
import hu.bbara.purefin.ui.model.MovieUiModel
import hu.bbara.purefin.feature.browse.home.LibraryItem
import hu.bbara.purefin.ui.model.LibraryUiModel
import hu.bbara.purefin.ui.screen.home.TvHomeScreen
import hu.bbara.purefin.ui.theme.AppTheme
import org.junit.Assert.assertEquals
@@ -385,9 +385,9 @@ class TvHomeContentTest {
)
}
private fun sampleLibraries(): List<LibraryItem> {
private fun sampleLibraries(): List<LibraryUiModel> {
return listOf(
LibraryItem(
LibraryUiModel(
id = sampleLibraryId(),
name = "Movies",
type = LibraryKind.MOVIES,

View File

@@ -5,7 +5,7 @@ import androidx.compose.ui.test.junit4.createAndroidComposeRule
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performClick
import hu.bbara.purefin.model.LibraryKind
import hu.bbara.purefin.feature.browse.home.LibraryItem
import hu.bbara.purefin.ui.model.LibraryUiModel
import hu.bbara.purefin.ui.theme.AppTheme
import org.junit.Assert.assertEquals
import org.junit.Rule
@@ -20,14 +20,14 @@ class TvLibrariesOverviewScreenTest {
@Test
fun tvLibrariesOverviewScreen_opensSelectedLibrary() {
val libraries = listOf(
LibraryItem(
LibraryUiModel(
id = UUID.fromString("11111111-1111-1111-1111-111111111111"),
name = "Movies",
type = LibraryKind.MOVIES,
posterUrl = "",
isEmpty = false
),
LibraryItem(
LibraryUiModel(
id = UUID.fromString("22222222-2222-2222-2222-222222222222"),
name = "Shows",
type = LibraryKind.SERIES,
@@ -35,7 +35,7 @@ class TvLibrariesOverviewScreenTest {
isEmpty = false
)
)
var openedLibrary: LibraryItem? = null
var openedLibrary: LibraryUiModel? = null
composeRule.setContent {
AppTheme {

View File

@@ -13,14 +13,14 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import hu.bbara.purefin.ui.model.MediaUiModel
import hu.bbara.purefin.ui.model.MovieUiModel
import hu.bbara.purefin.feature.browse.home.LibraryItem
import hu.bbara.purefin.ui.model.LibraryUiModel
import hu.bbara.purefin.ui.screen.home.components.TvFocusedItemHero
import hu.bbara.purefin.ui.screen.home.components.TvHomeContent
import java.util.UUID
@Composable
fun TvHomeScreen(
libraries: List<LibraryItem>,
libraries: List<LibraryUiModel>,
libraryContent: Map<UUID, List<MediaUiModel>>,
continueWatching: List<MediaUiModel>,
nextUp: List<MediaUiModel>,

View File

@@ -24,7 +24,7 @@ import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.unit.dp
import hu.bbara.purefin.ui.model.MediaUiModel
import hu.bbara.purefin.feature.browse.home.LibraryItem
import hu.bbara.purefin.ui.model.LibraryUiModel
import java.util.UUID
internal const val TvHomeInitialFocusTag = "tv-home-initial-focus-item"
@@ -32,7 +32,7 @@ internal const val TvHomeContentViewportTag = "tv-home-content-viewport"
@Composable
fun TvHomeContent(
libraries: List<LibraryItem>,
libraries: List<LibraryUiModel>,
libraryContent: Map<UUID, List<MediaUiModel>>,
continueWatching: List<MediaUiModel>,
nextUp: List<MediaUiModel>,

View File

@@ -43,7 +43,7 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import hu.bbara.purefin.ui.common.image.PurefinAsyncImage
import hu.bbara.purefin.feature.browse.home.LibraryItem
import hu.bbara.purefin.ui.model.LibraryUiModel
import hu.bbara.purefin.model.LibraryKind
internal const val TvLibrariesOverviewItemTagPrefix = "tv-libraries-overview-item-"
@@ -52,8 +52,8 @@ private val TvLibrariesOverviewCardShape = RoundedCornerShape(18.dp)
@Composable
fun TvLibrariesOverviewScreen(
libraries: List<LibraryItem>,
onLibrarySelected: (LibraryItem) -> Unit,
libraries: List<LibraryUiModel>,
onLibrarySelected: (LibraryUiModel) -> Unit,
modifier: Modifier = Modifier
) {
val scheme = MaterialTheme.colorScheme
@@ -117,7 +117,7 @@ fun TvLibrariesOverviewScreen(
@Composable
private fun TvLibraryOverviewCard(
item: LibraryItem,
item: LibraryUiModel,
onClick: () -> Unit,
modifier: Modifier = Modifier
) {

View File

@@ -5,7 +5,7 @@ import hu.bbara.purefin.model.LibraryKind
import hu.bbara.purefin.model.MediaKind
import hu.bbara.purefin.model.Movie
import hu.bbara.purefin.feature.browse.home.ContinueWatchingItem
import hu.bbara.purefin.feature.browse.home.LibraryItem
import hu.bbara.purefin.ui.model.LibraryUiModel
import hu.bbara.purefin.feature.browse.home.NextUpItem
import hu.bbara.purefin.feature.browse.home.PosterItem
import org.junit.Assert.assertEquals
@@ -104,8 +104,8 @@ class TvHomeHeroStateTest {
assertEquals(continueWatching, registry.firstAvailableItem)
}
private fun sampleLibrary(id: UUID, isEmpty: Boolean = false): LibraryItem {
return LibraryItem(
private fun sampleLibrary(id: UUID, isEmpty: Boolean = false): LibraryUiModel {
return LibraryUiModel(
id = id,
name = "Movies",
type = LibraryKind.MOVIES,

View File

@@ -12,7 +12,7 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import hu.bbara.purefin.feature.browse.home.LibraryItem
import hu.bbara.purefin.ui.model.LibraryUiModel
import hu.bbara.purefin.ui.model.MediaUiModel
import hu.bbara.purefin.ui.screen.AppBottomBar
import hu.bbara.purefin.ui.screen.home.components.HomeContent
@@ -23,7 +23,7 @@ import java.util.UUID
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun HomeScreen(
libraries: List<LibraryItem>,
libraries: List<LibraryUiModel>,
libraryContent: Map<UUID, List<MediaUiModel>>,
suggestions: List<MediaUiModel>,
continueWatching: List<MediaUiModel>,
@@ -31,7 +31,7 @@ fun HomeScreen(
isRefreshing: Boolean,
onRefresh: () -> Unit,
onMediaSelected: (MediaUiModel) -> Unit,
onLibrarySelected: (LibraryItem) -> Unit,
onLibrarySelected: (LibraryUiModel) -> Unit,
onProfileClick: () -> Unit,
onSettingsClick: () -> Unit,
onLogoutClick: () -> Unit,

View File

@@ -22,7 +22,7 @@ import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import hu.bbara.purefin.ui.model.MediaUiModel
import hu.bbara.purefin.feature.browse.home.LibraryItem
import hu.bbara.purefin.ui.model.LibraryUiModel
import hu.bbara.purefin.ui.screen.home.components.continuewatching.ContinueWatchingSection
import hu.bbara.purefin.ui.screen.home.components.featured.SuggestionsSection
import hu.bbara.purefin.ui.screen.home.components.library.LibraryPosterSection
@@ -32,7 +32,7 @@ import java.util.UUID
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun HomeContent(
libraries: List<LibraryItem>,
libraries: List<LibraryUiModel>,
libraryContent: Map<UUID, List<MediaUiModel>>,
suggestions: List<MediaUiModel>,
continueWatching: List<MediaUiModel>,
@@ -40,7 +40,7 @@ fun HomeContent(
isRefreshing: Boolean,
onRefresh: () -> Unit,
onMediaSelected: (MediaUiModel) -> Unit,
onLibrarySelected: (LibraryItem) -> Unit,
onLibrarySelected: (LibraryUiModel) -> Unit,
onBrowseLibrariesClick: () -> Unit,
modifier: Modifier = Modifier
) {

View File

@@ -12,14 +12,14 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import hu.bbara.purefin.ui.model.MediaUiModel
import hu.bbara.purefin.feature.browse.home.LibraryItem
import hu.bbara.purefin.ui.model.LibraryUiModel
import hu.bbara.purefin.ui.common.header.SectionHeader
@Composable
fun LibraryPosterSection(
library: LibraryItem,
library: LibraryUiModel,
items: List<MediaUiModel>,
onLibrarySelected: (LibraryItem) -> Unit,
onLibrarySelected: (LibraryUiModel) -> Unit,
onMediaSelected: (MediaUiModel) -> Unit,
modifier: Modifier = Modifier,
) {

View File

@@ -16,6 +16,7 @@ import hu.bbara.purefin.navigation.NavigationManager
import hu.bbara.purefin.navigation.Route
import hu.bbara.purefin.navigation.SeriesDto
import hu.bbara.purefin.ui.model.EpisodeUiModel
import hu.bbara.purefin.ui.model.LibraryUiModel
import hu.bbara.purefin.ui.model.MediaUiModel
import hu.bbara.purefin.ui.model.MovieUiModel
import hu.bbara.purefin.ui.model.SeriesUiModel
@@ -51,12 +52,12 @@ class AppViewModel @Inject constructor(
val libraries = homeRepository.libraries.map { libraries ->
libraries.map {
LibraryItem(
LibraryUiModel(
id = it.id,
name = it.name,
type = it.type,
posterUrl = it.posterUrl,
isEmpty = when(it.type) {
isEmpty = when (it.type) {
LibraryKind.MOVIES -> mediaCatalogReader.movies.value.isEmpty()
LibraryKind.SERIES -> mediaCatalogReader.series.value.isEmpty()
}

View File

@@ -3,7 +3,6 @@ package hu.bbara.purefin.feature.browse.home
import hu.bbara.purefin.image.ArtworkKind
import hu.bbara.purefin.image.ImageUrlBuilder
import hu.bbara.purefin.model.Episode
import hu.bbara.purefin.model.LibraryKind
import hu.bbara.purefin.model.MediaKind
import hu.bbara.purefin.model.Movie
import hu.bbara.purefin.model.Series
@@ -35,14 +34,6 @@ data class NextUpItem(
get() = episode.synopsis
}
data class LibraryItem(
val id: UUID,
val name: String,
val type: LibraryKind,
val posterUrl: String,
val isEmpty: Boolean
)
data class PosterItem(
override val type: MediaKind,
val movie: Movie? = null,

View File

@@ -0,0 +1,12 @@
package hu.bbara.purefin.ui.model
import hu.bbara.purefin.model.LibraryKind
import java.util.UUID
data class LibraryUiModel(
val id: UUID,
val name: String,
val type: LibraryKind,
val posterUrl: String,
val isEmpty: Boolean
)