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,226 @@
1
+ //
2
+ // HybridDownloadManager.swift
3
+ // NitroPlayer
4
+ //
5
+ // Created by Ritesh Shukla on 2026-01-23..
6
+ //
7
+
8
+ import Foundation
9
+ import NitroModules
10
+
11
+ /// Hybrid implementation of DownloadManagerSpec for iOS
12
+ /// Bridges Nitro modules with the native DownloadManagerCore implementation
13
+ final class HybridDownloadManager: HybridDownloadManagerSpec {
14
+
15
+ // MARK: - Properties
16
+
17
+ private let core: DownloadManagerCore
18
+
19
+ // MARK: - Initialization
20
+
21
+ override init() {
22
+ core = DownloadManagerCore.shared
23
+ super.init()
24
+ }
25
+
26
+ // MARK: - Configuration
27
+
28
+ func configure(config: DownloadConfig) throws {
29
+ core.configure(config)
30
+ }
31
+
32
+ func getConfig() throws -> DownloadConfig {
33
+ return core.getConfig()
34
+ }
35
+
36
+ // MARK: - Download Operations
37
+
38
+ func downloadTrack(track: TrackItem, playlistId: String?) throws -> Promise<String> {
39
+ return Promise.async {
40
+ return self.core.downloadTrack(track: track, playlistId: playlistId)
41
+ }
42
+ }
43
+
44
+ func downloadPlaylist(playlistId: String, tracks: [TrackItem]) throws -> Promise<[String]> {
45
+ return Promise.async {
46
+ return self.core.downloadPlaylist(playlistId: playlistId, tracks: tracks)
47
+ }
48
+ }
49
+
50
+ // MARK: - Download Control
51
+
52
+ func pauseDownload(downloadId: String) throws -> Promise<Void> {
53
+ return Promise.async {
54
+ self.core.pauseDownload(downloadId: downloadId)
55
+ }
56
+ }
57
+
58
+ func resumeDownload(downloadId: String) throws -> Promise<Void> {
59
+ return Promise.async {
60
+ self.core.resumeDownload(downloadId: downloadId)
61
+ }
62
+ }
63
+
64
+ func cancelDownload(downloadId: String) throws -> Promise<Void> {
65
+ return Promise.async {
66
+ self.core.cancelDownload(downloadId: downloadId)
67
+ }
68
+ }
69
+
70
+ func retryDownload(downloadId: String) throws -> Promise<Void> {
71
+ return Promise.async {
72
+ self.core.retryDownload(downloadId: downloadId)
73
+ }
74
+ }
75
+
76
+ func pauseAllDownloads() throws -> Promise<Void> {
77
+ return Promise.async {
78
+ self.core.pauseAllDownloads()
79
+ }
80
+ }
81
+
82
+ func resumeAllDownloads() throws -> Promise<Void> {
83
+ return Promise.async {
84
+ self.core.resumeAllDownloads()
85
+ }
86
+ }
87
+
88
+ func cancelAllDownloads() throws -> Promise<Void> {
89
+ return Promise.async {
90
+ self.core.cancelAllDownloads()
91
+ }
92
+ }
93
+
94
+ // MARK: - Download Status
95
+
96
+ func getDownloadTask(downloadId: String) throws -> Variant_NullType_DownloadTask {
97
+ if let task = core.getDownloadTask(downloadId: downloadId) {
98
+ return Variant_NullType_DownloadTask.second(task)
99
+ }
100
+ return Variant_NullType_DownloadTask.first(NullType.null)
101
+ }
102
+
103
+ func getActiveDownloads() throws -> [DownloadTask] {
104
+ return core.getActiveDownloads()
105
+ }
106
+
107
+ func getQueueStatus() throws -> DownloadQueueStatus {
108
+ return core.getQueueStatus()
109
+ }
110
+
111
+ func isDownloading(trackId: String) throws -> Bool {
112
+ return core.isDownloading(trackId: trackId)
113
+ }
114
+
115
+ func getDownloadState(trackId: String) throws -> DownloadState {
116
+ return core.getDownloadState(trackId: trackId) ?? .pending
117
+ }
118
+
119
+ // MARK: - Downloaded Content Queries
120
+
121
+ func isTrackDownloaded(trackId: String) throws -> Bool {
122
+ return core.isTrackDownloaded(trackId: trackId)
123
+ }
124
+
125
+ func isPlaylistDownloaded(playlistId: String) throws -> Bool {
126
+ return core.isPlaylistDownloaded(playlistId: playlistId)
127
+ }
128
+
129
+ func isPlaylistPartiallyDownloaded(playlistId: String) throws -> Bool {
130
+ return core.isPlaylistPartiallyDownloaded(playlistId: playlistId)
131
+ }
132
+
133
+ func getDownloadedTrack(trackId: String) throws -> Variant_NullType_DownloadedTrack {
134
+ if let track = core.getDownloadedTrack(trackId: trackId) {
135
+ return Variant_NullType_DownloadedTrack.second(track)
136
+ }
137
+ return Variant_NullType_DownloadedTrack.first(NullType.null)
138
+ }
139
+
140
+ func getAllDownloadedTracks() throws -> [DownloadedTrack] {
141
+ return core.getAllDownloadedTracks()
142
+ }
143
+
144
+ func getDownloadedPlaylist(playlistId: String) throws -> Variant_NullType_DownloadedPlaylist {
145
+ if let playlist = core.getDownloadedPlaylist(playlistId: playlistId) {
146
+ return Variant_NullType_DownloadedPlaylist.second(playlist)
147
+ }
148
+ return Variant_NullType_DownloadedPlaylist.first(NullType.null)
149
+ }
150
+
151
+ func getAllDownloadedPlaylists() throws -> [DownloadedPlaylist] {
152
+ return core.getAllDownloadedPlaylists()
153
+ }
154
+
155
+ func getLocalPath(trackId: String) throws -> Variant_NullType_String {
156
+ if let path = core.getLocalPath(trackId: trackId) {
157
+ return Variant_NullType_String.second(path)
158
+ }
159
+ return Variant_NullType_String.first(NullType.null)
160
+ }
161
+
162
+ // MARK: - Deletion
163
+
164
+ func deleteDownloadedTrack(trackId: String) throws -> Promise<Void> {
165
+ return Promise.async {
166
+ self.core.deleteDownloadedTrack(trackId: trackId)
167
+ }
168
+ }
169
+
170
+ func deleteDownloadedPlaylist(playlistId: String) throws -> Promise<Void> {
171
+ return Promise.async {
172
+ self.core.deleteDownloadedPlaylist(playlistId: playlistId)
173
+ }
174
+ }
175
+
176
+ func deleteAllDownloads() throws -> Promise<Void> {
177
+ return Promise.async {
178
+ self.core.deleteAllDownloads()
179
+ }
180
+ }
181
+
182
+ // MARK: - Storage Management
183
+
184
+ func getStorageInfo() throws -> Promise<DownloadStorageInfo> {
185
+ return Promise.async {
186
+ return self.core.getStorageInfo()
187
+ }
188
+ }
189
+
190
+ func syncDownloads() throws -> Double {
191
+ return Double(core.syncDownloads())
192
+ }
193
+
194
+ // MARK: - Playback Source Preference
195
+
196
+ func setPlaybackSourcePreference(preference: PlaybackSource) throws {
197
+ core.setPlaybackSourcePreference(preference)
198
+ }
199
+
200
+ func getPlaybackSourcePreference() throws -> PlaybackSource {
201
+ return core.getPlaybackSourcePreference()
202
+ }
203
+
204
+ func getEffectiveUrl(track: TrackItem) throws -> String {
205
+ return core.getEffectiveUrl(track: track)
206
+ }
207
+
208
+ // MARK: - Event Callbacks
209
+
210
+ func onDownloadProgress(callback: @escaping (DownloadProgress) -> Void) throws {
211
+ print("🎯 HybridDownloadManager: onDownloadProgress callback registered")
212
+ core.addProgressCallback(callback)
213
+ }
214
+
215
+ func onDownloadStateChange(
216
+ callback: @escaping (String, String, DownloadState, DownloadError?) -> Void
217
+ ) throws {
218
+ print("🎯 HybridDownloadManager: onDownloadStateChange callback registered")
219
+ core.addStateChangeCallback(callback)
220
+ }
221
+
222
+ func onDownloadComplete(callback: @escaping (DownloadedTrack) -> Void) throws {
223
+ print("🎯 HybridDownloadManager: onDownloadComplete callback registered")
224
+ core.addCompleteCallback(callback)
225
+ }
226
+ }
@@ -0,0 +1,111 @@
1
+ //
2
+ // HybridEqualizer.swift
3
+ // NitroPlayer
4
+ //
5
+ // Created by Ritesh Shukla on 04/02/26.
6
+ //
7
+
8
+ import Foundation
9
+ import NitroModules
10
+
11
+ final class HybridEqualizer: HybridEqualizerSpec {
12
+ // MARK: - Properties
13
+
14
+ private let core: EqualizerCore
15
+
16
+ // MARK: - Initialization
17
+
18
+ override init() {
19
+ core = EqualizerCore.shared
20
+ super.init()
21
+ }
22
+
23
+ // MARK: - Enable/Disable
24
+
25
+ func setEnabled(enabled: Bool) throws -> Bool {
26
+ return core.setEnabled(enabled)
27
+ }
28
+
29
+ func isEnabled() throws -> Bool {
30
+ return core.isEnabled()
31
+ }
32
+
33
+ // MARK: - Band Control
34
+
35
+ func getBands() throws -> [EqualizerBand] {
36
+ return core.getBands()
37
+ }
38
+
39
+ func setBandGain(bandIndex: Double, gainDb: Double) throws -> Bool {
40
+ return core.setBandGain(bandIndex: Int(bandIndex), gainDb: gainDb)
41
+ }
42
+
43
+ func setAllBandGains(gains: [Double]) throws -> Bool {
44
+ return core.setAllBandGains(gains)
45
+ }
46
+
47
+ func getBandRange() throws -> GainRange {
48
+ return core.getBandRange()
49
+ }
50
+
51
+ // MARK: - Presets
52
+
53
+ func getPresets() throws -> [EqualizerPreset] {
54
+ return core.getPresets()
55
+ }
56
+
57
+ func getBuiltInPresets() throws -> [EqualizerPreset] {
58
+ return core.getBuiltInPresets()
59
+ }
60
+
61
+ func getCustomPresets() throws -> [EqualizerPreset] {
62
+ return core.getCustomPresets()
63
+ }
64
+
65
+ func applyPreset(presetName: String) throws -> Bool {
66
+ return core.applyPreset(presetName)
67
+ }
68
+
69
+ func getCurrentPresetName() throws -> Variant_NullType_String {
70
+ if let name = core.getCurrentPresetName() {
71
+ return .second(name)
72
+ } else {
73
+ return .first(NullType.null)
74
+ }
75
+ }
76
+
77
+ func saveCustomPreset(name: String) throws -> Bool {
78
+ return core.saveCustomPreset(name)
79
+ }
80
+
81
+ func deleteCustomPreset(name: String) throws -> Bool {
82
+ return core.deleteCustomPreset(name)
83
+ }
84
+
85
+ // MARK: - State
86
+
87
+ func getState() throws -> EqualizerState {
88
+ return core.getState()
89
+ }
90
+
91
+ func reset() throws {
92
+ core.reset()
93
+ }
94
+
95
+ // MARK: - Event Callbacks
96
+
97
+ func onEnabledChange(callback: @escaping (Bool) -> Void) throws {
98
+ print("🎯 HybridEqualizer: onEnabledChange callback registered")
99
+ core.addOnEnabledChangeListener(owner: self, callback)
100
+ }
101
+
102
+ func onBandChange(callback: @escaping ([EqualizerBand]) -> Void) throws {
103
+ print("🎯 HybridEqualizer: onBandChange callback registered")
104
+ core.addOnBandChangeListener(owner: self, callback)
105
+ }
106
+
107
+ func onPresetChange(callback: @escaping (Variant_NullType_String?) -> Void) throws {
108
+ print("🎯 HybridEqualizer: onPresetChange callback registered")
109
+ core.addOnPresetChangeListener(owner: self, callback)
110
+ }
111
+ }
@@ -32,8 +32,10 @@ final class HybridTrackPlayer: HybridTrackPlayerSpec {
32
32
  core.pause()
33
33
  }
34
34
 
35
- func playSong(songId: String, fromPlaylist: String?) throws {
36
- core.playSong(songId: songId, fromPlaylist: fromPlaylist)
35
+ func playSong(songId: String, fromPlaylist: String?) throws -> Promise<Void> {
36
+ return Promise.async {
37
+ self.core.playSong(songId: songId, fromPlaylist: fromPlaylist)
38
+ }
37
39
  }
38
40
 
39
41
  func skipToNext() throws {
@@ -48,8 +50,28 @@ final class HybridTrackPlayer: HybridTrackPlayerSpec {
48
50
  core.seek(position: position)
49
51
  }
50
52
 
51
- func getState() throws -> PlayerState {
52
- return core.getState()
53
+ func addToUpNext(trackId: String) throws -> Promise<Void> {
54
+ return Promise.async {
55
+ self.core.addToUpNext(trackId: trackId)
56
+ }
57
+ }
58
+
59
+ func playNext(trackId: String) throws -> Promise<Void> {
60
+ return Promise.async {
61
+ self.core.playNext(trackId: trackId)
62
+ }
63
+ }
64
+
65
+ func getActualQueue() throws -> Promise<[TrackItem]> {
66
+ return Promise.async {
67
+ return self.core.getActualQueue()
68
+ }
69
+ }
70
+
71
+ func getState() throws -> Promise<PlayerState> {
72
+ return Promise.async {
73
+ return self.core.getState()
74
+ }
53
75
  }
54
76
 
55
77
  func setRepeatMode(mode: RepeatMode) throws -> Bool {
@@ -70,22 +92,22 @@ final class HybridTrackPlayer: HybridTrackPlayerSpec {
70
92
 
71
93
  func onChangeTrack(callback: @escaping (TrackItem, Reason?) -> Void) throws {
72
94
  print("🎯 HybridTrackPlayer: onChangeTrack callback registered")
73
- core.onChangeTrack = callback
95
+ core.addOnChangeTrackListener(owner: self, callback)
74
96
  }
75
97
 
76
98
  func onPlaybackStateChange(callback: @escaping (TrackPlayerState, Reason?) -> Void) throws {
77
99
  print("🎯 HybridTrackPlayer: onPlaybackStateChange callback registered")
78
- core.onPlaybackStateChange = callback
100
+ core.addOnPlaybackStateChangeListener(owner: self, callback)
79
101
  }
80
102
 
81
103
  func onSeek(callback: @escaping (Double, Double) -> Void) throws {
82
104
  print("🎯 HybridTrackPlayer: onSeek callback registered")
83
- core.onSeek = callback
105
+ core.addOnSeekListener(owner: self, callback)
84
106
  }
85
107
 
86
108
  func onPlaybackProgressChange(callback: @escaping (Double, Double, Bool?) -> Void) throws {
87
109
  print("🎯 HybridTrackPlayer: onPlaybackProgressChange callback registered")
88
- core.onPlaybackProgressChange = callback
110
+ core.addOnPlaybackProgressChangeListener(owner: self, callback)
89
111
  }
90
112
 
91
113
  // MARK: - Android Auto (iOS No-op)
@@ -102,6 +124,12 @@ final class HybridTrackPlayer: HybridTrackPlayerSpec {
102
124
  return false
103
125
  }
104
126
 
127
+ func skipToIndex(index: Double) throws -> Promise<Bool> {
128
+ return Promise.async {
129
+ return self.core.skipToIndex(index: Int(index))
130
+ }
131
+ }
132
+
105
133
  // MARK: - Volume Control
106
134
 
107
135
  func setVolume(volume: Double) throws -> Bool {