react-native-nitro-player 0.7.0 → 0.7.1-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 (110) hide show
  1. package/README.md +47 -46
  2. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrary.kt +9 -13
  3. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridAudioDevices.kt +45 -90
  4. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridDownloadManager.kt +48 -182
  5. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridEqualizer.kt +21 -77
  6. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridPlayerQueue.kt +55 -104
  7. package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridTrackPlayer.kt +113 -123
  8. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/ExoPlayerCore.kt +82 -0
  9. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/ListenerRegistry.kt +48 -0
  10. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerAndroidAuto.kt +62 -0
  11. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerCore.kt +153 -1887
  12. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerListener.kt +122 -0
  13. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerNotify.kt +44 -0
  14. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerPlayback.kt +162 -0
  15. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerQueue.kt +179 -0
  16. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerQueueBuild.kt +170 -0
  17. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerSetup.kt +28 -0
  18. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerTempQueue.kt +121 -0
  19. package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerUrlLoader.kt +98 -0
  20. package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadDatabase.kt +27 -18
  21. package/android/src/main/java/com/margelo/nitro/nitroplayer/equalizer/EqualizerCore.kt +150 -135
  22. package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaSessionManager.kt +13 -30
  23. package/android/src/main/java/com/margelo/nitro/nitroplayer/playlist/PlaylistManager.kt +102 -162
  24. package/ios/HybridDownloadManager.swift +32 -26
  25. package/ios/HybridEqualizer.swift +48 -35
  26. package/ios/HybridTrackPlayer.swift +127 -102
  27. package/ios/core/ListenerRegistry.swift +60 -0
  28. package/ios/core/TrackPlayerCore.swift +130 -2356
  29. package/ios/core/TrackPlayerListener.swift +395 -0
  30. package/ios/core/TrackPlayerNotify.swift +52 -0
  31. package/ios/core/TrackPlayerPlayback.swift +274 -0
  32. package/ios/core/TrackPlayerQueue.swift +221 -0
  33. package/ios/core/TrackPlayerQueueBuild.swift +493 -0
  34. package/ios/core/TrackPlayerTempQueue.swift +167 -0
  35. package/ios/core/TrackPlayerUrlLoader.swift +169 -0
  36. package/ios/equalizer/EqualizerCore.swift +63 -123
  37. package/ios/media/MediaSessionManager.swift +32 -49
  38. package/ios/playlist/PlaylistManager.swift +2 -9
  39. package/ios/queue/HybridPlayerQueue.swift +69 -66
  40. package/lib/hooks/useDownloadedTracks.js +16 -13
  41. package/lib/hooks/useEqualizer.d.ts +4 -4
  42. package/lib/hooks/useEqualizer.js +22 -17
  43. package/lib/hooks/useEqualizerPresets.d.ts +3 -3
  44. package/lib/hooks/useEqualizerPresets.js +12 -18
  45. package/lib/specs/AndroidAutoMediaLibrary.nitro.d.ts +2 -2
  46. package/lib/specs/AudioDevices.nitro.d.ts +2 -2
  47. package/lib/specs/DownloadManager.nitro.d.ts +10 -10
  48. package/lib/specs/Equalizer.nitro.d.ts +10 -10
  49. package/lib/specs/TrackPlayer.nitro.d.ts +38 -16
  50. package/lib/types/EqualizerTypes.d.ts +3 -3
  51. package/nitrogen/generated/android/NitroPlayerOnLoad.cpp +2 -0
  52. package/nitrogen/generated/android/c++/JFunc_void_std__vector_TrackItem__std__vector_TrackItem_.hpp +122 -0
  53. package/nitrogen/generated/android/c++/JHybridAndroidAutoMediaLibrarySpec.cpp +31 -6
  54. package/nitrogen/generated/android/c++/JHybridAndroidAutoMediaLibrarySpec.hpp +2 -2
  55. package/nitrogen/generated/android/c++/JHybridAudioDevicesSpec.cpp +16 -3
  56. package/nitrogen/generated/android/c++/JHybridAudioDevicesSpec.hpp +1 -1
  57. package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.cpp +154 -44
  58. package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.hpp +10 -10
  59. package/nitrogen/generated/android/c++/JHybridEqualizerSpec.cpp +130 -34
  60. package/nitrogen/generated/android/c++/JHybridEqualizerSpec.hpp +9 -9
  61. package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.cpp +115 -24
  62. package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.hpp +8 -8
  63. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.cpp +243 -24
  64. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.hpp +16 -8
  65. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__vector_TrackItem__std__vector_TrackItem_.kt +80 -0
  66. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrarySpec.kt +3 -2
  67. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridAudioDevicesSpec.kt +2 -1
  68. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridDownloadManagerSpec.kt +10 -10
  69. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridEqualizerSpec.kt +10 -9
  70. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridPlayerQueueSpec.kt +9 -8
  71. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridTrackPlayerSpec.kt +45 -8
  72. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.cpp +74 -18
  73. package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.hpp +380 -151
  74. package/nitrogen/generated/ios/c++/HybridDownloadManagerSpecSwift.hpp +10 -10
  75. package/nitrogen/generated/ios/c++/HybridEqualizerSpecSwift.hpp +12 -9
  76. package/nitrogen/generated/ios/c++/HybridPlayerQueueSpecSwift.hpp +23 -8
  77. package/nitrogen/generated/ios/c++/HybridTrackPlayerSpecSwift.hpp +82 -8
  78. package/nitrogen/generated/ios/swift/Func_void_EqualizerState.swift +46 -0
  79. package/nitrogen/generated/ios/swift/Func_void_std__variant_nitro__NullType__DownloadedPlaylist_.swift +58 -0
  80. package/nitrogen/generated/ios/swift/Func_void_std__variant_nitro__NullType__DownloadedTrack_.swift +58 -0
  81. package/nitrogen/generated/ios/swift/Func_void_std__variant_nitro__NullType__std__string_.swift +58 -0
  82. package/nitrogen/generated/ios/swift/Func_void_std__vector_DownloadedPlaylist_.swift +46 -0
  83. package/nitrogen/generated/ios/swift/Func_void_std__vector_DownloadedTrack_.swift +46 -0
  84. package/nitrogen/generated/ios/swift/Func_void_std__vector_EqualizerBand_.swift +5 -5
  85. package/nitrogen/generated/ios/swift/Func_void_std__vector_TrackItem__std__vector_TrackItem_.swift +46 -0
  86. package/nitrogen/generated/ios/swift/HybridDownloadManagerSpec.swift +10 -10
  87. package/nitrogen/generated/ios/swift/HybridDownloadManagerSpec_cxx.swift +141 -71
  88. package/nitrogen/generated/ios/swift/HybridEqualizerSpec.swift +9 -9
  89. package/nitrogen/generated/ios/swift/HybridEqualizerSpec_cxx.swift +105 -41
  90. package/nitrogen/generated/ios/swift/HybridPlayerQueueSpec.swift +8 -8
  91. package/nitrogen/generated/ios/swift/HybridPlayerQueueSpec_cxx.swift +95 -32
  92. package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec.swift +16 -8
  93. package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec_cxx.swift +267 -32
  94. package/nitrogen/generated/shared/c++/HybridAndroidAutoMediaLibrarySpec.hpp +3 -2
  95. package/nitrogen/generated/shared/c++/HybridAudioDevicesSpec.hpp +2 -1
  96. package/nitrogen/generated/shared/c++/HybridDownloadManagerSpec.hpp +10 -10
  97. package/nitrogen/generated/shared/c++/HybridEqualizerSpec.hpp +10 -9
  98. package/nitrogen/generated/shared/c++/HybridPlayerQueueSpec.hpp +9 -8
  99. package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.cpp +8 -0
  100. package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.hpp +16 -8
  101. package/package.json +5 -5
  102. package/src/hooks/useDownloadedTracks.ts +17 -13
  103. package/src/hooks/useEqualizer.ts +26 -21
  104. package/src/hooks/useEqualizerPresets.ts +15 -21
  105. package/src/specs/AndroidAutoMediaLibrary.nitro.ts +2 -2
  106. package/src/specs/AudioDevices.nitro.ts +2 -2
  107. package/src/specs/DownloadManager.nitro.ts +10 -10
  108. package/src/specs/Equalizer.nitro.ts +10 -10
  109. package/src/specs/TrackPlayer.nitro.ts +52 -16
  110. package/src/types/EqualizerTypes.ts +17 -13
@@ -57,6 +57,7 @@ namespace margelo::nitro::nitroplayer { enum class Reason; }
57
57
  #include "JFunc_void_double_double_std__optional_bool_.hpp"
58
58
  #include "JFunc_void_bool.hpp"
59
59
  #include "JFunc_void_std__vector_TrackItem__double.hpp"
60
+ #include "JFunc_void_std__vector_TrackItem__std__vector_TrackItem_.hpp"
60
61
 
61
62
  namespace margelo::nitro::nitroplayer {
62
63
 
@@ -91,13 +92,35 @@ namespace margelo::nitro::nitroplayer {
91
92
 
92
93
 
93
94
  // Methods
94
- void JHybridTrackPlayerSpec::play() {
95
- static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("play");
96
- method(_javaPart);
95
+ std::shared_ptr<Promise<void>> JHybridTrackPlayerSpec::play() {
96
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("play");
97
+ auto __result = method(_javaPart);
98
+ return [&]() {
99
+ auto __promise = Promise<void>::create();
100
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
101
+ __promise->resolve();
102
+ });
103
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
104
+ jni::JniException __jniError(__throwable);
105
+ __promise->reject(std::make_exception_ptr(__jniError));
106
+ });
107
+ return __promise;
108
+ }();
97
109
  }
98
- void JHybridTrackPlayerSpec::pause() {
99
- static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("pause");
100
- method(_javaPart);
110
+ std::shared_ptr<Promise<void>> JHybridTrackPlayerSpec::pause() {
111
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("pause");
112
+ auto __result = method(_javaPart);
113
+ return [&]() {
114
+ auto __promise = Promise<void>::create();
115
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
116
+ __promise->resolve();
117
+ });
118
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
119
+ jni::JniException __jniError(__throwable);
120
+ __promise->reject(std::make_exception_ptr(__jniError));
121
+ });
122
+ return __promise;
123
+ }();
101
124
  }
102
125
  std::shared_ptr<Promise<void>> JHybridTrackPlayerSpec::playSong(const std::string& songId, const std::optional<std::string>& fromPlaylist) {
103
126
  static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* songId */, jni::alias_ref<jni::JString> /* fromPlaylist */)>("playSong");
@@ -114,9 +137,20 @@ namespace margelo::nitro::nitroplayer {
114
137
  return __promise;
115
138
  }();
116
139
  }
117
- void JHybridTrackPlayerSpec::skipToNext() {
118
- static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("skipToNext");
119
- method(_javaPart);
140
+ std::shared_ptr<Promise<void>> JHybridTrackPlayerSpec::skipToNext() {
141
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("skipToNext");
142
+ auto __result = method(_javaPart);
143
+ return [&]() {
144
+ auto __promise = Promise<void>::create();
145
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
146
+ __promise->resolve();
147
+ });
148
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
149
+ jni::JniException __jniError(__throwable);
150
+ __promise->reject(std::make_exception_ptr(__jniError));
151
+ });
152
+ return __promise;
153
+ }();
120
154
  }
121
155
  std::shared_ptr<Promise<bool>> JHybridTrackPlayerSpec::skipToIndex(double index) {
122
156
  static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(double /* index */)>("skipToIndex");
@@ -134,13 +168,35 @@ namespace margelo::nitro::nitroplayer {
134
168
  return __promise;
135
169
  }();
136
170
  }
137
- void JHybridTrackPlayerSpec::skipToPrevious() {
138
- static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("skipToPrevious");
139
- method(_javaPart);
171
+ std::shared_ptr<Promise<void>> JHybridTrackPlayerSpec::skipToPrevious() {
172
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("skipToPrevious");
173
+ auto __result = method(_javaPart);
174
+ return [&]() {
175
+ auto __promise = Promise<void>::create();
176
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
177
+ __promise->resolve();
178
+ });
179
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
180
+ jni::JniException __jniError(__throwable);
181
+ __promise->reject(std::make_exception_ptr(__jniError));
182
+ });
183
+ return __promise;
184
+ }();
140
185
  }
141
- void JHybridTrackPlayerSpec::seek(double position) {
142
- static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* position */)>("seek");
143
- method(_javaPart, position);
186
+ std::shared_ptr<Promise<void>> JHybridTrackPlayerSpec::seek(double position) {
187
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(double /* position */)>("seek");
188
+ auto __result = method(_javaPart, position);
189
+ return [&]() {
190
+ auto __promise = Promise<void>::create();
191
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
192
+ __promise->resolve();
193
+ });
194
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
195
+ jni::JniException __jniError(__throwable);
196
+ __promise->reject(std::make_exception_ptr(__jniError));
197
+ });
198
+ return __promise;
199
+ }();
144
200
  }
145
201
  std::shared_ptr<Promise<void>> JHybridTrackPlayerSpec::addToUpNext(const std::string& trackId) {
146
202
  static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* trackId */)>("addToUpNext");
@@ -213,19 +269,40 @@ namespace margelo::nitro::nitroplayer {
213
269
  return __promise;
214
270
  }();
215
271
  }
216
- bool JHybridTrackPlayerSpec::setRepeatMode(RepeatMode mode) {
217
- static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(jni::alias_ref<JRepeatMode> /* mode */)>("setRepeatMode");
272
+ std::shared_ptr<Promise<void>> JHybridTrackPlayerSpec::setRepeatMode(RepeatMode mode) {
273
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JRepeatMode> /* mode */)>("setRepeatMode");
218
274
  auto __result = method(_javaPart, JRepeatMode::fromCpp(mode));
219
- return static_cast<bool>(__result);
275
+ return [&]() {
276
+ auto __promise = Promise<void>::create();
277
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
278
+ __promise->resolve();
279
+ });
280
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
281
+ jni::JniException __jniError(__throwable);
282
+ __promise->reject(std::make_exception_ptr(__jniError));
283
+ });
284
+ return __promise;
285
+ }();
220
286
  }
221
287
  RepeatMode JHybridTrackPlayerSpec::getRepeatMode() {
222
288
  static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JRepeatMode>()>("getRepeatMode");
223
289
  auto __result = method(_javaPart);
224
290
  return __result->toCpp();
225
291
  }
226
- void JHybridTrackPlayerSpec::configure(const PlayerConfig& config) {
227
- static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JPlayerConfig> /* config */)>("configure");
228
- method(_javaPart, JPlayerConfig::fromCpp(config));
292
+ std::shared_ptr<Promise<void>> JHybridTrackPlayerSpec::configure(const PlayerConfig& config) {
293
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JPlayerConfig> /* config */)>("configure");
294
+ auto __result = method(_javaPart, JPlayerConfig::fromCpp(config));
295
+ return [&]() {
296
+ auto __promise = Promise<void>::create();
297
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
298
+ __promise->resolve();
299
+ });
300
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
301
+ jni::JniException __jniError(__throwable);
302
+ __promise->reject(std::make_exception_ptr(__jniError));
303
+ });
304
+ return __promise;
305
+ }();
229
306
  }
230
307
  void JHybridTrackPlayerSpec::onChangeTrack(const std::function<void(const TrackItem& /* track */, std::optional<Reason> /* reason */)>& callback) {
231
308
  static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_TrackItem_std__optional_Reason_::javaobject> /* callback */)>("onChangeTrack_cxx");
@@ -252,10 +329,20 @@ namespace margelo::nitro::nitroplayer {
252
329
  auto __result = method(_javaPart);
253
330
  return static_cast<bool>(__result);
254
331
  }
255
- bool JHybridTrackPlayerSpec::setVolume(double volume) {
256
- static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(double /* volume */)>("setVolume");
332
+ std::shared_ptr<Promise<void>> JHybridTrackPlayerSpec::setVolume(double volume) {
333
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(double /* volume */)>("setVolume");
257
334
  auto __result = method(_javaPart, volume);
258
- return static_cast<bool>(__result);
335
+ return [&]() {
336
+ auto __promise = Promise<void>::create();
337
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
338
+ __promise->resolve();
339
+ });
340
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
341
+ jni::JniException __jniError(__throwable);
342
+ __promise->reject(std::make_exception_ptr(__jniError));
343
+ });
344
+ return __promise;
345
+ }();
259
346
  }
260
347
  std::shared_ptr<Promise<void>> JHybridTrackPlayerSpec::updateTracks(const std::vector<TrackItem>& tracks) {
261
348
  static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JArrayClass<JTrackItem>> /* tracks */)>("updateTracks");
@@ -416,5 +503,137 @@ namespace margelo::nitro::nitroplayer {
416
503
  return __promise;
417
504
  }();
418
505
  }
506
+ std::shared_ptr<Promise<bool>> JHybridTrackPlayerSpec::removeFromPlayNext(const std::string& trackId) {
507
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* trackId */)>("removeFromPlayNext");
508
+ auto __result = method(_javaPart, jni::make_jstring(trackId));
509
+ return [&]() {
510
+ auto __promise = Promise<bool>::create();
511
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
512
+ auto __result = jni::static_ref_cast<jni::JBoolean>(__boxedResult);
513
+ __promise->resolve(static_cast<bool>(__result->value()));
514
+ });
515
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
516
+ jni::JniException __jniError(__throwable);
517
+ __promise->reject(std::make_exception_ptr(__jniError));
518
+ });
519
+ return __promise;
520
+ }();
521
+ }
522
+ std::shared_ptr<Promise<bool>> JHybridTrackPlayerSpec::removeFromUpNext(const std::string& trackId) {
523
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* trackId */)>("removeFromUpNext");
524
+ auto __result = method(_javaPart, jni::make_jstring(trackId));
525
+ return [&]() {
526
+ auto __promise = Promise<bool>::create();
527
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
528
+ auto __result = jni::static_ref_cast<jni::JBoolean>(__boxedResult);
529
+ __promise->resolve(static_cast<bool>(__result->value()));
530
+ });
531
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
532
+ jni::JniException __jniError(__throwable);
533
+ __promise->reject(std::make_exception_ptr(__jniError));
534
+ });
535
+ return __promise;
536
+ }();
537
+ }
538
+ std::shared_ptr<Promise<void>> JHybridTrackPlayerSpec::clearPlayNext() {
539
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("clearPlayNext");
540
+ auto __result = method(_javaPart);
541
+ return [&]() {
542
+ auto __promise = Promise<void>::create();
543
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
544
+ __promise->resolve();
545
+ });
546
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
547
+ jni::JniException __jniError(__throwable);
548
+ __promise->reject(std::make_exception_ptr(__jniError));
549
+ });
550
+ return __promise;
551
+ }();
552
+ }
553
+ std::shared_ptr<Promise<void>> JHybridTrackPlayerSpec::clearUpNext() {
554
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("clearUpNext");
555
+ auto __result = method(_javaPart);
556
+ return [&]() {
557
+ auto __promise = Promise<void>::create();
558
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
559
+ __promise->resolve();
560
+ });
561
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
562
+ jni::JniException __jniError(__throwable);
563
+ __promise->reject(std::make_exception_ptr(__jniError));
564
+ });
565
+ return __promise;
566
+ }();
567
+ }
568
+ std::shared_ptr<Promise<bool>> JHybridTrackPlayerSpec::reorderTemporaryTrack(const std::string& trackId, double newIndex) {
569
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* trackId */, double /* newIndex */)>("reorderTemporaryTrack");
570
+ auto __result = method(_javaPart, jni::make_jstring(trackId), newIndex);
571
+ return [&]() {
572
+ auto __promise = Promise<bool>::create();
573
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
574
+ auto __result = jni::static_ref_cast<jni::JBoolean>(__boxedResult);
575
+ __promise->resolve(static_cast<bool>(__result->value()));
576
+ });
577
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
578
+ jni::JniException __jniError(__throwable);
579
+ __promise->reject(std::make_exception_ptr(__jniError));
580
+ });
581
+ return __promise;
582
+ }();
583
+ }
584
+ std::shared_ptr<Promise<std::vector<TrackItem>>> JHybridTrackPlayerSpec::getPlayNextQueue() {
585
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("getPlayNextQueue");
586
+ auto __result = method(_javaPart);
587
+ return [&]() {
588
+ auto __promise = Promise<std::vector<TrackItem>>::create();
589
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
590
+ auto __result = jni::static_ref_cast<jni::JArrayClass<JTrackItem>>(__boxedResult);
591
+ __promise->resolve([&]() {
592
+ size_t __size = __result->size();
593
+ std::vector<TrackItem> __vector;
594
+ __vector.reserve(__size);
595
+ for (size_t __i = 0; __i < __size; __i++) {
596
+ auto __element = __result->getElement(__i);
597
+ __vector.push_back(__element->toCpp());
598
+ }
599
+ return __vector;
600
+ }());
601
+ });
602
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
603
+ jni::JniException __jniError(__throwable);
604
+ __promise->reject(std::make_exception_ptr(__jniError));
605
+ });
606
+ return __promise;
607
+ }();
608
+ }
609
+ std::shared_ptr<Promise<std::vector<TrackItem>>> JHybridTrackPlayerSpec::getUpNextQueue() {
610
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("getUpNextQueue");
611
+ auto __result = method(_javaPart);
612
+ return [&]() {
613
+ auto __promise = Promise<std::vector<TrackItem>>::create();
614
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
615
+ auto __result = jni::static_ref_cast<jni::JArrayClass<JTrackItem>>(__boxedResult);
616
+ __promise->resolve([&]() {
617
+ size_t __size = __result->size();
618
+ std::vector<TrackItem> __vector;
619
+ __vector.reserve(__size);
620
+ for (size_t __i = 0; __i < __size; __i++) {
621
+ auto __element = __result->getElement(__i);
622
+ __vector.push_back(__element->toCpp());
623
+ }
624
+ return __vector;
625
+ }());
626
+ });
627
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
628
+ jni::JniException __jniError(__throwable);
629
+ __promise->reject(std::make_exception_ptr(__jniError));
630
+ });
631
+ return __promise;
632
+ }();
633
+ }
634
+ void JHybridTrackPlayerSpec::onTemporaryQueueChange(const std::function<void(const std::vector<TrackItem>& /* playNextQueue */, const std::vector<TrackItem>& /* upNextQueue */)>& callback) {
635
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_std__vector_TrackItem__std__vector_TrackItem_::javaobject> /* callback */)>("onTemporaryQueueChange_cxx");
636
+ method(_javaPart, JFunc_void_std__vector_TrackItem__std__vector_TrackItem__cxx::fromCpp(callback));
637
+ }
419
638
 
420
639
  } // namespace margelo::nitro::nitroplayer
@@ -54,27 +54,27 @@ namespace margelo::nitro::nitroplayer {
54
54
 
55
55
  public:
56
56
  // Methods
57
- void play() override;
58
- void pause() override;
57
+ std::shared_ptr<Promise<void>> play() override;
58
+ std::shared_ptr<Promise<void>> pause() override;
59
59
  std::shared_ptr<Promise<void>> playSong(const std::string& songId, const std::optional<std::string>& fromPlaylist) override;
60
- void skipToNext() override;
60
+ std::shared_ptr<Promise<void>> skipToNext() override;
61
61
  std::shared_ptr<Promise<bool>> skipToIndex(double index) override;
62
- void skipToPrevious() override;
63
- void seek(double position) override;
62
+ std::shared_ptr<Promise<void>> skipToPrevious() override;
63
+ std::shared_ptr<Promise<void>> seek(double position) override;
64
64
  std::shared_ptr<Promise<void>> addToUpNext(const std::string& trackId) override;
65
65
  std::shared_ptr<Promise<void>> playNext(const std::string& trackId) override;
66
66
  std::shared_ptr<Promise<std::vector<TrackItem>>> getActualQueue() override;
67
67
  std::shared_ptr<Promise<PlayerState>> getState() override;
68
- bool setRepeatMode(RepeatMode mode) override;
68
+ std::shared_ptr<Promise<void>> setRepeatMode(RepeatMode mode) override;
69
69
  RepeatMode getRepeatMode() override;
70
- void configure(const PlayerConfig& config) override;
70
+ std::shared_ptr<Promise<void>> configure(const PlayerConfig& config) override;
71
71
  void onChangeTrack(const std::function<void(const TrackItem& /* track */, std::optional<Reason> /* reason */)>& callback) override;
72
72
  void onPlaybackStateChange(const std::function<void(TrackPlayerState /* state */, std::optional<Reason> /* reason */)>& callback) override;
73
73
  void onSeek(const std::function<void(double /* position */, double /* totalDuration */)>& callback) override;
74
74
  void onPlaybackProgressChange(const std::function<void(double /* position */, double /* totalDuration */, std::optional<bool> /* isManuallySeeked */)>& callback) override;
75
75
  void onAndroidAutoConnectionChange(const std::function<void(bool /* connected */)>& callback) override;
76
76
  bool isAndroidAutoConnected() override;
77
- bool setVolume(double volume) override;
77
+ std::shared_ptr<Promise<void>> setVolume(double volume) override;
78
78
  std::shared_ptr<Promise<void>> updateTracks(const std::vector<TrackItem>& tracks) override;
79
79
  std::shared_ptr<Promise<std::vector<TrackItem>>> getTracksById(const std::vector<std::string>& trackIds) override;
80
80
  std::shared_ptr<Promise<std::vector<TrackItem>>> getTracksNeedingUrls() override;
@@ -83,6 +83,14 @@ namespace margelo::nitro::nitroplayer {
83
83
  void onTracksNeedUpdate(const std::function<void(const std::vector<TrackItem>& /* tracks */, double /* lookahead */)>& callback) override;
84
84
  std::shared_ptr<Promise<void>> setPlaybackSpeed(double speed) override;
85
85
  std::shared_ptr<Promise<double>> getPlaybackSpeed() override;
86
+ std::shared_ptr<Promise<bool>> removeFromPlayNext(const std::string& trackId) override;
87
+ std::shared_ptr<Promise<bool>> removeFromUpNext(const std::string& trackId) override;
88
+ std::shared_ptr<Promise<void>> clearPlayNext() override;
89
+ std::shared_ptr<Promise<void>> clearUpNext() override;
90
+ std::shared_ptr<Promise<bool>> reorderTemporaryTrack(const std::string& trackId, double newIndex) override;
91
+ std::shared_ptr<Promise<std::vector<TrackItem>>> getPlayNextQueue() override;
92
+ std::shared_ptr<Promise<std::vector<TrackItem>>> getUpNextQueue() override;
93
+ void onTemporaryQueueChange(const std::function<void(const std::vector<TrackItem>& /* playNextQueue */, const std::vector<TrackItem>& /* upNextQueue */)>& callback) override;
86
94
 
87
95
  private:
88
96
  jni::global_ref<JHybridTrackPlayerSpec::JavaPart> _javaPart;
@@ -0,0 +1,80 @@
1
+ ///
2
+ /// Func_void_std__vector_TrackItem__std__vector_TrackItem_.kt
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
+ package com.margelo.nitro.nitroplayer
9
+
10
+ import androidx.annotation.Keep
11
+ import com.facebook.jni.HybridData
12
+ import com.facebook.proguard.annotations.DoNotStrip
13
+ import dalvik.annotation.optimization.FastNative
14
+
15
+
16
+ /**
17
+ * Represents the JavaScript callback `(playNextQueue: array, upNextQueue: array) => void`.
18
+ * This can be either implemented in C++ (in which case it might be a callback coming from JS),
19
+ * or in Kotlin/Java (in which case it is a native callback).
20
+ */
21
+ @DoNotStrip
22
+ @Keep
23
+ @Suppress("ClassName", "RedundantUnitReturnType")
24
+ fun interface Func_void_std__vector_TrackItem__std__vector_TrackItem_: (Array<TrackItem>, Array<TrackItem>) -> Unit {
25
+ /**
26
+ * Call the given JS callback.
27
+ * @throws Throwable if the JS function itself throws an error, or if the JS function/runtime has already been deleted.
28
+ */
29
+ @DoNotStrip
30
+ @Keep
31
+ override fun invoke(playNextQueue: Array<TrackItem>, upNextQueue: Array<TrackItem>): Unit
32
+ }
33
+
34
+ /**
35
+ * Represents the JavaScript callback `(playNextQueue: array, upNextQueue: array) => void`.
36
+ * This is implemented in C++, via a `std::function<...>`.
37
+ * The callback might be coming from JS.
38
+ */
39
+ @DoNotStrip
40
+ @Keep
41
+ @Suppress(
42
+ "KotlinJniMissingFunction", "unused",
43
+ "RedundantSuppression", "RedundantUnitReturnType", "FunctionName",
44
+ "ConvertSecondaryConstructorToPrimary", "ClassName", "LocalVariableName",
45
+ )
46
+ class Func_void_std__vector_TrackItem__std__vector_TrackItem__cxx: Func_void_std__vector_TrackItem__std__vector_TrackItem_ {
47
+ @DoNotStrip
48
+ @Keep
49
+ private val mHybridData: HybridData
50
+
51
+ @DoNotStrip
52
+ @Keep
53
+ private constructor(hybridData: HybridData) {
54
+ mHybridData = hybridData
55
+ }
56
+
57
+ @DoNotStrip
58
+ @Keep
59
+ override fun invoke(playNextQueue: Array<TrackItem>, upNextQueue: Array<TrackItem>): Unit
60
+ = invoke_cxx(playNextQueue,upNextQueue)
61
+
62
+ @FastNative
63
+ private external fun invoke_cxx(playNextQueue: Array<TrackItem>, upNextQueue: Array<TrackItem>): Unit
64
+ }
65
+
66
+ /**
67
+ * Represents the JavaScript callback `(playNextQueue: array, upNextQueue: array) => void`.
68
+ * This is implemented in Java/Kotlin, via a `(Array<TrackItem>, Array<TrackItem>) -> Unit`.
69
+ * The callback is always coming from native.
70
+ */
71
+ @DoNotStrip
72
+ @Keep
73
+ @Suppress("ClassName", "RedundantUnitReturnType", "unused")
74
+ class Func_void_std__vector_TrackItem__std__vector_TrackItem__java(private val function: (Array<TrackItem>, Array<TrackItem>) -> Unit): Func_void_std__vector_TrackItem__std__vector_TrackItem_ {
75
+ @DoNotStrip
76
+ @Keep
77
+ override fun invoke(playNextQueue: Array<TrackItem>, upNextQueue: Array<TrackItem>): Unit {
78
+ return this.function(playNextQueue, upNextQueue)
79
+ }
80
+ }
@@ -10,6 +10,7 @@ package com.margelo.nitro.nitroplayer
10
10
  import androidx.annotation.Keep
11
11
  import com.facebook.jni.HybridData
12
12
  import com.facebook.proguard.annotations.DoNotStrip
13
+ import com.margelo.nitro.core.Promise
13
14
  import com.margelo.nitro.core.HybridObject
14
15
 
15
16
  /**
@@ -30,11 +31,11 @@ abstract class HybridAndroidAutoMediaLibrarySpec: HybridObject() {
30
31
  // Methods
31
32
  @DoNotStrip
32
33
  @Keep
33
- abstract fun setMediaLibrary(libraryJson: String): Unit
34
+ abstract fun setMediaLibrary(libraryJson: String): Promise<Unit>
34
35
 
35
36
  @DoNotStrip
36
37
  @Keep
37
- abstract fun clearMediaLibrary(): Unit
38
+ abstract fun clearMediaLibrary(): Promise<Unit>
38
39
 
39
40
  // Default implementation of `HybridObject.toString()`
40
41
  override fun toString(): String {
@@ -10,6 +10,7 @@ package com.margelo.nitro.nitroplayer
10
10
  import androidx.annotation.Keep
11
11
  import com.facebook.jni.HybridData
12
12
  import com.facebook.proguard.annotations.DoNotStrip
13
+ import com.margelo.nitro.core.Promise
13
14
  import com.margelo.nitro.core.HybridObject
14
15
 
15
16
  /**
@@ -34,7 +35,7 @@ abstract class HybridAudioDevicesSpec: HybridObject() {
34
35
 
35
36
  @DoNotStrip
36
37
  @Keep
37
- abstract fun setAudioDevice(deviceId: Double): Boolean
38
+ abstract fun setAudioDevice(deviceId: Double): Promise<Unit>
38
39
 
39
40
  // Default implementation of `HybridObject.toString()`
40
41
  override fun toString(): String {
@@ -96,35 +96,35 @@ abstract class HybridDownloadManagerSpec: HybridObject() {
96
96
 
97
97
  @DoNotStrip
98
98
  @Keep
99
- abstract fun isTrackDownloaded(trackId: String): Boolean
99
+ abstract fun isTrackDownloaded(trackId: String): Promise<Boolean>
100
100
 
101
101
  @DoNotStrip
102
102
  @Keep
103
- abstract fun isPlaylistDownloaded(playlistId: String): Boolean
103
+ abstract fun isPlaylistDownloaded(playlistId: String): Promise<Boolean>
104
104
 
105
105
  @DoNotStrip
106
106
  @Keep
107
- abstract fun isPlaylistPartiallyDownloaded(playlistId: String): Boolean
107
+ abstract fun isPlaylistPartiallyDownloaded(playlistId: String): Promise<Boolean>
108
108
 
109
109
  @DoNotStrip
110
110
  @Keep
111
- abstract fun getDownloadedTrack(trackId: String): Variant_NullType_DownloadedTrack
111
+ abstract fun getDownloadedTrack(trackId: String): Promise<Variant_NullType_DownloadedTrack>
112
112
 
113
113
  @DoNotStrip
114
114
  @Keep
115
- abstract fun getAllDownloadedTracks(): Array<DownloadedTrack>
115
+ abstract fun getAllDownloadedTracks(): Promise<Array<DownloadedTrack>>
116
116
 
117
117
  @DoNotStrip
118
118
  @Keep
119
- abstract fun getDownloadedPlaylist(playlistId: String): Variant_NullType_DownloadedPlaylist
119
+ abstract fun getDownloadedPlaylist(playlistId: String): Promise<Variant_NullType_DownloadedPlaylist>
120
120
 
121
121
  @DoNotStrip
122
122
  @Keep
123
- abstract fun getAllDownloadedPlaylists(): Array<DownloadedPlaylist>
123
+ abstract fun getAllDownloadedPlaylists(): Promise<Array<DownloadedPlaylist>>
124
124
 
125
125
  @DoNotStrip
126
126
  @Keep
127
- abstract fun getLocalPath(trackId: String): Variant_NullType_String
127
+ abstract fun getLocalPath(trackId: String): Promise<Variant_NullType_String>
128
128
 
129
129
  @DoNotStrip
130
130
  @Keep
@@ -144,7 +144,7 @@ abstract class HybridDownloadManagerSpec: HybridObject() {
144
144
 
145
145
  @DoNotStrip
146
146
  @Keep
147
- abstract fun syncDownloads(): Double
147
+ abstract fun syncDownloads(): Promise<Double>
148
148
 
149
149
  @DoNotStrip
150
150
  @Keep
@@ -156,7 +156,7 @@ abstract class HybridDownloadManagerSpec: HybridObject() {
156
156
 
157
157
  @DoNotStrip
158
158
  @Keep
159
- abstract fun getEffectiveUrl(track: TrackItem): String
159
+ abstract fun getEffectiveUrl(track: TrackItem): Promise<String>
160
160
 
161
161
  abstract fun onDownloadProgress(callback: (progress: DownloadProgress) -> Unit): Unit
162
162
 
@@ -10,6 +10,7 @@ package com.margelo.nitro.nitroplayer
10
10
  import androidx.annotation.Keep
11
11
  import com.facebook.jni.HybridData
12
12
  import com.facebook.proguard.annotations.DoNotStrip
13
+ import com.margelo.nitro.core.Promise
13
14
  import com.margelo.nitro.core.NullType
14
15
  import com.margelo.nitro.core.HybridObject
15
16
 
@@ -31,7 +32,7 @@ abstract class HybridEqualizerSpec: HybridObject() {
31
32
  // Methods
32
33
  @DoNotStrip
33
34
  @Keep
34
- abstract fun setEnabled(enabled: Boolean): Boolean
35
+ abstract fun setEnabled(enabled: Boolean): Promise<Unit>
35
36
 
36
37
  @DoNotStrip
37
38
  @Keep
@@ -39,15 +40,15 @@ abstract class HybridEqualizerSpec: HybridObject() {
39
40
 
40
41
  @DoNotStrip
41
42
  @Keep
42
- abstract fun getBands(): Array<EqualizerBand>
43
+ abstract fun getBands(): Promise<Array<EqualizerBand>>
43
44
 
44
45
  @DoNotStrip
45
46
  @Keep
46
- abstract fun setBandGain(bandIndex: Double, gainDb: Double): Boolean
47
+ abstract fun setBandGain(bandIndex: Double, gainDb: Double): Promise<Unit>
47
48
 
48
49
  @DoNotStrip
49
50
  @Keep
50
- abstract fun setAllBandGains(gains: DoubleArray): Boolean
51
+ abstract fun setAllBandGains(gains: DoubleArray): Promise<Unit>
51
52
 
52
53
  @DoNotStrip
53
54
  @Keep
@@ -67,7 +68,7 @@ abstract class HybridEqualizerSpec: HybridObject() {
67
68
 
68
69
  @DoNotStrip
69
70
  @Keep
70
- abstract fun applyPreset(presetName: String): Boolean
71
+ abstract fun applyPreset(presetName: String): Promise<Unit>
71
72
 
72
73
  @DoNotStrip
73
74
  @Keep
@@ -75,19 +76,19 @@ abstract class HybridEqualizerSpec: HybridObject() {
75
76
 
76
77
  @DoNotStrip
77
78
  @Keep
78
- abstract fun saveCustomPreset(name: String): Boolean
79
+ abstract fun saveCustomPreset(name: String): Promise<Unit>
79
80
 
80
81
  @DoNotStrip
81
82
  @Keep
82
- abstract fun deleteCustomPreset(name: String): Boolean
83
+ abstract fun deleteCustomPreset(name: String): Promise<Unit>
83
84
 
84
85
  @DoNotStrip
85
86
  @Keep
86
- abstract fun getState(): EqualizerState
87
+ abstract fun getState(): Promise<EqualizerState>
87
88
 
88
89
  @DoNotStrip
89
90
  @Keep
90
- abstract fun reset(): Unit
91
+ abstract fun reset(): Promise<Unit>
91
92
 
92
93
  abstract fun onEnabledChange(callback: (enabled: Boolean) -> Unit): Unit
93
94