mirror of
https://github.com/JustinZeus/Wholphin.git
synced 2026-07-09 16:11:20 +02:00
Variety of UI changes for grids, home page order, & tv guide (#272)
## Details This PR ended up being larger than I meant. It contains some UI changes and code organization. ## TV & DVR - Uses the "Recordings" library position to order "Recently added in Recordings" instead of Live TV position - The times at the top of the TV guide are more distinguishable from each other - Removes the duplicate title on the Live TV->Recordings tab ## Other libraries - Bare-bone support for "Music Video" libraries. Full support for "Music Video" is work-in-progress in #267, but the libraries should be browseable now. - Bare-bone support for "Other" (aka Mixed Movies & TV Shows) libraries. Note: this type of library is considered [broken and deprecated](https://jellyfin.org/docs/general/server/media/mixed-movies-and-shows), so this won't be expanded any further ## Grids Updates various grid types to use poster vs wide cards. For example, Favorite TV Episodes will use episode images in a wide card now. ## Issues Closes #249 Closes #271
This commit is contained in:
parent
39ad7e564f
commit
45567bf4eb
13 changed files with 287 additions and 161 deletions
|
|
@ -4,11 +4,13 @@ import android.content.Context
|
|||
import com.github.damontecres.wholphin.data.model.BaseItem
|
||||
import com.github.damontecres.wholphin.data.model.NavDrawerPinnedItem
|
||||
import com.github.damontecres.wholphin.data.model.NavPinType
|
||||
import com.github.damontecres.wholphin.ui.nav.Destination
|
||||
import com.github.damontecres.wholphin.ui.nav.NavDrawerItem
|
||||
import com.github.damontecres.wholphin.ui.nav.ServerNavDrawerItem
|
||||
import com.github.damontecres.wholphin.util.supportedCollectionTypes
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import org.jellyfin.sdk.api.client.ApiClient
|
||||
import org.jellyfin.sdk.api.client.extensions.liveTvApi
|
||||
import org.jellyfin.sdk.api.client.extensions.userViewsApi
|
||||
import org.jellyfin.sdk.model.api.CollectionType
|
||||
import javax.inject.Inject
|
||||
|
|
@ -24,21 +26,33 @@ class NavDrawerItemRepository
|
|||
private val serverPreferencesDao: ServerPreferencesDao,
|
||||
) {
|
||||
suspend fun getNavDrawerItems(): List<NavDrawerItem> {
|
||||
val user = serverRepository.currentUser
|
||||
val user = serverRepository.currentUser.value
|
||||
val userViews =
|
||||
api.userViewsApi
|
||||
.getUserViews(userId = user.value?.id)
|
||||
.getUserViews(userId = user?.id)
|
||||
.content.items
|
||||
val recordingFolders =
|
||||
api.liveTvApi
|
||||
.getRecordingFolders(userId = user?.id)
|
||||
.content.items
|
||||
.map { it.id }
|
||||
.toSet()
|
||||
|
||||
val builtins = listOf(NavDrawerItem.Favorites)
|
||||
val libraries =
|
||||
userViews
|
||||
.filter { it.collectionType in supportedCollectionTypes }
|
||||
.filter { it.collectionType in supportedCollectionTypes || it.id in recordingFolders }
|
||||
.map {
|
||||
val destination =
|
||||
if (it.id in recordingFolders) {
|
||||
Destination.Recordings(it.id)
|
||||
} else {
|
||||
BaseItem.from(it, api).destination()
|
||||
}
|
||||
ServerNavDrawerItem(
|
||||
itemId = it.id,
|
||||
name = it.name ?: it.id.toString(),
|
||||
destination = BaseItem.from(it, api).destination(),
|
||||
destination = destination,
|
||||
type = it.collectionType ?: CollectionType.UNKNOWN,
|
||||
)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue