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
@@ -18,6 +18,9 @@ namespace margelo::nitro::nitroplayer { enum class PresetType; }
18
18
  // Forward declaration of `EqualizerState` to properly resolve imports.
19
19
  namespace margelo::nitro::nitroplayer { struct EqualizerState; }
20
20
 
21
+ #include <NitroModules/Promise.hpp>
22
+ #include <NitroModules/JPromise.hpp>
23
+ #include <NitroModules/JUnit.hpp>
21
24
  #include "EqualizerBand.hpp"
22
25
  #include <vector>
23
26
  #include "JEqualizerBand.hpp"
@@ -74,44 +77,85 @@ namespace margelo::nitro::nitroplayer {
74
77
 
75
78
 
76
79
  // Methods
77
- bool JHybridEqualizerSpec::setEnabled(bool enabled) {
78
- static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(jboolean /* enabled */)>("setEnabled");
80
+ std::shared_ptr<Promise<void>> JHybridEqualizerSpec::setEnabled(bool enabled) {
81
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jboolean /* enabled */)>("setEnabled");
79
82
  auto __result = method(_javaPart, enabled);
80
- return static_cast<bool>(__result);
83
+ return [&]() {
84
+ auto __promise = Promise<void>::create();
85
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
86
+ __promise->resolve();
87
+ });
88
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
89
+ jni::JniException __jniError(__throwable);
90
+ __promise->reject(std::make_exception_ptr(__jniError));
91
+ });
92
+ return __promise;
93
+ }();
81
94
  }
82
95
  bool JHybridEqualizerSpec::isEnabled() {
83
96
  static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean()>("isEnabled");
84
97
  auto __result = method(_javaPart);
85
98
  return static_cast<bool>(__result);
86
99
  }
87
- std::vector<EqualizerBand> JHybridEqualizerSpec::getBands() {
88
- static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<JEqualizerBand>>()>("getBands");
100
+ std::shared_ptr<Promise<std::vector<EqualizerBand>>> JHybridEqualizerSpec::getBands() {
101
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("getBands");
89
102
  auto __result = method(_javaPart);
90
103
  return [&]() {
91
- size_t __size = __result->size();
92
- std::vector<EqualizerBand> __vector;
93
- __vector.reserve(__size);
94
- for (size_t __i = 0; __i < __size; __i++) {
95
- auto __element = __result->getElement(__i);
96
- __vector.push_back(__element->toCpp());
97
- }
98
- return __vector;
104
+ auto __promise = Promise<std::vector<EqualizerBand>>::create();
105
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
106
+ auto __result = jni::static_ref_cast<jni::JArrayClass<JEqualizerBand>>(__boxedResult);
107
+ __promise->resolve([&]() {
108
+ size_t __size = __result->size();
109
+ std::vector<EqualizerBand> __vector;
110
+ __vector.reserve(__size);
111
+ for (size_t __i = 0; __i < __size; __i++) {
112
+ auto __element = __result->getElement(__i);
113
+ __vector.push_back(__element->toCpp());
114
+ }
115
+ return __vector;
116
+ }());
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;
99
123
  }();
100
124
  }
101
- bool JHybridEqualizerSpec::setBandGain(double bandIndex, double gainDb) {
102
- static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(double /* bandIndex */, double /* gainDb */)>("setBandGain");
125
+ std::shared_ptr<Promise<void>> JHybridEqualizerSpec::setBandGain(double bandIndex, double gainDb) {
126
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(double /* bandIndex */, double /* gainDb */)>("setBandGain");
103
127
  auto __result = method(_javaPart, bandIndex, gainDb);
104
- return static_cast<bool>(__result);
128
+ return [&]() {
129
+ auto __promise = Promise<void>::create();
130
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
131
+ __promise->resolve();
132
+ });
133
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
134
+ jni::JniException __jniError(__throwable);
135
+ __promise->reject(std::make_exception_ptr(__jniError));
136
+ });
137
+ return __promise;
138
+ }();
105
139
  }
106
- bool JHybridEqualizerSpec::setAllBandGains(const std::vector<double>& gains) {
107
- static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JArrayDouble> /* gains */)>("setAllBandGains");
140
+ std::shared_ptr<Promise<void>> JHybridEqualizerSpec::setAllBandGains(const std::vector<double>& gains) {
141
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JArrayDouble> /* gains */)>("setAllBandGains");
108
142
  auto __result = method(_javaPart, [&]() {
109
143
  size_t __size = gains.size();
110
144
  jni::local_ref<jni::JArrayDouble> __array = jni::JArrayDouble::newArray(__size);
111
145
  __array->setRegion(0, __size, gains.data());
112
146
  return __array;
113
147
  }());
114
- return static_cast<bool>(__result);
148
+ return [&]() {
149
+ auto __promise = Promise<void>::create();
150
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
151
+ __promise->resolve();
152
+ });
153
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
154
+ jni::JniException __jniError(__throwable);
155
+ __promise->reject(std::make_exception_ptr(__jniError));
156
+ });
157
+ return __promise;
158
+ }();
115
159
  }
116
160
  GainRange JHybridEqualizerSpec::getBandRange() {
117
161
  static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JGainRange>()>("getBandRange");
@@ -160,34 +204,86 @@ namespace margelo::nitro::nitroplayer {
160
204
  return __vector;
161
205
  }();
162
206
  }
163
- bool JHybridEqualizerSpec::applyPreset(const std::string& presetName) {
164
- static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JString> /* presetName */)>("applyPreset");
207
+ std::shared_ptr<Promise<void>> JHybridEqualizerSpec::applyPreset(const std::string& presetName) {
208
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* presetName */)>("applyPreset");
165
209
  auto __result = method(_javaPart, jni::make_jstring(presetName));
166
- return static_cast<bool>(__result);
210
+ return [&]() {
211
+ auto __promise = Promise<void>::create();
212
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
213
+ __promise->resolve();
214
+ });
215
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
216
+ jni::JniException __jniError(__throwable);
217
+ __promise->reject(std::make_exception_ptr(__jniError));
218
+ });
219
+ return __promise;
220
+ }();
167
221
  }
168
222
  std::variant<nitro::NullType, std::string> JHybridEqualizerSpec::getCurrentPresetName() {
169
223
  static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JVariant_NullType_String>()>("getCurrentPresetName");
170
224
  auto __result = method(_javaPart);
171
225
  return __result->toCpp();
172
226
  }
173
- bool JHybridEqualizerSpec::saveCustomPreset(const std::string& name) {
174
- static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JString> /* name */)>("saveCustomPreset");
227
+ std::shared_ptr<Promise<void>> JHybridEqualizerSpec::saveCustomPreset(const std::string& name) {
228
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* name */)>("saveCustomPreset");
175
229
  auto __result = method(_javaPart, jni::make_jstring(name));
176
- return static_cast<bool>(__result);
230
+ return [&]() {
231
+ auto __promise = Promise<void>::create();
232
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
233
+ __promise->resolve();
234
+ });
235
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
236
+ jni::JniException __jniError(__throwable);
237
+ __promise->reject(std::make_exception_ptr(__jniError));
238
+ });
239
+ return __promise;
240
+ }();
177
241
  }
178
- bool JHybridEqualizerSpec::deleteCustomPreset(const std::string& name) {
179
- static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JString> /* name */)>("deleteCustomPreset");
242
+ std::shared_ptr<Promise<void>> JHybridEqualizerSpec::deleteCustomPreset(const std::string& name) {
243
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* name */)>("deleteCustomPreset");
180
244
  auto __result = method(_javaPart, jni::make_jstring(name));
181
- return static_cast<bool>(__result);
245
+ return [&]() {
246
+ auto __promise = Promise<void>::create();
247
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
248
+ __promise->resolve();
249
+ });
250
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
251
+ jni::JniException __jniError(__throwable);
252
+ __promise->reject(std::make_exception_ptr(__jniError));
253
+ });
254
+ return __promise;
255
+ }();
182
256
  }
183
- EqualizerState JHybridEqualizerSpec::getState() {
184
- static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JEqualizerState>()>("getState");
257
+ std::shared_ptr<Promise<EqualizerState>> JHybridEqualizerSpec::getState() {
258
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("getState");
185
259
  auto __result = method(_javaPart);
186
- return __result->toCpp();
260
+ return [&]() {
261
+ auto __promise = Promise<EqualizerState>::create();
262
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
263
+ auto __result = jni::static_ref_cast<JEqualizerState>(__boxedResult);
264
+ __promise->resolve(__result->toCpp());
265
+ });
266
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
267
+ jni::JniException __jniError(__throwable);
268
+ __promise->reject(std::make_exception_ptr(__jniError));
269
+ });
270
+ return __promise;
271
+ }();
187
272
  }
188
- void JHybridEqualizerSpec::reset() {
189
- static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("reset");
190
- method(_javaPart);
273
+ std::shared_ptr<Promise<void>> JHybridEqualizerSpec::reset() {
274
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("reset");
275
+ auto __result = method(_javaPart);
276
+ return [&]() {
277
+ auto __promise = Promise<void>::create();
278
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
279
+ __promise->resolve();
280
+ });
281
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
282
+ jni::JniException __jniError(__throwable);
283
+ __promise->reject(std::make_exception_ptr(__jniError));
284
+ });
285
+ return __promise;
286
+ }();
191
287
  }
192
288
  void JHybridEqualizerSpec::onEnabledChange(const std::function<void(bool /* enabled */)>& callback) {
193
289
  static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_bool::javaobject> /* callback */)>("onEnabledChange_cxx");
@@ -54,21 +54,21 @@ namespace margelo::nitro::nitroplayer {
54
54
 
55
55
  public:
56
56
  // Methods
57
- bool setEnabled(bool enabled) override;
57
+ std::shared_ptr<Promise<void>> setEnabled(bool enabled) override;
58
58
  bool isEnabled() override;
59
- std::vector<EqualizerBand> getBands() override;
60
- bool setBandGain(double bandIndex, double gainDb) override;
61
- bool setAllBandGains(const std::vector<double>& gains) override;
59
+ std::shared_ptr<Promise<std::vector<EqualizerBand>>> getBands() override;
60
+ std::shared_ptr<Promise<void>> setBandGain(double bandIndex, double gainDb) override;
61
+ std::shared_ptr<Promise<void>> setAllBandGains(const std::vector<double>& gains) override;
62
62
  GainRange getBandRange() override;
63
63
  std::vector<EqualizerPreset> getPresets() override;
64
64
  std::vector<EqualizerPreset> getBuiltInPresets() override;
65
65
  std::vector<EqualizerPreset> getCustomPresets() override;
66
- bool applyPreset(const std::string& presetName) override;
66
+ std::shared_ptr<Promise<void>> applyPreset(const std::string& presetName) override;
67
67
  std::variant<nitro::NullType, std::string> getCurrentPresetName() override;
68
- bool saveCustomPreset(const std::string& name) override;
69
- bool deleteCustomPreset(const std::string& name) override;
70
- EqualizerState getState() override;
71
- void reset() override;
68
+ std::shared_ptr<Promise<void>> saveCustomPreset(const std::string& name) override;
69
+ std::shared_ptr<Promise<void>> deleteCustomPreset(const std::string& name) override;
70
+ std::shared_ptr<Promise<EqualizerState>> getState() override;
71
+ std::shared_ptr<Promise<void>> reset() override;
72
72
  void onEnabledChange(const std::function<void(bool /* enabled */)>& callback) override;
73
73
  void onBandChange(const std::function<void(const std::vector<EqualizerBand>& /* bands */)>& callback) override;
74
74
  void onPresetChange(const std::function<void(const std::optional<std::variant<nitro::NullType, std::string>>& /* presetName */)>& callback) override;
@@ -15,6 +15,9 @@ namespace margelo::nitro::nitroplayer { struct TrackItem; }
15
15
  namespace margelo::nitro::nitroplayer { enum class QueueOperation; }
16
16
 
17
17
  #include <string>
18
+ #include <NitroModules/Promise.hpp>
19
+ #include <NitroModules/JPromise.hpp>
20
+ #include <NitroModules/JUnit.hpp>
18
21
  #include <NitroModules/Null.hpp>
19
22
  #include "Playlist.hpp"
20
23
  #include <variant>
@@ -68,18 +71,51 @@ namespace margelo::nitro::nitroplayer {
68
71
 
69
72
 
70
73
  // Methods
71
- std::string JHybridPlayerQueueSpec::createPlaylist(const std::string& name, const std::optional<std::string>& description, const std::optional<std::string>& artwork) {
72
- static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>(jni::alias_ref<jni::JString> /* name */, jni::alias_ref<jni::JString> /* description */, jni::alias_ref<jni::JString> /* artwork */)>("createPlaylist");
74
+ std::shared_ptr<Promise<std::string>> JHybridPlayerQueueSpec::createPlaylist(const std::string& name, const std::optional<std::string>& description, const std::optional<std::string>& artwork) {
75
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* name */, jni::alias_ref<jni::JString> /* description */, jni::alias_ref<jni::JString> /* artwork */)>("createPlaylist");
73
76
  auto __result = method(_javaPart, jni::make_jstring(name), description.has_value() ? jni::make_jstring(description.value()) : nullptr, artwork.has_value() ? jni::make_jstring(artwork.value()) : nullptr);
74
- return __result->toStdString();
77
+ return [&]() {
78
+ auto __promise = Promise<std::string>::create();
79
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
80
+ auto __result = jni::static_ref_cast<jni::JString>(__boxedResult);
81
+ __promise->resolve(__result->toStdString());
82
+ });
83
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
84
+ jni::JniException __jniError(__throwable);
85
+ __promise->reject(std::make_exception_ptr(__jniError));
86
+ });
87
+ return __promise;
88
+ }();
75
89
  }
76
- void JHybridPlayerQueueSpec::deletePlaylist(const std::string& playlistId) {
77
- static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */)>("deletePlaylist");
78
- method(_javaPart, jni::make_jstring(playlistId));
90
+ std::shared_ptr<Promise<void>> JHybridPlayerQueueSpec::deletePlaylist(const std::string& playlistId) {
91
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* playlistId */)>("deletePlaylist");
92
+ auto __result = method(_javaPart, jni::make_jstring(playlistId));
93
+ return [&]() {
94
+ auto __promise = Promise<void>::create();
95
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
96
+ __promise->resolve();
97
+ });
98
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
99
+ jni::JniException __jniError(__throwable);
100
+ __promise->reject(std::make_exception_ptr(__jniError));
101
+ });
102
+ return __promise;
103
+ }();
79
104
  }
80
- void JHybridPlayerQueueSpec::updatePlaylist(const std::string& playlistId, const std::optional<std::string>& name, const std::optional<std::string>& description, const std::optional<std::string>& artwork) {
81
- static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */, jni::alias_ref<jni::JString> /* name */, jni::alias_ref<jni::JString> /* description */, jni::alias_ref<jni::JString> /* artwork */)>("updatePlaylist");
82
- method(_javaPart, jni::make_jstring(playlistId), name.has_value() ? jni::make_jstring(name.value()) : nullptr, description.has_value() ? jni::make_jstring(description.value()) : nullptr, artwork.has_value() ? jni::make_jstring(artwork.value()) : nullptr);
105
+ std::shared_ptr<Promise<void>> JHybridPlayerQueueSpec::updatePlaylist(const std::string& playlistId, const std::optional<std::string>& name, const std::optional<std::string>& description, const std::optional<std::string>& artwork) {
106
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* playlistId */, jni::alias_ref<jni::JString> /* name */, jni::alias_ref<jni::JString> /* description */, jni::alias_ref<jni::JString> /* artwork */)>("updatePlaylist");
107
+ auto __result = method(_javaPart, jni::make_jstring(playlistId), name.has_value() ? jni::make_jstring(name.value()) : nullptr, description.has_value() ? jni::make_jstring(description.value()) : nullptr, artwork.has_value() ? jni::make_jstring(artwork.value()) : nullptr);
108
+ return [&]() {
109
+ auto __promise = Promise<void>::create();
110
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
111
+ __promise->resolve();
112
+ });
113
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
114
+ jni::JniException __jniError(__throwable);
115
+ __promise->reject(std::make_exception_ptr(__jniError));
116
+ });
117
+ return __promise;
118
+ }();
83
119
  }
84
120
  std::variant<nitro::NullType, Playlist> JHybridPlayerQueueSpec::getPlaylist(const std::string& playlistId) {
85
121
  static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JVariant_NullType_Playlist>(jni::alias_ref<jni::JString> /* playlistId */)>("getPlaylist");
@@ -100,13 +136,24 @@ namespace margelo::nitro::nitroplayer {
100
136
  return __vector;
101
137
  }();
102
138
  }
103
- void JHybridPlayerQueueSpec::addTrackToPlaylist(const std::string& playlistId, const TrackItem& track, std::optional<double> index) {
104
- static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */, jni::alias_ref<JTrackItem> /* track */, jni::alias_ref<jni::JDouble> /* index */)>("addTrackToPlaylist");
105
- method(_javaPart, jni::make_jstring(playlistId), JTrackItem::fromCpp(track), index.has_value() ? jni::JDouble::valueOf(index.value()) : nullptr);
139
+ std::shared_ptr<Promise<void>> JHybridPlayerQueueSpec::addTrackToPlaylist(const std::string& playlistId, const TrackItem& track, std::optional<double> index) {
140
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* playlistId */, jni::alias_ref<JTrackItem> /* track */, jni::alias_ref<jni::JDouble> /* index */)>("addTrackToPlaylist");
141
+ auto __result = method(_javaPart, jni::make_jstring(playlistId), JTrackItem::fromCpp(track), index.has_value() ? jni::JDouble::valueOf(index.value()) : nullptr);
142
+ return [&]() {
143
+ auto __promise = Promise<void>::create();
144
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
145
+ __promise->resolve();
146
+ });
147
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
148
+ jni::JniException __jniError(__throwable);
149
+ __promise->reject(std::make_exception_ptr(__jniError));
150
+ });
151
+ return __promise;
152
+ }();
106
153
  }
107
- void JHybridPlayerQueueSpec::addTracksToPlaylist(const std::string& playlistId, const std::vector<TrackItem>& tracks, std::optional<double> index) {
108
- static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */, jni::alias_ref<jni::JArrayClass<JTrackItem>> /* tracks */, jni::alias_ref<jni::JDouble> /* index */)>("addTracksToPlaylist");
109
- method(_javaPart, jni::make_jstring(playlistId), [&]() {
154
+ std::shared_ptr<Promise<void>> JHybridPlayerQueueSpec::addTracksToPlaylist(const std::string& playlistId, const std::vector<TrackItem>& tracks, std::optional<double> index) {
155
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* playlistId */, jni::alias_ref<jni::JArrayClass<JTrackItem>> /* tracks */, jni::alias_ref<jni::JDouble> /* index */)>("addTracksToPlaylist");
156
+ auto __result = method(_javaPart, jni::make_jstring(playlistId), [&]() {
110
157
  size_t __size = tracks.size();
111
158
  jni::local_ref<jni::JArrayClass<JTrackItem>> __array = jni::JArrayClass<JTrackItem>::newArray(__size);
112
159
  for (size_t __i = 0; __i < __size; __i++) {
@@ -116,18 +163,62 @@ namespace margelo::nitro::nitroplayer {
116
163
  }
117
164
  return __array;
118
165
  }(), index.has_value() ? jni::JDouble::valueOf(index.value()) : nullptr);
166
+ return [&]() {
167
+ auto __promise = Promise<void>::create();
168
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
169
+ __promise->resolve();
170
+ });
171
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
172
+ jni::JniException __jniError(__throwable);
173
+ __promise->reject(std::make_exception_ptr(__jniError));
174
+ });
175
+ return __promise;
176
+ }();
119
177
  }
120
- void JHybridPlayerQueueSpec::removeTrackFromPlaylist(const std::string& playlistId, const std::string& trackId) {
121
- static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */, jni::alias_ref<jni::JString> /* trackId */)>("removeTrackFromPlaylist");
122
- method(_javaPart, jni::make_jstring(playlistId), jni::make_jstring(trackId));
178
+ std::shared_ptr<Promise<void>> JHybridPlayerQueueSpec::removeTrackFromPlaylist(const std::string& playlistId, const std::string& trackId) {
179
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* playlistId */, jni::alias_ref<jni::JString> /* trackId */)>("removeTrackFromPlaylist");
180
+ auto __result = method(_javaPart, jni::make_jstring(playlistId), jni::make_jstring(trackId));
181
+ return [&]() {
182
+ auto __promise = Promise<void>::create();
183
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
184
+ __promise->resolve();
185
+ });
186
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
187
+ jni::JniException __jniError(__throwable);
188
+ __promise->reject(std::make_exception_ptr(__jniError));
189
+ });
190
+ return __promise;
191
+ }();
123
192
  }
124
- void JHybridPlayerQueueSpec::reorderTrackInPlaylist(const std::string& playlistId, const std::string& trackId, double newIndex) {
125
- static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */, jni::alias_ref<jni::JString> /* trackId */, double /* newIndex */)>("reorderTrackInPlaylist");
126
- method(_javaPart, jni::make_jstring(playlistId), jni::make_jstring(trackId), newIndex);
193
+ std::shared_ptr<Promise<void>> JHybridPlayerQueueSpec::reorderTrackInPlaylist(const std::string& playlistId, const std::string& trackId, double newIndex) {
194
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* playlistId */, jni::alias_ref<jni::JString> /* trackId */, double /* newIndex */)>("reorderTrackInPlaylist");
195
+ auto __result = method(_javaPart, jni::make_jstring(playlistId), jni::make_jstring(trackId), newIndex);
196
+ return [&]() {
197
+ auto __promise = Promise<void>::create();
198
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
199
+ __promise->resolve();
200
+ });
201
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
202
+ jni::JniException __jniError(__throwable);
203
+ __promise->reject(std::make_exception_ptr(__jniError));
204
+ });
205
+ return __promise;
206
+ }();
127
207
  }
128
- void JHybridPlayerQueueSpec::loadPlaylist(const std::string& playlistId) {
129
- static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playlistId */)>("loadPlaylist");
130
- method(_javaPart, jni::make_jstring(playlistId));
208
+ std::shared_ptr<Promise<void>> JHybridPlayerQueueSpec::loadPlaylist(const std::string& playlistId) {
209
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* playlistId */)>("loadPlaylist");
210
+ auto __result = method(_javaPart, jni::make_jstring(playlistId));
211
+ return [&]() {
212
+ auto __promise = Promise<void>::create();
213
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
214
+ __promise->resolve();
215
+ });
216
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
217
+ jni::JniException __jniError(__throwable);
218
+ __promise->reject(std::make_exception_ptr(__jniError));
219
+ });
220
+ return __promise;
221
+ }();
131
222
  }
132
223
  std::variant<nitro::NullType, std::string> JHybridPlayerQueueSpec::getCurrentPlaylistId() {
133
224
  static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JVariant_NullType_String>()>("getCurrentPlaylistId");
@@ -54,16 +54,16 @@ namespace margelo::nitro::nitroplayer {
54
54
 
55
55
  public:
56
56
  // Methods
57
- std::string createPlaylist(const std::string& name, const std::optional<std::string>& description, const std::optional<std::string>& artwork) override;
58
- void deletePlaylist(const std::string& playlistId) override;
59
- void updatePlaylist(const std::string& playlistId, const std::optional<std::string>& name, const std::optional<std::string>& description, const std::optional<std::string>& artwork) override;
57
+ std::shared_ptr<Promise<std::string>> createPlaylist(const std::string& name, const std::optional<std::string>& description, const std::optional<std::string>& artwork) override;
58
+ std::shared_ptr<Promise<void>> deletePlaylist(const std::string& playlistId) override;
59
+ std::shared_ptr<Promise<void>> updatePlaylist(const std::string& playlistId, const std::optional<std::string>& name, const std::optional<std::string>& description, const std::optional<std::string>& artwork) override;
60
60
  std::variant<nitro::NullType, Playlist> getPlaylist(const std::string& playlistId) override;
61
61
  std::vector<Playlist> getAllPlaylists() override;
62
- void addTrackToPlaylist(const std::string& playlistId, const TrackItem& track, std::optional<double> index) override;
63
- void addTracksToPlaylist(const std::string& playlistId, const std::vector<TrackItem>& tracks, std::optional<double> index) override;
64
- void removeTrackFromPlaylist(const std::string& playlistId, const std::string& trackId) override;
65
- void reorderTrackInPlaylist(const std::string& playlistId, const std::string& trackId, double newIndex) override;
66
- void loadPlaylist(const std::string& playlistId) override;
62
+ std::shared_ptr<Promise<void>> addTrackToPlaylist(const std::string& playlistId, const TrackItem& track, std::optional<double> index) override;
63
+ std::shared_ptr<Promise<void>> addTracksToPlaylist(const std::string& playlistId, const std::vector<TrackItem>& tracks, std::optional<double> index) override;
64
+ std::shared_ptr<Promise<void>> removeTrackFromPlaylist(const std::string& playlistId, const std::string& trackId) override;
65
+ std::shared_ptr<Promise<void>> reorderTrackInPlaylist(const std::string& playlistId, const std::string& trackId, double newIndex) override;
66
+ std::shared_ptr<Promise<void>> loadPlaylist(const std::string& playlistId) override;
67
67
  std::variant<nitro::NullType, std::string> getCurrentPlaylistId() override;
68
68
  void onPlaylistsChanged(const std::function<void(const std::vector<Playlist>& /* playlists */, std::optional<QueueOperation> /* operation */)>& callback) override;
69
69
  void onPlaylistChanged(const std::function<void(const std::string& /* playlistId */, const Playlist& /* playlist */, std::optional<QueueOperation> /* operation */)>& callback) override;