react-native-queue-player 1.0.3 → 1.0.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.
- package/android/src/main/java/com/margelo/nitro/queueplayer/BufferStateTranslator.kt +1 -1
- package/android/src/main/java/com/margelo/nitro/queueplayer/CarConnectionState.kt +46 -0
- package/android/src/main/java/com/margelo/nitro/queueplayer/Equalizer.kt +1 -3
- package/android/src/main/java/com/margelo/nitro/queueplayer/HeadlessJsMediaService.kt +2 -4
- package/android/src/main/java/com/margelo/nitro/queueplayer/LookaheadCacheWriter.kt +7 -9
- package/android/src/main/java/com/margelo/nitro/queueplayer/MilestoneTracker.kt +1 -2
- package/android/src/main/java/com/margelo/nitro/queueplayer/PlaybackService.kt +5 -6
- package/android/src/main/java/com/margelo/nitro/queueplayer/PlaybackServiceCallback.kt +8 -1
- package/android/src/main/java/com/margelo/nitro/queueplayer/ProgressEmissionGate.kt +1 -1
- package/android/src/main/java/com/margelo/nitro/queueplayer/QueueMutationArithmetic.kt +1 -1
- package/android/src/main/java/com/margelo/nitro/queueplayer/QueueSkipArithmetic.kt +1 -1
- package/android/src/main/java/com/margelo/nitro/queueplayer/RemoteCommandDeduper.kt +1 -1
- package/android/src/main/java/com/margelo/nitro/queueplayer/SleepTimerCore.kt +1 -1
- package/android/src/main/java/com/margelo/nitro/queueplayer/TrackPlayer.kt +21 -27
- package/android/src/main/java/com/margelo/nitro/queueplayer/TransportStateTranslator.kt +2 -2
- package/android/src/test/java/com/margelo/nitro/queueplayer/AudioPipelineRenderersFactoryTest.kt +2 -5
- package/android/src/test/java/com/margelo/nitro/queueplayer/BrowseCallbackRegistryTest.kt +1 -4
- package/android/src/test/java/com/margelo/nitro/queueplayer/CrossfadeEngineLifecycleTest.kt +1 -2
- package/android/src/test/java/com/margelo/nitro/queueplayer/CrossfadeEngineReplayGainTest.kt +3 -7
- package/android/src/test/java/com/margelo/nitro/queueplayer/EqualizerEngineTest.kt +1 -2
- package/android/src/test/java/com/margelo/nitro/queueplayer/EqualizerKtTest.kt +1 -3
- package/android/src/test/java/com/margelo/nitro/queueplayer/EqualizerLegacyEngineTest.kt +2 -3
- package/android/src/test/java/com/margelo/nitro/queueplayer/FFTProcessorTeeTest.kt +1 -2
- package/android/src/test/java/com/margelo/nitro/queueplayer/GaplessEngineLifecycleTest.kt +0 -2
- package/android/src/test/java/com/margelo/nitro/queueplayer/GaplessEngineReplayGainTest.kt +3 -8
- package/android/src/test/java/com/margelo/nitro/queueplayer/HeadlessJsMediaServiceTest.kt +2 -4
- package/android/src/test/java/com/margelo/nitro/queueplayer/MediaItemBuilderTest.kt +2 -3
- package/android/src/test/java/com/margelo/nitro/queueplayer/MilestoneTrackerTest.kt +1 -3
- package/android/src/test/java/com/margelo/nitro/queueplayer/NowPlayingFormatExtractorTest.kt +1 -2
- package/android/src/test/java/com/margelo/nitro/queueplayer/PitchAwareAudioProcessorChainTest.kt +1 -1
- package/android/src/test/java/com/margelo/nitro/queueplayer/PitchCorrectionTest.kt +2 -2
- package/android/src/test/java/com/margelo/nitro/queueplayer/PlaybackServiceCallbackTest.kt +76 -7
- package/android/src/test/java/com/margelo/nitro/queueplayer/ProgressEmissionGateTest.kt +1 -3
- package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerEventsTest.kt +1 -2
- package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerMutationTest.kt +2 -4
- package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerPitchCorrectionTest.kt +1 -2
- package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerPlaybackModeTest.kt +2 -3
- package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerReplayGainTest.kt +1 -3
- package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerTransportTest.kt +2 -5
- package/android/src/test/java/com/margelo/nitro/queueplayer/VisualizerKtTest.kt +1 -2
- package/ios/AVPlayerItemQueueItemId.swift +2 -2
- package/ios/AVQueueBuilder.swift +12 -14
- package/ios/CarPlayCoordinator.swift +28 -0
- package/ios/CarPlaySceneDelegate.swift +2 -0
- package/ios/CrossfadeEngine.swift +4 -5
- package/ios/InputGuards.swift +3 -3
- package/ios/LookaheadCache.swift +4 -6
- package/ios/LookaheadCachePrefetcher.swift +1 -1
- package/ios/MilestoneTracker.swift +1 -2
- package/ios/PlaybackErrorMapping.swift +6 -7
- package/ios/PlayerStateDerivation.swift +1 -2
- package/ios/ProgressEmissionGate.swift +1 -1
- package/ios/QueueMutationArithmetic.swift +2 -2
- package/ios/QueueSkipArithmetic.swift +8 -12
- package/ios/Siri/PlayMediaIntentHandler.swift +1 -5
- package/ios/SleepTimerCore.swift +1 -1
- package/ios/Tests/AudioTapProviderReplayGainTests.swift +5 -9
- package/ios/Tests/CarPlayBridgeTests.swift +2 -6
- package/ios/Tests/CarPlayBrowseBuilderTests.swift +1 -2
- package/ios/Tests/CarPlayCoordinatorTests.swift +35 -0
- package/ios/Tests/EQProcessorTests.swift +1 -4
- package/ios/Tests/EQTapTests.swift +1 -2
- package/ios/Tests/EqualizerAudioMixProviderTests.swift +3 -4
- package/ios/Tests/EqualizerHybridTests.swift +1 -3
- package/ios/Tests/FFTProcessorTests.swift +1 -3
- package/ios/Tests/GaplessEngineLifecycleTests.swift +0 -2
- package/ios/Tests/LookaheadCacheEvictionTests.swift +1 -4
- package/ios/Tests/MetadataReaderTests.swift +0 -2
- package/ios/Tests/MilestoneTrackerTests.swift +1 -3
- package/ios/Tests/NowPlayingFormatExtractorTests.swift +3 -4
- package/ios/Tests/PlaybackErrorMappingTests.swift +0 -3
- package/ios/Tests/PlaybackModeStateMachineTests.swift +5 -9
- package/ios/Tests/PlayerStateDerivationTests.swift +1 -2
- package/ios/Tests/ProgressEmissionGateTests.swift +1 -3
- package/ios/Tests/QueueMutationArithmeticTests.swift +0 -3
- package/ios/Tests/RemoteCommandsTests.swift +2 -5
- package/ios/Tests/ReplayGainExtractorTests.swift +0 -5
- package/ios/Tests/SkipCapabilityTests.swift +4 -7
- package/ios/Tests/VoiceDonationTests.swift +4 -4
- package/ios/TrackPlayer.swift +5 -2
- package/lib/typescript/TrackPlayer.nitro.d.ts +17 -0
- package/lib/typescript/TrackPlayer.nitro.d.ts.map +1 -1
- package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.cpp +5 -0
- package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.hpp +1 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/HybridTrackPlayerSpec.kt +4 -0
- package/nitrogen/generated/ios/c++/HybridTrackPlayerSpecSwift.hpp +8 -0
- package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec.swift +1 -0
- package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec_cxx.swift +12 -0
- package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.cpp +1 -0
- package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.hpp +1 -0
- package/package.json +1 -1
- package/src/TrackPlayer.nitro.ts +18 -0
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import XCTest
|
|
2
2
|
@testable import QueuePlayer
|
|
3
3
|
|
|
4
|
-
/// Unit coverage for `EQProcessor` cascade.
|
|
5
|
-
/// (sine-sweep magnitude per band) is verified at the integration
|
|
6
|
-
/// layer via the demo Maestro EQ suite once the AVPlayerItem mix
|
|
7
|
-
/// attach path is wired.
|
|
4
|
+
/// Unit coverage for `EQProcessor` cascade.
|
|
8
5
|
final class EQProcessorTests: XCTestCase {
|
|
9
6
|
|
|
10
7
|
func testIsNotReadyBeforeChannelCountSet() {
|
|
@@ -4,8 +4,7 @@ import XCTest
|
|
|
4
4
|
|
|
5
5
|
/// Skeleton coverage for `EQTap` — tap creation, HLS detection,
|
|
6
6
|
/// pass-through process body. The actual tap firing is on the
|
|
7
|
-
/// audio render thread
|
|
8
|
-
/// the demo Maestro EQ suite once the DSP body lands.
|
|
7
|
+
/// audio render thread.
|
|
9
8
|
final class EQTapTests: XCTestCase {
|
|
10
9
|
|
|
11
10
|
func testPassThroughCopiesInputToOutput() {
|
|
@@ -2,10 +2,9 @@ import AVFoundation
|
|
|
2
2
|
import XCTest
|
|
3
3
|
@testable import QueuePlayer
|
|
4
4
|
|
|
5
|
-
/// Provider-layer coverage for the shared `AudioTapProvider`.
|
|
6
|
-
///
|
|
7
|
-
///
|
|
8
|
-
/// configuration + bypass + consumer-registration surface.
|
|
5
|
+
/// Provider-layer coverage for the shared `AudioTapProvider`. These
|
|
6
|
+
/// tests cover the configuration + bypass + consumer-registration
|
|
7
|
+
/// surface.
|
|
9
8
|
///
|
|
10
9
|
/// Filename note: kept at `EqualizerAudioMixProviderTests.swift`
|
|
11
10
|
/// even though the class is `AudioTapProviderTests`. Renaming the
|
|
@@ -3,9 +3,7 @@ import XCTest
|
|
|
3
3
|
@testable import QueuePlayer
|
|
4
4
|
|
|
5
5
|
/// Wiring coverage for the iOS `Equalizer` HybridObject.
|
|
6
|
-
/// Targets the synchronous internal core
|
|
7
|
-
/// returning surface is exercised at integration via the demo
|
|
8
|
-
/// Maestro EQ suite.
|
|
6
|
+
/// Targets the synchronous internal core.
|
|
9
7
|
final class EqualizerHybridTests: XCTestCase {
|
|
10
8
|
|
|
11
9
|
private var defaults: UserDefaults!
|
|
@@ -243,9 +243,7 @@ final class FFTProcessorTests: XCTestCase {
|
|
|
243
243
|
// `ingest` resumes, `onFrame` fires again at the documented
|
|
244
244
|
// intervalMs cadence. Live audio chains express "pause" by
|
|
245
245
|
// ceasing tap callbacks; the unit-test analogue is a sleep
|
|
246
|
-
// window.
|
|
247
|
-
// `visualizer:*` integration suite's `pause-stops-resume-restarts`
|
|
248
|
-
// step.
|
|
246
|
+
// window.
|
|
249
247
|
let n = 256
|
|
250
248
|
let intervalMs = 1
|
|
251
249
|
let lock = NSLock()
|
|
@@ -4,8 +4,6 @@ import XCTest
|
|
|
4
4
|
|
|
5
5
|
/// Lifecycle smoke coverage for `GaplessEngine` — empty-queue
|
|
6
6
|
/// sentinels + idempotent / delegate-clearing release contract.
|
|
7
|
-
/// Behavioural coverage of transport + seek runs through the
|
|
8
|
-
/// existing TrackPlayer integration suites + Maestro flows.
|
|
9
7
|
final class GaplessEngineLifecycleTests: XCTestCase {
|
|
10
8
|
|
|
11
9
|
func testEmptyQueueReturnsDocumentedSentinelState() {
|
|
@@ -4,10 +4,7 @@ import XCTest
|
|
|
4
4
|
|
|
5
5
|
/// `LookaheadCacheEviction.computeEvictions` unit tests.
|
|
6
6
|
///
|
|
7
|
-
/// Pure-logic LRU policy.
|
|
8
|
-
/// URLSession. File + index mutation is tested through the
|
|
9
|
-
/// LookaheadCacheTests integration path that drives `download` past
|
|
10
|
-
/// the budget.
|
|
7
|
+
/// Pure-logic LRU policy. No FS access, no URLSession.
|
|
11
8
|
final class LookaheadCacheEvictionTests: XCTestCase {
|
|
12
9
|
|
|
13
10
|
func testNoEvictionWhenUnderBudget() {
|
|
@@ -4,8 +4,6 @@ import XCTest
|
|
|
4
4
|
/// Byte-level unit tests for `MetadataReader`'s container parsers.
|
|
5
5
|
/// Builds synthetic ID3v2 / FLAC / MP4 byte sequences in-memory and
|
|
6
6
|
/// verifies tag extraction surfaces the expected `[key: value]` map.
|
|
7
|
-
/// End-to-end "extract from a real media file" coverage lives in
|
|
8
|
-
/// the auto-suite `replaygain.ts`.
|
|
9
7
|
final class MetadataReaderTests: XCTestCase {
|
|
10
8
|
|
|
11
9
|
// MARK: - ID3v2 TXXX
|
|
@@ -2,9 +2,7 @@ import XCTest
|
|
|
2
2
|
@testable import QueuePlayer
|
|
3
3
|
|
|
4
4
|
/// Unit tests for `MilestoneTracker` — the pure 25/50/75/90% crossing
|
|
5
|
-
/// logic behind `onPlaybackMilestone`.
|
|
6
|
-
/// seek, track-change reset) is covered by the `playback-milestones`
|
|
7
|
-
/// demo suite.
|
|
5
|
+
/// logic behind `onPlaybackMilestone`.
|
|
8
6
|
final class MilestoneTrackerTests: XCTestCase {
|
|
9
7
|
|
|
10
8
|
/// 200s track, ticks every ~10s of media time.
|
|
@@ -3,10 +3,9 @@ import CoreMedia
|
|
|
3
3
|
import XCTest
|
|
4
4
|
@testable import QueuePlayer
|
|
5
5
|
|
|
6
|
-
/// Pure-mapping coverage for `NowPlayingFormatExtractor`.
|
|
7
|
-
///
|
|
8
|
-
///
|
|
9
|
-
/// future contributor can't drift the JS-visible enum without a test
|
|
6
|
+
/// Pure-mapping coverage for `NowPlayingFormatExtractor`. These
|
|
7
|
+
/// tests pin the codec / container / MIME tables so a future
|
|
8
|
+
/// contributor can't drift the JS-visible enum without a test
|
|
10
9
|
/// failure.
|
|
11
10
|
final class NowPlayingFormatExtractorTests: XCTestCase {
|
|
12
11
|
|
|
@@ -5,9 +5,6 @@ import AVFoundation
|
|
|
5
5
|
|
|
6
6
|
/// Unit tests for the iOS half of the cross-platform error-code
|
|
7
7
|
/// mapping in `PlaybackErrorMapping.swift`.
|
|
8
|
-
/// Mirrors the Android-side coverage in
|
|
9
|
-
/// `TrackPlayerEventsTest.kt#error mapping classifies Media3 codes`
|
|
10
|
-
/// + `error mapping strips query strings`.
|
|
11
8
|
///
|
|
12
9
|
/// **Why string-keyed assertions?** NOTES.md §6 — Swift's
|
|
13
10
|
/// `-cxx-interoperability-mode=default` hides members of functions
|
|
@@ -3,15 +3,11 @@ import XCTest
|
|
|
3
3
|
|
|
4
4
|
/// Coverage for the pure-Swift `CrossfadeDurationBounds` helper that
|
|
5
5
|
/// powers `PlaybackModeStateMachine.requireValid`. Full state-machine
|
|
6
|
-
/// validation
|
|
7
|
-
/// `setRequested`)
|
|
8
|
-
///
|
|
9
|
-
///
|
|
10
|
-
///
|
|
11
|
-
/// `crossfade-duration-out-of-range-rejected` and
|
|
12
|
-
/// `crossfade-duration-non-quantised-rejected` steps in
|
|
13
|
-
/// `RNQP-Demo/src/tests/suites/playback-mode.ts`). Mirrors the
|
|
14
|
-
/// cxx-interop carve-out already documented in AGENTS.md §2.
|
|
6
|
+
/// validation (constructing `PlaybackMode` instances + driving
|
|
7
|
+
/// `setRequested`) is out of scope here — `PlaybackMode` is bridged
|
|
8
|
+
/// via Nitro `@_spi` and can't be constructed from a Swift XCTest
|
|
9
|
+
/// target. Mirrors the cxx-interop carve-out already documented in
|
|
10
|
+
/// AGENTS.md §2.
|
|
15
11
|
final class PlaybackModeStateMachineTests: XCTestCase {
|
|
16
12
|
|
|
17
13
|
func testCrossfadeBoundsHelperAcceptsEveryValueOnTheStep() {
|
|
@@ -3,8 +3,7 @@ import XCTest
|
|
|
3
3
|
@testable import QueuePlayer
|
|
4
4
|
|
|
5
5
|
/// Unit tests for `PlayerStateDerivation` — the pure `PlayerState` mapping
|
|
6
|
-
/// shared by both engines.
|
|
7
|
-
/// end-of-queue latch) is covered by the queue-end / crossfade demo suites.
|
|
6
|
+
/// shared by both engines.
|
|
8
7
|
final class PlayerStateDerivationTests: XCTestCase {
|
|
9
8
|
|
|
10
9
|
private func derive(
|
|
@@ -2,9 +2,7 @@ import XCTest
|
|
|
2
2
|
@testable import QueuePlayer
|
|
3
3
|
|
|
4
4
|
/// Unit tests for `ProgressEmissionGate` — the pure throttle behind the
|
|
5
|
-
/// configurable / background-reduced `onProgress` cadence.
|
|
6
|
-
/// (the periodic tick, the cast push, and the UIApplication background /
|
|
7
|
-
/// foreground observers) is covered by the progress demo suites.
|
|
5
|
+
/// configurable / background-reduced `onProgress` cadence.
|
|
8
6
|
///
|
|
9
7
|
/// Most tests pass `samplerPeriodMs: 0` to exercise exact interval semantics;
|
|
10
8
|
/// the jitter + quantization tests pass the production `500` to verify the
|
|
@@ -3,9 +3,6 @@ import XCTest
|
|
|
3
3
|
@_spi(QueuePlayerTests) import QueuePlayer
|
|
4
4
|
|
|
5
5
|
/// Pure-Swift tests for the queue-mutation index-shift arithmetic.
|
|
6
|
-
/// 1:1 mirror of `android/.../QueueMutationArithmeticTest.kt` —
|
|
7
|
-
/// every Kotlin test name has a Swift twin so the cross-platform
|
|
8
|
-
/// matrix stays in lock-step.
|
|
9
6
|
final class QueueMutationArithmeticTests: XCTestCase {
|
|
10
7
|
|
|
11
8
|
// MARK: - clampInsertBefore
|
|
@@ -6,11 +6,8 @@ import XCTest
|
|
|
6
6
|
/// registrations + the per-command `isEnabled` state. Tests pin the
|
|
7
7
|
/// install / uninstall lifecycle and the `setSkipCapability` ->
|
|
8
8
|
/// `nextTrackCommand.isEnabled` / `previousTrackCommand.isEnabled`
|
|
9
|
-
/// mapping.
|
|
10
|
-
///
|
|
11
|
-
/// classification); attempting to fire `MPRemoteCommandCenter`
|
|
12
|
-
/// handlers from XCTest would require lib-side SPI we deliberately
|
|
13
|
-
/// do not ship.
|
|
9
|
+
/// mapping. Attempting to fire `MPRemoteCommandCenter` handlers from
|
|
10
|
+
/// XCTest would require lib-side SPI we deliberately do not ship.
|
|
14
11
|
///
|
|
15
12
|
/// The shared command center is process-global. `setUp` resets all
|
|
16
13
|
/// seven commands the lib touches, `tearDown` calls `uninstall()` to
|
|
@@ -4,11 +4,6 @@ import XCTest
|
|
|
4
4
|
/// Unit tests for `ReplayGainExtractor`'s pure string parsers
|
|
5
5
|
/// (`parseGainDb`, `parsePeak`) and the `selectGain(mode:)` matrix
|
|
6
6
|
/// on `ReplayGainData`.
|
|
7
|
-
///
|
|
8
|
-
/// Container-level extraction (ID3v2 TXXX, FLAC Vorbis, MP4
|
|
9
|
-
/// freeform) is covered by `MetadataReaderTests`. End-to-end
|
|
10
|
-
/// extraction-on-load is covered by the auto-suite `replaygain.ts`
|
|
11
|
-
/// step.
|
|
12
7
|
final class ReplayGainExtractorTests: XCTestCase {
|
|
13
8
|
|
|
14
9
|
// Helper: `XCTAssertEqual` with the `accuracy:` overload requires
|
|
@@ -2,15 +2,12 @@ import XCTest
|
|
|
2
2
|
@testable import QueuePlayer
|
|
3
3
|
@_spi(QueuePlayerTests) import QueuePlayer
|
|
4
4
|
|
|
5
|
-
///
|
|
6
|
-
/// listener emission.
|
|
7
|
-
/// `SkipIndexTests` (`canSkipNext` / `canSkipPrevious`).
|
|
5
|
+
/// Tests for the canSkip surface + `onSkipCapabilityChange`
|
|
6
|
+
/// listener emission.
|
|
8
7
|
///
|
|
9
|
-
///
|
|
8
|
+
/// Covers the cases where `configure(...)` has not yet
|
|
10
9
|
/// stood up an AVQueuePlayer — initial cached-getter state, listener
|
|
11
|
-
/// registration + auto-fire, dispose closure correctness.
|
|
12
|
-
/// coverage of every `recomputeCapabilities()` hook point lives in
|
|
13
|
-
/// the Robolectric sibling and the end-to-end demo suite.
|
|
10
|
+
/// registration + auto-fire, dispose closure correctness.
|
|
14
11
|
final class SkipCapabilityTests: XCTestCase {
|
|
15
12
|
|
|
16
13
|
func testGetCanSkipNextReturnsFalseInitially() throws {
|
|
@@ -4,10 +4,10 @@ import XCTest
|
|
|
4
4
|
@_spi(QueuePlayerTests) import QueuePlayer
|
|
5
5
|
|
|
6
6
|
/// Smoke coverage for `VoiceDonation.donateVoiceVocabulary`. Live
|
|
7
|
-
/// `INVocabulary` delivery
|
|
8
|
-
///
|
|
9
|
-
///
|
|
10
|
-
///
|
|
7
|
+
/// `INVocabulary` delivery isn't exercised here; this test pins the
|
|
8
|
+
/// in-process contract that the method early-returns when
|
|
9
|
+
/// `NSSiriUsageDescription` is absent from the host bundle (the XCTest
|
|
10
|
+
/// bundle's plist).
|
|
11
11
|
@available(iOS 13.0, *)
|
|
12
12
|
final class VoiceDonationTests: XCTestCase {
|
|
13
13
|
func testDonateVoiceVocabularyEarlyReturnsWithoutUsageDescription() {
|
package/ios/TrackPlayer.swift
CHANGED
|
@@ -2050,8 +2050,7 @@ class TrackPlayer: HybridTrackPlayerSpec {
|
|
|
2050
2050
|
|
|
2051
2051
|
/// Map the Nitrogen-generated `RepeatMode` enum onto the pure-Swift
|
|
2052
2052
|
/// `QueueSkipRepeatMode` so `QueueSkipArithmetic` can stay off the
|
|
2053
|
-
/// Swift ↔ C++ interop path
|
|
2054
|
-
/// arithmetic without C++-interop friction).
|
|
2053
|
+
/// Swift ↔ C++ interop path.
|
|
2055
2054
|
private func repeatModeAsSkipMode() -> QueueSkipRepeatMode {
|
|
2056
2055
|
switch self.repeatModeState {
|
|
2057
2056
|
case .off: return .off
|
|
@@ -4184,6 +4183,10 @@ class TrackPlayer: HybridTrackPlayerSpec {
|
|
|
4184
4183
|
return CarPlayCoordinator.shared.bridge.registerOnCarDisconnect(callback)
|
|
4185
4184
|
}
|
|
4186
4185
|
|
|
4186
|
+
func isCarConnected() throws -> Bool {
|
|
4187
|
+
return CarPlayCoordinator.shared.isCarConnected
|
|
4188
|
+
}
|
|
4189
|
+
|
|
4187
4190
|
// MARK: - Lookahead cache — runtime config + status surface
|
|
4188
4191
|
func setLookaheadCache(config: LookaheadCacheConfig) throws -> Promise<Void> {
|
|
4189
4192
|
return Promise<Void>.async {
|
|
@@ -473,6 +473,23 @@ export interface TrackPlayer extends HybridObject<{
|
|
|
473
473
|
* automotive-specific subscriptions the consumer set up on connect.
|
|
474
474
|
*/
|
|
475
475
|
onCarDisconnect(callback: () => void): () => void;
|
|
476
|
+
/**
|
|
477
|
+
* Whether an automotive controller is connected right now. The
|
|
478
|
+
* pull-based counterpart to `onCarConnect` / `onCarDisconnect`: it holds
|
|
479
|
+
* the same state those events transition between, so a consumer that
|
|
480
|
+
* missed the connect event — e.g. it fired before the consumer registered
|
|
481
|
+
* its handler in this app process — can still gate car-only work, like
|
|
482
|
+
* pushing browse snapshots, on the current connection.
|
|
483
|
+
*
|
|
484
|
+
* `true` between the first automotive controller connecting and the last
|
|
485
|
+
* one dropping. "Automotive controller" is the same classification the
|
|
486
|
+
* connect/disconnect events use: the CarPlay scene on iOS; the headless
|
|
487
|
+
* Android Auto / Wear / Assistant controllers on Android. Returns `false`
|
|
488
|
+
* before the first connection and after a full disconnect. The state is
|
|
489
|
+
* process-scoped: a fresh app process starts disconnected until a
|
|
490
|
+
* controller connects within it.
|
|
491
|
+
*/
|
|
492
|
+
isCarConnected(): boolean;
|
|
476
493
|
/**
|
|
477
494
|
* Fires when the platform's media service is freshly bound to the JS
|
|
478
495
|
* side. `reason = 'first-bind'` for the initial bind during a JS-
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrackPlayer.nitro.d.ts","sourceRoot":"","sources":["../../src/TrackPlayer.nitro.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TrackPlayer.nitro.d.ts","sourceRoot":"","sources":["../../src/TrackPlayer.nitro.ts"],"names":[],"mappings":"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"}
|
|
@@ -949,6 +949,11 @@ namespace margelo::nitro::queueplayer {
|
|
|
949
949
|
}
|
|
950
950
|
}();
|
|
951
951
|
}
|
|
952
|
+
bool JHybridTrackPlayerSpec::isCarConnected() {
|
|
953
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean()>("isCarConnected");
|
|
954
|
+
auto __result = method(_javaPart);
|
|
955
|
+
return static_cast<bool>(__result);
|
|
956
|
+
}
|
|
952
957
|
std::function<void()> JHybridTrackPlayerSpec::onServiceReady(const std::function<void(ServiceReadyReason /* reason */)>& callback) {
|
|
953
958
|
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>(jni::alias_ref<JFunc_void_ServiceReadyReason::javaobject> /* callback */)>("onServiceReady_cxx");
|
|
954
959
|
auto __result = method(_javaPart, JFunc_void_ServiceReadyReason_cxx::fromCpp(callback));
|
|
@@ -113,6 +113,7 @@ namespace margelo::nitro::queueplayer {
|
|
|
113
113
|
void donateVoiceVocabulary(const VoiceVocabulary& vocabulary) override;
|
|
114
114
|
std::function<void()> onCarConnect(const std::function<void()>& callback) override;
|
|
115
115
|
std::function<void()> onCarDisconnect(const std::function<void()>& callback) override;
|
|
116
|
+
bool isCarConnected() override;
|
|
116
117
|
std::function<void()> onServiceReady(const std::function<void(ServiceReadyReason /* reason */)>& callback) override;
|
|
117
118
|
std::shared_ptr<Promise<void>> setLookaheadCache(const LookaheadCacheConfig& config) override;
|
|
118
119
|
CacheStatus getLookaheadCacheStatus() override;
|
package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/HybridTrackPlayerSpec.kt
CHANGED
|
@@ -346,6 +346,10 @@ abstract class HybridTrackPlayerSpec: HybridObject() {
|
|
|
346
346
|
return Func_void_java(__result)
|
|
347
347
|
}
|
|
348
348
|
|
|
349
|
+
@DoNotStrip
|
|
350
|
+
@Keep
|
|
351
|
+
abstract fun isCarConnected(): Boolean
|
|
352
|
+
|
|
349
353
|
abstract fun onServiceReady(callback: (reason: ServiceReadyReason) -> Unit): () -> Unit
|
|
350
354
|
|
|
351
355
|
@DoNotStrip
|
|
@@ -669,6 +669,14 @@ namespace margelo::nitro::queueplayer {
|
|
|
669
669
|
auto __value = std::move(__result.value());
|
|
670
670
|
return __value;
|
|
671
671
|
}
|
|
672
|
+
inline bool isCarConnected() override {
|
|
673
|
+
auto __result = _swiftPart.isCarConnected();
|
|
674
|
+
if (__result.hasError()) [[unlikely]] {
|
|
675
|
+
std::rethrow_exception(__result.error());
|
|
676
|
+
}
|
|
677
|
+
auto __value = std::move(__result.value());
|
|
678
|
+
return __value;
|
|
679
|
+
}
|
|
672
680
|
inline std::function<void()> onServiceReady(const std::function<void(ServiceReadyReason /* reason */)>& callback) override {
|
|
673
681
|
auto __result = _swiftPart.onServiceReady(callback);
|
|
674
682
|
if (__result.hasError()) [[unlikely]] {
|
|
@@ -72,6 +72,7 @@ public protocol HybridTrackPlayerSpec_protocol: HybridObject {
|
|
|
72
72
|
func donateVoiceVocabulary(vocabulary: VoiceVocabulary) throws -> Void
|
|
73
73
|
func onCarConnect(callback: @escaping () -> Void) throws -> () -> Void
|
|
74
74
|
func onCarDisconnect(callback: @escaping () -> Void) throws -> () -> Void
|
|
75
|
+
func isCarConnected() throws -> Bool
|
|
75
76
|
func onServiceReady(callback: @escaping (_ reason: ServiceReadyReason) -> Void) throws -> () -> Void
|
|
76
77
|
func setLookaheadCache(config: LookaheadCacheConfig) throws -> Promise<Void>
|
|
77
78
|
func getLookaheadCacheStatus() throws -> CacheStatus
|
|
@@ -1255,6 +1255,18 @@ open class HybridTrackPlayerSpec_cxx {
|
|
|
1255
1255
|
}
|
|
1256
1256
|
}
|
|
1257
1257
|
|
|
1258
|
+
@inline(__always)
|
|
1259
|
+
public final func isCarConnected() -> bridge.Result_bool_ {
|
|
1260
|
+
do {
|
|
1261
|
+
let __result = try self.__implementation.isCarConnected()
|
|
1262
|
+
let __resultCpp = __result
|
|
1263
|
+
return bridge.create_Result_bool_(__resultCpp)
|
|
1264
|
+
} catch (let __error) {
|
|
1265
|
+
let __exceptionPtr = __error.toCpp()
|
|
1266
|
+
return bridge.create_Result_bool_(__exceptionPtr)
|
|
1267
|
+
}
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1258
1270
|
@inline(__always)
|
|
1259
1271
|
public final func onServiceReady(callback: bridge.Func_void_ServiceReadyReason) -> bridge.Result_std__function_void____ {
|
|
1260
1272
|
do {
|
|
@@ -73,6 +73,7 @@ namespace margelo::nitro::queueplayer {
|
|
|
73
73
|
prototype.registerHybridMethod("donateVoiceVocabulary", &HybridTrackPlayerSpec::donateVoiceVocabulary);
|
|
74
74
|
prototype.registerHybridMethod("onCarConnect", &HybridTrackPlayerSpec::onCarConnect);
|
|
75
75
|
prototype.registerHybridMethod("onCarDisconnect", &HybridTrackPlayerSpec::onCarDisconnect);
|
|
76
|
+
prototype.registerHybridMethod("isCarConnected", &HybridTrackPlayerSpec::isCarConnected);
|
|
76
77
|
prototype.registerHybridMethod("onServiceReady", &HybridTrackPlayerSpec::onServiceReady);
|
|
77
78
|
prototype.registerHybridMethod("setLookaheadCache", &HybridTrackPlayerSpec::setLookaheadCache);
|
|
78
79
|
prototype.registerHybridMethod("getLookaheadCacheStatus", &HybridTrackPlayerSpec::getLookaheadCacheStatus);
|
|
@@ -187,6 +187,7 @@ namespace margelo::nitro::queueplayer {
|
|
|
187
187
|
virtual void donateVoiceVocabulary(const VoiceVocabulary& vocabulary) = 0;
|
|
188
188
|
virtual std::function<void()> onCarConnect(const std::function<void()>& callback) = 0;
|
|
189
189
|
virtual std::function<void()> onCarDisconnect(const std::function<void()>& callback) = 0;
|
|
190
|
+
virtual bool isCarConnected() = 0;
|
|
190
191
|
virtual std::function<void()> onServiceReady(const std::function<void(ServiceReadyReason /* reason */)>& callback) = 0;
|
|
191
192
|
virtual std::shared_ptr<Promise<void>> setLookaheadCache(const LookaheadCacheConfig& config) = 0;
|
|
192
193
|
virtual CacheStatus getLookaheadCacheStatus() = 0;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-queue-player",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Nitro Modules audio playback library for React Native — gapless, EQ, crossfade, automotive, voice, casting",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"types": "./lib/typescript/index.d.ts",
|
package/src/TrackPlayer.nitro.ts
CHANGED
|
@@ -549,6 +549,24 @@ export interface TrackPlayer
|
|
|
549
549
|
*/
|
|
550
550
|
onCarDisconnect(callback: () => void): () => void;
|
|
551
551
|
|
|
552
|
+
/**
|
|
553
|
+
* Whether an automotive controller is connected right now. The
|
|
554
|
+
* pull-based counterpart to `onCarConnect` / `onCarDisconnect`: it holds
|
|
555
|
+
* the same state those events transition between, so a consumer that
|
|
556
|
+
* missed the connect event — e.g. it fired before the consumer registered
|
|
557
|
+
* its handler in this app process — can still gate car-only work, like
|
|
558
|
+
* pushing browse snapshots, on the current connection.
|
|
559
|
+
*
|
|
560
|
+
* `true` between the first automotive controller connecting and the last
|
|
561
|
+
* one dropping. "Automotive controller" is the same classification the
|
|
562
|
+
* connect/disconnect events use: the CarPlay scene on iOS; the headless
|
|
563
|
+
* Android Auto / Wear / Assistant controllers on Android. Returns `false`
|
|
564
|
+
* before the first connection and after a full disconnect. The state is
|
|
565
|
+
* process-scoped: a fresh app process starts disconnected until a
|
|
566
|
+
* controller connects within it.
|
|
567
|
+
*/
|
|
568
|
+
isCarConnected(): boolean;
|
|
569
|
+
|
|
552
570
|
/**
|
|
553
571
|
* Fires when the platform's media service is freshly bound to the JS
|
|
554
572
|
* side. `reason = 'first-bind'` for the initial bind during a JS-
|