react-native-nitro-player 1.7.0-alpha.2 → 1.7.0-alpha.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/README.md +9 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridPlayerQueue.kt +45 -7
- package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerAudioFocus.kt +65 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerCore.kt +46 -14
- package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerListener.kt +2 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerPlayback.kt +36 -12
- package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerQueue.kt +1 -1
- package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerQueueBuild.kt +16 -6
- package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerUrlLoader.kt +7 -3
- package/android/src/main/java/com/margelo/nitro/nitroplayer/media/AudioFocusController.kt +87 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/media/ExoPlayerBuilder.kt +3 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaSessionManager.kt +8 -2
- package/android/src/main/java/com/margelo/nitro/nitroplayer/media/PlaybackService.kt +26 -1
- package/android/src/main/java/com/margelo/nitro/nitroplayer/playlist/PlaylistManager.kt +60 -0
- package/ios/cast/CastQueueDiff.swift +58 -0
- package/ios/cast/CastQueueReconciler.swift +228 -0
- package/ios/core/CastSessionManager.swift +215 -31
- package/ios/core/TrackPlayerCast.swift +96 -65
- package/ios/core/TrackPlayerCore.swift +31 -0
- package/ios/core/TrackPlayerListener.swift +19 -3
- package/ios/core/TrackPlayerPlayback.swift +12 -10
- package/ios/core/TrackPlayerQueue.swift +10 -2
- package/ios/core/TrackPlayerQueueBuild.swift +21 -9
- package/ios/core/TrackPlayerTempQueue.swift +27 -15
- package/ios/core/TrackPlayerUrlLoader.swift +6 -2
- package/ios/playlist/PlaylistManager.swift +60 -1
- package/ios/queue/HybridPlayerQueue.swift +40 -13
- package/lib/hooks/callbackManager.d.ts +2 -0
- package/lib/hooks/callbackManager.js +23 -8
- package/lib/specs/TrackPlayer.nitro.d.ts +5 -1
- package/lib/types/PlayerQueue.d.ts +14 -0
- package/nitrogen/generated/android/c++/JAndroidAudioFocusMode.hpp +61 -0
- package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.cpp +43 -0
- package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.hpp +2 -0
- package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.cpp +4 -0
- package/nitrogen/generated/android/c++/JPlayerConfig.hpp +9 -3
- package/nitrogen/generated/android/c++/JShufflePlaylistOptions.hpp +57 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/AndroidAudioFocusMode.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridPlayerQueueSpec.kt +8 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PlayerConfig.kt +6 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/ShufflePlaylistOptions.kt +38 -0
- package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.hpp +36 -0
- package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Umbrella.hpp +6 -0
- package/nitrogen/generated/ios/c++/HybridPlayerQueueSpecSwift.hpp +19 -0
- package/nitrogen/generated/ios/c++/HybridTrackPlayerSpecSwift.hpp +3 -0
- package/nitrogen/generated/ios/swift/AndroidAudioFocusMode.swift +44 -0
- package/nitrogen/generated/ios/swift/HybridPlayerQueueSpec.swift +2 -0
- package/nitrogen/generated/ios/swift/HybridPlayerQueueSpec_cxx.swift +38 -0
- package/nitrogen/generated/ios/swift/PlayerConfig.swift +12 -1
- package/nitrogen/generated/ios/swift/ShufflePlaylistOptions.swift +42 -0
- package/nitrogen/generated/shared/c++/AndroidAudioFocusMode.hpp +80 -0
- package/nitrogen/generated/shared/c++/HybridPlayerQueueSpec.cpp +2 -0
- package/nitrogen/generated/shared/c++/HybridPlayerQueueSpec.hpp +5 -0
- package/nitrogen/generated/shared/c++/PlayerConfig.hpp +9 -3
- package/nitrogen/generated/shared/c++/ShufflePlaylistOptions.hpp +83 -0
- package/package.json +1 -1
- package/src/hooks/callbackManager.ts +25 -10
- package/src/specs/TrackPlayer.nitro.ts +11 -0
- package/src/types/PlayerQueue.ts +17 -0
|
@@ -8,6 +8,7 @@ import type {
|
|
|
8
8
|
PlayerConfig,
|
|
9
9
|
Playlist,
|
|
10
10
|
TimedMetadata,
|
|
11
|
+
ShufflePlaylistOptions,
|
|
11
12
|
} from '../types/PlayerQueue'
|
|
12
13
|
|
|
13
14
|
export interface PlayerQueue extends HybridObject<{
|
|
@@ -47,6 +48,16 @@ export interface PlayerQueue extends HybridObject<{
|
|
|
47
48
|
trackId: string,
|
|
48
49
|
newIndex: number
|
|
49
50
|
): Promise<void>
|
|
51
|
+
/** One native pass. Unknown ids are skipped; rejects only if the playlist does not exist. */
|
|
52
|
+
removeTracksFromPlaylist(
|
|
53
|
+
playlistId: string,
|
|
54
|
+
trackIds: string[]
|
|
55
|
+
): Promise<void>
|
|
56
|
+
/** Fisher-Yates shuffle of the stored playlist, persisted. Never interrupts the playing item. */
|
|
57
|
+
shufflePlaylist(
|
|
58
|
+
playlistId: string,
|
|
59
|
+
options?: ShufflePlaylistOptions
|
|
60
|
+
): Promise<void>
|
|
50
61
|
|
|
51
62
|
// Playback control
|
|
52
63
|
loadPlaylist(playlistId: string, index?: number): Promise<void>
|
package/src/types/PlayerQueue.ts
CHANGED
|
@@ -26,6 +26,11 @@ export interface Playlist {
|
|
|
26
26
|
|
|
27
27
|
export type QueueOperation = 'add' | 'remove' | 'clear' | 'update'
|
|
28
28
|
|
|
29
|
+
export interface ShufflePlaylistOptions {
|
|
30
|
+
/** Move the playing track to index 0 and shuffle the rest behind it (default: true). */
|
|
31
|
+
keepCurrentTrackFirst?: boolean
|
|
32
|
+
}
|
|
33
|
+
|
|
29
34
|
export type TrackPlayerState = 'playing' | 'paused' | 'stopped' | 'buffering'
|
|
30
35
|
|
|
31
36
|
export type Reason = 'user_action' | 'skip' | 'end' | 'error' | 'repeat'
|
|
@@ -56,6 +61,15 @@ export interface TimedMetadata {
|
|
|
56
61
|
artworkUrl?: string
|
|
57
62
|
}
|
|
58
63
|
|
|
64
|
+
/**
|
|
65
|
+
* How Android reacts when another app takes audio focus.
|
|
66
|
+
* - 'pause': pause for any interruption and resume after it (default, today's behaviour)
|
|
67
|
+
* - 'duck': keep playing at a reduced volume through transient interruptions
|
|
68
|
+
* - 'ignore': never react to audio focus at all
|
|
69
|
+
* iOS ignores this option.
|
|
70
|
+
*/
|
|
71
|
+
export type AndroidAudioFocusMode = 'pause' | 'duck' | 'ignore'
|
|
72
|
+
|
|
59
73
|
export interface PlayerConfig {
|
|
60
74
|
androidAutoEnabled?: boolean
|
|
61
75
|
carPlayEnabled?: boolean
|
|
@@ -75,4 +89,7 @@ export interface PlayerConfig {
|
|
|
75
89
|
lookaheadCount?: number
|
|
76
90
|
|
|
77
91
|
androidNotificationIcon?: string
|
|
92
|
+
|
|
93
|
+
/** How Android reacts when another app takes audio focus (default: 'pause'). */
|
|
94
|
+
androidAudioFocus?: AndroidAudioFocusMode
|
|
78
95
|
}
|