From 9c53abf1520cb5585875b8c258b67a33aaed86df Mon Sep 17 00:00:00 2001 From: Damontecres Date: Wed, 11 Mar 2026 14:00:06 -0400 Subject: [PATCH] Fix playlist play/shuffle buttons not working --- .../wholphin/ui/detail/music/MusicViewModel.kt | 18 ++++++++++++++++-- .../wholphin/ui/detail/music/Utils.kt | 18 ++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/MusicViewModel.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/MusicViewModel.kt index 5fa0a5e3..f70d6a61 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/MusicViewModel.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/MusicViewModel.kt @@ -53,7 +53,14 @@ abstract class MusicViewModel( musicService.setQueue(pager, startIndex, shuffled) } - else -> {} + BaseItemKind.PLAYLIST -> { + val pager = getPagerForPlaylist(api, item.id) + musicService.setQueue(pager, startIndex, shuffled) + } + + else -> { + Timber.w("Unknown item type to play for music: %s", item.type) + } } } } @@ -85,7 +92,14 @@ abstract class MusicViewModel( musicService.addAllToQueue(pager, 0) } - else -> {} + BaseItemKind.PLAYLIST -> { + val pager = getPagerForPlaylist(api, item.id) + musicService.addAllToQueue(pager, 0) + } + + else -> { + Timber.w("Unknown item type to queue for music: %s", item.type) + } } } } diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/Utils.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/Utils.kt index 705935e5..490a8cbc 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/Utils.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/detail/music/Utils.kt @@ -236,3 +236,21 @@ suspend fun ViewModel.getPagerForArtist( ) return ApiRequestPager(api, request, GetItemsRequestHandler, viewModelScope).init() } + +suspend fun ViewModel.getPagerForPlaylist( + api: ApiClient, + playlistId: UUID, +): ApiRequestPager { + val request = + GetItemsRequest( + parentId = playlistId, + recursive = true, + includeItemTypes = listOf(BaseItemKind.AUDIO), + fields = DefaultItemFields, + sortBy = + listOf( + ItemSortBy.DEFAULT, + ), + ) + return ApiRequestPager(api, request, GetItemsRequestHandler, viewModelScope).init() +}