react-native-queue-player 1.2.0 → 2.0.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 (355) hide show
  1. package/QueuePlayer.podspec +14 -9
  2. package/README.md +3 -3
  3. package/android/consumer-rules.pro +1 -1
  4. package/android/src/main/cpp/airplay2_control.c +4 -4
  5. package/android/src/main/cpp/airplay2_control.h +4 -4
  6. package/android/src/main/cpp/airplay2_jni.cpp +3 -19
  7. package/android/src/main/cpp/airplay2_pair.c +7 -7
  8. package/android/src/main/cpp/airplay2_pair.h +2 -2
  9. package/android/src/main/cpp/airplay2_rtsp.c +8 -8
  10. package/android/src/main/cpp/airplay2_session.c +2 -2
  11. package/android/src/main/cpp/airplay_jni.cpp +8 -69
  12. package/android/src/main/java/com/margelo/nitro/queueplayer/AirPlayEngine.kt +7 -16
  13. package/android/src/main/java/com/margelo/nitro/queueplayer/CacheMimeTypes.kt +1 -1
  14. package/android/src/main/java/com/margelo/nitro/queueplayer/CastManager.kt +2 -14
  15. package/android/src/main/java/com/margelo/nitro/queueplayer/CellularTransportMonitor.kt +77 -0
  16. package/android/src/main/java/com/margelo/nitro/queueplayer/CrossfadeEngine.kt +187 -52
  17. package/android/src/main/java/com/margelo/nitro/queueplayer/Equalizer.kt +27 -7
  18. package/android/src/main/java/com/margelo/nitro/queueplayer/EqualizerEngine.kt +33 -12
  19. package/android/src/main/java/com/margelo/nitro/queueplayer/EqualizerLegacyEngine.kt +31 -8
  20. package/android/src/main/java/com/margelo/nitro/queueplayer/FFTProcessorTee.kt +45 -30
  21. package/android/src/main/java/com/margelo/nitro/queueplayer/FifoCacheEvictor.kt +111 -15
  22. package/android/src/main/java/com/margelo/nitro/queueplayer/GaplessEngine.kt +60 -33
  23. package/android/src/main/java/com/margelo/nitro/queueplayer/HeadlessJsMediaService.kt +1 -1
  24. package/android/src/main/java/com/margelo/nitro/queueplayer/IEqualizerEngine.kt +3 -1
  25. package/android/src/main/java/com/margelo/nitro/queueplayer/LookaheadCache.kt +103 -29
  26. package/android/src/main/java/com/margelo/nitro/queueplayer/LookaheadCacheWriter.kt +77 -29
  27. package/android/src/main/java/com/margelo/nitro/queueplayer/MediaItemBuilder.kt +6 -6
  28. package/android/src/main/java/com/margelo/nitro/queueplayer/NowPlayingFormatExtractor.kt +48 -1
  29. package/android/src/main/java/com/margelo/nitro/queueplayer/PitchCorrection.kt +3 -2
  30. package/android/src/main/java/com/margelo/nitro/queueplayer/PlaybackEngine.kt +71 -76
  31. package/android/src/main/java/com/margelo/nitro/queueplayer/PlaybackErrorMapping.kt +3 -3
  32. package/android/src/main/java/com/margelo/nitro/queueplayer/PlaybackModeStateMachine.kt +2 -2
  33. package/android/src/main/java/com/margelo/nitro/queueplayer/PlaybackService.kt +68 -46
  34. package/android/src/main/java/com/margelo/nitro/queueplayer/PlaybackServiceCallback.kt +6 -5
  35. package/android/src/main/java/com/margelo/nitro/queueplayer/QueueMutationArithmetic.kt +5 -6
  36. package/android/src/main/java/com/margelo/nitro/queueplayer/QueueSkipArithmetic.kt +11 -8
  37. package/android/src/main/java/com/margelo/nitro/queueplayer/ReplayGainAudioProcessor.kt +26 -6
  38. package/android/src/main/java/com/margelo/nitro/queueplayer/ReplayGainData.kt +22 -3
  39. package/android/src/main/java/com/margelo/nitro/queueplayer/ReplayGainExtractor.kt +38 -12
  40. package/android/src/main/java/com/margelo/nitro/queueplayer/ReplayGainGain.kt +17 -13
  41. package/android/src/main/java/com/margelo/nitro/queueplayer/SuppliedReplayGain.kt +66 -0
  42. package/android/src/main/java/com/margelo/nitro/queueplayer/TrackPlayer.kt +839 -271
  43. package/android/src/main/java/com/margelo/nitro/queueplayer/Visualizer.kt +4 -8
  44. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/CastBackend.kt +4 -3
  45. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/CastSession.kt +5 -4
  46. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlay2JNI.kt +0 -2
  47. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlay2Session.kt +4 -2
  48. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlayBackend.kt +16 -9
  49. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlayMetadataSync.kt +1 -1
  50. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlayRenderersFactory.kt +6 -14
  51. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirplayJNI.kt +1 -13
  52. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/MulticastLockHolder.kt +1 -1
  53. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/chromecast/ChromecastBackend.kt +3 -3
  54. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/http/LocalMediaServer.kt +11 -35
  55. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/http/MediaServerHandle.kt +0 -5
  56. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/http/MediaTokenRegistry.kt +0 -6
  57. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/net/LocalAddressMonitor.kt +32 -33
  58. package/android/src/test/java/androidx/media3/session/{MediaSessionControllerRequestTestSeam.kt → MediaSessionControllerRequestTestSupport.kt} +1 -1
  59. package/android/src/test/java/com/margelo/nitro/queueplayer/AvrcpMetadataTest.kt +12 -0
  60. package/android/src/test/java/com/margelo/nitro/queueplayer/CrossfadeEngineFocusLossTest.kt +115 -0
  61. package/android/src/test/java/com/margelo/nitro/queueplayer/CrossfadeEngineLifecycleTest.kt +45 -0
  62. package/android/src/test/java/com/margelo/nitro/queueplayer/EngineEndSignalOrderTest.kt +70 -0
  63. package/android/src/test/java/com/margelo/nitro/queueplayer/EqualizerEngineTest.kt +17 -0
  64. package/android/src/test/java/com/margelo/nitro/queueplayer/EqualizerKtTest.kt +0 -6
  65. package/android/src/test/java/com/margelo/nitro/queueplayer/EqualizerLegacyEngineTest.kt +17 -0
  66. package/android/src/test/java/com/margelo/nitro/queueplayer/FFTProcessorTeeTest.kt +15 -0
  67. package/android/src/test/java/com/margelo/nitro/queueplayer/FifoCacheEvictorTest.kt +135 -4
  68. package/android/src/test/java/com/margelo/nitro/queueplayer/GaplessEngineLifecycleTest.kt +1 -0
  69. package/android/src/test/java/com/margelo/nitro/queueplayer/GaplessEngineReplayGainTest.kt +36 -2
  70. package/android/src/test/java/com/margelo/nitro/queueplayer/LookaheadCacheTest.kt +24 -18
  71. package/android/src/test/java/com/margelo/nitro/queueplayer/LookaheadCacheWriterCancelTest.kt +85 -0
  72. package/android/src/test/java/com/margelo/nitro/queueplayer/LookaheadCacheWriterTest.kt +112 -1
  73. package/android/src/test/java/com/margelo/nitro/queueplayer/MediaItemBuilderTest.kt +5 -3
  74. package/android/src/test/java/com/margelo/nitro/queueplayer/NowPlayingFormatExtractorTest.kt +45 -0
  75. package/android/src/test/java/com/margelo/nitro/queueplayer/PitchAwareAudioProcessorChainTest.kt +1 -1
  76. package/android/src/test/java/com/margelo/nitro/queueplayer/PlaybackServiceCallbackSearchTest.kt +47 -0
  77. package/android/src/test/java/com/margelo/nitro/queueplayer/PlaybackServiceCallbackTest.kt +53 -29
  78. package/android/src/test/java/com/margelo/nitro/queueplayer/PlaybackServiceLifecycleTest.kt +8 -8
  79. package/android/src/test/java/com/margelo/nitro/queueplayer/QueueSkipArithmeticTest.kt +33 -1
  80. package/android/src/test/java/com/margelo/nitro/queueplayer/ReplayGainAudioProcessorTest.kt +128 -5
  81. package/android/src/test/java/com/margelo/nitro/queueplayer/ReplayGainExtractorTest.kt +209 -14
  82. package/android/src/test/java/com/margelo/nitro/queueplayer/ReplayGainGainTest.kt +150 -10
  83. package/android/src/test/java/com/margelo/nitro/queueplayer/ReplayGainMergeTest.kt +258 -0
  84. package/android/src/test/java/com/margelo/nitro/queueplayer/RobolectricServiceBindHelper.kt +2 -2
  85. package/android/src/test/java/com/margelo/nitro/queueplayer/SessionCommandForwardingPlayerTest.kt +2 -2
  86. package/android/src/test/java/com/margelo/nitro/queueplayer/ShadowDynamicsProcessingRejectingEnable.kt +19 -0
  87. package/android/src/test/java/com/margelo/nitro/queueplayer/ShadowEqualizer.kt +1 -1
  88. package/android/src/test/java/com/margelo/nitro/queueplayer/ShadowEqualizerRejectingBandWrites.kt +27 -0
  89. package/android/src/test/java/com/margelo/nitro/queueplayer/SuppliedReplayGainTest.kt +61 -0
  90. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerAirPlayMetadataWiringTest.kt +4 -4
  91. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerAudioFocusTest.kt +1 -1
  92. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerCastCommandRoutingTest.kt +2 -1
  93. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerCastStateTest.kt +2 -1
  94. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerEventsTest.kt +88 -38
  95. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerLifecycleTest.kt +205 -27
  96. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerLookaheadConfigTest.kt +277 -38
  97. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerMutationTest.kt +5 -3
  98. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerProgressThrottleTest.kt +2 -1
  99. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerQueueChangeTest.kt +85 -3
  100. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerQueueTest.kt +11 -7
  101. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerReadersTest.kt +2 -1
  102. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerSkipCapabilityTest.kt +90 -4
  103. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerSkipTest.kt +8 -26
  104. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerTransportTest.kt +3 -3
  105. package/android/src/test/java/com/margelo/nitro/queueplayer/VisualizerKtTest.kt +0 -4
  106. package/android/src/test/java/com/margelo/nitro/queueplayer/cast/FakeRemotePlayer.kt +2 -2
  107. package/android/src/test/java/com/margelo/nitro/queueplayer/cast/net/LocalAddressMonitorTest.kt +173 -0
  108. package/android/src/test/java/com/margelo/nitro/queueplayer/cast/net/ShadowConnectivityManagerRecordingRequests.kt +27 -0
  109. package/app.plugin.js +17 -1
  110. package/ios/AVPlayerItemQueueItemId.swift +26 -12
  111. package/ios/AVQueueBuilder.swift +120 -85
  112. package/ios/ArtworkLoader.swift +0 -7
  113. package/ios/ArtworkResolver.swift +22 -4
  114. package/ios/AssetReplayGainReader.swift +118 -0
  115. package/ios/AudioSession.swift +67 -16
  116. package/ios/AudioTapProvider.swift +284 -149
  117. package/ios/CarPlayBridge.swift +0 -12
  118. package/ios/CarPlayCoordinator.swift +18 -2
  119. package/ios/CarPlaySceneDelegate.swift +2 -2
  120. package/ios/Cast/AirPlayRouteState.swift +9 -8
  121. package/ios/Cast/Core/CastEventBridge.swift +66 -26
  122. package/ios/Cast/Core/CastNowPlayingController.swift +38 -16
  123. package/ios/Cast/Core/CastSession.swift +2 -2
  124. package/ios/Cast/Core/CastTransportRouter.swift +21 -9
  125. package/ios/Cast/Core/LocalMediaServer.swift +41 -52
  126. package/ios/Cast/Core/LocalNetworkPermissionProbe.swift +32 -11
  127. package/ios/Cast/Core/MediaServerHandle.swift +0 -4
  128. package/ios/Cast/Core/MediaTokenRegistry.swift +0 -6
  129. package/ios/CastManager.swift +1 -1
  130. package/ios/CrossfadeEngine.swift +660 -226
  131. package/ios/EQTap.swift +20 -17
  132. package/ios/Equalizer.swift +1 -1
  133. package/ios/FLACStreamInfo.swift +65 -0
  134. package/ios/GaplessEngine.swift +57 -30
  135. package/ios/InputGuards.swift +35 -5
  136. package/ios/LookaheadCache.swift +202 -58
  137. package/ios/LookaheadCachePrefetcher.swift +48 -36
  138. package/ios/MediaServer/MediaHTTPConnection.swift +691 -0
  139. package/ios/NetworkRecoveryPolicy.swift +32 -0
  140. package/ios/NowPlayingFormatExtractor.swift +25 -18
  141. package/ios/NowPlayingInfo.swift +84 -48
  142. package/ios/OutputRouteMonitor.swift +16 -3
  143. package/ios/PendingBrowseRequests.swift +1 -1
  144. package/ios/PlaceholderArtwork.swift +9 -5
  145. package/ios/PlaybackEngine.swift +165 -76
  146. package/ios/PlaybackErrorMapping.swift +3 -3
  147. package/ios/PlaybackModeStateMachine.swift +2 -2
  148. package/ios/PlaybackNetworkMonitor.swift +73 -0
  149. package/ios/PlayerStateDerivation.swift +6 -6
  150. package/ios/QueueMutationArithmetic.swift +25 -0
  151. package/ios/QueueSkipArithmetic.swift +5 -3
  152. package/ios/QueueWindowArithmetic.swift +152 -0
  153. package/ios/ReadThroughServer.swift +283 -0
  154. package/ios/RemoteCommands.swift +44 -4
  155. package/ios/ReplayGainData.swift +22 -3
  156. package/ios/ReplayGainExtractor.swift +70 -27
  157. package/ios/Siri/VoiceDonation.swift +14 -9
  158. package/ios/StreamingBitrateProbe.swift +22 -68
  159. package/ios/SuppliedReplayGain.swift +83 -0
  160. package/ios/Tests/AVQueueBuilderTests.swift +158 -221
  161. package/ios/Tests/ActiveItemEngineStub.swift +44 -0
  162. package/ios/Tests/AssetReplayGainReaderTests.swift +228 -0
  163. package/ios/Tests/AudioTapProviderDispatchTargetTests.swift +158 -0
  164. package/ios/Tests/AudioTapProviderReplayGainTests.swift +122 -10
  165. package/ios/Tests/BitrateReresolveBudgetTests.swift +71 -0
  166. package/ios/Tests/CastMediaItemTranslationTests.swift +72 -0
  167. package/ios/Tests/CastNowPlayingControllerTests.swift +1 -1
  168. package/ios/Tests/CrossfadeAdvanceWithoutFadeTests.swift +120 -0
  169. package/ios/Tests/CrossfadeEngineIncomingMixTests.swift +122 -0
  170. package/ios/Tests/CrossfadeEngineTests.swift +164 -0
  171. package/ios/Tests/CrossfadeMixReapplyTests.swift +66 -0
  172. package/ios/Tests/CrossfadePlaybackIntentTests.swift +81 -0
  173. package/ios/Tests/EngineSwapTests.swift +91 -0
  174. package/ios/Tests/EqualizerAudioMixProviderTests.swift +46 -0
  175. package/ios/Tests/EqualizerHybridTests.swift +5 -2
  176. package/ios/Tests/FLACStreamInfoTests.swift +88 -0
  177. package/ios/Tests/GaplessEngineLifecycleTests.swift +4 -4
  178. package/ios/Tests/InputGuardsTests.swift +41 -0
  179. package/ios/Tests/InterruptionIntentTests.swift +77 -0
  180. package/ios/Tests/LookaheadCacheCellularAccessTests.swift +185 -0
  181. package/ios/Tests/LookaheadCachePrefetcherTests.swift +53 -30
  182. package/ios/Tests/LookaheadCacheRuntimeConfigTests.swift +160 -1
  183. package/ios/Tests/LookaheadCacheTests.swift +44 -18
  184. package/ios/Tests/MediaHTTPConnectionTests.swift +79 -0
  185. package/ios/Tests/MutationDeferralTests.swift +220 -0
  186. package/ios/Tests/NowPlayingInfoTests.swift +86 -99
  187. package/ios/Tests/NowPlayingSnapshotTests.swift +127 -0
  188. package/ios/Tests/OriginRestartStitcherTests.swift +60 -0
  189. package/ios/Tests/PlaybackNetworkMonitorTests.swift +95 -0
  190. package/ios/Tests/PlayerFixtures.swift +48 -0
  191. package/ios/Tests/PlayerStateDerivationTests.swift +10 -10
  192. package/ios/Tests/QueueMutationGenerationTests.swift +141 -0
  193. package/ios/Tests/QueueRebuildPrefixTests.swift +317 -0
  194. package/ios/Tests/QueueStateTests.swift +3 -1
  195. package/ios/Tests/QueueWindowArithmeticTests.swift +56 -0
  196. package/ios/Tests/QueueWindowSliceTests.swift +162 -0
  197. package/ios/Tests/ReadThroughRoutingLifecycleTests.swift +63 -0
  198. package/ios/Tests/ReadThroughServerTests.swift +345 -0
  199. package/ios/Tests/RemoteCommandsTests.swift +28 -0
  200. package/ios/Tests/ReplayGainExtractorTests.swift +216 -6
  201. package/ios/Tests/ReplayGainMergeTests.swift +230 -0
  202. package/ios/Tests/RetryRecoveryTests.swift +303 -0
  203. package/ios/Tests/SkipCapabilityTests.swift +233 -8
  204. package/ios/Tests/SkipIndexTests.swift +32 -2
  205. package/ios/Tests/SleepTimerPauseIntentTests.swift +43 -0
  206. package/ios/Tests/StallRecoveryTests.swift +97 -0
  207. package/ios/Tests/StreamingBitrateProbeTests.swift +17 -20
  208. package/ios/Tests/TopUpWindowGateTests.swift +394 -0
  209. package/ios/Tests/TrackPlayer+TestHops.swift +14 -0
  210. package/ios/Tests/TrackPlayerCallOrderTests.swift +93 -0
  211. package/ios/Tests/TrackPlayerConfigureTeardownTests.swift +86 -0
  212. package/ios/Tests/TrackPlayerEndVerdictTests.swift +165 -0
  213. package/ios/Tests/TrackPlayerSeekTests.swift +137 -0
  214. package/ios/Tests/TrackPlayerThreadingTests.swift +127 -0
  215. package/ios/Tests/TrackSourceClassifierTests.swift +33 -7
  216. package/ios/Tests/VoiceVocabularyOptInTests.swift +38 -0
  217. package/ios/TrackPlayer+Automotive.swift +101 -0
  218. package/ios/TrackPlayer+Cache.swift +232 -0
  219. package/ios/TrackPlayer+Config.swift +291 -0
  220. package/ios/TrackPlayer+EngineDelegate.swift +209 -0
  221. package/ios/TrackPlayer+EventsAPI.swift +111 -0
  222. package/ios/TrackPlayer+EventsDispatch.swift +968 -0
  223. package/ios/TrackPlayer+EventsWiring.swift +173 -0
  224. package/ios/TrackPlayer+Lifecycle.swift +930 -0
  225. package/ios/TrackPlayer+NowPlayingFormat.swift +258 -0
  226. package/ios/TrackPlayer+Queue.swift +940 -0
  227. package/ios/TrackPlayer+Recovery.swift +196 -0
  228. package/ios/TrackPlayer+Skip.swift +455 -0
  229. package/ios/TrackPlayer+SleepTimer.swift +175 -0
  230. package/ios/TrackPlayer+State.swift +108 -0
  231. package/ios/TrackPlayer+Threading.swift +135 -0
  232. package/ios/TrackPlayer+Transport.swift +267 -0
  233. package/ios/TrackPlayer+Window.swift +195 -0
  234. package/ios/TrackPlayer.swift +305 -4619
  235. package/ios/Visualizer.swift +6 -5
  236. package/ios/tests-harness/Podfile +1 -1
  237. package/ios/tests-harness/TestHost.xcodeproj/project.pbxproj +19 -11
  238. package/ios/tests-harness/scripts/seed-xcodeproj.rb +2 -2
  239. package/lib/module/hooks/useActiveTrack.js +29 -22
  240. package/lib/module/hooks/useActiveTrack.js.map +1 -1
  241. package/lib/module/hooks/useCast.js +8 -26
  242. package/lib/module/hooks/useCast.js.map +1 -1
  243. package/lib/module/hooks/useEqualizer.js +19 -12
  244. package/lib/module/hooks/useEqualizer.js.map +1 -1
  245. package/lib/module/hooks/useLookaheadCache.js +3 -7
  246. package/lib/module/hooks/useLookaheadCache.js.map +1 -1
  247. package/lib/module/hooks/useQueue.js +66 -19
  248. package/lib/module/hooks/useQueue.js.map +1 -1
  249. package/lib/module/index.js +6 -3
  250. package/lib/module/index.js.map +1 -1
  251. package/lib/module/queueDelta.js +41 -0
  252. package/lib/module/queueDelta.js.map +1 -0
  253. package/lib/module/types.js +28 -5
  254. package/lib/module/types.js.map +1 -1
  255. package/lib/typescript/TrackPlayer.nitro.d.ts +53 -28
  256. package/lib/typescript/TrackPlayer.nitro.d.ts.map +1 -1
  257. package/lib/typescript/hooks/useActiveTrack.d.ts +5 -7
  258. package/lib/typescript/hooks/useActiveTrack.d.ts.map +1 -1
  259. package/lib/typescript/hooks/useCast.d.ts +6 -1
  260. package/lib/typescript/hooks/useCast.d.ts.map +1 -1
  261. package/lib/typescript/hooks/useEqualizer.d.ts +2 -1
  262. package/lib/typescript/hooks/useEqualizer.d.ts.map +1 -1
  263. package/lib/typescript/hooks/useLookaheadCache.d.ts.map +1 -1
  264. package/lib/typescript/hooks/useQueue.d.ts +4 -4
  265. package/lib/typescript/hooks/useQueue.d.ts.map +1 -1
  266. package/lib/typescript/index.d.ts +2 -1
  267. package/lib/typescript/index.d.ts.map +1 -1
  268. package/lib/typescript/queueDelta.d.ts +10 -0
  269. package/lib/typescript/queueDelta.d.ts.map +1 -0
  270. package/lib/typescript/types.d.ts +168 -12
  271. package/lib/typescript/types.d.ts.map +1 -1
  272. package/nitrogen/generated/android/c++/JFunc_void_QueueChangeDelta_double_QueueChangeReason.hpp +85 -0
  273. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.cpp +45 -19
  274. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.hpp +3 -3
  275. package/nitrogen/generated/android/c++/JLookaheadCacheConfig.hpp +8 -4
  276. package/nitrogen/generated/android/c++/JPlayerConfig.hpp +5 -1
  277. package/nitrogen/generated/android/c++/JQueueChangeDelta.hpp +128 -0
  278. package/nitrogen/generated/android/c++/JTrackItem.hpp +19 -3
  279. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_BrowseItem______std__string.kt +0 -2
  280. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_TrackItem______MediaSearchRequest.kt +0 -2
  281. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_TrackItem______std__string.kt +0 -2
  282. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void.kt +0 -2
  283. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_AudioRoute.kt +0 -2
  284. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_BufferState.kt +0 -2
  285. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_CacheStatus.kt +0 -2
  286. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_CastDiscoveryState.kt +0 -2
  287. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_CastLocalNetworkPermissionEvent.kt +0 -2
  288. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_CastRoute.kt +0 -2
  289. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_CastSessionDiedEvent.kt +0 -2
  290. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_PlaybackError.kt +0 -2
  291. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_PlayerProgress.kt +0 -2
  292. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_PlayerState_StateChangeReason.kt +0 -2
  293. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/{Func_void_std__vector_TrackItem__double_QueueChangeReason.kt → Func_void_QueueChangeDelta_double_QueueChangeReason.kt} +14 -16
  294. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_ServiceReadyReason.kt +0 -2
  295. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_SkipCapability.kt +0 -2
  296. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_SleepTimerState.kt +0 -2
  297. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_VisualizerErrorReason.kt +0 -2
  298. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_VisualizerFrame.kt +0 -2
  299. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_bool.kt +0 -2
  300. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_double_double.kt +0 -2
  301. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_std__optional_TrackItem__double_TrackChangeReason_std__optional_double_.kt +0 -2
  302. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_std__optional_std__variant_nitro__NullType__NowPlayingFormat__.kt +0 -2
  303. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_std__vector_CastReceiver_.kt +0 -2
  304. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_std__vector_EqualizerBand_.kt +0 -2
  305. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/HybridCastManagerSpec.kt +2 -0
  306. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/HybridEqualizerSpec.kt +2 -0
  307. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/HybridTrackPlayerSpec.kt +6 -4
  308. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/HybridVisualizerSpec.kt +2 -0
  309. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/LookaheadCacheConfig.kt +9 -4
  310. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/PlayerConfig.kt +7 -2
  311. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/QueueChangeDelta.kt +86 -0
  312. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/TrackItem.kt +24 -4
  313. package/nitrogen/generated/android/queueplayerOnLoad.cpp +2 -2
  314. package/nitrogen/generated/ios/QueuePlayer-Swift-Cxx-Bridge.cpp +16 -16
  315. package/nitrogen/generated/ios/QueuePlayer-Swift-Cxx-Bridge.hpp +80 -65
  316. package/nitrogen/generated/ios/QueuePlayer-Swift-Cxx-Umbrella.hpp +3 -0
  317. package/nitrogen/generated/ios/c++/HybridTrackPlayerSpecSwift.hpp +6 -3
  318. package/nitrogen/generated/ios/swift/Func_void_CacheStatus.swift +5 -5
  319. package/nitrogen/generated/ios/swift/Func_void_QueueChangeDelta_double_QueueChangeReason.swift +46 -0
  320. package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec.swift +3 -3
  321. package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec_cxx.swift +32 -24
  322. package/nitrogen/generated/ios/swift/LookaheadCacheConfig.swift +20 -2
  323. package/nitrogen/generated/ios/swift/PlayerConfig.swift +19 -1
  324. package/nitrogen/generated/ios/swift/QueueChangeDelta.swift +82 -0
  325. package/nitrogen/generated/ios/swift/TrackItem.swift +73 -1
  326. package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.hpp +6 -3
  327. package/nitrogen/generated/shared/c++/LookaheadCacheConfig.hpp +7 -3
  328. package/nitrogen/generated/shared/c++/PlayerConfig.hpp +5 -1
  329. package/nitrogen/generated/shared/c++/QueueChangeDelta.hpp +113 -0
  330. package/nitrogen/generated/shared/c++/TrackItem.hpp +18 -2
  331. package/package.json +8 -8
  332. package/src/TrackPlayer.nitro.ts +53 -27
  333. package/src/hooks/useActiveTrack.ts +29 -22
  334. package/src/hooks/useCast.ts +14 -15
  335. package/src/hooks/useEqualizer.ts +19 -12
  336. package/src/hooks/useLookaheadCache.ts +3 -7
  337. package/src/hooks/useQueue.ts +66 -17
  338. package/src/index.ts +13 -3
  339. package/src/queueDelta.ts +41 -0
  340. package/src/types.ts +169 -12
  341. package/android/src/main/java/com/margelo/nitro/queueplayer/PendingIntentBuffer.kt +0 -82
  342. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/http/LocalMediaServerLifecycle.kt +0 -15
  343. package/android/src/test/java/com/margelo/nitro/queueplayer/PendingIntentBufferTest.kt +0 -192
  344. package/android/src/test/java/com/margelo/nitro/queueplayer/PlaybackEngineInterfaceTest.kt +0 -135
  345. package/android/src/test/java/com/margelo/nitro/queueplayer/SmokeTest.kt +0 -27
  346. package/ios/Cast/Core/LocalAddressMonitor.swift +0 -110
  347. package/ios/Cast/Core/MediaHTTPConnection.swift +0 -349
  348. package/ios/MetadataReader.swift +0 -555
  349. package/ios/Tests/CrossfadeEngineStubTests.swift +0 -43
  350. package/ios/Tests/MetadataReaderTests.swift +0 -603
  351. package/ios/Tests/PlaybackEngineProtocolTests.swift +0 -92
  352. package/ios/Tests/VoiceDonationTests.swift +0 -26
  353. package/nitrogen/generated/android/c++/JFunc_void_std__vector_TrackItem__double_QueueChangeReason.hpp +0 -101
  354. package/nitrogen/generated/ios/swift/Func_void_std__vector_TrackItem__double_QueueChangeReason.swift +0 -46
  355. /package/ios/{Cast/Core → MediaServer}/MimeTypes.swift +0 -0
@@ -108,6 +108,8 @@ namespace margelo::nitro::queueplayer { struct PlayerConfig; }
108
108
  namespace margelo::nitro::queueplayer { struct PlayerProgress; }
109
109
  // Forward declaration of `PlayerState` to properly resolve imports.
110
110
  namespace margelo::nitro::queueplayer { enum class PlayerState; }
111
+ // Forward declaration of `QueueChangeDelta` to properly resolve imports.
112
+ namespace margelo::nitro::queueplayer { struct QueueChangeDelta; }
111
113
  // Forward declaration of `QueueChangeReason` to properly resolve imports.
112
114
  namespace margelo::nitro::queueplayer { enum class QueueChangeReason; }
113
115
  // Forward declaration of `RemoteControlOptions` to properly resolve imports.
@@ -198,6 +200,7 @@ namespace margelo::nitro::queueplayer { struct VoiceVocabulary; }
198
200
  #include "PlayerConfig.hpp"
199
201
  #include "PlayerProgress.hpp"
200
202
  #include "PlayerState.hpp"
203
+ #include "QueueChangeDelta.hpp"
201
204
  #include "QueueChangeReason.hpp"
202
205
  #include "RemoteControlOptions.hpp"
203
206
  #include "RemoteSkipMode.hpp"
@@ -52,6 +52,8 @@ namespace margelo::nitro::queueplayer { struct SleepTimerState; }
52
52
  namespace margelo::nitro::queueplayer { enum class StateChangeReason; }
53
53
  // Forward declaration of `TrackChangeReason` to properly resolve imports.
54
54
  namespace margelo::nitro::queueplayer { enum class TrackChangeReason; }
55
+ // Forward declaration of `QueueChangeDelta` to properly resolve imports.
56
+ namespace margelo::nitro::queueplayer { struct QueueChangeDelta; }
55
57
  // Forward declaration of `QueueChangeReason` to properly resolve imports.
56
58
  namespace margelo::nitro::queueplayer { enum class QueueChangeReason; }
57
59
  // Forward declaration of `PlayerProgress` to properly resolve imports.
@@ -129,6 +131,7 @@ namespace margelo::nitro::queueplayer { struct NowPlayingFormatAndroidExtras; }
129
131
  #include <functional>
130
132
  #include "StateChangeReason.hpp"
131
133
  #include "TrackChangeReason.hpp"
134
+ #include "QueueChangeDelta.hpp"
132
135
  #include "QueueChangeReason.hpp"
133
136
  #include "PlayerProgress.hpp"
134
137
  #include "PlaybackError.hpp"
@@ -255,7 +258,7 @@ namespace margelo::nitro::queueplayer {
255
258
  auto __value = std::move(__result.value());
256
259
  return __value;
257
260
  }
258
- inline std::vector<TrackItem> getQueue() override {
261
+ inline std::shared_ptr<Promise<std::vector<TrackItem>>> getQueue() override {
259
262
  auto __result = _swiftPart.getQueue();
260
263
  if (__result.hasError()) [[unlikely]] {
261
264
  std::rethrow_exception(__result.error());
@@ -551,7 +554,7 @@ namespace margelo::nitro::queueplayer {
551
554
  auto __value = std::move(__result.value());
552
555
  return __value;
553
556
  }
554
- inline std::function<void()> onQueueChange(const std::function<void(const std::vector<TrackItem>& /* queue */, double /* currentIndex */, QueueChangeReason /* reason */)>& callback) override {
557
+ inline std::function<void()> onQueueChange(const std::function<void(const QueueChangeDelta& /* delta */, double /* currentIndex */, QueueChangeReason /* reason */)>& callback) override {
555
558
  auto __result = _swiftPart.onQueueChange(callback);
556
559
  if (__result.hasError()) [[unlikely]] {
557
560
  std::rethrow_exception(__result.error());
@@ -707,7 +710,7 @@ namespace margelo::nitro::queueplayer {
707
710
  auto __value = std::move(__result.value());
708
711
  return __value;
709
712
  }
710
- inline CacheStatus getLookaheadCacheStatus() override {
713
+ inline std::shared_ptr<Promise<CacheStatus>> getLookaheadCacheStatus() override {
711
714
  auto __result = _swiftPart.getLookaheadCacheStatus();
712
715
  if (__result.hasError()) [[unlikely]] {
713
716
  std::rethrow_exception(__result.error());
@@ -8,21 +8,21 @@
8
8
  import NitroModules
9
9
 
10
10
  /**
11
- * Wraps a Swift `(_ status: CacheStatus) -> Void` as a class.
11
+ * Wraps a Swift `(_ value: CacheStatus) -> Void` as a class.
12
12
  * This class can be used from C++, e.g. to wrap the Swift closure as a `std::function`.
13
13
  */
14
14
  public final class Func_void_CacheStatus {
15
15
  public typealias bridge = margelo.nitro.queueplayer.bridge.swift
16
16
 
17
- private let closure: (_ status: CacheStatus) -> Void
17
+ private let closure: (_ value: CacheStatus) -> Void
18
18
 
19
- public init(_ closure: @escaping (_ status: CacheStatus) -> Void) {
19
+ public init(_ closure: @escaping (_ value: CacheStatus) -> Void) {
20
20
  self.closure = closure
21
21
  }
22
22
 
23
23
  @inline(__always)
24
- public func call(status: CacheStatus) -> Void {
25
- self.closure(status)
24
+ public func call(value: CacheStatus) -> Void {
25
+ self.closure(value)
26
26
  }
27
27
 
28
28
  /**
@@ -0,0 +1,46 @@
1
+ ///
2
+ /// Func_void_QueueChangeDelta_double_QueueChangeReason.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ import NitroModules
9
+
10
+ /**
11
+ * Wraps a Swift `(_ delta: QueueChangeDelta, _ currentIndex: Double, _ reason: QueueChangeReason) -> Void` as a class.
12
+ * This class can be used from C++, e.g. to wrap the Swift closure as a `std::function`.
13
+ */
14
+ public final class Func_void_QueueChangeDelta_double_QueueChangeReason {
15
+ public typealias bridge = margelo.nitro.queueplayer.bridge.swift
16
+
17
+ private let closure: (_ delta: QueueChangeDelta, _ currentIndex: Double, _ reason: QueueChangeReason) -> Void
18
+
19
+ public init(_ closure: @escaping (_ delta: QueueChangeDelta, _ currentIndex: Double, _ reason: QueueChangeReason) -> Void) {
20
+ self.closure = closure
21
+ }
22
+
23
+ @inline(__always)
24
+ public func call(delta: QueueChangeDelta, currentIndex: Double, reason: Int32) -> Void {
25
+ self.closure(delta, currentIndex, margelo.nitro.queueplayer.QueueChangeReason(rawValue: reason)!)
26
+ }
27
+
28
+ /**
29
+ * Casts this instance to a retained unsafe raw pointer.
30
+ * This acquires one additional strong reference on the object!
31
+ */
32
+ @inline(__always)
33
+ public func toUnsafe() -> UnsafeMutableRawPointer {
34
+ return Unmanaged.passRetained(self).toOpaque()
35
+ }
36
+
37
+ /**
38
+ * Casts an unsafe pointer to a `Func_void_QueueChangeDelta_double_QueueChangeReason`.
39
+ * The pointer has to be a retained opaque `Unmanaged<Func_void_QueueChangeDelta_double_QueueChangeReason>`.
40
+ * This removes one strong reference from the object!
41
+ */
42
+ @inline(__always)
43
+ public static func fromUnsafe(_ pointer: UnsafeMutableRawPointer) -> Func_void_QueueChangeDelta_double_QueueChangeReason {
44
+ return Unmanaged<Func_void_QueueChangeDelta_double_QueueChangeReason>.fromOpaque(pointer).takeRetainedValue()
45
+ }
46
+ }
@@ -19,7 +19,7 @@ public protocol HybridTrackPlayerSpec_protocol: HybridObject {
19
19
  func addToQueue(tracks: [TrackItem], insertBefore: Double?) throws -> Promise<Void>
20
20
  func removeFromQueue(indices: [Double]) throws -> Promise<Void>
21
21
  func moveInQueue(fromIndex: Double, toIndex: Double) throws -> Promise<Void>
22
- func getQueue() throws -> [TrackItem]
22
+ func getQueue() throws -> Promise<[TrackItem]>
23
23
  func clearQueue() throws -> Promise<Void>
24
24
  func play() throws -> Promise<Void>
25
25
  func pause() throws -> Promise<Void>
@@ -56,7 +56,7 @@ public protocol HybridTrackPlayerSpec_protocol: HybridObject {
56
56
  func getSleepTimer() throws -> SleepTimerState
57
57
  func onStateChange(callback: @escaping (_ state: PlayerState, _ reason: StateChangeReason) -> Void) throws -> () -> Void
58
58
  func onTrackChange(callback: @escaping (_ track: TrackItem?, _ index: Double, _ reason: TrackChangeReason, _ transitionGapMs: Double?) -> Void) throws -> () -> Void
59
- func onQueueChange(callback: @escaping (_ queue: [TrackItem], _ currentIndex: Double, _ reason: QueueChangeReason) -> Void) throws -> () -> Void
59
+ func onQueueChange(callback: @escaping (_ delta: QueueChangeDelta, _ currentIndex: Double, _ reason: QueueChangeReason) -> Void) throws -> () -> Void
60
60
  func onProgress(callback: @escaping (_ progress: PlayerProgress) -> Void) throws -> () -> Void
61
61
  func onPlaybackMilestone(callback: @escaping (_ milestone: Double, _ trackIndex: Double) -> Void) throws -> () -> Void
62
62
  func onError(callback: @escaping (_ error: PlaybackError) -> Void) throws -> () -> Void
@@ -76,7 +76,7 @@ public protocol HybridTrackPlayerSpec_protocol: HybridObject {
76
76
  func isCarConnected() throws -> Bool
77
77
  func onServiceReady(callback: @escaping (_ reason: ServiceReadyReason) -> Void) throws -> () -> Void
78
78
  func setLookaheadCache(config: LookaheadCacheConfig) throws -> Promise<Void>
79
- func getLookaheadCacheStatus() throws -> CacheStatus
79
+ func getLookaheadCacheStatus() throws -> Promise<CacheStatus>
80
80
  func clearLookaheadCache() throws -> Promise<Void>
81
81
  func onCacheStatusChange(callback: @escaping (_ status: CacheStatus) -> Void) throws -> () -> Void
82
82
  func setReplayGainMode(mode: ReplayGainMode) throws -> Promise<Void>
@@ -253,20 +253,27 @@ open class HybridTrackPlayerSpec_cxx {
253
253
  }
254
254
 
255
255
  @inline(__always)
256
- public final func getQueue() -> bridge.Result_std__vector_TrackItem__ {
256
+ public final func getQueue() -> bridge.Result_std__shared_ptr_Promise_std__vector_TrackItem____ {
257
257
  do {
258
258
  let __result = try self.__implementation.getQueue()
259
- let __resultCpp = { () -> bridge.std__vector_TrackItem_ in
260
- var __vector = bridge.create_std__vector_TrackItem_(__result.count)
261
- for __item in __result {
262
- __vector.push_back(__item)
263
- }
264
- return __vector
259
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_std__vector_TrackItem___ in
260
+ let __promise = bridge.create_std__shared_ptr_Promise_std__vector_TrackItem___()
261
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_std__vector_TrackItem___(__promise)
262
+ __result
263
+ .then({ __result in __promiseHolder.resolve({ () -> bridge.std__vector_TrackItem_ in
264
+ var __vector = bridge.create_std__vector_TrackItem_(__result.count)
265
+ for __item in __result {
266
+ __vector.push_back(__item)
267
+ }
268
+ return __vector
269
+ }()) })
270
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
271
+ return __promise
265
272
  }()
266
- return bridge.create_Result_std__vector_TrackItem__(__resultCpp)
273
+ return bridge.create_Result_std__shared_ptr_Promise_std__vector_TrackItem____(__resultCpp)
267
274
  } catch (let __error) {
268
275
  let __exceptionPtr = __error.toCpp()
269
- return bridge.create_Result_std__vector_TrackItem__(__exceptionPtr)
276
+ return bridge.create_Result_std__shared_ptr_Promise_std__vector_TrackItem____(__exceptionPtr)
270
277
  }
271
278
  }
272
279
 
@@ -870,18 +877,12 @@ open class HybridTrackPlayerSpec_cxx {
870
877
  }
871
878
 
872
879
  @inline(__always)
873
- public final func onQueueChange(callback: bridge.Func_void_std__vector_TrackItem__double_QueueChangeReason) -> bridge.Result_std__function_void____ {
880
+ public final func onQueueChange(callback: bridge.Func_void_QueueChangeDelta_double_QueueChangeReason) -> bridge.Result_std__function_void____ {
874
881
  do {
875
- let __result = try self.__implementation.onQueueChange(callback: { () -> ([TrackItem], Double, QueueChangeReason) -> Void in
876
- let __wrappedFunction = bridge.wrap_Func_void_std__vector_TrackItem__double_QueueChangeReason(callback)
877
- return { (__queue: [TrackItem], __currentIndex: Double, __reason: QueueChangeReason) -> Void in
878
- __wrappedFunction.call({ () -> bridge.std__vector_TrackItem_ in
879
- var __vector = bridge.create_std__vector_TrackItem_(__queue.count)
880
- for __item in __queue {
881
- __vector.push_back(__item)
882
- }
883
- return __vector
884
- }(), __currentIndex, __reason.rawValue)
882
+ let __result = try self.__implementation.onQueueChange(callback: { () -> (QueueChangeDelta, Double, QueueChangeReason) -> Void in
883
+ let __wrappedFunction = bridge.wrap_Func_void_QueueChangeDelta_double_QueueChangeReason(callback)
884
+ return { (__delta: QueueChangeDelta, __currentIndex: Double, __reason: QueueChangeReason) -> Void in
885
+ __wrappedFunction.call(__delta, __currentIndex, __reason.rawValue)
885
886
  }
886
887
  }())
887
888
  let __resultCpp = { () -> bridge.Func_void in
@@ -1333,14 +1334,21 @@ open class HybridTrackPlayerSpec_cxx {
1333
1334
  }
1334
1335
 
1335
1336
  @inline(__always)
1336
- public final func getLookaheadCacheStatus() -> bridge.Result_CacheStatus_ {
1337
+ public final func getLookaheadCacheStatus() -> bridge.Result_std__shared_ptr_Promise_CacheStatus___ {
1337
1338
  do {
1338
1339
  let __result = try self.__implementation.getLookaheadCacheStatus()
1339
- let __resultCpp = __result
1340
- return bridge.create_Result_CacheStatus_(__resultCpp)
1340
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_CacheStatus__ in
1341
+ let __promise = bridge.create_std__shared_ptr_Promise_CacheStatus__()
1342
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_CacheStatus__(__promise)
1343
+ __result
1344
+ .then({ __result in __promiseHolder.resolve(__result) })
1345
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
1346
+ return __promise
1347
+ }()
1348
+ return bridge.create_Result_std__shared_ptr_Promise_CacheStatus___(__resultCpp)
1341
1349
  } catch (let __error) {
1342
1350
  let __exceptionPtr = __error.toCpp()
1343
- return bridge.create_Result_CacheStatus_(__exceptionPtr)
1351
+ return bridge.create_Result_std__shared_ptr_Promise_CacheStatus___(__exceptionPtr)
1344
1352
  }
1345
1353
  }
1346
1354
 
@@ -18,8 +18,14 @@ public extension LookaheadCacheConfig {
18
18
  /**
19
19
  * Create a new instance of `LookaheadCacheConfig`.
20
20
  */
21
- init(enabled: Bool, lookaheadCount: Double) {
22
- self.init(enabled, lookaheadCount)
21
+ init(enabled: Bool, lookaheadCount: Double, allowsCellularAccess: Bool?) {
22
+ self.init(enabled, lookaheadCount, { () -> bridge.std__optional_bool_ in
23
+ if let __unwrappedValue = allowsCellularAccess {
24
+ return bridge.create_std__optional_bool_(__unwrappedValue)
25
+ } else {
26
+ return .init()
27
+ }
28
+ }())
23
29
  }
24
30
 
25
31
  @inline(__always)
@@ -31,4 +37,16 @@ public extension LookaheadCacheConfig {
31
37
  var lookaheadCount: Double {
32
38
  return self.__lookaheadCount
33
39
  }
40
+
41
+ @inline(__always)
42
+ var allowsCellularAccess: Bool? {
43
+ return { () -> Bool? in
44
+ if bridge.has_value_std__optional_bool_(self.__allowsCellularAccess) {
45
+ let __unwrapped = bridge.get_std__optional_bool_(self.__allowsCellularAccess)
46
+ return __unwrapped
47
+ } else {
48
+ return nil
49
+ }
50
+ }()
51
+ }
34
52
  }
@@ -18,7 +18,7 @@ public extension PlayerConfig {
18
18
  /**
19
19
  * Create a new instance of `PlayerConfig`.
20
20
  */
21
- init(httpHeaders: Dictionary<String, String>?, userAgent: String?, placeholderArtworkUri: String?, autoRetries: Double?, retryBackoffMs: Double?, networkTimeoutMs: Double?, audioContentType: AudioContentType?, audioCategoryOptions: AudioCategoryOptions?, visualizationEnabled: Bool?, clampSeekToBuffered: Bool?, skipToPreviousBehavior: SkipToPreviousBehavior?, lookaheadCacheMaxSizeMb: Double?, lookaheadCacheEvictionPolicy: EvictionPolicy?, progressUpdateIntervalMs: Double?, backgroundProgressUpdateIntervalMs: Double?) {
21
+ init(httpHeaders: Dictionary<String, String>?, userAgent: String?, placeholderArtworkUri: String?, autoRetries: Double?, retryBackoffMs: Double?, networkTimeoutMs: Double?, audioContentType: AudioContentType?, audioCategoryOptions: AudioCategoryOptions?, voiceVocabularyDonationEnabled: Bool?, visualizationEnabled: Bool?, clampSeekToBuffered: Bool?, skipToPreviousBehavior: SkipToPreviousBehavior?, lookaheadCacheMaxSizeMb: Double?, lookaheadCacheEvictionPolicy: EvictionPolicy?, progressUpdateIntervalMs: Double?, backgroundProgressUpdateIntervalMs: Double?) {
22
22
  self.init({ () -> bridge.std__optional_std__unordered_map_std__string__std__string__ in
23
23
  if let __unwrappedValue = httpHeaders {
24
24
  return bridge.create_std__optional_std__unordered_map_std__string__std__string__({ () -> bridge.std__unordered_map_std__string__std__string_ in
@@ -73,6 +73,12 @@ public extension PlayerConfig {
73
73
  } else {
74
74
  return .init()
75
75
  }
76
+ }(), { () -> bridge.std__optional_bool_ in
77
+ if let __unwrappedValue = voiceVocabularyDonationEnabled {
78
+ return bridge.create_std__optional_bool_(__unwrappedValue)
79
+ } else {
80
+ return .init()
81
+ }
76
82
  }(), { () -> bridge.std__optional_bool_ in
77
83
  if let __unwrappedValue = visualizationEnabled {
78
84
  return bridge.create_std__optional_bool_(__unwrappedValue)
@@ -208,6 +214,18 @@ public extension PlayerConfig {
208
214
  return self.__audioCategoryOptions.value
209
215
  }
210
216
 
217
+ @inline(__always)
218
+ var voiceVocabularyDonationEnabled: Bool? {
219
+ return { () -> Bool? in
220
+ if bridge.has_value_std__optional_bool_(self.__voiceVocabularyDonationEnabled) {
221
+ let __unwrapped = bridge.get_std__optional_bool_(self.__voiceVocabularyDonationEnabled)
222
+ return __unwrapped
223
+ } else {
224
+ return nil
225
+ }
226
+ }()
227
+ }
228
+
211
229
  @inline(__always)
212
230
  var visualizationEnabled: Bool? {
213
231
  return { () -> Bool? in
@@ -0,0 +1,82 @@
1
+ ///
2
+ /// QueueChangeDelta.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ import NitroModules
9
+
10
+ /**
11
+ * Represents an instance of `QueueChangeDelta`, backed by a C++ struct.
12
+ */
13
+ public typealias QueueChangeDelta = margelo.nitro.queueplayer.QueueChangeDelta
14
+
15
+ public extension QueueChangeDelta {
16
+ private typealias bridge = margelo.nitro.queueplayer.bridge.swift
17
+
18
+ /**
19
+ * Create a new instance of `QueueChangeDelta`.
20
+ */
21
+ init(revision: Double, length: Double, inserted: [TrackItem], insertedAt: Double, removed: [Double], movedFrom: Double, movedTo: Double, order: [Double]) {
22
+ self.init(revision, length, { () -> bridge.std__vector_TrackItem_ in
23
+ var __vector = bridge.create_std__vector_TrackItem_(inserted.count)
24
+ for __item in inserted {
25
+ __vector.push_back(__item)
26
+ }
27
+ return __vector
28
+ }(), insertedAt, { () -> bridge.std__vector_double_ in
29
+ var __vector = bridge.create_std__vector_double_(removed.count)
30
+ for __item in removed {
31
+ __vector.push_back(__item)
32
+ }
33
+ return __vector
34
+ }(), movedFrom, movedTo, { () -> bridge.std__vector_double_ in
35
+ var __vector = bridge.create_std__vector_double_(order.count)
36
+ for __item in order {
37
+ __vector.push_back(__item)
38
+ }
39
+ return __vector
40
+ }())
41
+ }
42
+
43
+ @inline(__always)
44
+ var revision: Double {
45
+ return self.__revision
46
+ }
47
+
48
+ @inline(__always)
49
+ var length: Double {
50
+ return self.__length
51
+ }
52
+
53
+ @inline(__always)
54
+ var inserted: [TrackItem] {
55
+ return self.__inserted.map({ __item in __item })
56
+ }
57
+
58
+ @inline(__always)
59
+ var insertedAt: Double {
60
+ return self.__insertedAt
61
+ }
62
+
63
+ @inline(__always)
64
+ var removed: [Double] {
65
+ return self.__removed.map({ __item in __item })
66
+ }
67
+
68
+ @inline(__always)
69
+ var movedFrom: Double {
70
+ return self.__movedFrom
71
+ }
72
+
73
+ @inline(__always)
74
+ var movedTo: Double {
75
+ return self.__movedTo
76
+ }
77
+
78
+ @inline(__always)
79
+ var order: [Double] {
80
+ return self.__order.map({ __item in __item })
81
+ }
82
+ }
@@ -18,7 +18,7 @@ public extension TrackItem {
18
18
  /**
19
19
  * Create a new instance of `TrackItem`.
20
20
  */
21
- init(id: String?, url: String, title: String?, artist: String?, album: String?, duration: Double?, artworkUrl: String?, extras: Dictionary<String, String>?) {
21
+ init(id: String?, url: String, title: String?, artist: String?, album: String?, duration: Double?, artworkUrl: String?, extras: Dictionary<String, String>?, replayGainTrackGain: Double?, replayGainTrackPeak: Double?, replayGainAlbumGain: Double?, replayGainAlbumPeak: Double?) {
22
22
  self.init({ () -> bridge.std__optional_std__string_ in
23
23
  if let __unwrappedValue = id {
24
24
  return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
@@ -67,6 +67,30 @@ public extension TrackItem {
67
67
  } else {
68
68
  return .init()
69
69
  }
70
+ }(), { () -> bridge.std__optional_double_ in
71
+ if let __unwrappedValue = replayGainTrackGain {
72
+ return bridge.create_std__optional_double_(__unwrappedValue)
73
+ } else {
74
+ return .init()
75
+ }
76
+ }(), { () -> bridge.std__optional_double_ in
77
+ if let __unwrappedValue = replayGainTrackPeak {
78
+ return bridge.create_std__optional_double_(__unwrappedValue)
79
+ } else {
80
+ return .init()
81
+ }
82
+ }(), { () -> bridge.std__optional_double_ in
83
+ if let __unwrappedValue = replayGainAlbumGain {
84
+ return bridge.create_std__optional_double_(__unwrappedValue)
85
+ } else {
86
+ return .init()
87
+ }
88
+ }(), { () -> bridge.std__optional_double_ in
89
+ if let __unwrappedValue = replayGainAlbumPeak {
90
+ return bridge.create_std__optional_double_(__unwrappedValue)
91
+ } else {
92
+ return .init()
93
+ }
70
94
  }())
71
95
  }
72
96
 
@@ -166,4 +190,52 @@ public extension TrackItem {
166
190
  }
167
191
  }()
168
192
  }
193
+
194
+ @inline(__always)
195
+ var replayGainTrackGain: Double? {
196
+ return { () -> Double? in
197
+ if bridge.has_value_std__optional_double_(self.__replayGainTrackGain) {
198
+ let __unwrapped = bridge.get_std__optional_double_(self.__replayGainTrackGain)
199
+ return __unwrapped
200
+ } else {
201
+ return nil
202
+ }
203
+ }()
204
+ }
205
+
206
+ @inline(__always)
207
+ var replayGainTrackPeak: Double? {
208
+ return { () -> Double? in
209
+ if bridge.has_value_std__optional_double_(self.__replayGainTrackPeak) {
210
+ let __unwrapped = bridge.get_std__optional_double_(self.__replayGainTrackPeak)
211
+ return __unwrapped
212
+ } else {
213
+ return nil
214
+ }
215
+ }()
216
+ }
217
+
218
+ @inline(__always)
219
+ var replayGainAlbumGain: Double? {
220
+ return { () -> Double? in
221
+ if bridge.has_value_std__optional_double_(self.__replayGainAlbumGain) {
222
+ let __unwrapped = bridge.get_std__optional_double_(self.__replayGainAlbumGain)
223
+ return __unwrapped
224
+ } else {
225
+ return nil
226
+ }
227
+ }()
228
+ }
229
+
230
+ @inline(__always)
231
+ var replayGainAlbumPeak: Double? {
232
+ return { () -> Double? in
233
+ if bridge.has_value_std__optional_double_(self.__replayGainAlbumPeak) {
234
+ let __unwrapped = bridge.get_std__optional_double_(self.__replayGainAlbumPeak)
235
+ return __unwrapped
236
+ } else {
237
+ return nil
238
+ }
239
+ }()
240
+ }
169
241
  }
@@ -41,6 +41,8 @@ namespace margelo::nitro::queueplayer { struct SleepTimerState; }
41
41
  namespace margelo::nitro::queueplayer { enum class StateChangeReason; }
42
42
  // Forward declaration of `TrackChangeReason` to properly resolve imports.
43
43
  namespace margelo::nitro::queueplayer { enum class TrackChangeReason; }
44
+ // Forward declaration of `QueueChangeDelta` to properly resolve imports.
45
+ namespace margelo::nitro::queueplayer { struct QueueChangeDelta; }
44
46
  // Forward declaration of `QueueChangeReason` to properly resolve imports.
45
47
  namespace margelo::nitro::queueplayer { enum class QueueChangeReason; }
46
48
  // Forward declaration of `PlayerProgress` to properly resolve imports.
@@ -84,6 +86,7 @@ namespace margelo::nitro::queueplayer { struct NowPlayingFormat; }
84
86
  #include <functional>
85
87
  #include "StateChangeReason.hpp"
86
88
  #include "TrackChangeReason.hpp"
89
+ #include "QueueChangeDelta.hpp"
87
90
  #include "QueueChangeReason.hpp"
88
91
  #include "PlayerProgress.hpp"
89
92
  #include "PlaybackError.hpp"
@@ -137,7 +140,7 @@ namespace margelo::nitro::queueplayer {
137
140
  virtual std::shared_ptr<Promise<void>> addToQueue(const std::vector<TrackItem>& tracks, std::optional<double> insertBefore) = 0;
138
141
  virtual std::shared_ptr<Promise<void>> removeFromQueue(const std::vector<double>& indices) = 0;
139
142
  virtual std::shared_ptr<Promise<void>> moveInQueue(double fromIndex, double toIndex) = 0;
140
- virtual std::vector<TrackItem> getQueue() = 0;
143
+ virtual std::shared_ptr<Promise<std::vector<TrackItem>>> getQueue() = 0;
141
144
  virtual std::shared_ptr<Promise<void>> clearQueue() = 0;
142
145
  virtual std::shared_ptr<Promise<void>> play() = 0;
143
146
  virtual std::shared_ptr<Promise<void>> pause() = 0;
@@ -174,7 +177,7 @@ namespace margelo::nitro::queueplayer {
174
177
  virtual SleepTimerState getSleepTimer() = 0;
175
178
  virtual std::function<void()> onStateChange(const std::function<void(PlayerState /* state */, StateChangeReason /* reason */)>& callback) = 0;
176
179
  virtual std::function<void()> onTrackChange(const std::function<void(const std::optional<TrackItem>& /* track */, double /* index */, TrackChangeReason /* reason */, std::optional<double> /* transitionGapMs */)>& callback) = 0;
177
- virtual std::function<void()> onQueueChange(const std::function<void(const std::vector<TrackItem>& /* queue */, double /* currentIndex */, QueueChangeReason /* reason */)>& callback) = 0;
180
+ virtual std::function<void()> onQueueChange(const std::function<void(const QueueChangeDelta& /* delta */, double /* currentIndex */, QueueChangeReason /* reason */)>& callback) = 0;
178
181
  virtual std::function<void()> onProgress(const std::function<void(const PlayerProgress& /* progress */)>& callback) = 0;
179
182
  virtual std::function<void()> onPlaybackMilestone(const std::function<void(double /* milestone */, double /* trackIndex */)>& callback) = 0;
180
183
  virtual std::function<void()> onError(const std::function<void(const PlaybackError& /* error */)>& callback) = 0;
@@ -194,7 +197,7 @@ namespace margelo::nitro::queueplayer {
194
197
  virtual bool isCarConnected() = 0;
195
198
  virtual std::function<void()> onServiceReady(const std::function<void(ServiceReadyReason /* reason */)>& callback) = 0;
196
199
  virtual std::shared_ptr<Promise<void>> setLookaheadCache(const LookaheadCacheConfig& config) = 0;
197
- virtual CacheStatus getLookaheadCacheStatus() = 0;
200
+ virtual std::shared_ptr<Promise<CacheStatus>> getLookaheadCacheStatus() = 0;
198
201
  virtual std::shared_ptr<Promise<void>> clearLookaheadCache() = 0;
199
202
  virtual std::function<void()> onCacheStatusChange(const std::function<void(const CacheStatus& /* status */)>& callback) = 0;
200
203
  virtual std::shared_ptr<Promise<void>> setReplayGainMode(ReplayGainMode mode) = 0;
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
 
33
-
33
+ #include <optional>
34
34
 
35
35
  namespace margelo::nitro::queueplayer {
36
36
 
@@ -41,10 +41,11 @@ namespace margelo::nitro::queueplayer {
41
41
  public:
42
42
  bool enabled SWIFT_PRIVATE;
43
43
  double lookaheadCount SWIFT_PRIVATE;
44
+ std::optional<bool> allowsCellularAccess SWIFT_PRIVATE;
44
45
 
45
46
  public:
46
47
  LookaheadCacheConfig() = default;
47
- explicit LookaheadCacheConfig(bool enabled, double lookaheadCount): enabled(enabled), lookaheadCount(lookaheadCount) {}
48
+ explicit LookaheadCacheConfig(bool enabled, double lookaheadCount, std::optional<bool> allowsCellularAccess): enabled(enabled), lookaheadCount(lookaheadCount), allowsCellularAccess(allowsCellularAccess) {}
48
49
 
49
50
  public:
50
51
  friend bool operator==(const LookaheadCacheConfig& lhs, const LookaheadCacheConfig& rhs) = default;
@@ -61,13 +62,15 @@ namespace margelo::nitro {
61
62
  jsi::Object obj = arg.asObject(runtime);
62
63
  return margelo::nitro::queueplayer::LookaheadCacheConfig(
63
64
  JSIConverter<bool>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "enabled"))),
64
- JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "lookaheadCount")))
65
+ JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "lookaheadCount"))),
66
+ JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "allowsCellularAccess")))
65
67
  );
66
68
  }
67
69
  static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::queueplayer::LookaheadCacheConfig& arg) {
68
70
  jsi::Object obj(runtime);
69
71
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "enabled"), JSIConverter<bool>::toJSI(runtime, arg.enabled));
70
72
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "lookaheadCount"), JSIConverter<double>::toJSI(runtime, arg.lookaheadCount));
73
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "allowsCellularAccess"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.allowsCellularAccess));
71
74
  return obj;
72
75
  }
73
76
  static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
@@ -80,6 +83,7 @@ namespace margelo::nitro {
80
83
  }
81
84
  if (!JSIConverter<bool>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "enabled")))) return false;
82
85
  if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "lookaheadCount")))) return false;
86
+ if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "allowsCellularAccess")))) return false;
83
87
  return true;
84
88
  }
85
89
  };
@@ -60,6 +60,7 @@ namespace margelo::nitro::queueplayer {
60
60
  std::optional<double> networkTimeoutMs SWIFT_PRIVATE;
61
61
  std::optional<AudioContentType> audioContentType SWIFT_PRIVATE;
62
62
  std::optional<AudioCategoryOptions> audioCategoryOptions SWIFT_PRIVATE;
63
+ std::optional<bool> voiceVocabularyDonationEnabled SWIFT_PRIVATE;
63
64
  std::optional<bool> visualizationEnabled SWIFT_PRIVATE;
64
65
  std::optional<bool> clampSeekToBuffered SWIFT_PRIVATE;
65
66
  std::optional<SkipToPreviousBehavior> skipToPreviousBehavior SWIFT_PRIVATE;
@@ -70,7 +71,7 @@ namespace margelo::nitro::queueplayer {
70
71
 
71
72
  public:
72
73
  PlayerConfig() = default;
73
- explicit PlayerConfig(std::optional<std::unordered_map<std::string, std::string>> httpHeaders, std::optional<std::string> userAgent, std::optional<std::string> placeholderArtworkUri, std::optional<double> autoRetries, std::optional<double> retryBackoffMs, std::optional<double> networkTimeoutMs, std::optional<AudioContentType> audioContentType, std::optional<AudioCategoryOptions> audioCategoryOptions, std::optional<bool> visualizationEnabled, std::optional<bool> clampSeekToBuffered, std::optional<SkipToPreviousBehavior> skipToPreviousBehavior, std::optional<double> lookaheadCacheMaxSizeMb, std::optional<EvictionPolicy> lookaheadCacheEvictionPolicy, std::optional<double> progressUpdateIntervalMs, std::optional<double> backgroundProgressUpdateIntervalMs): httpHeaders(httpHeaders), userAgent(userAgent), placeholderArtworkUri(placeholderArtworkUri), autoRetries(autoRetries), retryBackoffMs(retryBackoffMs), networkTimeoutMs(networkTimeoutMs), audioContentType(audioContentType), audioCategoryOptions(audioCategoryOptions), visualizationEnabled(visualizationEnabled), clampSeekToBuffered(clampSeekToBuffered), skipToPreviousBehavior(skipToPreviousBehavior), lookaheadCacheMaxSizeMb(lookaheadCacheMaxSizeMb), lookaheadCacheEvictionPolicy(lookaheadCacheEvictionPolicy), progressUpdateIntervalMs(progressUpdateIntervalMs), backgroundProgressUpdateIntervalMs(backgroundProgressUpdateIntervalMs) {}
74
+ explicit PlayerConfig(std::optional<std::unordered_map<std::string, std::string>> httpHeaders, std::optional<std::string> userAgent, std::optional<std::string> placeholderArtworkUri, std::optional<double> autoRetries, std::optional<double> retryBackoffMs, std::optional<double> networkTimeoutMs, std::optional<AudioContentType> audioContentType, std::optional<AudioCategoryOptions> audioCategoryOptions, std::optional<bool> voiceVocabularyDonationEnabled, std::optional<bool> visualizationEnabled, std::optional<bool> clampSeekToBuffered, std::optional<SkipToPreviousBehavior> skipToPreviousBehavior, std::optional<double> lookaheadCacheMaxSizeMb, std::optional<EvictionPolicy> lookaheadCacheEvictionPolicy, std::optional<double> progressUpdateIntervalMs, std::optional<double> backgroundProgressUpdateIntervalMs): httpHeaders(httpHeaders), userAgent(userAgent), placeholderArtworkUri(placeholderArtworkUri), autoRetries(autoRetries), retryBackoffMs(retryBackoffMs), networkTimeoutMs(networkTimeoutMs), audioContentType(audioContentType), audioCategoryOptions(audioCategoryOptions), voiceVocabularyDonationEnabled(voiceVocabularyDonationEnabled), visualizationEnabled(visualizationEnabled), clampSeekToBuffered(clampSeekToBuffered), skipToPreviousBehavior(skipToPreviousBehavior), lookaheadCacheMaxSizeMb(lookaheadCacheMaxSizeMb), lookaheadCacheEvictionPolicy(lookaheadCacheEvictionPolicy), progressUpdateIntervalMs(progressUpdateIntervalMs), backgroundProgressUpdateIntervalMs(backgroundProgressUpdateIntervalMs) {}
74
75
 
75
76
  public:
76
77
  friend bool operator==(const PlayerConfig& lhs, const PlayerConfig& rhs) = default;
@@ -94,6 +95,7 @@ namespace margelo::nitro {
94
95
  JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "networkTimeoutMs"))),
95
96
  JSIConverter<std::optional<margelo::nitro::queueplayer::AudioContentType>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "audioContentType"))),
96
97
  JSIConverter<std::optional<margelo::nitro::queueplayer::AudioCategoryOptions>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "audioCategoryOptions"))),
98
+ JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "voiceVocabularyDonationEnabled"))),
97
99
  JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "visualizationEnabled"))),
98
100
  JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "clampSeekToBuffered"))),
99
101
  JSIConverter<std::optional<margelo::nitro::queueplayer::SkipToPreviousBehavior>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "skipToPreviousBehavior"))),
@@ -113,6 +115,7 @@ namespace margelo::nitro {
113
115
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "networkTimeoutMs"), JSIConverter<std::optional<double>>::toJSI(runtime, arg.networkTimeoutMs));
114
116
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "audioContentType"), JSIConverter<std::optional<margelo::nitro::queueplayer::AudioContentType>>::toJSI(runtime, arg.audioContentType));
115
117
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "audioCategoryOptions"), JSIConverter<std::optional<margelo::nitro::queueplayer::AudioCategoryOptions>>::toJSI(runtime, arg.audioCategoryOptions));
118
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "voiceVocabularyDonationEnabled"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.voiceVocabularyDonationEnabled));
116
119
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "visualizationEnabled"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.visualizationEnabled));
117
120
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "clampSeekToBuffered"), JSIConverter<std::optional<bool>>::toJSI(runtime, arg.clampSeekToBuffered));
118
121
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "skipToPreviousBehavior"), JSIConverter<std::optional<margelo::nitro::queueplayer::SkipToPreviousBehavior>>::toJSI(runtime, arg.skipToPreviousBehavior));
@@ -138,6 +141,7 @@ namespace margelo::nitro {
138
141
  if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "networkTimeoutMs")))) return false;
139
142
  if (!JSIConverter<std::optional<margelo::nitro::queueplayer::AudioContentType>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "audioContentType")))) return false;
140
143
  if (!JSIConverter<std::optional<margelo::nitro::queueplayer::AudioCategoryOptions>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "audioCategoryOptions")))) return false;
144
+ if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "voiceVocabularyDonationEnabled")))) return false;
141
145
  if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "visualizationEnabled")))) return false;
142
146
  if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "clampSeekToBuffered")))) return false;
143
147
  if (!JSIConverter<std::optional<margelo::nitro::queueplayer::SkipToPreviousBehavior>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "skipToPreviousBehavior")))) return false;