react-native-nitro-player 0.5.8 → 0.5.9-alpha.1

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 (271) hide show
  1. package/android/src/main/cpp/cpp-adapter.cpp +5 -1
  2. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridPlayerQueue.kt +2 -2
  3. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerCore.kt +119 -59
  4. package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadDatabase.kt +3 -1
  5. package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadManagerCore.kt +19 -8
  6. package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadWorker.kt +2 -1
  7. package/android/src/main/java/com/margelo/nitro/nitroplayer/equalizer/EqualizerCore.kt +14 -2
  8. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaSessionManager.kt +29 -30
  9. package/android/src/main/java/com/margelo/nitro/nitroplayer/playlist/PlaylistManager.kt +10 -31
  10. package/android/src/main/java/com/margelo/nitro/nitroplayer/queue/Queue.kt +1 -1
  11. package/ios/core/TrackPlayerCore.swift +328 -84
  12. package/ios/download/DownloadDatabase.swift +8 -2
  13. package/ios/download/DownloadFileManager.swift +11 -2
  14. package/ios/download/DownloadManagerCore.swift +84 -25
  15. package/ios/equalizer/EqualizerCore.swift +83 -42
  16. package/ios/media/MediaSessionManager.swift +5 -5
  17. package/ios/playlist/PlaylistModel.swift +1 -1
  18. package/ios/queue/HybridPlayerQueue.swift +2 -0
  19. package/ios/storage/NitroPlayerStorage.swift +4 -2
  20. package/lib/hooks/usePlaylist.js +25 -4
  21. package/nitrogen/generated/android/NitroPlayer+autolinking.cmake +1 -1
  22. package/nitrogen/generated/android/NitroPlayer+autolinking.gradle +1 -1
  23. package/nitrogen/generated/android/NitroPlayerOnLoad.cpp +76 -73
  24. package/nitrogen/generated/android/NitroPlayerOnLoad.hpp +14 -5
  25. package/nitrogen/generated/android/c++/JCurrentPlayingType.hpp +5 -6
  26. package/nitrogen/generated/android/c++/JDownloadConfig.hpp +1 -1
  27. package/nitrogen/generated/android/c++/JDownloadError.hpp +1 -1
  28. package/nitrogen/generated/android/c++/JDownloadErrorReason.hpp +8 -9
  29. package/nitrogen/generated/android/c++/JDownloadProgress.hpp +1 -1
  30. package/nitrogen/generated/android/c++/JDownloadQueueStatus.hpp +1 -1
  31. package/nitrogen/generated/android/c++/JDownloadState.hpp +7 -8
  32. package/nitrogen/generated/android/c++/JDownloadStorageInfo.hpp +1 -1
  33. package/nitrogen/generated/android/c++/JDownloadTask.hpp +1 -1
  34. package/nitrogen/generated/android/c++/JDownloadedPlaylist.hpp +1 -1
  35. package/nitrogen/generated/android/c++/JDownloadedTrack.hpp +1 -1
  36. package/nitrogen/generated/android/c++/JEqualizerBand.hpp +1 -1
  37. package/nitrogen/generated/android/c++/JEqualizerPreset.hpp +1 -1
  38. package/nitrogen/generated/android/c++/JEqualizerState.hpp +1 -1
  39. package/nitrogen/generated/android/c++/JFunc_void_DownloadProgress.hpp +1 -1
  40. package/nitrogen/generated/android/c++/JFunc_void_DownloadedTrack.hpp +1 -1
  41. package/nitrogen/generated/android/c++/JFunc_void_TrackItem_std__optional_Reason_.hpp +1 -1
  42. package/nitrogen/generated/android/c++/JFunc_void_TrackPlayerState_std__optional_Reason_.hpp +1 -1
  43. package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +1 -1
  44. package/nitrogen/generated/android/c++/JFunc_void_double_double.hpp +1 -1
  45. package/nitrogen/generated/android/c++/JFunc_void_double_double_std__optional_bool_.hpp +1 -1
  46. package/nitrogen/generated/android/c++/JFunc_void_std__optional_std__variant_nitro__NullType__std__string__.hpp +1 -1
  47. package/nitrogen/generated/android/c++/JFunc_void_std__string_Playlist_std__optional_QueueOperation_.hpp +1 -1
  48. package/nitrogen/generated/android/c++/JFunc_void_std__string_std__string_DownloadState_std__optional_DownloadError_.hpp +1 -1
  49. package/nitrogen/generated/android/c++/JFunc_void_std__vector_EqualizerBand_.hpp +1 -1
  50. package/nitrogen/generated/android/c++/JFunc_void_std__vector_Playlist__std__optional_QueueOperation_.hpp +1 -1
  51. package/nitrogen/generated/android/c++/JFunc_void_std__vector_TrackItem__double.hpp +1 -1
  52. package/nitrogen/generated/android/c++/JGainRange.hpp +1 -1
  53. package/nitrogen/generated/android/c++/JHybridAndroidAutoMediaLibrarySpec.cpp +8 -1
  54. package/nitrogen/generated/android/c++/JHybridAndroidAutoMediaLibrarySpec.hpp +2 -1
  55. package/nitrogen/generated/android/c++/JHybridAudioDevicesSpec.cpp +8 -1
  56. package/nitrogen/generated/android/c++/JHybridAudioDevicesSpec.hpp +2 -1
  57. package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.cpp +9 -1
  58. package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.hpp +2 -1
  59. package/nitrogen/generated/android/c++/JHybridEqualizerSpec.cpp +8 -1
  60. package/nitrogen/generated/android/c++/JHybridEqualizerSpec.hpp +2 -1
  61. package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.cpp +8 -1
  62. package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.hpp +2 -1
  63. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.cpp +9 -1
  64. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.hpp +2 -1
  65. package/nitrogen/generated/android/c++/JPlaybackSource.hpp +4 -5
  66. package/nitrogen/generated/android/c++/JPlayerConfig.hpp +1 -1
  67. package/nitrogen/generated/android/c++/JPlayerState.hpp +1 -1
  68. package/nitrogen/generated/android/c++/JPlaylist.hpp +1 -1
  69. package/nitrogen/generated/android/c++/JPresetType.hpp +3 -4
  70. package/nitrogen/generated/android/c++/JQueueOperation.hpp +5 -6
  71. package/nitrogen/generated/android/c++/JReason.hpp +6 -7
  72. package/nitrogen/generated/android/c++/JRepeatMode.hpp +4 -5
  73. package/nitrogen/generated/android/c++/JStorageLocation.hpp +3 -4
  74. package/nitrogen/generated/android/c++/JTAudioDevice.hpp +1 -1
  75. package/nitrogen/generated/android/c++/JTrackItem.hpp +1 -1
  76. package/nitrogen/generated/android/c++/JTrackPlayerState.hpp +4 -5
  77. package/nitrogen/generated/android/c++/JVariant_NullType_Double.cpp +1 -1
  78. package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +3 -3
  79. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadError.cpp +1 -1
  80. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadError.hpp +3 -3
  81. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadTask.cpp +1 -1
  82. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadTask.hpp +3 -3
  83. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedPlaylist.cpp +1 -1
  84. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedPlaylist.hpp +3 -3
  85. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedTrack.cpp +1 -1
  86. package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedTrack.hpp +3 -3
  87. package/nitrogen/generated/android/c++/JVariant_NullType_Playlist.cpp +1 -1
  88. package/nitrogen/generated/android/c++/JVariant_NullType_Playlist.hpp +3 -3
  89. package/nitrogen/generated/android/c++/JVariant_NullType_String.cpp +1 -1
  90. package/nitrogen/generated/android/c++/JVariant_NullType_String.hpp +3 -3
  91. package/nitrogen/generated/android/c++/JVariant_NullType_TrackItem.cpp +1 -1
  92. package/nitrogen/generated/android/c++/JVariant_NullType_TrackItem.hpp +3 -3
  93. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/CurrentPlayingType.kt +3 -1
  94. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadConfig.kt +2 -2
  95. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadError.kt +2 -2
  96. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadErrorReason.kt +3 -1
  97. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadProgress.kt +2 -2
  98. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadQueueStatus.kt +2 -2
  99. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadState.kt +3 -1
  100. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadStorageInfo.kt +2 -2
  101. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadTask.kt +2 -2
  102. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadedPlaylist.kt +2 -2
  103. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/DownloadedTrack.kt +2 -2
  104. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/EqualizerBand.kt +2 -2
  105. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/EqualizerPreset.kt +2 -2
  106. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/EqualizerState.kt +2 -2
  107. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_DownloadProgress.kt +1 -1
  108. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_DownloadedTrack.kt +1 -1
  109. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_TrackItem_std__optional_Reason_.kt +1 -1
  110. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_TrackPlayerState_std__optional_Reason_.kt +1 -1
  111. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_bool.kt +1 -1
  112. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_double_double.kt +1 -1
  113. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_double_double_std__optional_bool_.kt +1 -1
  114. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__optional_std__variant_nitro__NullType__std__string__.kt +1 -1
  115. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__string_Playlist_std__optional_QueueOperation_.kt +1 -1
  116. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__string_std__string_DownloadState_std__optional_DownloadError_.kt +1 -1
  117. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__vector_EqualizerBand_.kt +1 -1
  118. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__vector_Playlist__std__optional_QueueOperation_.kt +1 -1
  119. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__vector_TrackItem__double.kt +1 -1
  120. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/GainRange.kt +2 -2
  121. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrarySpec.kt +1 -1
  122. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridAudioDevicesSpec.kt +1 -1
  123. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridDownloadManagerSpec.kt +1 -1
  124. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridEqualizerSpec.kt +1 -1
  125. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridPlayerQueueSpec.kt +1 -1
  126. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridTrackPlayerSpec.kt +1 -1
  127. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/NitroPlayerOnLoad.kt +1 -1
  128. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PlaybackSource.kt +3 -1
  129. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PlayerConfig.kt +2 -2
  130. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PlayerState.kt +2 -2
  131. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Playlist.kt +2 -2
  132. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/PresetType.kt +3 -1
  133. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/QueueOperation.kt +3 -1
  134. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Reason.kt +3 -1
  135. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/RepeatMode.kt +3 -1
  136. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/StorageLocation.kt +3 -1
  137. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/TAudioDevice.kt +2 -2
  138. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/TrackItem.kt +2 -2
  139. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/TrackPlayerState.kt +3 -1
  140. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_Double.kt +1 -1
  141. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadError.kt +1 -1
  142. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadTask.kt +1 -1
  143. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadedPlaylist.kt +1 -1
  144. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadedTrack.kt +1 -1
  145. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_Playlist.kt +1 -1
  146. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_String.kt +1 -1
  147. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_TrackItem.kt +1 -1
  148. package/nitrogen/generated/ios/NitroPlayer+autolinking.rb +2 -2
  149. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.cpp +1 -1
  150. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.hpp +21 -21
  151. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Umbrella.hpp +1 -1
  152. package/nitrogen/generated/ios/NitroPlayerAutolinking.mm +1 -1
  153. package/nitrogen/generated/ios/NitroPlayerAutolinking.swift +25 -36
  154. package/nitrogen/generated/ios/c++/HybridAudioRoutePickerSpecSwift.cpp +1 -1
  155. package/nitrogen/generated/ios/c++/HybridAudioRoutePickerSpecSwift.hpp +7 -1
  156. package/nitrogen/generated/ios/c++/HybridDownloadManagerSpecSwift.cpp +1 -1
  157. package/nitrogen/generated/ios/c++/HybridDownloadManagerSpecSwift.hpp +7 -1
  158. package/nitrogen/generated/ios/c++/HybridEqualizerSpecSwift.cpp +1 -1
  159. package/nitrogen/generated/ios/c++/HybridEqualizerSpecSwift.hpp +7 -1
  160. package/nitrogen/generated/ios/c++/HybridPlayerQueueSpecSwift.cpp +1 -1
  161. package/nitrogen/generated/ios/c++/HybridPlayerQueueSpecSwift.hpp +7 -1
  162. package/nitrogen/generated/ios/c++/HybridTrackPlayerSpecSwift.cpp +1 -1
  163. package/nitrogen/generated/ios/c++/HybridTrackPlayerSpecSwift.hpp +7 -1
  164. package/nitrogen/generated/ios/swift/CurrentPlayingType.swift +1 -1
  165. package/nitrogen/generated/ios/swift/DownloadConfig.swift +78 -168
  166. package/nitrogen/generated/ios/swift/DownloadError.swift +9 -34
  167. package/nitrogen/generated/ios/swift/DownloadErrorReason.swift +1 -1
  168. package/nitrogen/generated/ios/swift/DownloadProgress.swift +13 -50
  169. package/nitrogen/generated/ios/swift/DownloadQueueStatus.swift +15 -58
  170. package/nitrogen/generated/ios/swift/DownloadState.swift +1 -1
  171. package/nitrogen/generated/ios/swift/DownloadStorageInfo.swift +11 -42
  172. package/nitrogen/generated/ios/swift/DownloadTask.swift +97 -210
  173. package/nitrogen/generated/ios/swift/DownloadedPlaylist.swift +13 -56
  174. package/nitrogen/generated/ios/swift/DownloadedTrack.swift +34 -90
  175. package/nitrogen/generated/ios/swift/EqualizerBand.swift +9 -34
  176. package/nitrogen/generated/ios/swift/EqualizerPreset.swift +7 -32
  177. package/nitrogen/generated/ios/swift/EqualizerState.swift +26 -64
  178. package/nitrogen/generated/ios/swift/Func_void.swift +1 -2
  179. package/nitrogen/generated/ios/swift/Func_void_DownloadProgress.swift +1 -2
  180. package/nitrogen/generated/ios/swift/Func_void_DownloadStorageInfo.swift +1 -2
  181. package/nitrogen/generated/ios/swift/Func_void_DownloadedTrack.swift +1 -2
  182. package/nitrogen/generated/ios/swift/Func_void_PlayerState.swift +1 -2
  183. package/nitrogen/generated/ios/swift/Func_void_TrackItem_std__optional_Reason_.swift +1 -2
  184. package/nitrogen/generated/ios/swift/Func_void_TrackPlayerState_std__optional_Reason_.swift +1 -2
  185. package/nitrogen/generated/ios/swift/Func_void_bool.swift +1 -2
  186. package/nitrogen/generated/ios/swift/Func_void_double.swift +1 -2
  187. package/nitrogen/generated/ios/swift/Func_void_double_double.swift +1 -2
  188. package/nitrogen/generated/ios/swift/Func_void_double_double_std__optional_bool_.swift +1 -2
  189. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +1 -2
  190. package/nitrogen/generated/ios/swift/Func_void_std__optional_std__variant_nitro__NullType__std__string__.swift +1 -2
  191. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +1 -2
  192. package/nitrogen/generated/ios/swift/Func_void_std__string_Playlist_std__optional_QueueOperation_.swift +1 -2
  193. package/nitrogen/generated/ios/swift/Func_void_std__string_std__string_DownloadState_std__optional_DownloadError_.swift +1 -2
  194. package/nitrogen/generated/ios/swift/Func_void_std__vector_EqualizerBand_.swift +1 -2
  195. package/nitrogen/generated/ios/swift/Func_void_std__vector_Playlist__std__optional_QueueOperation_.swift +1 -2
  196. package/nitrogen/generated/ios/swift/Func_void_std__vector_TrackItem_.swift +1 -2
  197. package/nitrogen/generated/ios/swift/Func_void_std__vector_TrackItem__double.swift +1 -2
  198. package/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift +1 -2
  199. package/nitrogen/generated/ios/swift/GainRange.swift +5 -18
  200. package/nitrogen/generated/ios/swift/HybridAudioRoutePickerSpec.swift +3 -4
  201. package/nitrogen/generated/ios/swift/HybridAudioRoutePickerSpec_cxx.swift +9 -2
  202. package/nitrogen/generated/ios/swift/HybridDownloadManagerSpec.swift +3 -4
  203. package/nitrogen/generated/ios/swift/HybridDownloadManagerSpec_cxx.swift +9 -2
  204. package/nitrogen/generated/ios/swift/HybridEqualizerSpec.swift +3 -4
  205. package/nitrogen/generated/ios/swift/HybridEqualizerSpec_cxx.swift +9 -2
  206. package/nitrogen/generated/ios/swift/HybridPlayerQueueSpec.swift +3 -4
  207. package/nitrogen/generated/ios/swift/HybridPlayerQueueSpec_cxx.swift +25 -4
  208. package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec.swift +3 -4
  209. package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec_cxx.swift +9 -2
  210. package/nitrogen/generated/ios/swift/PlaybackSource.swift +1 -1
  211. package/nitrogen/generated/ios/swift/PlayerConfig.swift +37 -79
  212. package/nitrogen/generated/ios/swift/PlayerState.swift +53 -122
  213. package/nitrogen/generated/ios/swift/Playlist.swift +49 -112
  214. package/nitrogen/generated/ios/swift/PresetType.swift +1 -1
  215. package/nitrogen/generated/ios/swift/QueueOperation.swift +1 -1
  216. package/nitrogen/generated/ios/swift/Reason.swift +1 -1
  217. package/nitrogen/generated/ios/swift/RepeatMode.swift +1 -1
  218. package/nitrogen/generated/ios/swift/StorageLocation.swift +1 -1
  219. package/nitrogen/generated/ios/swift/TrackItem.swift +43 -111
  220. package/nitrogen/generated/ios/swift/TrackPlayerState.swift +1 -1
  221. package/nitrogen/generated/ios/swift/Variant_NullType_Double.swift +1 -1
  222. package/nitrogen/generated/ios/swift/Variant_NullType_DownloadError.swift +1 -1
  223. package/nitrogen/generated/ios/swift/Variant_NullType_DownloadTask.swift +1 -1
  224. package/nitrogen/generated/ios/swift/Variant_NullType_DownloadedPlaylist.swift +1 -1
  225. package/nitrogen/generated/ios/swift/Variant_NullType_DownloadedTrack.swift +1 -1
  226. package/nitrogen/generated/ios/swift/Variant_NullType_Playlist.swift +1 -1
  227. package/nitrogen/generated/ios/swift/Variant_NullType_String.swift +1 -1
  228. package/nitrogen/generated/ios/swift/Variant_NullType_TrackItem.swift +1 -1
  229. package/nitrogen/generated/shared/c++/CurrentPlayingType.hpp +1 -1
  230. package/nitrogen/generated/shared/c++/DownloadConfig.hpp +34 -26
  231. package/nitrogen/generated/shared/c++/DownloadError.hpp +22 -14
  232. package/nitrogen/generated/shared/c++/DownloadErrorReason.hpp +1 -1
  233. package/nitrogen/generated/shared/c++/DownloadProgress.hpp +28 -20
  234. package/nitrogen/generated/shared/c++/DownloadQueueStatus.hpp +31 -23
  235. package/nitrogen/generated/shared/c++/DownloadState.hpp +1 -1
  236. package/nitrogen/generated/shared/c++/DownloadStorageInfo.hpp +25 -17
  237. package/nitrogen/generated/shared/c++/DownloadTask.hpp +40 -32
  238. package/nitrogen/generated/shared/c++/DownloadedPlaylist.hpp +28 -20
  239. package/nitrogen/generated/shared/c++/DownloadedTrack.hpp +31 -23
  240. package/nitrogen/generated/shared/c++/EqualizerBand.hpp +22 -14
  241. package/nitrogen/generated/shared/c++/EqualizerPreset.hpp +19 -11
  242. package/nitrogen/generated/shared/c++/EqualizerState.hpp +19 -11
  243. package/nitrogen/generated/shared/c++/GainRange.hpp +16 -8
  244. package/nitrogen/generated/shared/c++/HybridAndroidAutoMediaLibrarySpec.cpp +1 -1
  245. package/nitrogen/generated/shared/c++/HybridAndroidAutoMediaLibrarySpec.hpp +1 -1
  246. package/nitrogen/generated/shared/c++/HybridAudioDevicesSpec.cpp +1 -1
  247. package/nitrogen/generated/shared/c++/HybridAudioDevicesSpec.hpp +1 -1
  248. package/nitrogen/generated/shared/c++/HybridAudioRoutePickerSpec.cpp +1 -1
  249. package/nitrogen/generated/shared/c++/HybridAudioRoutePickerSpec.hpp +1 -1
  250. package/nitrogen/generated/shared/c++/HybridDownloadManagerSpec.cpp +1 -1
  251. package/nitrogen/generated/shared/c++/HybridDownloadManagerSpec.hpp +1 -1
  252. package/nitrogen/generated/shared/c++/HybridEqualizerSpec.cpp +1 -1
  253. package/nitrogen/generated/shared/c++/HybridEqualizerSpec.hpp +1 -1
  254. package/nitrogen/generated/shared/c++/HybridPlayerQueueSpec.cpp +1 -1
  255. package/nitrogen/generated/shared/c++/HybridPlayerQueueSpec.hpp +1 -1
  256. package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.cpp +1 -1
  257. package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.hpp +1 -1
  258. package/nitrogen/generated/shared/c++/PlaybackSource.hpp +1 -1
  259. package/nitrogen/generated/shared/c++/PlayerConfig.hpp +22 -14
  260. package/nitrogen/generated/shared/c++/PlayerState.hpp +31 -23
  261. package/nitrogen/generated/shared/c++/Playlist.hpp +25 -17
  262. package/nitrogen/generated/shared/c++/PresetType.hpp +1 -1
  263. package/nitrogen/generated/shared/c++/QueueOperation.hpp +1 -1
  264. package/nitrogen/generated/shared/c++/Reason.hpp +1 -1
  265. package/nitrogen/generated/shared/c++/RepeatMode.hpp +1 -1
  266. package/nitrogen/generated/shared/c++/StorageLocation.hpp +1 -1
  267. package/nitrogen/generated/shared/c++/TAudioDevice.hpp +22 -14
  268. package/nitrogen/generated/shared/c++/TrackItem.hpp +34 -26
  269. package/nitrogen/generated/shared/c++/TrackPlayerState.hpp +1 -1
  270. package/package.json +3 -3
  271. package/src/hooks/usePlaylist.ts +26 -4
@@ -2,7 +2,7 @@
2
2
  /// TrackItem.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #pragma once
@@ -22,6 +22,11 @@
22
22
  #else
23
23
  #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
24
24
  #endif
25
+ #if __has_include(<NitroModules/PropNameIDCache.hpp>)
26
+ #include <NitroModules/PropNameIDCache.hpp>
27
+ #else
28
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
29
+ #endif
25
30
 
26
31
 
27
32
 
@@ -36,7 +41,7 @@ namespace margelo::nitro::nitroplayer {
36
41
  /**
37
42
  * A struct which can be represented as a JavaScript object (TrackItem).
38
43
  */
39
- struct TrackItem {
44
+ struct TrackItem final {
40
45
  public:
41
46
  std::string id SWIFT_PRIVATE;
42
47
  std::string title SWIFT_PRIVATE;
@@ -50,6 +55,9 @@ namespace margelo::nitro::nitroplayer {
50
55
  public:
51
56
  TrackItem() = default;
52
57
  explicit TrackItem(std::string id, std::string title, std::string artist, std::string album, double duration, std::string url, std::optional<std::variant<nitro::NullType, std::string>> artwork, std::optional<std::shared_ptr<AnyMap>> extraPayload): id(id), title(title), artist(artist), album(album), duration(duration), url(url), artwork(artwork), extraPayload(extraPayload) {}
58
+
59
+ public:
60
+ friend bool operator==(const TrackItem& lhs, const TrackItem& rhs) = default;
53
61
  };
54
62
 
55
63
  } // namespace margelo::nitro::nitroplayer
@@ -62,26 +70,26 @@ namespace margelo::nitro {
62
70
  static inline margelo::nitro::nitroplayer::TrackItem fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
63
71
  jsi::Object obj = arg.asObject(runtime);
64
72
  return margelo::nitro::nitroplayer::TrackItem(
65
- JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, "id")),
66
- JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, "title")),
67
- JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, "artist")),
68
- JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, "album")),
69
- JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, "duration")),
70
- JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, "url")),
71
- JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::fromJSI(runtime, obj.getProperty(runtime, "artwork")),
72
- JSIConverter<std::optional<std::shared_ptr<AnyMap>>>::fromJSI(runtime, obj.getProperty(runtime, "extraPayload"))
73
+ JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "id"))),
74
+ JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "title"))),
75
+ JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "artist"))),
76
+ JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "album"))),
77
+ JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "duration"))),
78
+ JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "url"))),
79
+ JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "artwork"))),
80
+ JSIConverter<std::optional<std::shared_ptr<AnyMap>>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "extraPayload")))
73
81
  );
74
82
  }
75
83
  static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::nitroplayer::TrackItem& arg) {
76
84
  jsi::Object obj(runtime);
77
- obj.setProperty(runtime, "id", JSIConverter<std::string>::toJSI(runtime, arg.id));
78
- obj.setProperty(runtime, "title", JSIConverter<std::string>::toJSI(runtime, arg.title));
79
- obj.setProperty(runtime, "artist", JSIConverter<std::string>::toJSI(runtime, arg.artist));
80
- obj.setProperty(runtime, "album", JSIConverter<std::string>::toJSI(runtime, arg.album));
81
- obj.setProperty(runtime, "duration", JSIConverter<double>::toJSI(runtime, arg.duration));
82
- obj.setProperty(runtime, "url", JSIConverter<std::string>::toJSI(runtime, arg.url));
83
- obj.setProperty(runtime, "artwork", JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::toJSI(runtime, arg.artwork));
84
- obj.setProperty(runtime, "extraPayload", JSIConverter<std::optional<std::shared_ptr<AnyMap>>>::toJSI(runtime, arg.extraPayload));
85
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "id"), JSIConverter<std::string>::toJSI(runtime, arg.id));
86
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "title"), JSIConverter<std::string>::toJSI(runtime, arg.title));
87
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "artist"), JSIConverter<std::string>::toJSI(runtime, arg.artist));
88
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "album"), JSIConverter<std::string>::toJSI(runtime, arg.album));
89
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "duration"), JSIConverter<double>::toJSI(runtime, arg.duration));
90
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "url"), JSIConverter<std::string>::toJSI(runtime, arg.url));
91
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "artwork"), JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::toJSI(runtime, arg.artwork));
92
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "extraPayload"), JSIConverter<std::optional<std::shared_ptr<AnyMap>>>::toJSI(runtime, arg.extraPayload));
85
93
  return obj;
86
94
  }
87
95
  static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
@@ -92,14 +100,14 @@ namespace margelo::nitro {
92
100
  if (!nitro::isPlainObject(runtime, obj)) {
93
101
  return false;
94
102
  }
95
- if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, "id"))) return false;
96
- if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, "title"))) return false;
97
- if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, "artist"))) return false;
98
- if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, "album"))) return false;
99
- if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, "duration"))) return false;
100
- if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, "url"))) return false;
101
- if (!JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::canConvert(runtime, obj.getProperty(runtime, "artwork"))) return false;
102
- if (!JSIConverter<std::optional<std::shared_ptr<AnyMap>>>::canConvert(runtime, obj.getProperty(runtime, "extraPayload"))) return false;
103
+ if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "id")))) return false;
104
+ if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "title")))) return false;
105
+ if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "artist")))) return false;
106
+ if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "album")))) return false;
107
+ if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "duration")))) return false;
108
+ if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "url")))) return false;
109
+ if (!JSIConverter<std::optional<std::variant<nitro::NullType, std::string>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "artwork")))) return false;
110
+ if (!JSIConverter<std::optional<std::shared_ptr<AnyMap>>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "extraPayload")))) return false;
103
111
  return true;
104
112
  }
105
113
  };
@@ -2,7 +2,7 @@
2
2
  /// TrackPlayerState.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #pragma once
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-nitro-player",
3
- "version": "0.5.8",
3
+ "version": "0.5.9-alpha.1",
4
4
  "description": "A powerful audio player library for React Native with playlist management, playback controls, and support for Android Auto and CarPlay",
5
5
  "main": "lib/index",
6
6
  "module": "lib/index",
@@ -65,11 +65,11 @@
65
65
  "eslint": "^8.57.0",
66
66
  "eslint-config-prettier": "^9.1.0",
67
67
  "eslint-plugin-prettier": "^5.2.1",
68
- "nitrogen": "*",
68
+ "nitrogen": "^0.34.1",
69
69
  "prettier": "^3.3.3",
70
70
  "react": "19.1.1",
71
71
  "react-native": "0.82.0",
72
- "react-native-nitro-modules": "*",
72
+ "react-native-nitro-modules": "^0.34.1",
73
73
  "release-it": "^19.0.4",
74
74
  "typescript": "^5.8.3"
75
75
  },
@@ -60,6 +60,9 @@ export function usePlaylist(): UsePlaylistResult {
60
60
  const [isLoading, setIsLoading] = useState(true)
61
61
  const isMounted = useRef(true)
62
62
  const hasSubscribed = useRef(false)
63
+ // Tracks the last fetched playlist ID so track-change events can skip
64
+ // a full refresh when the playlist itself hasn't changed.
65
+ const lastPlaylistIdRef = useRef<string | null | undefined>(undefined)
63
66
 
64
67
  const refreshPlaylists = useCallback(() => {
65
68
  if (!isMounted.current) return
@@ -68,6 +71,7 @@ export function usePlaylist(): UsePlaylistResult {
68
71
  // Get current playlist ID
69
72
  const playlistId = PlayerQueue.getCurrentPlaylistId()
70
73
  if (!isMounted.current) return
74
+ lastPlaylistIdRef.current = playlistId
71
75
  setCurrentPlaylistId(playlistId)
72
76
 
73
77
  // Get current playlist details
@@ -108,6 +112,25 @@ export function usePlaylist(): UsePlaylistResult {
108
112
  }
109
113
  }, [])
110
114
 
115
+ // Lightweight track-change handler: only does a full refresh when the
116
+ // active playlist ID has actually changed (e.g. cross-playlist navigation).
117
+ // Within-playlist track changes — the common case — are skipped with a
118
+ // single bridge call instead of three.
119
+ const refreshOnTrackChange = useCallback(() => {
120
+ if (!isMounted.current) return
121
+ try {
122
+ const newPlaylistId = PlayerQueue.getCurrentPlaylistId()
123
+ if (newPlaylistId === lastPlaylistIdRef.current) return
124
+ lastPlaylistIdRef.current = newPlaylistId
125
+ refreshPlaylists()
126
+ } catch (error) {
127
+ console.error(
128
+ '[usePlaylist] Error checking playlist ID on track change:',
129
+ error
130
+ )
131
+ }
132
+ }, [refreshPlaylists])
133
+
111
134
  // Initialize and setup mounted ref
112
135
  useEffect(() => {
113
136
  isMounted.current = true
@@ -136,19 +159,18 @@ export function usePlaylist(): UsePlaylistResult {
136
159
  }
137
160
  }, [refreshPlaylists])
138
161
 
139
- // Also refresh when track changes (as it might indicate playlist loaded)
162
+ // Refresh on track change only if the active playlist ID changed.
140
163
  useEffect(() => {
141
164
  const unsubscribe = callbackManager.subscribeToTrackChange(() => {
142
- // Refresh to update currentPlaylistId when track changes
143
165
  if (isMounted.current) {
144
- refreshPlaylists()
166
+ refreshOnTrackChange()
145
167
  }
146
168
  })
147
169
 
148
170
  return () => {
149
171
  unsubscribe()
150
172
  }
151
- }, [refreshPlaylists])
173
+ }, [refreshOnTrackChange])
152
174
 
153
175
  return {
154
176
  currentPlaylist,