@@ -166,52 +166,44 @@ internal fun PlaybackService.getMediaSessionCallback() = object : MediaLibrarySe
166166 mediaItems : MutableList <MediaItem >,
167167 startIndex : Int ,
168168 startPositionMs : Long
169- ) = if (controller.packageName == packageName) {
170- Futures .immediateFuture(MediaSession .MediaItemsWithStartPosition (mediaItems, startIndex, startPositionMs))
171- } else {
172- callWhenSourceReady {
173- // this is to avoid single items in the queue: https://github.com/androidx/media/issues/156
174- var queueItems = mediaItems
175- val startItemId = mediaItems[0 ].mediaId
176- val currentItems = mediaItemProvider.getChildren(currentRoot).orEmpty()
169+ ): ListenableFuture <MediaSession .MediaItemsWithStartPosition > {
170+ if (controller.packageName == packageName) {
171+ return super .onSetMediaItems(mediaSession, controller, mediaItems, startIndex, startPositionMs)
172+ }
177173
178- queueItems = if (currentItems.any { it.mediaId == startItemId }) {
179- currentItems.toMutableList()
180- } else {
181- mediaItemProvider.getDefaultQueue()?.toMutableList() ? : queueItems
182- }
174+ // this is to avoid single items in the queue: https://github.com/androidx/media/issues/156
175+ var queueItems = mediaItems
176+ val startItemId = mediaItems[0 ].mediaId
177+ val currentItems = mediaItemProvider.getChildren(currentRoot).orEmpty()
183178
184- val startItemIndex = queueItems.indexOfFirst { it.mediaId == startItemId }
185- super .onSetMediaItems(mediaSession, controller, queueItems, startItemIndex, startPositionMs).get()
179+ queueItems = if (currentItems.any { it.mediaId == startItemId }) {
180+ currentItems.toMutableList()
181+ } else {
182+ mediaItemProvider.getDefaultQueue()?.toMutableList() ? : queueItems
186183 }
184+
185+ val startItemIndex = queueItems.indexOfFirst { it.mediaId == startItemId }
186+ return super .onSetMediaItems(mediaSession, controller, queueItems, startItemIndex, startPositionMs)
187187 }
188188
189189 override fun onAddMediaItems (
190190 mediaSession : MediaSession ,
191191 controller : MediaSession .ControllerInfo ,
192192 mediaItems : List <MediaItem >
193- ) = if (controller.packageName == packageName) {
194- Futures .immediateFuture(mediaItems)
195- } else {
196- callWhenSourceReady {
197- mediaItems.map { mediaItem ->
198- if (mediaItem.requestMetadata.searchQuery != null ) {
199- getMediaItemFromSearchQuery(mediaItem.requestMetadata.searchQuery!! )
200- } else {
201- mediaItemProvider[mediaItem.mediaId] ? : mediaItem
202- }
193+ ): ListenableFuture <List <MediaItem >> {
194+ val items = mediaItems.map { mediaItem ->
195+ if (mediaItem.requestMetadata.searchQuery != null ) {
196+ getMediaItemFromSearchQuery(mediaItem.requestMetadata.searchQuery!! )
197+ } else {
198+ mediaItemProvider[mediaItem.mediaId] ? : mediaItem
203199 }
204200 }
201+
202+ return Futures .immediateFuture(items)
205203 }
206204
207205 private fun getMediaItemFromSearchQuery (query : String ): MediaItem {
208- val searchQuery = if (query.startsWith(" play " , ignoreCase = true )) {
209- query.drop(5 ).lowercase()
210- } else {
211- query.lowercase()
212- }
213-
214- return mediaItemProvider.getItemFromSearch(searchQuery) ? : mediaItemProvider.getRandomItem()
206+ return mediaItemProvider.getItemFromSearch(query.lowercase()) ? : mediaItemProvider.getRandomItem()
215207 }
216208
217209 private fun reloadContent () {
0 commit comments