From 45fc40b51e9ae67a8a03906e632dc0b179f7eebb Mon Sep 17 00:00:00 2001 From: jarnedemeulemeester Date: Mon, 23 Aug 2021 11:14:34 +0200 Subject: [PATCH] Fix if media items are in folders --- .../dev/jdtech/jellyfin/fragments/HomeFragment.kt | 3 ++- .../jdtech/jellyfin/fragments/LibraryFragment.kt | 4 ++-- .../dev/jdtech/jellyfin/fragments/MediaFragment.kt | 3 ++- .../main/java/dev/jdtech/jellyfin/models/View.kt | 3 ++- .../jellyfin/repository/JellyfinRepository.kt | 6 +++++- .../jellyfin/repository/JellyfinRepositoryImpl.kt | 10 ++++++++-- .../java/dev/jdtech/jellyfin/utils/extensions.kt | 3 ++- .../jdtech/jellyfin/viewmodels/LibraryViewModel.kt | 14 ++++++++++++-- app/src/main/res/navigation/main_navigation.xml | 4 ++++ 9 files changed, 39 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/HomeFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/HomeFragment.kt index 78891d63..545a6d04 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/HomeFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/HomeFragment.kt @@ -96,7 +96,8 @@ class HomeFragment : Fragment() { findNavController().navigate( HomeFragmentDirections.actionNavigationHomeToLibraryFragment( view.id, - view.name + view.name, + view.type ) ) } diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/LibraryFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/LibraryFragment.kt index 3eba789f..24399079 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/LibraryFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/LibraryFragment.kt @@ -50,7 +50,7 @@ class LibraryFragment : Fragment() { }) binding.errorLayout.errorRetryButton.setOnClickListener { - viewModel.loadItems(args.libraryId) + viewModel.loadItems(args.libraryId, args.libraryType) } binding.errorLayout.errorDetailsButton.setOnClickListener { @@ -65,7 +65,7 @@ class LibraryFragment : Fragment() { ViewItemListAdapter(ViewItemListAdapter.OnClickListener { item -> navigateToMediaInfoFragment(item) }) - viewModel.loadItems(args.libraryId) + viewModel.loadItems(args.libraryId, args.libraryType) } private fun navigateToMediaInfoFragment(item: BaseItemDto) { diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaFragment.kt index cb6b35d0..fea8b358 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaFragment.kt @@ -89,7 +89,8 @@ class MediaFragment : Fragment() { findNavController().navigate( MediaFragmentDirections.actionNavigationMediaToLibraryFragment( library.id, - library.name + library.name, + library.collectionType, ) ) } diff --git a/app/src/main/java/dev/jdtech/jellyfin/models/View.kt b/app/src/main/java/dev/jdtech/jellyfin/models/View.kt index 7c88dd6b..4f624a7f 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/models/View.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/models/View.kt @@ -6,5 +6,6 @@ import java.util.* data class View( val id: UUID, val name: String?, - var items: List? = null + var items: List? = null, + val type: String? ) \ No newline at end of file diff --git a/app/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepository.kt b/app/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepository.kt index 84ed4781..69bf92ea 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepository.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepository.kt @@ -10,7 +10,11 @@ interface JellyfinRepository { suspend fun getItem(itemId: UUID): BaseItemDto - suspend fun getItems(parentId: UUID? = null): List + suspend fun getItems( + parentId: UUID? = null, + includeTypes: List? = null, + recursive: Boolean = false + ): List suspend fun getFavoriteItems(): List diff --git a/app/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepositoryImpl.kt b/app/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepositoryImpl.kt index 1f393e98..393b87ef 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepositoryImpl.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepositoryImpl.kt @@ -25,12 +25,18 @@ class JellyfinRepositoryImpl(private val jellyfinApi: JellyfinApi) : JellyfinRep return item } - override suspend fun getItems(parentId: UUID?): List { + override suspend fun getItems( + parentId: UUID?, + includeTypes: List?, + recursive: Boolean + ): List { val items: List withContext(Dispatchers.IO) { items = jellyfinApi.itemsApi.getItems( jellyfinApi.userId!!, - parentId = parentId + parentId = parentId, + includeItemTypes = includeTypes, + recursive = recursive ).content.items ?: listOf() } return items diff --git a/app/src/main/java/dev/jdtech/jellyfin/utils/extensions.kt b/app/src/main/java/dev/jdtech/jellyfin/utils/extensions.kt index fd2e2892..c68d73b0 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/utils/extensions.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/utils/extensions.kt @@ -6,6 +6,7 @@ import org.jellyfin.sdk.model.api.BaseItemDto fun BaseItemDto.toView(): View { return View( id = id, - name = name + name = name, + type = collectionType ) } \ No newline at end of file diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/LibraryViewModel.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/LibraryViewModel.kt index ac0d75e9..f6b58c44 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/LibraryViewModel.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/LibraryViewModel.kt @@ -23,12 +23,22 @@ constructor(private val jellyfinRepository: JellyfinRepository) : ViewModel() { private val _error = MutableLiveData() val error: LiveData = _error - fun loadItems(parentId: UUID) { + fun loadItems(parentId: UUID, libraryType: String?) { _error.value = null _finishedLoading.value = false + Timber.d("$libraryType") + val itemType = when (libraryType) { + "movies" -> "Movie" + "tvshows" -> "Series" + else -> null + } viewModelScope.launch { try { - _items.value = jellyfinRepository.getItems(parentId) + _items.value = jellyfinRepository.getItems( + parentId, + includeTypes = if (itemType != null) listOf(itemType) else null, + recursive = true + ) } catch (e: Exception) { Timber.e(e) _error.value = e.message diff --git a/app/src/main/res/navigation/main_navigation.xml b/app/src/main/res/navigation/main_navigation.xml index 2807ccd7..b7928333 100644 --- a/app/src/main/res/navigation/main_navigation.xml +++ b/app/src/main/res/navigation/main_navigation.xml @@ -84,6 +84,10 @@ app:exitAnim="@anim/nav_default_exit_anim" app:popEnterAnim="@anim/nav_default_pop_enter_anim" app:popExitAnim="@anim/nav_default_pop_exit_anim" /> +