react-native-nitro-player 0.3.0-alpha.9 → 0.4.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.
Files changed (257) hide show
  1. package/README.md +444 -4
  2. package/android/build.gradle +4 -1
  3. package/android/src/main/AndroidManifest.xml +16 -1
  4. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrary.kt +2 -0
  5. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridAudioDevices.kt +8 -0
  6. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridDownloadManager.kt +225 -0
  7. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridEqualizer.kt +105 -0
  8. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridPlayerQueue.kt +6 -6
  9. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridTrackPlayer.kt +37 -12
  10. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerCore.kt +970 -213
  11. package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadDatabase.kt +475 -0
  12. package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadFileManager.kt +159 -0
  13. package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadManagerCore.kt +489 -0
  14. package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadWorker.kt +209 -0
  15. package/android/src/main/java/com/margelo/nitro/nitroplayer/equalizer/EqualizerCore.kt +486 -0
  16. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaBrowserService.kt +3 -1
  17. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaSessionManager.kt +14 -6
  18. package/android/src/main/java/com/margelo/nitro/nitroplayer/playlist/PlaylistManager.kt +27 -0
  19. package/ios/HybridDownloadManager.swift +226 -0
  20. package/ios/HybridEqualizer.swift +111 -0
  21. package/ios/HybridTrackPlayer.swift +36 -8
  22. package/ios/core/TrackPlayerCore.swift +998 -276
  23. package/ios/download/DownloadDatabase.swift +493 -0
  24. package/ios/download/DownloadFileManager.swift +241 -0
  25. package/ios/download/DownloadManagerCore.swift +923 -0
  26. package/ios/equalizer/EqualizerCore.swift +685 -0
  27. package/ios/media/MediaSessionManager.swift +40 -28
  28. package/ios/playlist/PlaylistManager.swift +40 -9
  29. package/ios/queue/HybridPlayerQueue.swift +33 -13
  30. package/lib/hooks/downloadCallbackManager.d.ts +36 -0
  31. package/lib/hooks/downloadCallbackManager.js +108 -0
  32. package/lib/hooks/equalizerCallbackManager.d.ts +37 -0
  33. package/lib/hooks/equalizerCallbackManager.js +109 -0
  34. package/lib/hooks/index.d.ts +16 -0
  35. package/lib/hooks/index.js +10 -0
  36. package/lib/hooks/useActualQueue.d.ts +48 -0
  37. package/lib/hooks/useActualQueue.js +98 -0
  38. package/lib/hooks/useDownloadActions.d.ts +26 -0
  39. package/lib/hooks/useDownloadActions.js +117 -0
  40. package/lib/hooks/useDownloadProgress.d.ts +25 -0
  41. package/lib/hooks/useDownloadProgress.js +79 -0
  42. package/lib/hooks/useDownloadStorage.d.ts +19 -0
  43. package/lib/hooks/useDownloadStorage.js +60 -0
  44. package/lib/hooks/useDownloadedTracks.d.ts +25 -0
  45. package/lib/hooks/useDownloadedTracks.js +69 -0
  46. package/lib/hooks/useEqualizer.d.ts +25 -0
  47. package/lib/hooks/useEqualizer.js +124 -0
  48. package/lib/hooks/useEqualizerPresets.d.ts +22 -0
  49. package/lib/hooks/useEqualizerPresets.js +96 -0
  50. package/lib/hooks/useNowPlaying.js +3 -2
  51. package/lib/hooks/useOnChangeTrack.js +15 -12
  52. package/lib/hooks/useOnPlaybackStateChange.js +16 -13
  53. package/lib/hooks/usePlaylist.d.ts +48 -0
  54. package/lib/hooks/usePlaylist.js +136 -0
  55. package/lib/index.d.ts +6 -0
  56. package/lib/index.js +6 -0
  57. package/lib/specs/DownloadManager.nitro.d.ts +152 -0
  58. package/lib/specs/DownloadManager.nitro.js +1 -0
  59. package/lib/specs/Equalizer.nitro.d.ts +43 -0
  60. package/lib/specs/Equalizer.nitro.js +1 -0
  61. package/lib/specs/TrackPlayer.nitro.d.ts +6 -2
  62. package/lib/types/DownloadTypes.d.ts +110 -0
  63. package/lib/types/DownloadTypes.js +1 -0
  64. package/lib/types/EqualizerTypes.d.ts +52 -0
  65. package/lib/types/EqualizerTypes.js +1 -0
  66. package/lib/types/PlayerQueue.d.ts +4 -0
  67. package/nitro.json +8 -0
  68. package/nitrogen/generated/android/NitroPlayer+autolinking.cmake +10 -1
  69. package/nitrogen/generated/android/NitroPlayerOnLoad.cpp +32 -2
  70. package/nitrogen/generated/android/c++/JCurrentPlayingType.hpp +65 -0
  71. package/nitrogen/generated/android/c++/JDownloadConfig.hpp +92 -0
  72. package/nitrogen/generated/android/c++/JDownloadError.hpp +71 -0
  73. package/nitrogen/generated/android/c++/JDownloadErrorReason.hpp +74 -0
  74. package/nitrogen/generated/android/c++/JDownloadProgress.hpp +79 -0
  75. package/nitrogen/generated/android/c++/JDownloadQueueStatus.hpp +81 -0
  76. package/nitrogen/generated/android/c++/JDownloadState.hpp +71 -0
  77. package/nitrogen/generated/android/c++/JDownloadStorageInfo.hpp +73 -0
  78. package/nitrogen/generated/android/c++/JDownloadTask.hpp +108 -0
  79. package/nitrogen/generated/android/c++/JDownloadedPlaylist.hpp +111 -0
  80. package/nitrogen/generated/android/c++/JDownloadedTrack.hpp +92 -0
  81. package/nitrogen/generated/android/c++/JEqualizerBand.hpp +69 -0
  82. package/nitrogen/generated/android/c++/JEqualizerPreset.hpp +78 -0
  83. package/nitrogen/generated/android/c++/JEqualizerState.hpp +91 -0
  84. package/nitrogen/generated/android/c++/JFunc_void_DownloadProgress.hpp +80 -0
  85. package/nitrogen/generated/android/c++/JFunc_void_DownloadedTrack.hpp +89 -0
  86. package/nitrogen/generated/android/c++/JFunc_void_TrackItem_std__optional_Reason_.hpp +2 -0
  87. package/nitrogen/generated/android/c++/JFunc_void_std__optional_std__variant_nitro__NullType__std__string__.hpp +81 -0
  88. package/nitrogen/generated/android/c++/JFunc_void_std__string_Playlist_std__optional_QueueOperation_.hpp +2 -0
  89. package/nitrogen/generated/android/c++/JFunc_void_std__string_std__string_DownloadState_std__optional_DownloadError_.hpp +83 -0
  90. package/nitrogen/generated/android/c++/JFunc_void_std__vector_EqualizerBand_.hpp +97 -0
  91. package/nitrogen/generated/android/c++/JFunc_void_std__vector_Playlist__std__optional_QueueOperation_.hpp +2 -0
  92. package/nitrogen/generated/android/c++/JGainRange.hpp +61 -0
  93. package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.cpp +470 -0
  94. package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.hpp +99 -0
  95. package/nitrogen/generated/android/c++/JHybridEqualizerSpec.cpp +204 -0
  96. package/nitrogen/generated/android/c++/JHybridEqualizerSpec.hpp +82 -0
  97. package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.cpp +2 -0
  98. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.cpp +117 -15
  99. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.hpp +6 -2
  100. package/nitrogen/generated/android/c++/JPlaybackSource.hpp +62 -0
  101. package/nitrogen/generated/android/c++/JPlayerState.hpp +11 -3
  102. package/nitrogen/generated/android/c++/JPlaylist.hpp +2 -0
  103. package/nitrogen/generated/android/c++/JPresetType.hpp +59 -0
  104. package/nitrogen/generated/android/c++/JStorageLocation.hpp +59 -0
  105. package/nitrogen/generated/android/c++/JTrackItem.hpp +9 -3
  106. package/nitrogen/generated/android/c++/JTrackPlayerState.hpp +3 -3
  107. package/nitrogen/generated/android/c++/JVariant_NullType_Double.cpp +26 -0
  108. package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +69 -0
  109. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadError.cpp +26 -0
  110. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadError.hpp +74 -0
  111. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadTask.cpp +26 -0
  112. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadTask.hpp +84 -0
  113. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedPlaylist.cpp +26 -0
  114. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedPlaylist.hpp +85 -0
  115. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedTrack.cpp +26 -0
  116. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedTrack.hpp +80 -0
  117. package/nitrogen/generated/android/c++/JVariant_NullType_Playlist.hpp +2 -0
  118. package/nitrogen/generated/android/c++/JVariant_NullType_TrackItem.hpp +2 -0
  119. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/CurrentPlayingType.kt +23 -0
  120. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadConfig.kt +59 -0
  121. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadError.kt +47 -0
  122. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadErrorReason.kt +26 -0
  123. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadProgress.kt +53 -0
  124. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadQueueStatus.kt +56 -0
  125. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadState.kt +25 -0
  126. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadStorageInfo.kt +50 -0
  127. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadTask.kt +65 -0
  128. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadedPlaylist.kt +53 -0
  129. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadedTrack.kt +56 -0
  130. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/EqualizerBand.kt +47 -0
  131. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/EqualizerPreset.kt +44 -0
  132. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/EqualizerState.kt +44 -0
  133. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_DownloadProgress.kt +80 -0
  134. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_DownloadedTrack.kt +80 -0
  135. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__optional_std__variant_nitro__NullType__std__string__.kt +80 -0
  136. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__string_std__string_DownloadState_std__optional_DownloadError_.kt +80 -0
  137. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__vector_EqualizerBand_.kt +80 -0
  138. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/GainRange.kt +41 -0
  139. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridDownloadManagerSpec.kt +210 -0
  140. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridEqualizerSpec.kt +141 -0
  141. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridTrackPlayerSpec.kt +19 -2
  142. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PlaybackSource.kt +22 -0
  143. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PlayerState.kt +6 -3
  144. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PresetType.kt +21 -0
  145. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/StorageLocation.kt +21 -0
  146. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/TrackItem.kt +7 -3
  147. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/TrackPlayerState.kt +2 -2
  148. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_Double.kt +59 -0
  149. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadError.kt +59 -0
  150. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadTask.kt +59 -0
  151. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadedPlaylist.kt +59 -0
  152. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadedTrack.kt +59 -0
  153. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.cpp +138 -8
  154. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.hpp +1046 -121
  155. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Umbrella.hpp +66 -0
  156. package/nitrogen/generated/ios/NitroPlayerAutolinking.mm +16 -0
  157. package/nitrogen/generated/ios/NitroPlayerAutolinking.swift +30 -0
  158. package/nitrogen/generated/ios/c++/HybridDownloadManagerSpecSwift.cpp +11 -0
  159. package/nitrogen/generated/ios/c++/HybridDownloadManagerSpecSwift.hpp +386 -0
  160. package/nitrogen/generated/ios/c++/HybridEqualizerSpecSwift.cpp +11 -0
  161. package/nitrogen/generated/ios/c++/HybridEqualizerSpecSwift.hpp +223 -0
  162. package/nitrogen/generated/ios/c++/HybridPlayerQueueSpecSwift.hpp +1 -0
  163. package/nitrogen/generated/ios/c++/HybridTrackPlayerSpecSwift.hpp +46 -6
  164. package/nitrogen/generated/ios/swift/CurrentPlayingType.swift +48 -0
  165. package/nitrogen/generated/ios/swift/DownloadConfig.swift +270 -0
  166. package/nitrogen/generated/ios/swift/DownloadError.swift +69 -0
  167. package/nitrogen/generated/ios/swift/DownloadErrorReason.swift +60 -0
  168. package/nitrogen/generated/ios/swift/DownloadProgress.swift +91 -0
  169. package/nitrogen/generated/ios/swift/DownloadQueueStatus.swift +102 -0
  170. package/nitrogen/generated/ios/swift/DownloadState.swift +56 -0
  171. package/nitrogen/generated/ios/swift/DownloadStorageInfo.swift +80 -0
  172. package/nitrogen/generated/ios/swift/DownloadTask.swift +315 -0
  173. package/nitrogen/generated/ios/swift/DownloadedPlaylist.swift +103 -0
  174. package/nitrogen/generated/ios/swift/DownloadedTrack.swift +147 -0
  175. package/nitrogen/generated/ios/swift/EqualizerBand.swift +69 -0
  176. package/nitrogen/generated/ios/swift/EqualizerPreset.swift +70 -0
  177. package/nitrogen/generated/ios/swift/EqualizerState.swift +115 -0
  178. package/nitrogen/generated/ios/swift/Func_void.swift +47 -0
  179. package/nitrogen/generated/ios/swift/Func_void_DownloadProgress.swift +47 -0
  180. package/nitrogen/generated/ios/swift/Func_void_DownloadStorageInfo.swift +47 -0
  181. package/nitrogen/generated/ios/swift/Func_void_DownloadedTrack.swift +47 -0
  182. package/nitrogen/generated/ios/swift/Func_void_PlayerState.swift +47 -0
  183. package/nitrogen/generated/ios/swift/Func_void_bool.swift +5 -5
  184. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
  185. package/nitrogen/generated/ios/swift/Func_void_std__optional_std__variant_nitro__NullType__std__string__.swift +66 -0
  186. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +47 -0
  187. package/nitrogen/generated/ios/swift/Func_void_std__string_std__string_DownloadState_std__optional_DownloadError_.swift +47 -0
  188. package/nitrogen/generated/ios/swift/Func_void_std__vector_EqualizerBand_.swift +47 -0
  189. package/nitrogen/generated/ios/swift/Func_void_std__vector_TrackItem_.swift +47 -0
  190. package/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift +47 -0
  191. package/nitrogen/generated/ios/swift/GainRange.swift +47 -0
  192. package/nitrogen/generated/ios/swift/HybridDownloadManagerSpec.swift +90 -0
  193. package/nitrogen/generated/ios/swift/HybridDownloadManagerSpec_cxx.swift +705 -0
  194. package/nitrogen/generated/ios/swift/HybridEqualizerSpec.swift +73 -0
  195. package/nitrogen/generated/ios/swift/HybridEqualizerSpec_cxx.swift +396 -0
  196. package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec.swift +6 -2
  197. package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec_cxx.swift +105 -8
  198. package/nitrogen/generated/ios/swift/PlaybackSource.swift +44 -0
  199. package/nitrogen/generated/ios/swift/PlayerState.swift +13 -2
  200. package/nitrogen/generated/ios/swift/PresetType.swift +40 -0
  201. package/nitrogen/generated/ios/swift/StorageLocation.swift +40 -0
  202. package/nitrogen/generated/ios/swift/TrackItem.swift +31 -1
  203. package/nitrogen/generated/ios/swift/TrackPlayerState.swift +4 -4
  204. package/nitrogen/generated/ios/swift/Variant_NullType_Double.swift +18 -0
  205. package/nitrogen/generated/ios/swift/Variant_NullType_DownloadError.swift +18 -0
  206. package/nitrogen/generated/ios/swift/Variant_NullType_DownloadTask.swift +18 -0
  207. package/nitrogen/generated/ios/swift/Variant_NullType_DownloadedPlaylist.swift +18 -0
  208. package/nitrogen/generated/ios/swift/Variant_NullType_DownloadedTrack.swift +18 -0
  209. package/nitrogen/generated/shared/c++/CurrentPlayingType.hpp +84 -0
  210. package/nitrogen/generated/shared/c++/DownloadConfig.hpp +108 -0
  211. package/nitrogen/generated/shared/c++/DownloadError.hpp +89 -0
  212. package/nitrogen/generated/shared/c++/DownloadErrorReason.hpp +96 -0
  213. package/nitrogen/generated/shared/c++/DownloadProgress.hpp +97 -0
  214. package/nitrogen/generated/shared/c++/DownloadQueueStatus.hpp +99 -0
  215. package/nitrogen/generated/shared/c++/DownloadState.hpp +92 -0
  216. package/nitrogen/generated/shared/c++/DownloadStorageInfo.hpp +91 -0
  217. package/nitrogen/generated/shared/c++/DownloadTask.hpp +122 -0
  218. package/nitrogen/generated/shared/c++/DownloadedPlaylist.hpp +101 -0
  219. package/nitrogen/generated/shared/c++/DownloadedTrack.hpp +107 -0
  220. package/nitrogen/generated/shared/c++/EqualizerBand.hpp +87 -0
  221. package/nitrogen/generated/shared/c++/EqualizerPreset.hpp +86 -0
  222. package/nitrogen/generated/shared/c++/EqualizerState.hpp +89 -0
  223. package/nitrogen/generated/shared/c++/GainRange.hpp +79 -0
  224. package/nitrogen/generated/shared/c++/HybridDownloadManagerSpec.cpp +55 -0
  225. package/nitrogen/generated/shared/c++/HybridDownloadManagerSpec.hpp +134 -0
  226. package/nitrogen/generated/shared/c++/HybridEqualizerSpec.cpp +38 -0
  227. package/nitrogen/generated/shared/c++/HybridEqualizerSpec.hpp +95 -0
  228. package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.cpp +4 -0
  229. package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.hpp +11 -5
  230. package/nitrogen/generated/shared/c++/PlaybackSource.hpp +80 -0
  231. package/nitrogen/generated/shared/c++/PlayerState.hpp +9 -2
  232. package/nitrogen/generated/shared/c++/PresetType.hpp +76 -0
  233. package/nitrogen/generated/shared/c++/StorageLocation.hpp +76 -0
  234. package/nitrogen/generated/shared/c++/TrackItem.hpp +7 -2
  235. package/nitrogen/generated/shared/c++/TrackPlayerState.hpp +5 -5
  236. package/package.json +1 -1
  237. package/src/hooks/downloadCallbackManager.ts +149 -0
  238. package/src/hooks/equalizerCallbackManager.ts +138 -0
  239. package/src/hooks/index.ts +23 -0
  240. package/src/hooks/useActualQueue.ts +116 -0
  241. package/src/hooks/useDownloadActions.ts +179 -0
  242. package/src/hooks/useDownloadProgress.ts +126 -0
  243. package/src/hooks/useDownloadStorage.ts +84 -0
  244. package/src/hooks/useDownloadedTracks.ts +138 -0
  245. package/src/hooks/useEqualizer.ts +173 -0
  246. package/src/hooks/useEqualizerPresets.ts +140 -0
  247. package/src/hooks/useNowPlaying.ts +3 -2
  248. package/src/hooks/useOnChangeTrack.ts +15 -11
  249. package/src/hooks/useOnPlaybackStateChange.ts +19 -15
  250. package/src/hooks/usePlaylist.ts +161 -0
  251. package/src/index.ts +12 -0
  252. package/src/specs/DownloadManager.nitro.ts +203 -0
  253. package/src/specs/Equalizer.nitro.ts +69 -0
  254. package/src/specs/TrackPlayer.nitro.ts +6 -2
  255. package/src/types/DownloadTypes.ts +135 -0
  256. package/src/types/EqualizerTypes.ts +72 -0
  257. package/src/types/PlayerQueue.ts +9 -0
@@ -0,0 +1,225 @@
1
+ package com.margelo.nitro.nitroplayer
2
+
3
+ import androidx.annotation.Keep
4
+ import com.facebook.proguard.annotations.DoNotStrip
5
+ import com.margelo.nitro.NitroModules
6
+ import com.margelo.nitro.core.NullType
7
+ import com.margelo.nitro.core.Promise
8
+ import com.margelo.nitro.nitroplayer.download.DownloadManagerCore
9
+
10
+ /**
11
+ * Hybrid implementation of DownloadManagerSpec for Android
12
+ * Bridges Nitro modules with the native DownloadManagerCore implementation
13
+ */
14
+ @DoNotStrip
15
+ @Keep
16
+ class HybridDownloadManager : HybridDownloadManagerSpec() {
17
+ private val core: DownloadManagerCore
18
+
19
+ init {
20
+ val context =
21
+ NitroModules.applicationContext
22
+ ?: throw IllegalStateException("React Context is not initialized")
23
+ core = DownloadManagerCore.getInstance(context)
24
+ }
25
+
26
+ // Configuration
27
+ @DoNotStrip
28
+ @Keep
29
+ override fun configure(config: DownloadConfig) {
30
+ core.configure(config)
31
+ }
32
+
33
+ @DoNotStrip
34
+ @Keep
35
+ override fun getConfig(): DownloadConfig = core.getConfig()
36
+
37
+ // Download Operations
38
+ override fun downloadTrack(
39
+ track: TrackItem,
40
+ playlistId: String?,
41
+ ): Promise<String> =
42
+ Promise.async {
43
+ core.downloadTrack(track, playlistId)
44
+ }
45
+
46
+ override fun downloadPlaylist(
47
+ playlistId: String,
48
+ tracks: Array<TrackItem>,
49
+ ): Promise<Array<String>> =
50
+ Promise.async {
51
+ core.downloadPlaylist(playlistId, tracks)
52
+ }
53
+
54
+ // Download Control
55
+ override fun pauseDownload(downloadId: String): Promise<Unit> =
56
+ Promise.async {
57
+ core.pauseDownload(downloadId)
58
+ }
59
+
60
+ override fun resumeDownload(downloadId: String): Promise<Unit> =
61
+ Promise.async {
62
+ core.resumeDownload(downloadId)
63
+ }
64
+
65
+ override fun cancelDownload(downloadId: String): Promise<Unit> =
66
+ Promise.async {
67
+ core.cancelDownload(downloadId)
68
+ }
69
+
70
+ override fun retryDownload(downloadId: String): Promise<Unit> =
71
+ Promise.async {
72
+ core.retryDownload(downloadId)
73
+ }
74
+
75
+ override fun pauseAllDownloads(): Promise<Unit> =
76
+ Promise.async {
77
+ core.pauseAllDownloads()
78
+ }
79
+
80
+ override fun resumeAllDownloads(): Promise<Unit> =
81
+ Promise.async {
82
+ core.resumeAllDownloads()
83
+ }
84
+
85
+ override fun cancelAllDownloads(): Promise<Unit> =
86
+ Promise.async {
87
+ core.cancelAllDownloads()
88
+ }
89
+
90
+ // Download Status
91
+ @DoNotStrip
92
+ @Keep
93
+ override fun getDownloadTask(downloadId: String): Variant_NullType_DownloadTask {
94
+ val task = core.getDownloadTask(downloadId)
95
+ return if (task != null) {
96
+ Variant_NullType_DownloadTask.create(task)
97
+ } else {
98
+ Variant_NullType_DownloadTask.create(NullType.NULL)
99
+ }
100
+ }
101
+
102
+ @DoNotStrip
103
+ @Keep
104
+ override fun getActiveDownloads(): Array<DownloadTask> = core.getActiveDownloads()
105
+
106
+ @DoNotStrip
107
+ @Keep
108
+ override fun getQueueStatus(): DownloadQueueStatus = core.getQueueStatus()
109
+
110
+ @DoNotStrip
111
+ @Keep
112
+ override fun isDownloading(trackId: String): Boolean = core.isDownloading(trackId)
113
+
114
+ @DoNotStrip
115
+ @Keep
116
+ override fun getDownloadState(trackId: String): DownloadState = core.getDownloadState(trackId)
117
+
118
+ // Downloaded Content Queries
119
+ @DoNotStrip
120
+ @Keep
121
+ override fun isTrackDownloaded(trackId: String): Boolean = core.isTrackDownloaded(trackId)
122
+
123
+ @DoNotStrip
124
+ @Keep
125
+ override fun isPlaylistDownloaded(playlistId: String): Boolean = core.isPlaylistDownloaded(playlistId)
126
+
127
+ @DoNotStrip
128
+ @Keep
129
+ override fun isPlaylistPartiallyDownloaded(playlistId: String): Boolean = core.isPlaylistPartiallyDownloaded(playlistId)
130
+
131
+ @DoNotStrip
132
+ @Keep
133
+ override fun getDownloadedTrack(trackId: String): Variant_NullType_DownloadedTrack {
134
+ val track = core.getDownloadedTrack(trackId)
135
+ return if (track != null) {
136
+ Variant_NullType_DownloadedTrack.create(track)
137
+ } else {
138
+ Variant_NullType_DownloadedTrack.create(NullType.NULL)
139
+ }
140
+ }
141
+
142
+ @DoNotStrip
143
+ @Keep
144
+ override fun getAllDownloadedTracks(): Array<DownloadedTrack> = core.getAllDownloadedTracks()
145
+
146
+ @DoNotStrip
147
+ @Keep
148
+ override fun getDownloadedPlaylist(playlistId: String): Variant_NullType_DownloadedPlaylist {
149
+ val playlist = core.getDownloadedPlaylist(playlistId)
150
+ return if (playlist != null) {
151
+ Variant_NullType_DownloadedPlaylist.create(playlist)
152
+ } else {
153
+ Variant_NullType_DownloadedPlaylist.create(NullType.NULL)
154
+ }
155
+ }
156
+
157
+ @DoNotStrip
158
+ @Keep
159
+ override fun getAllDownloadedPlaylists(): Array<DownloadedPlaylist> = core.getAllDownloadedPlaylists()
160
+
161
+ @DoNotStrip
162
+ @Keep
163
+ override fun getLocalPath(trackId: String): Variant_NullType_String {
164
+ val path = core.getLocalPath(trackId)
165
+ return if (path != null) {
166
+ Variant_NullType_String.create(path)
167
+ } else {
168
+ Variant_NullType_String.create(NullType.NULL)
169
+ }
170
+ }
171
+
172
+ // Deletion
173
+ override fun deleteDownloadedTrack(trackId: String): Promise<Unit> =
174
+ Promise.async {
175
+ core.deleteDownloadedTrack(trackId)
176
+ }
177
+
178
+ override fun deleteDownloadedPlaylist(playlistId: String): Promise<Unit> =
179
+ Promise.async {
180
+ core.deleteDownloadedPlaylist(playlistId)
181
+ }
182
+
183
+ override fun deleteAllDownloads(): Promise<Unit> =
184
+ Promise.async {
185
+ core.deleteAllDownloads()
186
+ }
187
+
188
+ // Storage Management
189
+ override fun getStorageInfo(): Promise<DownloadStorageInfo> =
190
+ Promise.async {
191
+ core.getStorageInfo()
192
+ }
193
+
194
+ @DoNotStrip
195
+ @Keep
196
+ override fun syncDownloads(): Double = core.syncDownloads().toDouble()
197
+
198
+ // Playback Source Preference
199
+ @DoNotStrip
200
+ @Keep
201
+ override fun setPlaybackSourcePreference(preference: PlaybackSource) {
202
+ core.setPlaybackSourcePreference(preference)
203
+ }
204
+
205
+ @DoNotStrip
206
+ @Keep
207
+ override fun getPlaybackSourcePreference(): PlaybackSource = core.getPlaybackSourcePreference()
208
+
209
+ @DoNotStrip
210
+ @Keep
211
+ override fun getEffectiveUrl(track: TrackItem): String = core.getEffectiveUrl(track)
212
+
213
+ // Event Callbacks
214
+ override fun onDownloadProgress(callback: (progress: DownloadProgress) -> Unit) {
215
+ core.addProgressCallback(callback)
216
+ }
217
+
218
+ override fun onDownloadStateChange(callback: (downloadId: String, trackId: String, state: DownloadState, error: DownloadError?) -> Unit) {
219
+ core.addStateChangeCallback(callback)
220
+ }
221
+
222
+ override fun onDownloadComplete(callback: (downloadedTrack: DownloadedTrack) -> Unit) {
223
+ core.addCompleteCallback(callback)
224
+ }
225
+ }
@@ -0,0 +1,105 @@
1
+ package com.margelo.nitro.nitroplayer
2
+
3
+ import androidx.annotation.Keep
4
+ import com.facebook.proguard.annotations.DoNotStrip
5
+ import com.margelo.nitro.NitroModules
6
+ import com.margelo.nitro.core.NullType
7
+ import com.margelo.nitro.nitroplayer.equalizer.EqualizerCore
8
+
9
+ @DoNotStrip
10
+ @Keep
11
+ class HybridEqualizer : HybridEqualizerSpec() {
12
+ private val core: EqualizerCore
13
+
14
+ init {
15
+ val context =
16
+ NitroModules.applicationContext ?: throw IllegalStateException("React Context is not initialized")
17
+
18
+ // Get the equalizer core - it will initialize lazily with audio session 0
19
+ // and be re-initialized with the proper session when onAudioSessionIdChanged fires
20
+ core = EqualizerCore.getInstance(context)
21
+ core.ensureInitialized()
22
+ }
23
+
24
+ @DoNotStrip
25
+ @Keep
26
+ override fun setEnabled(enabled: Boolean): Boolean = core.setEnabled(enabled)
27
+
28
+ @DoNotStrip
29
+ @Keep
30
+ override fun isEnabled(): Boolean = core.isEnabled()
31
+
32
+ @DoNotStrip
33
+ @Keep
34
+ override fun getBands(): Array<EqualizerBand> = core.getBands()
35
+
36
+ @DoNotStrip
37
+ @Keep
38
+ override fun setBandGain(
39
+ bandIndex: Double,
40
+ gainDb: Double,
41
+ ): Boolean = core.setBandGain(bandIndex.toInt(), gainDb)
42
+
43
+ @DoNotStrip
44
+ @Keep
45
+ override fun setAllBandGains(gains: DoubleArray): Boolean = core.setAllBandGains(gains)
46
+
47
+ @DoNotStrip
48
+ @Keep
49
+ override fun getBandRange(): GainRange = core.getBandRange()
50
+
51
+ @DoNotStrip
52
+ @Keep
53
+ override fun getPresets(): Array<EqualizerPreset> = core.getPresets()
54
+
55
+ @DoNotStrip
56
+ @Keep
57
+ override fun getBuiltInPresets(): Array<EqualizerPreset> = core.getBuiltInPresets()
58
+
59
+ @DoNotStrip
60
+ @Keep
61
+ override fun getCustomPresets(): Array<EqualizerPreset> = core.getCustomPresets()
62
+
63
+ @DoNotStrip
64
+ @Keep
65
+ override fun applyPreset(presetName: String): Boolean = core.applyPreset(presetName)
66
+
67
+ @DoNotStrip
68
+ @Keep
69
+ override fun getCurrentPresetName(): Variant_NullType_String {
70
+ val name = core.getCurrentPresetName()
71
+ return if (name != null) {
72
+ Variant_NullType_String.create(name)
73
+ } else {
74
+ Variant_NullType_String.create(NullType.NULL)
75
+ }
76
+ }
77
+
78
+ @DoNotStrip
79
+ @Keep
80
+ override fun saveCustomPreset(name: String): Boolean = core.saveCustomPreset(name)
81
+
82
+ @DoNotStrip
83
+ @Keep
84
+ override fun deleteCustomPreset(name: String): Boolean = core.deleteCustomPreset(name)
85
+
86
+ @DoNotStrip
87
+ @Keep
88
+ override fun getState(): EqualizerState = core.getState()
89
+
90
+ @DoNotStrip
91
+ @Keep
92
+ override fun reset() = core.reset()
93
+
94
+ override fun onEnabledChange(callback: (enabled: Boolean) -> Unit) {
95
+ core.addOnEnabledChangeListener(callback)
96
+ }
97
+
98
+ override fun onBandChange(callback: (bands: Array<EqualizerBand>) -> Unit) {
99
+ core.addOnBandChangeListener(callback)
100
+ }
101
+
102
+ override fun onPresetChange(callback: (presetName: Variant_NullType_String?) -> Unit) {
103
+ core.addOnPresetChangeListener(callback)
104
+ }
105
+ }
@@ -10,6 +10,8 @@ import com.margelo.nitro.nitroplayer.playlist.PlaylistManager
10
10
  import java.util.UUID
11
11
  import com.margelo.nitro.nitroplayer.playlist.Playlist as InternalPlaylist
12
12
 
13
+ @DoNotStrip
14
+ @Keep
13
15
  class HybridPlayerQueue : HybridPlayerQueueSpec() {
14
16
  private val core: TrackPlayerCore
15
17
  private val playlistManager: PlaylistManager
@@ -20,7 +22,7 @@ class HybridPlayerQueue : HybridPlayerQueueSpec() {
20
22
  playlistManager = core.getPlaylistManager()
21
23
  }
22
24
 
23
- private var playlistsChangeListener: (() -> Unit)? = null
25
+ private val playlistsChangeListeners = mutableListOf<() -> Unit>()
24
26
  private val playlistChangeListeners = mutableMapOf<String, () -> Unit>()
25
27
 
26
28
  @DoNotStrip
@@ -129,14 +131,12 @@ class HybridPlayerQueue : HybridPlayerQueueSpec() {
129
131
  @DoNotStrip
130
132
  @Keep
131
133
  override fun onPlaylistsChanged(callback: (playlists: Array<Playlist>, operation: QueueOperation?) -> Unit) {
132
- // Remove previous listener if exists
133
- playlistsChangeListener?.invoke()
134
-
135
- // Add new listener
136
- playlistsChangeListener =
134
+ // Add new listener and store the cleanup function
135
+ val removeListener =
137
136
  playlistManager.addPlaylistsChangeListener { playlists, operation ->
138
137
  callback(playlists.map { it.toPlaylist() }.toTypedArray(), operation)
139
138
  }
139
+ playlistsChangeListeners.add(removeListener)
140
140
  }
141
141
 
142
142
  @DoNotStrip
@@ -3,8 +3,11 @@ package com.margelo.nitro.nitroplayer
3
3
  import androidx.annotation.Keep
4
4
  import com.facebook.proguard.annotations.DoNotStrip
5
5
  import com.margelo.nitro.NitroModules
6
+ import com.margelo.nitro.core.Promise
6
7
  import com.margelo.nitro.nitroplayer.core.TrackPlayerCore
7
8
 
9
+ @DoNotStrip
10
+ @Keep
8
11
  class HybridTrackPlayer : HybridTrackPlayerSpec() {
9
12
  private val core: TrackPlayerCore
10
13
 
@@ -26,14 +29,13 @@ class HybridTrackPlayer : HybridTrackPlayerSpec() {
26
29
  core.pause()
27
30
  }
28
31
 
29
- @DoNotStrip
30
- @Keep
31
32
  override fun playSong(
32
33
  songId: String,
33
34
  fromPlaylist: String?,
34
- ) {
35
- core.playSong(songId, fromPlaylist)
36
- }
35
+ ): Promise<Unit> =
36
+ Promise.async {
37
+ core.playSong(songId, fromPlaylist)
38
+ }
37
39
 
38
40
  @DoNotStrip
39
41
  @Keep
@@ -53,28 +55,44 @@ class HybridTrackPlayer : HybridTrackPlayerSpec() {
53
55
  core.seek(position)
54
56
  }
55
57
 
56
- @DoNotStrip
57
- @Keep
58
- override fun getState(): PlayerState = core.getState()
58
+ override fun addToUpNext(trackId: String): Promise<Unit> =
59
+ Promise.async {
60
+ core.addToUpNext(trackId)
61
+ }
62
+
63
+ override fun playNext(trackId: String): Promise<Unit> =
64
+ Promise.async {
65
+ core.playNext(trackId)
66
+ }
67
+
68
+ override fun getActualQueue(): Promise<Array<TrackItem>> =
69
+ Promise.async {
70
+ core.getActualQueue().toTypedArray()
71
+ }
72
+
73
+ override fun getState(): Promise<PlayerState> =
74
+ Promise.async {
75
+ core.getState()
76
+ }
59
77
 
60
78
  @DoNotStrip
61
79
  @Keep
62
80
  override fun setRepeatMode(mode: RepeatMode): Boolean = core.setRepeatMode(mode)
63
81
 
64
82
  override fun onChangeTrack(callback: (track: TrackItem, reason: Reason?) -> Unit) {
65
- core.onChangeTrack = callback
83
+ core.addOnChangeTrackListener(callback)
66
84
  }
67
85
 
68
86
  override fun onPlaybackStateChange(callback: (state: TrackPlayerState, reason: Reason?) -> Unit) {
69
- core.onPlaybackStateChange = callback
87
+ core.addOnPlaybackStateChangeListener(callback)
70
88
  }
71
89
 
72
90
  override fun onSeek(callback: (position: Double, totalDuration: Double) -> Unit) {
73
- core.onSeek = callback
91
+ core.addOnSeekListener(callback)
74
92
  }
75
93
 
76
94
  override fun onPlaybackProgressChange(callback: (position: Double, totalDuration: Double, isManuallySeeked: Boolean?) -> Unit) {
77
- core.onPlaybackProgressChange = callback
95
+ core.addOnPlaybackProgressChangeListener(callback)
78
96
  }
79
97
 
80
98
  @DoNotStrip
@@ -98,4 +116,11 @@ class HybridTrackPlayer : HybridTrackPlayerSpec() {
98
116
  @DoNotStrip
99
117
  @Keep
100
118
  override fun setVolume(volume: Double): Boolean = core.setVolume(volume)
119
+
120
+ @DoNotStrip
121
+ @Keep
122
+ override fun skipToIndex(index: Double): Promise<Boolean> =
123
+ Promise.async {
124
+ core.skipToIndex(index.toInt())
125
+ }
101
126
  }