diff --git a/app/src/main/java/com/github/damontecres/wholphin/data/model/BaseItem.kt b/app/src/main/java/com/github/damontecres/wholphin/data/model/BaseItem.kt index 599b7638..7e131763 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/data/model/BaseItem.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/data/model/BaseItem.kt @@ -88,23 +88,21 @@ data class BaseItem( Destination.SeriesOverview( data.seriesId!!, BaseItemKind.SERIES, - this, SeasonEpisodeIds(seasonId, data.parentIndexNumber, id, indexNumber), ) - } ?: Destination.MediaItem(id, type, this) + } ?: Destination.MediaItem(this) } BaseItemKind.SEASON -> { Destination.SeriesOverview( data.seriesId!!, BaseItemKind.SERIES, - this, SeasonEpisodeIds(id, indexNumber, null, null), ) } else -> { - Destination.MediaItem(id, type, this) + Destination.MediaItem(this) } } return result diff --git a/app/src/main/java/com/github/damontecres/wholphin/services/SeerrServerRepository.kt b/app/src/main/java/com/github/damontecres/wholphin/services/SeerrServerRepository.kt index 871f6b47..06d65f84 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/services/SeerrServerRepository.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/services/SeerrServerRepository.kt @@ -21,7 +21,6 @@ import dagger.hilt.android.scopes.ActivityScoped import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.update import okhttp3.OkHttpClient @@ -46,7 +45,7 @@ class SeerrServerRepository /** * Whether Seerr integration is currently active of not */ - suspend fun active(): Boolean = current.firstOrNull() != null && seerrApi.active + val active: Flow = current.map { it != null && seerrApi.active } fun clear() { _current.update { null } diff --git a/app/src/main/java/com/github/damontecres/wholphin/services/TrailerService.kt b/app/src/main/java/com/github/damontecres/wholphin/services/TrailerService.kt index 856493f6..3f676cba 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/services/TrailerService.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/services/TrailerService.kt @@ -88,7 +88,6 @@ class TrailerService navigateTo.invoke( Destination.Playback( itemId = trailer.baseItem.id, - item = trailer.baseItem, positionMs = 0L, ), ) diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/CollectionFolderBoxSet.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/CollectionFolderBoxSet.kt index 4af65f1d..91cd66f7 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/CollectionFolderBoxSet.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/CollectionFolderBoxSet.kt @@ -9,7 +9,6 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel -import com.github.damontecres.wholphin.data.model.BaseItem import com.github.damontecres.wholphin.data.model.CollectionFolderFilter import com.github.damontecres.wholphin.preferences.UserPreferences import com.github.damontecres.wholphin.ui.components.CollectionFolderGrid @@ -25,7 +24,6 @@ import java.util.UUID fun CollectionFolderBoxSet( preferences: UserPreferences, itemId: UUID, - item: BaseItem?, recursive: Boolean, modifier: Modifier = Modifier, filter: CollectionFolderFilter = CollectionFolderFilter(), diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/CollectionFolderPlaylist.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/CollectionFolderPlaylist.kt index 47547219..66ace2d7 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/CollectionFolderPlaylist.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/CollectionFolderPlaylist.kt @@ -9,7 +9,6 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel -import com.github.damontecres.wholphin.data.model.BaseItem import com.github.damontecres.wholphin.data.model.CollectionFolderFilter import com.github.damontecres.wholphin.preferences.UserPreferences import com.github.damontecres.wholphin.ui.components.CollectionFolderGrid @@ -22,7 +21,6 @@ import java.util.UUID fun CollectionFolderPlaylist( preferences: UserPreferences, itemId: UUID, - item: BaseItem?, recursive: Boolean, modifier: Modifier = Modifier, filter: CollectionFolderFilter = CollectionFolderFilter(), diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/DetailUtils.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/DetailUtils.kt index 60d8455e..8a210c27 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/DetailUtils.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/DetailUtils.kt @@ -78,7 +78,6 @@ fun buildMoreDialogItems( Destination.Playback( item.id, item.resumeMs ?: 0L, - item, ), ) }, @@ -166,6 +165,7 @@ fun buildMoreDialogItems( Destination.MediaItem( seriesId, BaseItemKind.SERIES, + null, ), ) }, @@ -200,7 +200,6 @@ fun buildMoreDialogItems( Destination.Playback( item.id, item.resumeMs ?: 0L, - item, forceTranscoding = true, ), ) @@ -309,6 +308,7 @@ fun buildMoreDialogItemsForHome( Destination.MediaItem( it, BaseItemKind.SERIES, + null, ), ) }, @@ -328,7 +328,7 @@ fun buildMoreDialogItemsForPerson( context.getString(R.string.go_to), Icons.Default.ArrowForward, ) { - actions.navigateTo(Destination.MediaItem(itemId, BaseItemKind.PERSON)) + actions.navigateTo(Destination.MediaItem(itemId, BaseItemKind.PERSON, null)) }, ) add( diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/episode/EpisodeDetails.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/episode/EpisodeDetails.kt index 6d53b0c1..c3052b46 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/episode/EpisodeDetails.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/episode/EpisodeDetails.kt @@ -129,7 +129,6 @@ fun EpisodeDetails( Destination.Playback( ep.id, it.inWholeMilliseconds, - ep, ), ) }, diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/movie/MovieDetails.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/movie/MovieDetails.kt index a63dd128..7f89f298 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/movie/MovieDetails.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/movie/MovieDetails.kt @@ -167,7 +167,6 @@ fun MovieDetails( Destination.Playback( movie.id, it.inWholeMilliseconds, - movie, ), ) }, diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/series/SeriesOverview.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/series/SeriesOverview.kt index 891d3bc2..4390e617 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/series/SeriesOverview.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/series/SeriesOverview.kt @@ -305,7 +305,6 @@ fun SeriesOverview( Destination.Playback( it.id, resumePosition.inWholeMilliseconds, - it, ), ) }, @@ -320,7 +319,6 @@ fun SeriesOverview( Destination.Playback( it.id, resume.inWholeMilliseconds, - it, ), ) } diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/nav/Destination.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/nav/Destination.kt index d28af193..426d5328 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/nav/Destination.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/nav/Destination.kt @@ -10,13 +10,12 @@ import com.github.damontecres.wholphin.data.model.DiscoverItem import com.github.damontecres.wholphin.data.model.GetItemsFilter import com.github.damontecres.wholphin.data.model.ItemPlayback import com.github.damontecres.wholphin.ui.data.SortAndDirection -import com.github.damontecres.wholphin.ui.detail.series.SeasonEpisode import com.github.damontecres.wholphin.ui.detail.series.SeasonEpisodeIds import com.github.damontecres.wholphin.ui.preferences.PreferenceScreenOption import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient import kotlinx.serialization.UseSerializers import org.jellyfin.sdk.model.api.BaseItemKind +import org.jellyfin.sdk.model.api.CollectionType import org.jellyfin.sdk.model.serializer.UUIDSerializer import java.util.UUID @@ -46,7 +45,6 @@ sealed class Destination( data class SeriesOverview( val itemId: UUID, val type: BaseItemKind, - @Transient val item: BaseItem? = null, val seasonEpisode: SeasonEpisodeIds? = null, ) : Destination() { override fun toString(): String = "SeriesOverview(itemId=$itemId, type=$type, seasonEpisode=$seasonEpisode)" @@ -56,11 +54,9 @@ sealed class Destination( data class MediaItem( val itemId: UUID, val type: BaseItemKind, - @Transient val item: BaseItem? = null, - val seasonEpisode: SeasonEpisode? = null, + val collectionType: CollectionType? = null, ) : Destination() { - override fun toString(): String = - "MediaItem(itemId=$itemId, type=$type, seasonEpisode=$seasonEpisode, collectionType=${item?.data?.collectionType})" + constructor(item: BaseItem) : this(item.id, item.type, item.data.collectionType) } @Serializable @@ -72,13 +68,10 @@ sealed class Destination( data class Playback( val itemId: UUID, val positionMs: Long, - @Transient val item: BaseItem? = null, val itemPlayback: ItemPlayback? = null, val forceTranscoding: Boolean = false, ) : Destination(true) { - override fun toString(): String = "Playback(itemId=$itemId, positionMs=$positionMs)" - - constructor(item: BaseItem) : this(item.id, item.resumeMs, item) + constructor(item: BaseItem) : this(item.id, item.resumeMs) } @Serializable diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/nav/DestinationContent.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/nav/DestinationContent.kt index a2b2a764..52ce96fb 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/nav/DestinationContent.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/nav/DestinationContent.kt @@ -126,7 +126,6 @@ fun DestinationContent( CollectionFolderBoxSet( preferences = preferences, itemId = destination.itemId, - item = destination.item, recursive = false, playEnabled = true, modifier = modifier, @@ -146,7 +145,7 @@ fun DestinationContent( CollectionFolder( preferences = preferences, destination = destination, - collectionType = destination.item?.data?.collectionType, + collectionType = destination.collectionType, usePostersOverride = null, recursiveOverride = null, modifier = modifier, @@ -158,7 +157,7 @@ fun DestinationContent( CollectionFolder( preferences = preferences, destination = destination, - collectionType = destination.item?.data?.collectionType, + collectionType = destination.collectionType, usePostersOverride = true, recursiveOverride = null, modifier = modifier, @@ -170,7 +169,7 @@ fun DestinationContent( CollectionFolder( preferences = preferences, destination = destination, - collectionType = destination.item?.data?.collectionType, + collectionType = destination.collectionType, usePostersOverride = null, recursiveOverride = true, modifier = modifier, @@ -336,7 +335,6 @@ fun CollectionFolder( CollectionFolderPlaylist( preferences, destination.itemId, - destination.item, true, modifier, ) diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/playback/PlaybackViewModel.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/playback/PlaybackViewModel.kt index 064434c4..e42404c6 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/playback/PlaybackViewModel.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/playback/PlaybackViewModel.kt @@ -233,13 +233,7 @@ class PlaybackViewModel "Error preparing for playback for $itemId", ), ) { - val destItem = (destination as? Destination.Playback)?.item?.data - val queriedItem = - if (destItem?.mediaSources != null) { - destItem - } else { - api.userLibraryApi.getItem(itemId).content - } + val queriedItem = api.userLibraryApi.getItem(itemId).content val base = if (queriedItem.type.playable) { queriedItem