@rntp/player 5.0.0-beta.3 → 5.0.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -465,12 +465,20 @@ class TrackPlayerPlaybackService: MediaLibraryService(), MediaLibraryService.Med
465
465
  return Futures.immediateFuture(LibraryResult.ofItemList(ImmutableList.copyOf(categoryItems), params))
466
466
  }
467
467
 
468
+ // Check if it's a category
468
469
  val category = browseTree.findCategory(parentId)
469
470
  if (category != null) {
470
471
  val mediaItems = category.items.map { it.toMediaItem() }
471
472
  return Futures.immediateFuture(LibraryResult.ofItemList(ImmutableList.copyOf(mediaItems), params))
472
473
  }
473
474
 
475
+ // Check if it's a browsable item with children
476
+ val browseItem = browseTree.findItem(parentId)
477
+ if (browseItem != null && browseItem.children != null) {
478
+ val mediaItems = browseItem.children.map { it.toMediaItem() }
479
+ return Futures.immediateFuture(LibraryResult.ofItemList(ImmutableList.copyOf(mediaItems), params))
480
+ }
481
+
474
482
  return Futures.immediateFuture(LibraryResult.ofError(LibraryResult.RESULT_ERROR_BAD_VALUE))
475
483
  }
476
484
 
@@ -26,14 +26,18 @@ data class BrowseCategory(
26
26
  @Serializable
27
27
  data class BrowseMediaItem(
28
28
  val mediaId: String,
29
- val url: String,
29
+ val url: String? = null,
30
30
  val title: String? = null,
31
31
  val artist: String? = null,
32
32
  val albumTitle: String? = null,
33
33
  val artworkUrl: String? = null,
34
34
  val duration: Double? = null,
35
35
  val isLive: Boolean? = null,
36
+ val children: List<BrowseMediaItem>? = null,
36
37
  ) {
38
+ val isPlayable: Boolean get() = url != null
39
+ val isBrowsable: Boolean get() = children != null && url == null
40
+
37
41
  fun toMediaItem(): MediaItem {
38
42
  val extras = Bundle()
39
43
  duration?.let { extras.putDouble("duration", it) }
@@ -44,16 +48,20 @@ data class BrowseMediaItem(
44
48
  .setArtist(artist)
45
49
  .setAlbumTitle(albumTitle)
46
50
  .setArtworkUri(artworkUrl?.let { Uri.parse(it) })
47
- .setIsBrowsable(false)
48
- .setIsPlayable(true)
51
+ .setIsBrowsable(isBrowsable)
52
+ .setIsPlayable(isPlayable)
53
+ .setMediaType(if (isBrowsable) MediaMetadata.MEDIA_TYPE_FOLDER_MIXED else MediaMetadata.MEDIA_TYPE_MUSIC)
49
54
  .setExtras(extras)
50
55
  .build()
51
56
 
52
57
  val builder = MediaItem.Builder()
53
58
  .setMediaId(mediaId)
54
- .setUri(url)
55
59
  .setMediaMetadata(metadata)
56
60
 
61
+ if (url != null) {
62
+ builder.setUri(url)
63
+ }
64
+
57
65
  if (isLive == true) {
58
66
  builder.setLiveConfiguration(MediaItem.LiveConfiguration.Builder().build())
59
67
  }
@@ -75,7 +83,7 @@ data class BrowseTree(
75
83
  categories.find { it.mediaId == mediaId }
76
84
 
77
85
  fun findItem(mediaId: String): BrowseMediaItem? =
78
- categories.flatMap { it.items }.find { it.mediaId == mediaId }
86
+ categories.flatMap { findItemRecursive(it.items, mediaId) }.firstOrNull()
79
87
 
80
88
  companion object {
81
89
  private const val BROWSE_TREE_KEY = "browse_tree"
@@ -98,24 +106,47 @@ data class BrowseTree(
98
106
  val title = catMap.getString("title") ?: continue
99
107
  val itemsArray = catMap.getArray("items") ?: continue
100
108
 
101
- val items = mutableListOf<BrowseMediaItem>()
102
- for (j in 0 until itemsArray.size()) {
103
- val itemMap = itemsArray.getMap(j) ?: continue
104
- items.add(BrowseMediaItem(
105
- mediaId = itemMap.getString("mediaId") ?: continue,
106
- url = itemMap.getString("url") as? String ?: continue,
107
- title = if (itemMap.hasKey("title")) itemMap.getString("title") else null,
108
- artist = if (itemMap.hasKey("artist")) itemMap.getString("artist") else null,
109
- albumTitle = if (itemMap.hasKey("albumTitle")) itemMap.getString("albumTitle") else null,
110
- artworkUrl = if (itemMap.hasKey("artworkUrl")) itemMap.getString("artworkUrl") else null,
111
- duration = if (itemMap.hasKey("duration")) itemMap.getDouble("duration") else null,
112
- isLive = if (itemMap.hasKey("isLive")) itemMap.getBoolean("isLive") else null,
113
- ))
114
- }
115
-
109
+ val items = parseItems(itemsArray)
116
110
  categories.add(BrowseCategory(mediaId = mediaId, title = title, items = items))
117
111
  }
118
112
  return BrowseTree(categories)
119
113
  }
114
+
115
+ private fun parseItems(data: ReadableArray): List<BrowseMediaItem> {
116
+ val items = mutableListOf<BrowseMediaItem>()
117
+ for (i in 0 until data.size()) {
118
+ val itemMap = data.getMap(i) ?: continue
119
+ val mediaId = itemMap.getString("mediaId") ?: continue
120
+
121
+ val children = if (itemMap.hasKey("children")) {
122
+ itemMap.getArray("children")?.let { parseItems(it) }
123
+ } else null
124
+
125
+ items.add(BrowseMediaItem(
126
+ mediaId = mediaId,
127
+ url = if (itemMap.hasKey("url")) itemMap.getString("url") else null,
128
+ title = if (itemMap.hasKey("title")) itemMap.getString("title") else null,
129
+ artist = if (itemMap.hasKey("artist")) itemMap.getString("artist") else null,
130
+ albumTitle = if (itemMap.hasKey("albumTitle")) itemMap.getString("albumTitle") else null,
131
+ artworkUrl = if (itemMap.hasKey("artworkUrl")) itemMap.getString("artworkUrl") else null,
132
+ duration = if (itemMap.hasKey("duration")) itemMap.getDouble("duration") else null,
133
+ isLive = if (itemMap.hasKey("isLive")) itemMap.getBoolean("isLive") else null,
134
+ children = children,
135
+ ))
136
+ }
137
+ return items
138
+ }
139
+
140
+ private fun findItemRecursive(items: List<BrowseMediaItem>, mediaId: String): List<BrowseMediaItem> {
141
+ for (item in items) {
142
+ if (item.mediaId == mediaId) return listOf(item)
143
+ val children = item.children
144
+ if (children != null) {
145
+ val found = findItemRecursive(children, mediaId)
146
+ if (found.isNotEmpty()) return found
147
+ }
148
+ }
149
+ return emptyList()
150
+ }
120
151
  }
121
152
  }
@@ -115,7 +115,7 @@ class RNTPCarPlaySceneDelegate: UIResponder, CPTemplateApplicationSceneDelegate
115
115
  let truncated = maxItems > 0 ? Array(items.prefix(maxItems)) : items
116
116
 
117
117
  let listItems: [CPListItem] = truncated.enumerated().map { (itemIndex, item) in
118
- buildListItem(item: item, categoryIndex: categoryIndex, itemIndex: itemIndex)
118
+ buildListItem(item: item, parentItems: items, itemIndex: itemIndex)
119
119
  }
120
120
 
121
121
  let section = CPListSection(items: listItems)
@@ -151,15 +151,26 @@ class RNTPCarPlaySceneDelegate: UIResponder, CPTemplateApplicationSceneDelegate
151
151
 
152
152
  // MARK: - List Item Builder
153
153
 
154
- private func buildListItem(item: [String: Any], categoryIndex: Int, itemIndex: Int) -> CPListItem {
154
+ private func buildListItem(item: [String: Any], parentItems: [[String: Any]], itemIndex: Int) -> CPListItem {
155
155
  let title = item["title"] as? String ?? "Untitled"
156
156
  let artist = item["artist"] as? String
157
157
  let listItem = CPListItem(text: title, detailText: artist)
158
158
 
159
- listItem.userInfo = ["categoryIndex": categoryIndex, "itemIndex": itemIndex]
160
- listItem.handler = { [weak self] _, completion in
161
- self?.handleItemSelected(categoryIndex: categoryIndex, itemIndex: itemIndex)
162
- completion()
159
+ let hasUrl = item["url"] != nil
160
+ let children = item["children"] as? [[String: Any]]
161
+ let isBrowsable = children != nil && !hasUrl
162
+
163
+ if isBrowsable {
164
+ listItem.accessoryType = .disclosureIndicator
165
+ listItem.handler = { [weak self] _, completion in
166
+ self?.handleBrowsableSelected(item: item)
167
+ completion()
168
+ }
169
+ } else {
170
+ listItem.handler = { [weak self] _, completion in
171
+ self?.handlePlayableSelected(parentItems: parentItems, itemIndex: itemIndex)
172
+ completion()
173
+ }
163
174
  }
164
175
 
165
176
  // Track by mediaId for now-playing state updates
@@ -184,6 +195,22 @@ class RNTPCarPlaySceneDelegate: UIResponder, CPTemplateApplicationSceneDelegate
184
195
  return listItem
185
196
  }
186
197
 
198
+ private func handleBrowsableSelected(item: [String: Any]) {
199
+ let title = item["title"] as? String ?? "Untitled"
200
+ let children = item["children"] as? [[String: Any]] ?? []
201
+
202
+ let maxItems = CPListTemplate.maximumItemCount
203
+ let truncated = maxItems > 0 ? Array(children.prefix(maxItems)) : children
204
+
205
+ let listItems = truncated.enumerated().map { (idx, child) in
206
+ buildListItem(item: child, parentItems: children, itemIndex: idx)
207
+ }
208
+
209
+ let section = CPListSection(items: listItems)
210
+ let template = CPListTemplate(title: title, sections: [section])
211
+ interfaceController?.pushTemplate(template, animated: true, completion: nil)
212
+ }
213
+
187
214
  // MARK: - Now Playing State
188
215
 
189
216
  private func updateNowPlayingState() {
@@ -198,20 +225,22 @@ class RNTPCarPlaySceneDelegate: UIResponder, CPTemplateApplicationSceneDelegate
198
225
 
199
226
  // MARK: - Playback
200
227
 
201
- private func handleItemSelected(categoryIndex: Int, itemIndex: Int) {
228
+ private func handlePlayableSelected(parentItems: [[String: Any]], itemIndex: Int) {
202
229
  guard let player = BrowseTreeStore.shared.player else { return }
203
- let categories = BrowseTreeStore.shared.categories
204
- guard categoryIndex < categories.count,
205
- let items = categories[categoryIndex]["items"] as? [[String: Any]] else { return }
206
230
 
207
- let mediaItems = items.compactMap { MediaItem(data: $0) }
231
+ // Collect only playable siblings (items with a url)
232
+ let playableItems = parentItems.filter { $0["url"] != nil }
233
+ let mediaItems = playableItems.compactMap { MediaItem(data: $0) }
208
234
  guard !mediaItems.isEmpty else { return }
209
235
 
236
+ // Find the index of the selected item among playable siblings
237
+ let selectedMediaId = parentItems[itemIndex]["mediaId"] as? String
238
+ let playableIndex = playableItems.firstIndex { ($0["mediaId"] as? String) == selectedMediaId } ?? 0
239
+
210
240
  player.clear()
211
241
  player.add(items: mediaItems)
212
- let idx = min(itemIndex, mediaItems.count - 1)
213
- if idx > 0 {
214
- player.skipTo(index: idx)
242
+ if playableIndex > 0 {
243
+ player.skipTo(index: playableIndex)
215
244
  }
216
245
  player.play()
217
246
  }
@@ -403,23 +403,39 @@ function updateProgressSyncHeaders(headers) {
403
403
 
404
404
  // ─── Browse Tree ─────────────────────────────────────
405
405
 
406
+ function resolveBrowseItem(item) {
407
+ return {
408
+ ...item,
409
+ ...(item.url != null ? {
410
+ url: resolveUrl(item.url)
411
+ } : {}),
412
+ ...(item.artworkUrl != null ? {
413
+ artworkUrl: resolveUrl(item.artworkUrl)
414
+ } : {}),
415
+ ...(item.children != null ? {
416
+ children: item.children.map(resolveBrowseItem)
417
+ } : {})
418
+ };
419
+ }
420
+
406
421
  /**
407
422
  * Set the media browse tree for Android Auto and CarPlay.
408
423
  * Each category becomes a top-level browsable folder (Android Auto) or tab (CarPlay);
409
- * its items are playable leaves.
424
+ * its items can be playable tracks or browsable containers with children.
410
425
  *
411
- * When a user selects an item, the native player loads and plays it
412
- * without JS intervention.
426
+ * When a user selects a playable item, the native player loads its siblings
427
+ * as the queue and starts playback without JS intervention.
413
428
  *
414
429
  * @remarks
415
430
  * - On CarPlay, a maximum of 4 tabs are shown. If more than 4 categories are provided,
416
431
  * the first 3 become tabs and the rest are grouped under a "More" tab.
432
+ * - Maximum nesting depth: 4 levels (matching CarPlay's navigation stack limit).
417
433
  * - Call again to update the tree (e.g. after loading new content)
418
434
  */
419
435
  function setBrowseTree(categories) {
420
436
  const resolved = categories.map(cat => ({
421
437
  ...cat,
422
- items: cat.items.map(resolveMediaItem)
438
+ items: cat.items.map(resolveBrowseItem)
423
439
  }));
424
440
  TrackPlayer.setBrowseTree(resolved);
425
441
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_index","_index2","isTurboModuleEnabled","global","__turboModuleProxy","TrackPlayerModule","default","NativeModules","TrackPlayer","Proxy","get","Error","Platform","select","ios","NativeModule","OS","emitter","NativeEventEmitter","isPlayerSetup","resolveUrl","url","resolved","Image","resolveAssetSource","uri","resolveMediaItem","item","artworkUrl","normalizePlayerConfig","options","android","DEFAULT_ANDROID_PLAYER_CONFIG","cache","DEFAULT_CACHE_CONFIG","undefined","DEFAULT_PLAYER_CONFIG","contentType","handleAudioBecomingNoisy","progressSync","setupPlayer","registerBackgroundEventHandler","factory","AppRegistry","registerHeadlessTask","type","Event","QueueChanged","setImmediate","addEventListener","event","listener","addListener","play","pause","stop","seekTo","position","seekBy","offset","skipToNext","skipToPrevious","skipToIndex","index","retry","setPlaybackSpeed","speed","setVolume","volume","setMediaItem","mediaItem","setMediaItems","mediaItems","startIndex","map","addMediaItem","addMediaItems","insertMediaItem","insertMediaItems","removeMediaItem","removeMediaItems","fromIndex","toIndex","clear","clearCache","replaceMediaItem","moveMediaItem","updateMetadata","metadata","getPlaybackState","isPlaying","getProgress","result","duration","buffered","cached","getPlaybackSpeed","getVolume","getActiveMediaItem","getActiveMediaItemIndex","getQueue","getRepeatMode","isShuffleEnabled","setCommands","commands","setRepeatMode","mode","setShuffleEnabled","enabled","updateProgressSyncHeaders","headers","setBrowseTree","categories","cat","items","sleepAfterTime","seconds","fadeOutSeconds","sleepAfterMediaItemAtIndex","resolvedIndex","getSleepTimer","cancelSleepTimer","destroy"],"sourceRoot":"../../src","sources":["audio.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_index","_index2","isTurboModuleEnabled","global","__turboModuleProxy","TrackPlayerModule","default","NativeModules","TrackPlayer","Proxy","get","Error","Platform","select","ios","NativeModule","OS","emitter","NativeEventEmitter","isPlayerSetup","resolveUrl","url","resolved","Image","resolveAssetSource","uri","resolveMediaItem","item","artworkUrl","normalizePlayerConfig","options","android","DEFAULT_ANDROID_PLAYER_CONFIG","cache","DEFAULT_CACHE_CONFIG","undefined","DEFAULT_PLAYER_CONFIG","contentType","handleAudioBecomingNoisy","progressSync","setupPlayer","registerBackgroundEventHandler","factory","AppRegistry","registerHeadlessTask","type","Event","QueueChanged","setImmediate","addEventListener","event","listener","addListener","play","pause","stop","seekTo","position","seekBy","offset","skipToNext","skipToPrevious","skipToIndex","index","retry","setPlaybackSpeed","speed","setVolume","volume","setMediaItem","mediaItem","setMediaItems","mediaItems","startIndex","map","addMediaItem","addMediaItems","insertMediaItem","insertMediaItems","removeMediaItem","removeMediaItems","fromIndex","toIndex","clear","clearCache","replaceMediaItem","moveMediaItem","updateMetadata","metadata","getPlaybackState","isPlaying","getProgress","result","duration","buffered","cached","getPlaybackSpeed","getVolume","getActiveMediaItem","getActiveMediaItemIndex","getQueue","getRepeatMode","isShuffleEnabled","setCommands","commands","setRepeatMode","mode","setShuffleEnabled","enabled","updateProgressSyncHeaders","headers","resolveBrowseItem","children","setBrowseTree","categories","cat","items","sleepAfterTime","seconds","fadeOutSeconds","sleepAfterMediaItemAtIndex","resolvedIndex","getSleepTimer","cancelSleepTimer","destroy"],"sourceRoot":"../../src","sources":["audio.ts"],"mappings":"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","ignoreList":[]}
@@ -353,23 +353,39 @@ export function updateProgressSyncHeaders(headers) {
353
353
 
354
354
  // ─── Browse Tree ─────────────────────────────────────
355
355
 
356
+ function resolveBrowseItem(item) {
357
+ return {
358
+ ...item,
359
+ ...(item.url != null ? {
360
+ url: resolveUrl(item.url)
361
+ } : {}),
362
+ ...(item.artworkUrl != null ? {
363
+ artworkUrl: resolveUrl(item.artworkUrl)
364
+ } : {}),
365
+ ...(item.children != null ? {
366
+ children: item.children.map(resolveBrowseItem)
367
+ } : {})
368
+ };
369
+ }
370
+
356
371
  /**
357
372
  * Set the media browse tree for Android Auto and CarPlay.
358
373
  * Each category becomes a top-level browsable folder (Android Auto) or tab (CarPlay);
359
- * its items are playable leaves.
374
+ * its items can be playable tracks or browsable containers with children.
360
375
  *
361
- * When a user selects an item, the native player loads and plays it
362
- * without JS intervention.
376
+ * When a user selects a playable item, the native player loads its siblings
377
+ * as the queue and starts playback without JS intervention.
363
378
  *
364
379
  * @remarks
365
380
  * - On CarPlay, a maximum of 4 tabs are shown. If more than 4 categories are provided,
366
381
  * the first 3 become tabs and the rest are grouped under a "More" tab.
382
+ * - Maximum nesting depth: 4 levels (matching CarPlay's navigation stack limit).
367
383
  * - Call again to update the tree (e.g. after loading new content)
368
384
  */
369
385
  export function setBrowseTree(categories) {
370
386
  const resolved = categories.map(cat => ({
371
387
  ...cat,
372
- items: cat.items.map(resolveMediaItem)
388
+ items: cat.items.map(resolveBrowseItem)
373
389
  }));
374
390
  TrackPlayer.setBrowseTree(resolved);
375
391
  }
@@ -1 +1 @@
1
- {"version":3,"names":["AppRegistry","Image","NativeEventEmitter","NativeModules","Platform","DEFAULT_PLAYER_CONFIG","DEFAULT_ANDROID_PLAYER_CONFIG","DEFAULT_CACHE_CONFIG","Event","isTurboModuleEnabled","global","__turboModuleProxy","TrackPlayerModule","require","default","TrackPlayer","Proxy","get","Error","select","ios","NativeModule","OS","emitter","isPlayerSetup","resolveUrl","url","resolved","resolveAssetSource","uri","resolveMediaItem","item","artworkUrl","normalizePlayerConfig","options","android","cache","undefined","contentType","handleAudioBecomingNoisy","progressSync","setupPlayer","registerBackgroundEventHandler","factory","registerHeadlessTask","type","QueueChanged","setImmediate","addEventListener","event","listener","addListener","play","pause","stop","seekTo","position","seekBy","offset","skipToNext","skipToPrevious","skipToIndex","index","retry","setPlaybackSpeed","speed","setVolume","volume","setMediaItem","mediaItem","setMediaItems","mediaItems","startIndex","map","addMediaItem","addMediaItems","insertMediaItem","insertMediaItems","removeMediaItem","removeMediaItems","fromIndex","toIndex","clear","clearCache","replaceMediaItem","moveMediaItem","updateMetadata","metadata","getPlaybackState","isPlaying","getProgress","result","duration","buffered","cached","getPlaybackSpeed","getVolume","getActiveMediaItem","getActiveMediaItemIndex","getQueue","getRepeatMode","isShuffleEnabled","setCommands","commands","setRepeatMode","mode","setShuffleEnabled","enabled","updateProgressSyncHeaders","headers","setBrowseTree","categories","cat","items","sleepAfterTime","seconds","fadeOutSeconds","sleepAfterMediaItemAtIndex","resolvedIndex","getSleepTimer","cancelSleepTimer","destroy"],"sourceRoot":"../../src","sources":["audio.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["AppRegistry","Image","NativeEventEmitter","NativeModules","Platform","DEFAULT_PLAYER_CONFIG","DEFAULT_ANDROID_PLAYER_CONFIG","DEFAULT_CACHE_CONFIG","Event","isTurboModuleEnabled","global","__turboModuleProxy","TrackPlayerModule","require","default","TrackPlayer","Proxy","get","Error","select","ios","NativeModule","OS","emitter","isPlayerSetup","resolveUrl","url","resolved","resolveAssetSource","uri","resolveMediaItem","item","artworkUrl","normalizePlayerConfig","options","android","cache","undefined","contentType","handleAudioBecomingNoisy","progressSync","setupPlayer","registerBackgroundEventHandler","factory","registerHeadlessTask","type","QueueChanged","setImmediate","addEventListener","event","listener","addListener","play","pause","stop","seekTo","position","seekBy","offset","skipToNext","skipToPrevious","skipToIndex","index","retry","setPlaybackSpeed","speed","setVolume","volume","setMediaItem","mediaItem","setMediaItems","mediaItems","startIndex","map","addMediaItem","addMediaItems","insertMediaItem","insertMediaItems","removeMediaItem","removeMediaItems","fromIndex","toIndex","clear","clearCache","replaceMediaItem","moveMediaItem","updateMetadata","metadata","getPlaybackState","isPlaying","getProgress","result","duration","buffered","cached","getPlaybackSpeed","getVolume","getActiveMediaItem","getActiveMediaItemIndex","getQueue","getRepeatMode","isShuffleEnabled","setCommands","commands","setRepeatMode","mode","setShuffleEnabled","enabled","updateProgressSyncHeaders","headers","resolveBrowseItem","children","setBrowseTree","categories","cat","items","sleepAfterTime","seconds","fadeOutSeconds","sleepAfterMediaItemAtIndex","resolvedIndex","getSleepTimer","cancelSleepTimer","destroy"],"sourceRoot":"../../src","sources":["audio.ts"],"mappings":"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","ignoreList":[]}
@@ -139,14 +139,15 @@ export declare function updateProgressSyncHeaders(headers: Record<string, string
139
139
  /**
140
140
  * Set the media browse tree for Android Auto and CarPlay.
141
141
  * Each category becomes a top-level browsable folder (Android Auto) or tab (CarPlay);
142
- * its items are playable leaves.
142
+ * its items can be playable tracks or browsable containers with children.
143
143
  *
144
- * When a user selects an item, the native player loads and plays it
145
- * without JS intervention.
144
+ * When a user selects a playable item, the native player loads its siblings
145
+ * as the queue and starts playback without JS intervention.
146
146
  *
147
147
  * @remarks
148
148
  * - On CarPlay, a maximum of 4 tabs are shown. If more than 4 categories are provided,
149
149
  * the first 3 become tabs and the rest are grouped under a "More" tab.
150
+ * - Maximum nesting depth: 4 levels (matching CarPlay's navigation stack limit).
150
151
  * - Call again to update the tree (e.g. after loading new content)
151
152
  */
152
153
  export declare function setBrowseTree(categories: BrowseCategory[]): void;
@@ -1 +1 @@
1
- {"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../../src/audio.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAML,KAAK,mBAAmB,EACzB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,UAAU,EAIhB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,EACL,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAuD9C,MAAM,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AA2B/E;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,YAAiB,GAAG,IAAI,CAS5D;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,MAAM,sBAAsB,GACpC,IAAI,CAQN;AAID,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,KAAK,EAC9C,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,SAAS,KAAK,GAC1C,MAAM,IAAI,GACV,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,IAAI,GAC1C,mBAAmB,CAErB;AAID,sBAAsB;AACtB,wBAAgB,IAAI,IAAI,IAAI,CAE3B;AAED,sBAAsB;AACtB,wBAAgB,KAAK,IAAI,IAAI,CAE5B;AAED,4DAA4D;AAC5D,wBAAgB,IAAI,IAAI,IAAI,CAE3B;AAED,qCAAqC;AACrC,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,gEAAgE;AAChE,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,0CAA0C;AAC1C,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED,6CAA6C;AAC7C,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,KAAK,IAAI,IAAI,CAE5B;AAED,6CAA6C;AAC7C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,0CAA0C;AAC1C,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9C;AAID;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAEvD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,UAAU,SAAI,GAAG,IAAI,CAE3E;AAED,mDAAmD;AACnD,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAEvD;AAED,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI,CAE3D;AAED,8CAA8C;AAC9C,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAEzE;AAED,sDAAsD;AACtD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI,CAE7E;AAED,gDAAgD;AAChD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEnD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAEzE;AAED,4CAA4C;AAC5C,wBAAgB,KAAK,IAAI,IAAI,CAE5B;AAED,qFAAqF;AACrF,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAE1E;AAED,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE;IACR,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,QAAQ,CAAC;CACvB,GACA,IAAI,CAMN;AAID,uCAAuC;AACvC,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED,8DAA8D;AAC9D,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,kFAAkF;AAClF,wBAAgB,WAAW,IAAI,QAAQ,CAQtC;AAED,uCAAuC;AACvC,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,mDAAmD;AACnD,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,6DAA6D;AAC7D,wBAAgB,kBAAkB,IAAI,SAAS,GAAG,IAAI,CAErD;AAED,0EAA0E;AAC1E,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,IAAI,CAEvD;AAED,yCAAyC;AACzC,wBAAgB,QAAQ,IAAI,SAAS,EAAE,CAEtC;AAED,oCAAoC;AACpC,wBAAgB,aAAa,IAAI,UAAU,CAE1C;AAED,kCAAkC;AAClC,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAID;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAE/D;AAED,2BAA2B;AAC3B,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAEpD;AAED,iCAAiC;AACjC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAExD;AAID,oEAAoE;AACpE,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,IAAI,CAEN;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,IAAI,CAMhE;AAID;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GACpC,IAAI,CAEN;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAG/D;AAED;;GAEG;AACH,wBAAgB,aAAa,IACzB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB,GACD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf,GACD,IAAI,CAIP;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAID;;;GAGG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAG9B"}
1
+ {"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../../src/audio.ts"],"names":[],"mappings":"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"}
@@ -2,17 +2,47 @@
2
2
  * Copyright (c) Double Symmetry GmbH
3
3
  * Commercial use requires a license. See https://rntp.dev/pricing
4
4
  */
5
- import type { MediaItem } from './MediaItem';
5
+ import type { MediaUrl } from './MediaItem';
6
6
  /**
7
- * A category in the media browse tree shown in Android Auto / media browsers.
8
- * Each category appears as a top-level tab/section; its items are playable leaves.
7
+ * An item in the browse tree either a playable track or a browsable container.
8
+ *
9
+ * - `url` present → playable track (leaf node)
10
+ * - `children` present (no `url`) → browsable container (tapping drills down)
11
+ * - `url` takes precedence if both are present
12
+ *
13
+ * Maximum nesting depth: 4 levels (matching CarPlay's navigation stack limit).
14
+ */
15
+ export interface BrowseItem {
16
+ /** Unique identifier for this item. */
17
+ mediaId: string;
18
+ /** Display title. */
19
+ title: string;
20
+ /** Artist or subtitle. */
21
+ artist?: string;
22
+ /** Artwork image URL. */
23
+ artworkUrl?: MediaUrl;
24
+ /** Audio source URL. If present, this item is playable. */
25
+ url?: MediaUrl;
26
+ /** Duration hint in seconds. */
27
+ duration?: number;
28
+ /** Whether this is a live stream. */
29
+ isLive?: boolean;
30
+ /** MIME type hint for format detection. */
31
+ mimeType?: string;
32
+ /** Child items. If present (and no `url`), this item is browsable. */
33
+ children?: BrowseItem[];
34
+ }
35
+ /**
36
+ * A top-level category in the browse tree.
37
+ * On Android Auto, each category is a browsable folder.
38
+ * On CarPlay, each category is a tab (max 4; overflow creates a "More" tab).
9
39
  */
10
40
  export interface BrowseCategory {
11
41
  /** Unique identifier for this category. */
12
42
  mediaId: string;
13
43
  /** Display title for the category (e.g. "Albums", "Podcasts"). */
14
44
  title: string;
15
- /** Playable media items within this category. */
16
- items: MediaItem[];
45
+ /** Items within this category — can be playable tracks or browsable containers. */
46
+ items: BrowseItem[];
17
47
  }
18
48
  //# sourceMappingURL=BrowseTree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowseTree.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/BrowseTree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB"}
1
+ {"version":3,"file":"BrowseTree.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/BrowseTree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,UAAU,CAAC,EAAE,QAAQ,CAAC;IAGtB,2DAA2D;IAC3D,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rntp/player",
3
- "version": "5.0.0-beta.3",
3
+ "version": "5.0.0-beta.4",
4
4
  "description": "The premium audio player for React Native",
5
5
  "source": "./src/index.tsx",
6
6
  "react-native": "./src/index.tsx",
package/src/audio.ts CHANGED
@@ -16,6 +16,7 @@ import {
16
16
  type PlayerConfig,
17
17
  type RemoteControlConfig,
18
18
  type BrowseCategory,
19
+ type BrowseItem,
19
20
  type MediaItem,
20
21
  type MediaUrl,
21
22
  type Progress,
@@ -412,23 +413,37 @@ export function updateProgressSyncHeaders(
412
413
 
413
414
  // ─── Browse Tree ─────────────────────────────────────
414
415
 
416
+ function resolveBrowseItem(item: BrowseItem): BrowseItem {
417
+ return {
418
+ ...item,
419
+ ...(item.url != null ? { url: resolveUrl(item.url) } : {}),
420
+ ...(item.artworkUrl != null
421
+ ? { artworkUrl: resolveUrl(item.artworkUrl) }
422
+ : {}),
423
+ ...(item.children != null
424
+ ? { children: item.children.map(resolveBrowseItem) }
425
+ : {}),
426
+ };
427
+ }
428
+
415
429
  /**
416
430
  * Set the media browse tree for Android Auto and CarPlay.
417
431
  * Each category becomes a top-level browsable folder (Android Auto) or tab (CarPlay);
418
- * its items are playable leaves.
432
+ * its items can be playable tracks or browsable containers with children.
419
433
  *
420
- * When a user selects an item, the native player loads and plays it
421
- * without JS intervention.
434
+ * When a user selects a playable item, the native player loads its siblings
435
+ * as the queue and starts playback without JS intervention.
422
436
  *
423
437
  * @remarks
424
438
  * - On CarPlay, a maximum of 4 tabs are shown. If more than 4 categories are provided,
425
439
  * the first 3 become tabs and the rest are grouped under a "More" tab.
440
+ * - Maximum nesting depth: 4 levels (matching CarPlay's navigation stack limit).
426
441
  * - Call again to update the tree (e.g. after loading new content)
427
442
  */
428
443
  export function setBrowseTree(categories: BrowseCategory[]): void {
429
444
  const resolved = categories.map((cat) => ({
430
445
  ...cat,
431
- items: cat.items.map(resolveMediaItem),
446
+ items: cat.items.map(resolveBrowseItem),
432
447
  }));
433
448
  TrackPlayer.setBrowseTree(resolved);
434
449
  }
@@ -3,17 +3,52 @@
3
3
  * Commercial use requires a license. See https://rntp.dev/pricing
4
4
  */
5
5
 
6
- import type { MediaItem } from './MediaItem';
6
+ import type { MediaUrl } from './MediaItem';
7
7
 
8
8
  /**
9
- * A category in the media browse tree shown in Android Auto / media browsers.
10
- * Each category appears as a top-level tab/section; its items are playable leaves.
9
+ * An item in the browse tree either a playable track or a browsable container.
10
+ *
11
+ * - `url` present → playable track (leaf node)
12
+ * - `children` present (no `url`) → browsable container (tapping drills down)
13
+ * - `url` takes precedence if both are present
14
+ *
15
+ * Maximum nesting depth: 4 levels (matching CarPlay's navigation stack limit).
16
+ */
17
+ export interface BrowseItem {
18
+ /** Unique identifier for this item. */
19
+ mediaId: string;
20
+ /** Display title. */
21
+ title: string;
22
+ /** Artist or subtitle. */
23
+ artist?: string;
24
+ /** Artwork image URL. */
25
+ artworkUrl?: MediaUrl;
26
+
27
+ // Playable fields
28
+ /** Audio source URL. If present, this item is playable. */
29
+ url?: MediaUrl;
30
+ /** Duration hint in seconds. */
31
+ duration?: number;
32
+ /** Whether this is a live stream. */
33
+ isLive?: boolean;
34
+ /** MIME type hint for format detection. */
35
+ mimeType?: string;
36
+
37
+ // Browsable fields
38
+ /** Child items. If present (and no `url`), this item is browsable. */
39
+ children?: BrowseItem[];
40
+ }
41
+
42
+ /**
43
+ * A top-level category in the browse tree.
44
+ * On Android Auto, each category is a browsable folder.
45
+ * On CarPlay, each category is a tab (max 4; overflow creates a "More" tab).
11
46
  */
12
47
  export interface BrowseCategory {
13
48
  /** Unique identifier for this category. */
14
49
  mediaId: string;
15
50
  /** Display title for the category (e.g. "Albums", "Podcasts"). */
16
51
  title: string;
17
- /** Playable media items within this category. */
18
- items: MediaItem[];
52
+ /** Items within this category — can be playable tracks or browsable containers. */
53
+ items: BrowseItem[];
19
54
  }