mirror of
https://github.com/JustinZeus/Wholphin.git
synced 2026-07-08 23:51:21 +02:00
Don't pass BaseItem in destinations
This commit is contained in:
parent
12590d7221
commit
70fd36ccab
12 changed files with 14 additions and 41 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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<Boolean> = current.map { it != null && seerrApi.active }
|
||||
|
||||
fun clear() {
|
||||
_current.update { null }
|
||||
|
|
|
|||
|
|
@ -88,7 +88,6 @@ class TrailerService
|
|||
navigateTo.invoke(
|
||||
Destination.Playback(
|
||||
itemId = trailer.baseItem.id,
|
||||
item = trailer.baseItem,
|
||||
positionMs = 0L,
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -129,7 +129,6 @@ fun EpisodeDetails(
|
|||
Destination.Playback(
|
||||
ep.id,
|
||||
it.inWholeMilliseconds,
|
||||
ep,
|
||||
),
|
||||
)
|
||||
},
|
||||
|
|
|
|||
|
|
@ -167,7 +167,6 @@ fun MovieDetails(
|
|||
Destination.Playback(
|
||||
movie.id,
|
||||
it.inWholeMilliseconds,
|
||||
movie,
|
||||
),
|
||||
)
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
),
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue