@@ -20,6 +20,7 @@ import project.pipepipe.app.viewmodel.SearchViewModel
2020import project.pipepipe.shared.infoitem.PlaylistInfo
2121import project.pipepipe.shared.infoitem.StreamInfo
2222import project.pipepipe.shared.infoitem.SupportedServiceInfo
23+ import kotlin.collections.take
2324
2425/* *
2526 * Helper class for Android Auto media browser functionality.
@@ -90,7 +91,7 @@ object MediaBrowserHelper {
9091 * Loads history items as MediaItems.
9192 */
9293 suspend fun loadHistoryItems (): List <MediaItem > = withContext(Dispatchers .IO ) {
93- val historyItems = DatabaseOperations .loadStreamHistoryItems()
94+ val historyItems = DatabaseOperations .loadStreamHistoryItems().take( 1000 )
9495 historyItems.map { streamInfo ->
9596 createPlayableMediaItem(streamInfo)
9697 }
@@ -110,9 +111,9 @@ object MediaBrowserHelper {
110111 * Loads streams from a local playlist.
111112 */
112113 suspend fun loadLocalPlaylistStreams (playlistId : Long ): List <MediaItem > = withContext(Dispatchers .IO ) {
113- val streams = DatabaseOperations .loadPlaylistsItemsFromDatabase(playlistId)
114- streams.map { streamInfo ->
115- createPlayableMediaItem(streamInfo)
114+ val streams = DatabaseOperations .loadPlaylistsItemsFromDatabase(playlistId).take( 1000 )
115+ streams.mapIndexed { index, streamInfo ->
116+ createPlayableMediaItem(streamInfo, playlistId, index )
116117 }
117118 }
118119
@@ -127,7 +128,7 @@ object MediaBrowserHelper {
127128
128129 // Load remote playlist using ViewModel
129130 playlistVm.loadPlaylist(playlistInfo.url, playlistInfo.serviceId)
130- val streams = playlistVm.uiState.value.list.itemList
131+ val streams = playlistVm.uiState.value.list.itemList.take( 1000 )
131132 streams.map { streamInfo ->
132133 createPlayableMediaItem(streamInfo)
133134 }
@@ -290,7 +291,7 @@ object MediaBrowserHelper {
290291 * Encodes all metadata in the mediaId since extras are lost during IPC.
291292 * Format: auto://{serviceId}/{realUrl}?name=...&artist=...&thumb=...&duration=...
292293 */
293- private fun createPlayableMediaItem (streamInfo : StreamInfo ): MediaItem {
294+ private fun createPlayableMediaItem (streamInfo : StreamInfo , playlistId : Long? = null, index : Int? = null ): MediaItem {
294295 val duration = (streamInfo.duration ? : 0 ) * 1000
295296
296297 // Build URL with query parameters to preserve metadata across IPC
@@ -303,6 +304,8 @@ object MediaBrowserHelper {
303304 streamInfo.uploaderName?.let { uriBuilder.appendQueryParameter(" artist" , it) }
304305 streamInfo.thumbnailUrl?.let { uriBuilder.appendQueryParameter(" thumb" , it) }
305306 if (duration > 0 ) uriBuilder.appendQueryParameter(" duration" , duration.toString())
307+ playlistId?.let { uriBuilder.appendQueryParameter(" playlistId" , it.toString()) }
308+ index?.let { uriBuilder.appendQueryParameter(" index" , it.toString()) }
306309
307310 val autoMediaId = uriBuilder.build().toString()
308311
0 commit comments