@rntp/player 5.0.0 → 5.1.0
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.
- package/android/src/main/java/com/doublesymmetry/trackplayer/HeaderInjectingDataSourceFactory.kt +5 -1
- package/android/src/main/java/com/doublesymmetry/trackplayer/TrackPlayerModule.kt +43 -3
- package/android/src/main/java/com/doublesymmetry/trackplayer/models/EmitEventType.kt +30 -0
- package/android/src/main/java/com/doublesymmetry/trackplayer/models/MetadataApplier.kt +59 -0
- package/android/src/main/java/com/doublesymmetry/trackplayer/models/PlayerConfig.kt +10 -0
- package/android/src/main/java/com/doublesymmetry/trackplayer/models/StreamMetadataExtractor.kt +98 -0
- package/android/src/main/java/com/doublesymmetry/trackplayer/models/TrackPlayerMediaItem.kt +20 -8
- package/android/src/test/java/com/doublesymmetry/trackplayer/models/EmitEventTest.kt +33 -0
- package/android/src/test/java/com/doublesymmetry/trackplayer/models/MetadataApplierTest.kt +243 -0
- package/android/src/test/java/com/doublesymmetry/trackplayer/models/PlayerConfigTest.kt +33 -0
- package/android/src/test/java/com/doublesymmetry/trackplayer/models/StreamMetadataExtractorTest.kt +254 -0
- package/android/src/test/java/com/doublesymmetry/trackplayer/models/TrackPlayerMediaItemTest.kt +202 -0
- package/ios/TrackPlayer.swift +49 -2
- package/ios/models/EmitEvent.swift +28 -0
- package/ios/models/MediaItem.swift +8 -3
- package/ios/tests/AVPlayerEngineIntegrationTests.swift +13 -4
- package/lib/commonjs/audio.js +1 -0
- package/lib/commonjs/audio.js.map +1 -1
- package/lib/commonjs/events/MediaMetadataChanged.js +2 -0
- package/lib/commonjs/events/MediaMetadataChanged.js.map +1 -0
- package/lib/commonjs/events/index.js +13 -0
- package/lib/commonjs/events/index.js.map +1 -1
- package/lib/commonjs/hooks/useActiveMediaItem.js +9 -3
- package/lib/commonjs/hooks/useActiveMediaItem.js.map +1 -1
- package/lib/commonjs/hooks/useProgress.js.map +1 -1
- package/lib/commonjs/interfaces/PlayerConfig.js +1 -0
- package/lib/commonjs/interfaces/PlayerConfig.js.map +1 -1
- package/lib/module/audio.js +1 -0
- package/lib/module/audio.js.map +1 -1
- package/lib/module/events/MediaMetadataChanged.js +2 -0
- package/lib/module/events/MediaMetadataChanged.js.map +1 -0
- package/lib/module/events/index.js +2 -0
- package/lib/module/events/index.js.map +1 -1
- package/lib/module/hooks/useActiveMediaItem.js +9 -3
- package/lib/module/hooks/useActiveMediaItem.js.map +1 -1
- package/lib/module/hooks/useProgress.js.map +1 -1
- package/lib/module/interfaces/PlayerConfig.js +1 -0
- package/lib/module/interfaces/PlayerConfig.js.map +1 -1
- package/lib/typescript/src/audio.d.ts.map +1 -1
- package/lib/typescript/src/events/MediaMetadataChanged.d.ts +31 -0
- package/lib/typescript/src/events/MediaMetadataChanged.d.ts.map +1 -0
- package/lib/typescript/src/events/MetadataReceived.d.ts +15 -0
- package/lib/typescript/src/events/MetadataReceived.d.ts.map +1 -1
- package/lib/typescript/src/events/index.d.ts +4 -0
- package/lib/typescript/src/events/index.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useActiveMediaItem.d.ts +8 -2
- package/lib/typescript/src/hooks/useActiveMediaItem.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useProgress.d.ts.map +1 -1
- package/lib/typescript/src/interfaces/MediaItem.d.ts +15 -0
- package/lib/typescript/src/interfaces/MediaItem.d.ts.map +1 -1
- package/lib/typescript/src/interfaces/PlayerConfig.d.ts +15 -0
- package/lib/typescript/src/interfaces/PlayerConfig.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/audio.ts +3 -0
- package/src/events/MediaMetadataChanged.ts +31 -0
- package/src/events/MetadataReceived.ts +15 -0
- package/src/events/index.ts +4 -0
- package/src/hooks/useActiveMediaItem.ts +9 -3
- package/src/hooks/useProgress.ts +1 -1
- package/src/interfaces/MediaItem.ts +15 -0
- package/src/interfaces/PlayerConfig.ts +16 -0
package/android/src/test/java/com/doublesymmetry/trackplayer/models/TrackPlayerMediaItemTest.kt
CHANGED
|
@@ -26,6 +26,40 @@ class TrackPlayerMediaItemTest {
|
|
|
26
26
|
// Arguments.createMap() and createArray() call into native code; replace with JavaOnlyMap.
|
|
27
27
|
mockkStatic(Arguments::class)
|
|
28
28
|
every { Arguments.createMap() } answers { JavaOnlyMap() }
|
|
29
|
+
// toBundle / fromBundle traverse the map with native helpers; for tests, hand-roll
|
|
30
|
+
// a small subset that covers the JSON-shaped values our extras use.
|
|
31
|
+
every { Arguments.toBundle(any()) } answers {
|
|
32
|
+
val src = firstArg<ReadableMap?>() ?: return@answers null
|
|
33
|
+
val bundle = android.os.Bundle()
|
|
34
|
+
val it = src.keySetIterator()
|
|
35
|
+
while (it.hasNextKey()) {
|
|
36
|
+
val k = it.nextKey()
|
|
37
|
+
when (src.getType(k)) {
|
|
38
|
+
ReadableType.Null -> bundle.putString(k, null)
|
|
39
|
+
ReadableType.Boolean -> bundle.putBoolean(k, src.getBoolean(k))
|
|
40
|
+
ReadableType.Number -> bundle.putDouble(k, src.getDouble(k))
|
|
41
|
+
ReadableType.String -> bundle.putString(k, src.getString(k))
|
|
42
|
+
else -> {} // skip nested maps/arrays for these tests
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
bundle
|
|
46
|
+
}
|
|
47
|
+
every { Arguments.fromBundle(any()) } answers {
|
|
48
|
+
// Arguments.fromBundle(Bundle): WritableMap is non-null in current RN.
|
|
49
|
+
val src = firstArg<android.os.Bundle>()
|
|
50
|
+
val map = JavaOnlyMap()
|
|
51
|
+
for (k in src.keySet()) {
|
|
52
|
+
when (val v = src.get(k)) {
|
|
53
|
+
null -> map.putNull(k)
|
|
54
|
+
is Boolean -> map.putBoolean(k, v)
|
|
55
|
+
is Double -> map.putDouble(k, v)
|
|
56
|
+
is Int -> map.putInt(k, v)
|
|
57
|
+
is String -> map.putString(k, v)
|
|
58
|
+
else -> {} // skip nested types for these tests
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
map
|
|
62
|
+
}
|
|
29
63
|
}
|
|
30
64
|
|
|
31
65
|
@After
|
|
@@ -377,4 +411,172 @@ class TrackPlayerMediaItemTest {
|
|
|
377
411
|
assertEquals("cast-item-id", item.url)
|
|
378
412
|
assertEquals("Cast Track", item.title)
|
|
379
413
|
}
|
|
414
|
+
|
|
415
|
+
// ---- extras (app-defined payload) ----
|
|
416
|
+
|
|
417
|
+
@Test
|
|
418
|
+
fun `fromReadableMap parses extras when present`() {
|
|
419
|
+
val extrasMap = mockk<ReadableMap>(relaxed = true) {
|
|
420
|
+
every { keySetIterator() } returns mockk {
|
|
421
|
+
every { hasNextKey() } returnsMany listOf(true, true, true, false)
|
|
422
|
+
every { nextKey() } returnsMany listOf("source", "isrc", "weight")
|
|
423
|
+
}
|
|
424
|
+
every { getType("source") } returns ReadableType.String
|
|
425
|
+
every { getString("source") } returns "recommendations"
|
|
426
|
+
every { getType("isrc") } returns ReadableType.String
|
|
427
|
+
every { getString("isrc") } returns "USRC17607839"
|
|
428
|
+
every { getType("weight") } returns ReadableType.Number
|
|
429
|
+
every { getDouble("weight") } returns 0.85
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
val map = mockk<ReadableMap>(relaxed = true) {
|
|
433
|
+
every { hasKey("url") } returns true
|
|
434
|
+
every { getType("url") } returns mockk { every { name } returns "String" }
|
|
435
|
+
every { getString("url") } returns "https://example.com/track.mp3"
|
|
436
|
+
every { hasKey("mediaId") } returns false
|
|
437
|
+
every { hasKey("title") } returns false
|
|
438
|
+
every { hasKey("artist") } returns false
|
|
439
|
+
every { hasKey("albumTitle") } returns false
|
|
440
|
+
every { hasKey("artworkUrl") } returns false
|
|
441
|
+
every { hasKey("duration") } returns false
|
|
442
|
+
every { hasKey("isLive") } returns false
|
|
443
|
+
every { hasKey("mimeType") } returns false
|
|
444
|
+
every { hasKey("extras") } returns true
|
|
445
|
+
every { getMap("extras") } returns extrasMap
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
val item = TrackPlayerMediaItem.fromReadableMap(map)
|
|
449
|
+
|
|
450
|
+
assertNotNull(item.extras)
|
|
451
|
+
assertEquals("recommendations", item.extras!!.getString("source"))
|
|
452
|
+
assertEquals("USRC17607839", item.extras!!.getString("isrc"))
|
|
453
|
+
assertEquals(0.85, item.extras!!.getDouble("weight"), 0.001)
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
@Test
|
|
457
|
+
fun `fromReadableMap leaves extras null when absent`() {
|
|
458
|
+
val map = mockk<ReadableMap>(relaxed = true) {
|
|
459
|
+
every { hasKey("url") } returns true
|
|
460
|
+
every { getType("url") } returns mockk { every { name } returns "String" }
|
|
461
|
+
every { getString("url") } returns "https://example.com/track.mp3"
|
|
462
|
+
every { hasKey("mediaId") } returns false
|
|
463
|
+
every { hasKey("title") } returns false
|
|
464
|
+
every { hasKey("artist") } returns false
|
|
465
|
+
every { hasKey("albumTitle") } returns false
|
|
466
|
+
every { hasKey("artworkUrl") } returns false
|
|
467
|
+
every { hasKey("duration") } returns false
|
|
468
|
+
every { hasKey("isLive") } returns false
|
|
469
|
+
every { hasKey("mimeType") } returns false
|
|
470
|
+
every { hasKey("extras") } returns false
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
val item = TrackPlayerMediaItem.fromReadableMap(map)
|
|
474
|
+
assertNull(item.extras)
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
@Test
|
|
478
|
+
fun `asMediaItem stores extras under a namespaced key without polluting known fields`() {
|
|
479
|
+
val payload = android.os.Bundle().apply {
|
|
480
|
+
putString("source", "recommendations")
|
|
481
|
+
putString("isrc", "USRC17607839")
|
|
482
|
+
}
|
|
483
|
+
val item = TrackPlayerMediaItem(
|
|
484
|
+
url = "https://example.com/track.mp3",
|
|
485
|
+
duration = 120.0,
|
|
486
|
+
isLive = false,
|
|
487
|
+
extras = payload,
|
|
488
|
+
)
|
|
489
|
+
|
|
490
|
+
val mediaItem = item.asMediaItem()
|
|
491
|
+
val metadataExtras = mediaItem.mediaMetadata.extras
|
|
492
|
+
|
|
493
|
+
assertNotNull(metadataExtras)
|
|
494
|
+
// Known fields still live at the top level of the metadata extras bundle…
|
|
495
|
+
assertEquals(120.0, metadataExtras!!.getDouble("duration"), 0.001)
|
|
496
|
+
assertFalse(metadataExtras.getBoolean("isLive"))
|
|
497
|
+
// …and the app payload is nested under our namespaced key.
|
|
498
|
+
val nested = metadataExtras.getBundle("rntp.extras")
|
|
499
|
+
assertNotNull(nested)
|
|
500
|
+
assertEquals("recommendations", nested!!.getString("source"))
|
|
501
|
+
assertEquals("USRC17607839", nested.getString("isrc"))
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
@Test
|
|
505
|
+
fun `asMediaItem omits extras bundle when no extras provided`() {
|
|
506
|
+
val item = TrackPlayerMediaItem(
|
|
507
|
+
url = "https://example.com/track.mp3",
|
|
508
|
+
)
|
|
509
|
+
|
|
510
|
+
val mediaItem = item.asMediaItem()
|
|
511
|
+
val metadataExtras = mediaItem.mediaMetadata.extras
|
|
512
|
+
|
|
513
|
+
// The metadata extras bundle is always created (for duration/isLive),
|
|
514
|
+
// but our namespaced key should be absent.
|
|
515
|
+
assertNotNull(metadataExtras)
|
|
516
|
+
assertFalse(metadataExtras!!.containsKey("rntp.extras"))
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
@Test
|
|
520
|
+
fun `toWritableMap includes extras when present`() {
|
|
521
|
+
val payload = android.os.Bundle().apply {
|
|
522
|
+
putString("source", "recommendations")
|
|
523
|
+
putDouble("weight", 0.85)
|
|
524
|
+
}
|
|
525
|
+
val item = TrackPlayerMediaItem(
|
|
526
|
+
url = "https://example.com/track.mp3",
|
|
527
|
+
extras = payload,
|
|
528
|
+
)
|
|
529
|
+
|
|
530
|
+
val map = item.toWritableMap()
|
|
531
|
+
assertTrue(map.hasKey("extras"))
|
|
532
|
+
val extras = map.getMap("extras")
|
|
533
|
+
assertNotNull(extras)
|
|
534
|
+
assertEquals("recommendations", extras!!.getString("source"))
|
|
535
|
+
assertEquals(0.85, extras.getDouble("weight"), 0.001)
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
@Test
|
|
539
|
+
fun `toWritableMap omits extras when absent`() {
|
|
540
|
+
val item = TrackPlayerMediaItem(
|
|
541
|
+
url = "https://example.com/track.mp3",
|
|
542
|
+
)
|
|
543
|
+
|
|
544
|
+
val map = item.toWritableMap()
|
|
545
|
+
assertFalse(map.hasKey("extras"))
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
@Test
|
|
549
|
+
fun `extras survive full round-trip through Media3 MediaItem`() {
|
|
550
|
+
val payload = android.os.Bundle().apply {
|
|
551
|
+
putString("source", "recommendations")
|
|
552
|
+
putString("isrc", "USRC17607839")
|
|
553
|
+
putDouble("weight", 0.85)
|
|
554
|
+
putBoolean("explicit", true)
|
|
555
|
+
}
|
|
556
|
+
val original = TrackPlayerMediaItem(
|
|
557
|
+
mediaId = "t-1",
|
|
558
|
+
url = "https://example.com/track.mp3",
|
|
559
|
+
title = "Song",
|
|
560
|
+
duration = 60.0,
|
|
561
|
+
extras = payload,
|
|
562
|
+
)
|
|
563
|
+
|
|
564
|
+
val restored = TrackPlayerMediaItem.fromMediaItem(original.asMediaItem())
|
|
565
|
+
|
|
566
|
+
assertEquals("t-1", restored.mediaId)
|
|
567
|
+
assertEquals("Song", restored.title)
|
|
568
|
+
assertEquals(60.0, restored.duration!!, 0.001)
|
|
569
|
+
assertNotNull(restored.extras)
|
|
570
|
+
assertEquals("recommendations", restored.extras!!.getString("source"))
|
|
571
|
+
assertEquals("USRC17607839", restored.extras!!.getString("isrc"))
|
|
572
|
+
assertEquals(0.85, restored.extras!!.getDouble("weight"), 0.001)
|
|
573
|
+
assertTrue(restored.extras!!.getBoolean("explicit"))
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
@Test
|
|
577
|
+
fun `fromMediaItem leaves extras null when source has none`() {
|
|
578
|
+
val original = TrackPlayerMediaItem(url = "https://example.com/track.mp3")
|
|
579
|
+
val restored = TrackPlayerMediaItem.fromMediaItem(original.asMediaItem())
|
|
580
|
+
assertNull(restored.extras)
|
|
581
|
+
}
|
|
380
582
|
}
|
package/ios/TrackPlayer.swift
CHANGED
|
@@ -20,6 +20,16 @@ class TrackPlayer: RCTEventEmitter {
|
|
|
20
20
|
private var progressSyncTimer: Timer?
|
|
21
21
|
private var progressSyncIntervalSeconds: Double = 0
|
|
22
22
|
private var progressSyncHttpUrl: String?
|
|
23
|
+
// When true (default), incoming stream metadata (ICY/ID3) is written back
|
|
24
|
+
// into the queued MediaItem so getActiveTrack() and MPNowPlayingInfoCenter
|
|
25
|
+
// reflect the live title. When false, only the MetadataReceived event fires
|
|
26
|
+
// and apps update the queue themselves via TrackPlayer.updateMetadata(…).
|
|
27
|
+
private var autoUpdateMetadataFromStream: Bool = true
|
|
28
|
+
// Tracks the last-emitted effective metadata so we don't double-emit
|
|
29
|
+
// MediaMetadataChanged when the same merged view lands twice (e.g. an
|
|
30
|
+
// ICY frame with no actual changes, or a manual updateMetadata that
|
|
31
|
+
// re-applies identical fields).
|
|
32
|
+
private var lastEmittedMediaMetadata: MediaMetadataChangedEvent?
|
|
23
33
|
private var progressSyncHttpHeaders: [String: String]?
|
|
24
34
|
|
|
25
35
|
private var sleepTimerController: SleepTimerController?
|
|
@@ -76,6 +86,7 @@ class TrackPlayer: RCTEventEmitter {
|
|
|
76
86
|
audioCache = cache
|
|
77
87
|
|
|
78
88
|
let handleNoisy = config["handleAudioBecomingNoisy"] as? Bool ?? true
|
|
89
|
+
autoUpdateMetadataFromStream = config["autoUpdateMetadataFromStream"] as? Bool ?? true
|
|
79
90
|
player = AudioPlayer(handleAudioBecomingNoisy: handleNoisy, cache: cache)
|
|
80
91
|
player.preloadWindow = preloadWindow
|
|
81
92
|
bindPlayerCallbacks()
|
|
@@ -312,6 +323,12 @@ class TrackPlayer: RCTEventEmitter {
|
|
|
312
323
|
)
|
|
313
324
|
|
|
314
325
|
player.updateMetadata(at: idx, with: updated)
|
|
326
|
+
// Only emit MediaMetadataChanged for the *active* item — updating a
|
|
327
|
+
// non-current queue entry's metadata changes its stored fields but
|
|
328
|
+
// doesn't affect what `getActiveMediaItem` returns.
|
|
329
|
+
if idx == player.currentIndex {
|
|
330
|
+
emitMediaMetadataChangedIfNeeded(for: updated)
|
|
331
|
+
}
|
|
315
332
|
}
|
|
316
333
|
|
|
317
334
|
// MARK: - State Getters (sync)
|
|
@@ -540,14 +557,23 @@ class TrackPlayer: RCTEventEmitter {
|
|
|
540
557
|
let mediaItem = item as? MediaItem
|
|
541
558
|
let dict = mediaItem?.toDictionary()
|
|
542
559
|
BrowseTreeStore.shared.updateNowPlaying(mediaId: mediaItem?.mediaId)
|
|
560
|
+
// Reset dedup state on transitions so the first emit for the new item
|
|
561
|
+
// is never suppressed by a coincidental match against the previous one.
|
|
562
|
+
lastEmittedMediaMetadata = nil
|
|
543
563
|
emitEvent(event: MediaItemTransitionEvent(item: dict, index: index))
|
|
564
|
+
emitMediaMetadataChangedIfNeeded(for: mediaItem)
|
|
544
565
|
}
|
|
545
566
|
|
|
546
567
|
func handleMetadataReceived(_ metadata: StreamMetadata) {
|
|
568
|
+
// Always emit the raw stream-truth event first (mirrors Android: synchronous,
|
|
569
|
+
// pre-merge). Consumers that care about the *effective* view get the
|
|
570
|
+
// separate MediaMetadataChanged event below.
|
|
571
|
+
emitEvent(event: MetadataReceivedEvent(metadata: metadata))
|
|
572
|
+
|
|
573
|
+
guard autoUpdateMetadataFromStream else { return }
|
|
547
574
|
let idx = player.currentIndex
|
|
548
575
|
guard idx >= 0 && idx < player.items.count,
|
|
549
576
|
let existing = player.items[idx] as? MediaItem else { return }
|
|
550
|
-
|
|
551
577
|
let updated = existing.withMetadata(
|
|
552
578
|
title: metadata.title.map { .some($0) },
|
|
553
579
|
artist: metadata.artist.map { .some($0) },
|
|
@@ -555,7 +581,28 @@ class TrackPlayer: RCTEventEmitter {
|
|
|
555
581
|
artworkUrl: metadata.artworkUri.flatMap { MediaURL(object: $0) }.map { .some($0) }
|
|
556
582
|
)
|
|
557
583
|
player.updateMetadata(at: idx, with: updated)
|
|
558
|
-
|
|
584
|
+
emitMediaMetadataChangedIfNeeded(for: updated)
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
/// Build a MediaMetadataChanged event from a merged MediaItem and emit it,
|
|
588
|
+
/// skipping duplicate emits when the effective view is unchanged.
|
|
589
|
+
///
|
|
590
|
+
/// Note: iOS's MediaItem schema does not include `genre`, so that field
|
|
591
|
+
/// is always nil in events from this platform. Android emits it whenever
|
|
592
|
+
/// present in either the queued item or the stream.
|
|
593
|
+
private func emitMediaMetadataChangedIfNeeded(for item: MediaItem?) {
|
|
594
|
+
guard let item else { return }
|
|
595
|
+
let event = MediaMetadataChangedEvent(
|
|
596
|
+
title: item.title,
|
|
597
|
+
artist: item.artist,
|
|
598
|
+
albumTitle: item.albumTitle,
|
|
599
|
+
artworkUrl: item.artworkUrl.map { $0.isLocal ? $0.value.path : $0.value.absoluteString },
|
|
600
|
+
genre: nil
|
|
601
|
+
)
|
|
602
|
+
if event.isEmpty { return }
|
|
603
|
+
if event == lastEmittedMediaMetadata { return }
|
|
604
|
+
lastEmittedMediaMetadata = event
|
|
605
|
+
emitEvent(event: event)
|
|
559
606
|
}
|
|
560
607
|
|
|
561
608
|
// MARK: - Progress Sync
|
|
@@ -16,6 +16,7 @@ enum EmitEventType: String, CaseIterable {
|
|
|
16
16
|
case RemoteStop = "event.remote-stop"
|
|
17
17
|
case RemoteSeek = "event.remote-seek"
|
|
18
18
|
case MetadataReceived = "event.metadata-received"
|
|
19
|
+
case MediaMetadataChanged = "event.media-metadata-changed"
|
|
19
20
|
case RemoteSkipForward = "event.remote-skip-forward"
|
|
20
21
|
case RemoteSkipBackward = "event.remote-skip-backward"
|
|
21
22
|
case PlaybackProgressUpdated = "event.playback-progress-updated"
|
|
@@ -127,6 +128,33 @@ struct MetadataReceivedEvent: EmitEvent {
|
|
|
127
128
|
}
|
|
128
129
|
}
|
|
129
130
|
|
|
131
|
+
/// Effective metadata of the currently active MediaItem after any merge of
|
|
132
|
+
/// stream-derived metadata onto user-supplied fields. Mirrors Android's
|
|
133
|
+
/// `MediaMetadataChangedEvent` and the JS `Event.MediaMetadataChanged`.
|
|
134
|
+
struct MediaMetadataChangedEvent: EmitEvent, Equatable {
|
|
135
|
+
let title: String?
|
|
136
|
+
let artist: String?
|
|
137
|
+
let albumTitle: String?
|
|
138
|
+
let artworkUrl: String?
|
|
139
|
+
let genre: String?
|
|
140
|
+
|
|
141
|
+
var eventType: EmitEventType { .MediaMetadataChanged }
|
|
142
|
+
var body: [String: Any] {
|
|
143
|
+
var result: [String: Any] = [:]
|
|
144
|
+
if let title { result["title"] = title }
|
|
145
|
+
if let artist { result["artist"] = artist }
|
|
146
|
+
if let albumTitle { result["albumTitle"] = albumTitle }
|
|
147
|
+
if let artworkUrl { result["artworkUrl"] = artworkUrl }
|
|
148
|
+
if let genre { result["genre"] = genre }
|
|
149
|
+
return result
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
var isEmpty: Bool {
|
|
153
|
+
return title == nil && artist == nil && albumTitle == nil &&
|
|
154
|
+
artworkUrl == nil && genre == nil
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
130
158
|
struct RemoteSkipForwardEvent: EmitEvent {
|
|
131
159
|
let interval: Double
|
|
132
160
|
|
|
@@ -16,8 +16,9 @@ struct MediaItem {
|
|
|
16
16
|
let artworkUrl: MediaURL?
|
|
17
17
|
let duration: Double?
|
|
18
18
|
let isLiveStream: Bool?
|
|
19
|
+
let extras: [String: Any]?
|
|
19
20
|
|
|
20
|
-
init(mediaId: String, url: MediaURL, title: String?, artist: String?, albumTitle: String?, artworkUrl: MediaURL?, duration: Double? = nil, isLiveStream: Bool? = nil) {
|
|
21
|
+
init(mediaId: String, url: MediaURL, title: String?, artist: String?, albumTitle: String?, artworkUrl: MediaURL?, duration: Double? = nil, isLiveStream: Bool? = nil, extras: [String: Any]? = nil) {
|
|
21
22
|
self.mediaId = mediaId
|
|
22
23
|
self.url = url
|
|
23
24
|
self.title = title
|
|
@@ -26,6 +27,7 @@ struct MediaItem {
|
|
|
26
27
|
self.artworkUrl = artworkUrl
|
|
27
28
|
self.duration = duration
|
|
28
29
|
self.isLiveStream = isLiveStream
|
|
30
|
+
self.extras = extras
|
|
29
31
|
}
|
|
30
32
|
|
|
31
33
|
init(data: [String: Any]) {
|
|
@@ -40,8 +42,9 @@ struct MediaItem {
|
|
|
40
42
|
let artworkUrl = MediaURL(object: data["artworkUrl"])
|
|
41
43
|
let duration = data["duration"] as? Double
|
|
42
44
|
let isLiveStream = data["isLive"] as? Bool
|
|
45
|
+
let extras = data["extras"] as? [String: Any]
|
|
43
46
|
|
|
44
|
-
self.init(mediaId: mediaId, url: url, title: title, artist: artist, albumTitle: albumTitle, artworkUrl: artworkUrl, duration: duration, isLiveStream: isLiveStream)
|
|
47
|
+
self.init(mediaId: mediaId, url: url, title: title, artist: artist, albumTitle: albumTitle, artworkUrl: artworkUrl, duration: duration, isLiveStream: isLiveStream, extras: extras)
|
|
45
48
|
}
|
|
46
49
|
}
|
|
47
50
|
|
|
@@ -60,7 +63,8 @@ extension MediaItem {
|
|
|
60
63
|
albumTitle: albumTitle ?? self.albumTitle,
|
|
61
64
|
artworkUrl: artworkUrl ?? self.artworkUrl,
|
|
62
65
|
duration: self.duration,
|
|
63
|
-
isLiveStream: self.isLiveStream
|
|
66
|
+
isLiveStream: self.isLiveStream,
|
|
67
|
+
extras: self.extras
|
|
64
68
|
)
|
|
65
69
|
}
|
|
66
70
|
|
|
@@ -77,6 +81,7 @@ extension MediaItem {
|
|
|
77
81
|
}
|
|
78
82
|
if let duration = duration { dict["duration"] = duration }
|
|
79
83
|
if let isLiveStream = isLiveStream { dict["isLive"] = isLiveStream }
|
|
84
|
+
if let extras = extras { dict["extras"] = extras }
|
|
80
85
|
return dict
|
|
81
86
|
}
|
|
82
87
|
}
|
|
@@ -9,6 +9,15 @@ import XCTest
|
|
|
9
9
|
@testable import PlayerCore
|
|
10
10
|
|
|
11
11
|
final class AVPlayerEngineIntegrationTests: XCTestCase {
|
|
12
|
+
// Generous timeout for tests that play AAC to completion through the cache
|
|
13
|
+
// proxy. The fast path is sub-second locally, but GitHub-hosted runners
|
|
14
|
+
// routinely starve the simulator audio pipeline ("HALC IOWorkLoop: skipping
|
|
15
|
+
// cycle due to overload") and the previous 10s budget was tight enough that
|
|
16
|
+
// testCachedPlaybackCompletesWithoutContentLength flaked on CI. 30s is well
|
|
17
|
+
// beyond observed worst-case on macos-26 while staying short enough to fail
|
|
18
|
+
// fast for genuine regressions.
|
|
19
|
+
private let playbackTimeout: TimeInterval = 30.0
|
|
20
|
+
|
|
12
21
|
private var engine: AVPlayerEngine!
|
|
13
22
|
private var testFileURL: URL!
|
|
14
23
|
|
|
@@ -307,12 +316,12 @@ final class AVPlayerEngineIntegrationTests: XCTestCase {
|
|
|
307
316
|
cachedEngine.onItemFailed = { _, _ in failed.fulfill() }
|
|
308
317
|
|
|
309
318
|
cachedEngine.load(url: server.url)
|
|
310
|
-
wait(for: [ready], timeout:
|
|
319
|
+
wait(for: [ready], timeout: playbackTimeout)
|
|
311
320
|
|
|
312
321
|
let ended = expectation(description: "ended")
|
|
313
322
|
cachedEngine.onItemPlayedToEnd = { ended.fulfill() }
|
|
314
323
|
cachedEngine.play()
|
|
315
|
-
wait(for: [ended, failed], timeout:
|
|
324
|
+
wait(for: [ended, failed], timeout: playbackTimeout)
|
|
316
325
|
}
|
|
317
326
|
|
|
318
327
|
func testCachedPlaybackCompletesWithoutContentLength() throws {
|
|
@@ -341,12 +350,12 @@ final class AVPlayerEngineIntegrationTests: XCTestCase {
|
|
|
341
350
|
cachedEngine.onItemFailed = { _, _ in failed.fulfill() }
|
|
342
351
|
|
|
343
352
|
cachedEngine.load(url: server.url)
|
|
344
|
-
wait(for: [ready], timeout:
|
|
353
|
+
wait(for: [ready], timeout: playbackTimeout)
|
|
345
354
|
|
|
346
355
|
let ended = expectation(description: "ended")
|
|
347
356
|
cachedEngine.onItemPlayedToEnd = { ended.fulfill() }
|
|
348
357
|
cachedEngine.play()
|
|
349
|
-
wait(for: [ended, failed], timeout:
|
|
358
|
+
wait(for: [ended, failed], timeout: playbackTimeout)
|
|
350
359
|
}
|
|
351
360
|
|
|
352
361
|
// MARK: - Cache Hit Playback
|
package/lib/commonjs/audio.js
CHANGED
|
@@ -112,6 +112,7 @@ function normalizePlayerConfig(options) {
|
|
|
112
112
|
...options,
|
|
113
113
|
contentType: options.contentType ?? _index.DEFAULT_PLAYER_CONFIG.contentType,
|
|
114
114
|
handleAudioBecomingNoisy: options.handleAudioBecomingNoisy ?? _index.DEFAULT_PLAYER_CONFIG.handleAudioBecomingNoisy,
|
|
115
|
+
autoUpdateMetadataFromStream: options.autoUpdateMetadataFromStream ?? _index.DEFAULT_PLAYER_CONFIG.autoUpdateMetadataFromStream,
|
|
115
116
|
...(cache ? {
|
|
116
117
|
cache
|
|
117
118
|
} : {}),
|
|
@@ -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","preload","duration","cancelPreload","replaceMediaItem","moveMediaItem","updateMetadata","metadata","getPlaybackState","isPlaying","getProgress","result","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":[]}
|
|
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","autoUpdateMetadataFromStream","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","preload","duration","cancelPreload","replaceMediaItem","moveMediaItem","updateMetadata","metadata","getPlaybackState","isPlaying","getProgress","result","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":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["events/MediaMetadataChanged.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -43,6 +43,18 @@ Object.keys(_MediaItemTransition).forEach(function (key) {
|
|
|
43
43
|
}
|
|
44
44
|
});
|
|
45
45
|
});
|
|
46
|
+
var _MediaMetadataChanged = require("./MediaMetadataChanged.js");
|
|
47
|
+
Object.keys(_MediaMetadataChanged).forEach(function (key) {
|
|
48
|
+
if (key === "default" || key === "__esModule") return;
|
|
49
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
50
|
+
if (key in exports && exports[key] === _MediaMetadataChanged[key]) return;
|
|
51
|
+
Object.defineProperty(exports, key, {
|
|
52
|
+
enumerable: true,
|
|
53
|
+
get: function () {
|
|
54
|
+
return _MediaMetadataChanged[key];
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
});
|
|
46
58
|
var _MetadataReceived = require("./MetadataReceived.js");
|
|
47
59
|
Object.keys(_MetadataReceived).forEach(function (key) {
|
|
48
60
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -123,6 +135,7 @@ let Event = exports.Event = /*#__PURE__*/function (Event) {
|
|
|
123
135
|
Event["PlaybackStateChanged"] = "event.playback-state-changed";
|
|
124
136
|
Event["IsPlayingChanged"] = "event.is-playing-changed";
|
|
125
137
|
Event["MediaItemTransition"] = "event.media-item-transition";
|
|
138
|
+
Event["MediaMetadataChanged"] = "event.media-metadata-changed";
|
|
126
139
|
Event["MetadataReceived"] = "event.metadata-received";
|
|
127
140
|
Event["PlaybackError"] = "event.playback-error";
|
|
128
141
|
Event["PlaybackProgressUpdated"] = "event.playback-progress-updated";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_PlaybackStateChanged","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_IsPlayingChanged","_MediaItemTransition","_MetadataReceived","_RemoteControl","_PlaybackError","_PlaybackProgressUpdated","_QueueChanged","_SleepTimerTriggered","Event"],"sourceRoot":"../../../src","sources":["events/index.ts"],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"names":["_PlaybackStateChanged","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_IsPlayingChanged","_MediaItemTransition","_MediaMetadataChanged","_MetadataReceived","_RemoteControl","_PlaybackError","_PlaybackProgressUpdated","_QueueChanged","_SleepTimerTriggered","Event"],"sourceRoot":"../../../src","sources":["events/index.ts"],"mappings":";;;;;;;;;AA6EA,IAAAA,qBAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,qBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,qBAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,qBAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,iBAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,iBAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,iBAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,iBAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,oBAAA,GAAAd,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAY,oBAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,oBAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,oBAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AACA,IAAAW,qBAAA,GAAAf,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAa,qBAAA,EAAAZ,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAW,qBAAA,CAAAX,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,qBAAA,CAAAX,GAAA;IAAA;EAAA;AAAA;AACA,IAAAY,iBAAA,GAAAhB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAc,iBAAA,EAAAb,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAY,iBAAA,CAAAZ,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAI,iBAAA,CAAAZ,GAAA;IAAA;EAAA;AAAA;AACA,IAAAa,cAAA,GAAAjB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAe,cAAA,EAAAd,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAa,cAAA,CAAAb,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAK,cAAA,CAAAb,GAAA;IAAA;EAAA;AAAA;AACA,IAAAc,cAAA,GAAAlB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAgB,cAAA,EAAAf,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAc,cAAA,CAAAd,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAM,cAAA,CAAAd,GAAA;IAAA;EAAA;AAAA;AACA,IAAAe,wBAAA,GAAAnB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAiB,wBAAA,EAAAhB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAe,wBAAA,CAAAf,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAO,wBAAA,CAAAf,GAAA;IAAA;EAAA;AAAA;AACA,IAAAgB,aAAA,GAAApB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAkB,aAAA,EAAAjB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAgB,aAAA,CAAAhB,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAQ,aAAA,CAAAhB,GAAA;IAAA;EAAA;AAAA;AACA,IAAAiB,oBAAA,GAAArB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAmB,oBAAA,EAAAlB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAiB,oBAAA,CAAAjB,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAS,oBAAA,CAAAjB,GAAA;IAAA;EAAA;AAAA;AAtFA;AACA;AACA;AACA;AAHA,IAyBYkB,KAAK,GAAAb,OAAA,CAAAa,KAAA,0BAALA,KAAK;EAALA,KAAK;EAALA,KAAK;EAALA,KAAK;EAALA,KAAK;EAALA,KAAK;EAALA,KAAK;EAALA,KAAK;EAALA,KAAK;EAALA,KAAK;EAALA,KAAK;EAALA,KAAK;EAALA,KAAK;EAALA,KAAK;EAALA,KAAK;EAALA,KAAK;EAALA,KAAK;EAALA,KAAK;EAAA,OAALA,KAAK;AAAA;AAgDjB","ignoreList":[]}
|
|
@@ -14,8 +14,14 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
|
-
* Returns the currently active media item, updating on item transitions
|
|
18
|
-
*
|
|
17
|
+
* Returns the currently active media item, updating on item transitions and
|
|
18
|
+
* whenever the active item's effective metadata changes (e.g. ICY tags from
|
|
19
|
+
* a live radio stream rewriting title/artist).
|
|
20
|
+
*
|
|
21
|
+
* Subscribes to {@link Event.MediaMetadataChanged} rather than
|
|
22
|
+
* {@link Event.MetadataReceived} so the re-read of {@link getActiveMediaItem}
|
|
23
|
+
* happens *after* native has finished merging the new metadata into the
|
|
24
|
+
* queued item — no race against the IPC that lands the auto-update.
|
|
19
25
|
*/
|
|
20
26
|
function useActiveMediaItem() {
|
|
21
27
|
const [item, setItem] = (0, _react.useState)(() => TrackPlayer.getActiveMediaItem());
|
|
@@ -23,7 +29,7 @@ function useActiveMediaItem() {
|
|
|
23
29
|
const transitionSub = TrackPlayer.addEventListener(_index.Event.MediaItemTransition, event => {
|
|
24
30
|
setItem(event.item);
|
|
25
31
|
});
|
|
26
|
-
const metadataSub = TrackPlayer.addEventListener(_index.Event.
|
|
32
|
+
const metadataSub = TrackPlayer.addEventListener(_index.Event.MediaMetadataChanged, () => {
|
|
27
33
|
setItem(TrackPlayer.getActiveMediaItem());
|
|
28
34
|
});
|
|
29
35
|
return () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","TrackPlayer","_interopRequireWildcard","_index","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useActiveMediaItem","item","setItem","useState","getActiveMediaItem","useEffect","transitionSub","addEventListener","Event","MediaItemTransition","event","metadataSub","
|
|
1
|
+
{"version":3,"names":["_react","require","TrackPlayer","_interopRequireWildcard","_index","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useActiveMediaItem","item","setItem","useState","getActiveMediaItem","useEffect","transitionSub","addEventListener","Event","MediaItemTransition","event","metadataSub","MediaMetadataChanged","remove"],"sourceRoot":"../../../src","sources":["hooks/useActiveMediaItem.ts"],"mappings":";;;;;;AAKA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAAkC,SAAAE,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAPlC;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASkB,kBAAkBA,CAAA,EAAqB;EACrD,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAG,IAAAC,eAAQ,EAAmB,MACjDzB,WAAW,CAAC0B,kBAAkB,CAAC,CACjC,CAAC;EAED,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,aAAa,GAAG5B,WAAW,CAAC6B,gBAAgB,CAChDC,YAAK,CAACC,mBAAmB,EACxBC,KAAK,IAAK;MACTR,OAAO,CAACQ,KAAK,CAACT,IAAI,CAAC;IACrB,CACF,CAAC;IACD,MAAMU,WAAW,GAAGjC,WAAW,CAAC6B,gBAAgB,CAC9CC,YAAK,CAACI,oBAAoB,EAC1B,MAAM;MACJV,OAAO,CAACxB,WAAW,CAAC0B,kBAAkB,CAAC,CAAC,CAAC;IAC3C,CACF,CAAC;IACD,OAAO,MAAM;MACXE,aAAa,CAACO,MAAM,CAAC,CAAC;MACtBF,WAAW,CAACE,MAAM,CAAC,CAAC;IACtB,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOZ,IAAI;AACb","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","TrackPlayer","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useProgress","updateInterval","progress","setProgress","useState","getProgress","useEffect","id","setInterval","clearInterval"],"sourceRoot":"../../../src","sources":["hooks/useProgress.ts"],"mappings":";;;;;;AAKA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAC,uBAAA,CAAAF,OAAA;AAAwC,SAAAE,wBAAAC,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAH,uBAAA,YAAAA,CAAAC,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AANxC;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACO,SAASkB,WAAWA,CAACC,
|
|
1
|
+
{"version":3,"names":["_react","require","TrackPlayer","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useProgress","updateInterval","progress","setProgress","useState","getProgress","useEffect","id","setInterval","clearInterval"],"sourceRoot":"../../../src","sources":["hooks/useProgress.ts"],"mappings":";;;;;;AAKA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAC,uBAAA,CAAAF,OAAA;AAAwC,SAAAE,wBAAAC,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAH,uBAAA,YAAAA,CAAAC,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AANxC;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACO,SAASkB,WAAWA,CAACC,cAAsB,GAAG,CAAC,EAAY;EAChE,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAG,IAAAC,eAAQ,EAAW,MACjDzB,WAAW,CAAC0B,WAAW,CAAC,CAC1B,CAAC;EAED,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,EAAE,GAAGC,WAAW,CAAC,MAAM;MAC3BL,WAAW,CAACxB,WAAW,CAAC0B,WAAW,CAAC,CAAC,CAAC;IACxC,CAAC,EAAEJ,cAAc,GAAG,IAAI,CAAC;IAEzB,OAAO,MAAMQ,aAAa,CAACF,EAAE,CAAC;EAChC,CAAC,EAAE,CAACN,cAAc,CAAC,CAAC;EAEpB,OAAOC,QAAQ;AACjB","ignoreList":[]}
|
|
@@ -28,6 +28,7 @@ const DEFAULT_ANDROID_PLAYER_CONFIG = exports.DEFAULT_ANDROID_PLAYER_CONFIG = {
|
|
|
28
28
|
const DEFAULT_PLAYER_CONFIG = exports.DEFAULT_PLAYER_CONFIG = {
|
|
29
29
|
contentType: 'music',
|
|
30
30
|
handleAudioBecomingNoisy: true,
|
|
31
|
+
autoUpdateMetadataFromStream: true,
|
|
31
32
|
android: DEFAULT_ANDROID_PLAYER_CONFIG
|
|
32
33
|
};
|
|
33
34
|
//# sourceMappingURL=PlayerConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DEFAULT_CACHE_CONFIG","exports","maxSizeBytes","DEFAULT_CAST_RECEIVER_APP_ID","DEFAULT_ANDROID_PLAYER_CONFIG","wakeMode","skipSilenceEnabled","DEFAULT_PLAYER_CONFIG","contentType","handleAudioBecomingNoisy","android"],"sourceRoot":"../../../src","sources":["interfaces/PlayerConfig.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;;AAsCO,MAAMA,oBAA+D,GAAAC,OAAA,CAAAD,oBAAA,GAAG;EAC7EE,YAAY,EAAE,GAAG,GAAG,IAAI,GAAG;AAC7B,CAAC;;AAED;AACA;AACA;AACA;AACO,MAAMC,4BAA4B,GAAAF,OAAA,CAAAE,4BAAA,GAAG,UAAU;;AAEtD;AACO,MAAMC,6BAAkD,GAAAH,OAAA,CAAAG,6BAAA,GAAG;EAChEC,QAAQ,EAAE,MAAM;EAChBC,kBAAkB,EAAE;AACtB,CAAC;AAwBD;AACO,MAAMC,qBAIZ,GAAAN,OAAA,CAAAM,qBAAA,GAAG;EACFC,WAAW,EAAE,OAAO;EACpBC,wBAAwB,EAAE,IAAI;EAC9BC,OAAO,
|
|
1
|
+
{"version":3,"names":["DEFAULT_CACHE_CONFIG","exports","maxSizeBytes","DEFAULT_CAST_RECEIVER_APP_ID","DEFAULT_ANDROID_PLAYER_CONFIG","wakeMode","skipSilenceEnabled","DEFAULT_PLAYER_CONFIG","contentType","handleAudioBecomingNoisy","autoUpdateMetadataFromStream","android"],"sourceRoot":"../../../src","sources":["interfaces/PlayerConfig.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;;AAsCO,MAAMA,oBAA+D,GAAAC,OAAA,CAAAD,oBAAA,GAAG;EAC7EE,YAAY,EAAE,GAAG,GAAG,IAAI,GAAG;AAC7B,CAAC;;AAED;AACA;AACA;AACA;AACO,MAAMC,4BAA4B,GAAAF,OAAA,CAAAE,4BAAA,GAAG,UAAU;;AAEtD;AACO,MAAMC,6BAAkD,GAAAH,OAAA,CAAAG,6BAAA,GAAG;EAChEC,QAAQ,EAAE,MAAM;EAChBC,kBAAkB,EAAE;AACtB,CAAC;AAwBD;AACO,MAAMC,qBAIZ,GAAAN,OAAA,CAAAM,qBAAA,GAAG;EACFC,WAAW,EAAE,OAAO;EACpBC,wBAAwB,EAAE,IAAI;EAC9BC,4BAA4B,EAAE,IAAI;EAClCC,OAAO,EAAEP;AACX,CAAC","ignoreList":[]}
|
package/lib/module/audio.js
CHANGED
|
@@ -60,6 +60,7 @@ function normalizePlayerConfig(options) {
|
|
|
60
60
|
...options,
|
|
61
61
|
contentType: options.contentType ?? DEFAULT_PLAYER_CONFIG.contentType,
|
|
62
62
|
handleAudioBecomingNoisy: options.handleAudioBecomingNoisy ?? DEFAULT_PLAYER_CONFIG.handleAudioBecomingNoisy,
|
|
63
|
+
autoUpdateMetadataFromStream: options.autoUpdateMetadataFromStream ?? DEFAULT_PLAYER_CONFIG.autoUpdateMetadataFromStream,
|
|
63
64
|
...(cache ? {
|
|
64
65
|
cache
|
|
65
66
|
} : {}),
|