react-native-nitro-player 0.7.0 → 0.7.1-alpha.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.
- package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrary.kt +9 -13
- package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridAudioDevices.kt +45 -90
- package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridDownloadManager.kt +48 -182
- package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridEqualizer.kt +21 -77
- package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridPlayerQueue.kt +55 -104
- package/android/src/main/java/com/margelo/nitro/nitroplayer/HybridTrackPlayer.kt +113 -123
- package/android/src/main/java/com/margelo/nitro/nitroplayer/core/ExoPlayerCore.kt +82 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/core/ListenerRegistry.kt +48 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerAndroidAuto.kt +62 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerCore.kt +153 -1887
- package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerListener.kt +122 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerNotify.kt +44 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerPlayback.kt +162 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerQueue.kt +165 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerQueueBuild.kt +161 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerSetup.kt +28 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerTempQueue.kt +121 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/core/TrackPlayerUrlLoader.kt +98 -0
- package/android/src/main/java/com/margelo/nitro/nitroplayer/download/DownloadDatabase.kt +27 -18
- package/android/src/main/java/com/margelo/nitro/nitroplayer/equalizer/EqualizerCore.kt +11 -58
- package/android/src/main/java/com/margelo/nitro/nitroplayer/media/MediaSessionManager.kt +13 -30
- package/android/src/main/java/com/margelo/nitro/nitroplayer/playlist/PlaylistManager.kt +102 -162
- package/ios/HybridDownloadManager.swift +32 -26
- package/ios/HybridEqualizer.swift +48 -35
- package/ios/HybridTrackPlayer.swift +127 -102
- package/ios/core/ListenerRegistry.swift +60 -0
- package/ios/core/TrackPlayerCore.swift +130 -2356
- package/ios/core/TrackPlayerListener.swift +395 -0
- package/ios/core/TrackPlayerNotify.swift +52 -0
- package/ios/core/TrackPlayerPlayback.swift +274 -0
- package/ios/core/TrackPlayerQueue.swift +212 -0
- package/ios/core/TrackPlayerQueueBuild.swift +482 -0
- package/ios/core/TrackPlayerTempQueue.swift +167 -0
- package/ios/core/TrackPlayerUrlLoader.swift +169 -0
- package/ios/equalizer/EqualizerCore.swift +24 -89
- package/ios/media/MediaSessionManager.swift +32 -49
- package/ios/playlist/PlaylistManager.swift +2 -9
- package/ios/queue/HybridPlayerQueue.swift +69 -66
- package/lib/hooks/useDownloadedTracks.js +16 -13
- package/lib/hooks/useEqualizer.d.ts +4 -4
- package/lib/hooks/useEqualizer.js +12 -12
- package/lib/hooks/useEqualizerPresets.d.ts +3 -3
- package/lib/hooks/useEqualizerPresets.js +12 -18
- package/lib/specs/AndroidAutoMediaLibrary.nitro.d.ts +2 -2
- package/lib/specs/AudioDevices.nitro.d.ts +2 -2
- package/lib/specs/DownloadManager.nitro.d.ts +10 -10
- package/lib/specs/Equalizer.nitro.d.ts +9 -9
- package/lib/specs/TrackPlayer.nitro.d.ts +38 -16
- package/nitrogen/generated/android/NitroPlayerOnLoad.cpp +2 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_TrackItem__std__vector_TrackItem_.hpp +122 -0
- package/nitrogen/generated/android/c++/JHybridAndroidAutoMediaLibrarySpec.cpp +31 -6
- package/nitrogen/generated/android/c++/JHybridAndroidAutoMediaLibrarySpec.hpp +2 -2
- package/nitrogen/generated/android/c++/JHybridAudioDevicesSpec.cpp +16 -3
- package/nitrogen/generated/android/c++/JHybridAudioDevicesSpec.hpp +1 -1
- package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.cpp +154 -44
- package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.hpp +10 -10
- package/nitrogen/generated/android/c++/JHybridEqualizerSpec.cpp +130 -34
- package/nitrogen/generated/android/c++/JHybridEqualizerSpec.hpp +9 -9
- package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.cpp +115 -24
- package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.hpp +8 -8
- package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.cpp +243 -24
- package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.hpp +16 -8
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Func_void_std__vector_TrackItem__std__vector_TrackItem_.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrarySpec.kt +3 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridAudioDevicesSpec.kt +2 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridDownloadManagerSpec.kt +10 -10
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridEqualizerSpec.kt +10 -9
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridPlayerQueueSpec.kt +9 -8
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridTrackPlayerSpec.kt +45 -8
- package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.cpp +74 -18
- package/nitrogen/generated/ios/NitroPlayer-Swift-Cxx-Bridge.hpp +380 -151
- package/nitrogen/generated/ios/c++/HybridDownloadManagerSpecSwift.hpp +10 -10
- package/nitrogen/generated/ios/c++/HybridEqualizerSpecSwift.hpp +12 -9
- package/nitrogen/generated/ios/c++/HybridPlayerQueueSpecSwift.hpp +23 -8
- package/nitrogen/generated/ios/c++/HybridTrackPlayerSpecSwift.hpp +82 -8
- package/nitrogen/generated/ios/swift/Func_void_EqualizerState.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__variant_nitro__NullType__DownloadedPlaylist_.swift +58 -0
- package/nitrogen/generated/ios/swift/Func_void_std__variant_nitro__NullType__DownloadedTrack_.swift +58 -0
- package/nitrogen/generated/ios/swift/Func_void_std__variant_nitro__NullType__std__string_.swift +58 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_DownloadedPlaylist_.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_DownloadedTrack_.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_EqualizerBand_.swift +5 -5
- package/nitrogen/generated/ios/swift/Func_void_std__vector_TrackItem__std__vector_TrackItem_.swift +46 -0
- package/nitrogen/generated/ios/swift/HybridDownloadManagerSpec.swift +10 -10
- package/nitrogen/generated/ios/swift/HybridDownloadManagerSpec_cxx.swift +141 -71
- package/nitrogen/generated/ios/swift/HybridEqualizerSpec.swift +9 -9
- package/nitrogen/generated/ios/swift/HybridEqualizerSpec_cxx.swift +105 -41
- package/nitrogen/generated/ios/swift/HybridPlayerQueueSpec.swift +8 -8
- package/nitrogen/generated/ios/swift/HybridPlayerQueueSpec_cxx.swift +95 -32
- package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec.swift +16 -8
- package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec_cxx.swift +267 -32
- package/nitrogen/generated/shared/c++/HybridAndroidAutoMediaLibrarySpec.hpp +3 -2
- package/nitrogen/generated/shared/c++/HybridAudioDevicesSpec.hpp +2 -1
- package/nitrogen/generated/shared/c++/HybridDownloadManagerSpec.hpp +10 -10
- package/nitrogen/generated/shared/c++/HybridEqualizerSpec.hpp +10 -9
- package/nitrogen/generated/shared/c++/HybridPlayerQueueSpec.hpp +9 -8
- package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.cpp +8 -0
- package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.hpp +16 -8
- package/package.json +1 -1
- package/src/hooks/useDownloadedTracks.ts +17 -13
- package/src/hooks/useEqualizer.ts +16 -16
- package/src/hooks/useEqualizerPresets.ts +15 -21
- package/src/specs/AndroidAutoMediaLibrary.nitro.ts +2 -2
- package/src/specs/AudioDevices.nitro.ts +2 -2
- package/src/specs/DownloadManager.nitro.ts +10 -10
- package/src/specs/Equalizer.nitro.ts +9 -9
- package/src/specs/TrackPlayer.nitro.ts +52 -16
package/nitrogen/generated/android/c++/JFunc_void_std__vector_TrackItem__std__vector_TrackItem_.hpp
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JFunc_void_std__vector_TrackItem__std__vector_TrackItem_.hpp
|
|
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
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <fbjni/fbjni.h>
|
|
11
|
+
#include <functional>
|
|
12
|
+
|
|
13
|
+
#include "TrackItem.hpp"
|
|
14
|
+
#include <vector>
|
|
15
|
+
#include <functional>
|
|
16
|
+
#include <NitroModules/JNICallable.hpp>
|
|
17
|
+
#include "JTrackItem.hpp"
|
|
18
|
+
#include <string>
|
|
19
|
+
#include <NitroModules/Null.hpp>
|
|
20
|
+
#include <variant>
|
|
21
|
+
#include <optional>
|
|
22
|
+
#include "JVariant_NullType_String.hpp"
|
|
23
|
+
#include <NitroModules/JNull.hpp>
|
|
24
|
+
#include <NitroModules/AnyMap.hpp>
|
|
25
|
+
#include <NitroModules/JAnyMap.hpp>
|
|
26
|
+
|
|
27
|
+
namespace margelo::nitro::nitroplayer {
|
|
28
|
+
|
|
29
|
+
using namespace facebook;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Represents the Java/Kotlin callback `(playNextQueue: Array<TrackItem>, upNextQueue: Array<TrackItem>) -> Unit`.
|
|
33
|
+
* This can be passed around between C++ and Java/Kotlin.
|
|
34
|
+
*/
|
|
35
|
+
struct JFunc_void_std__vector_TrackItem__std__vector_TrackItem_: public jni::JavaClass<JFunc_void_std__vector_TrackItem__std__vector_TrackItem_> {
|
|
36
|
+
public:
|
|
37
|
+
static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/Func_void_std__vector_TrackItem__std__vector_TrackItem_;";
|
|
38
|
+
|
|
39
|
+
public:
|
|
40
|
+
/**
|
|
41
|
+
* Invokes the function this `JFunc_void_std__vector_TrackItem__std__vector_TrackItem_` instance holds through JNI.
|
|
42
|
+
*/
|
|
43
|
+
void invoke(const std::vector<TrackItem>& playNextQueue, const std::vector<TrackItem>& upNextQueue) const {
|
|
44
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JArrayClass<JTrackItem>> /* playNextQueue */, jni::alias_ref<jni::JArrayClass<JTrackItem>> /* upNextQueue */)>("invoke");
|
|
45
|
+
method(self(), [&]() {
|
|
46
|
+
size_t __size = playNextQueue.size();
|
|
47
|
+
jni::local_ref<jni::JArrayClass<JTrackItem>> __array = jni::JArrayClass<JTrackItem>::newArray(__size);
|
|
48
|
+
for (size_t __i = 0; __i < __size; __i++) {
|
|
49
|
+
const auto& __element = playNextQueue[__i];
|
|
50
|
+
auto __elementJni = JTrackItem::fromCpp(__element);
|
|
51
|
+
__array->setElement(__i, *__elementJni);
|
|
52
|
+
}
|
|
53
|
+
return __array;
|
|
54
|
+
}(), [&]() {
|
|
55
|
+
size_t __size = upNextQueue.size();
|
|
56
|
+
jni::local_ref<jni::JArrayClass<JTrackItem>> __array = jni::JArrayClass<JTrackItem>::newArray(__size);
|
|
57
|
+
for (size_t __i = 0; __i < __size; __i++) {
|
|
58
|
+
const auto& __element = upNextQueue[__i];
|
|
59
|
+
auto __elementJni = JTrackItem::fromCpp(__element);
|
|
60
|
+
__array->setElement(__i, *__elementJni);
|
|
61
|
+
}
|
|
62
|
+
return __array;
|
|
63
|
+
}());
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* An implementation of Func_void_std__vector_TrackItem__std__vector_TrackItem_ that is backed by a C++ implementation (using `std::function<...>`)
|
|
69
|
+
*/
|
|
70
|
+
class JFunc_void_std__vector_TrackItem__std__vector_TrackItem__cxx final: public jni::HybridClass<JFunc_void_std__vector_TrackItem__std__vector_TrackItem__cxx, JFunc_void_std__vector_TrackItem__std__vector_TrackItem_> {
|
|
71
|
+
public:
|
|
72
|
+
static jni::local_ref<JFunc_void_std__vector_TrackItem__std__vector_TrackItem_::javaobject> fromCpp(const std::function<void(const std::vector<TrackItem>& /* playNextQueue */, const std::vector<TrackItem>& /* upNextQueue */)>& func) {
|
|
73
|
+
return JFunc_void_std__vector_TrackItem__std__vector_TrackItem__cxx::newObjectCxxArgs(func);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
public:
|
|
77
|
+
/**
|
|
78
|
+
* Invokes the C++ `std::function<...>` this `JFunc_void_std__vector_TrackItem__std__vector_TrackItem__cxx` instance holds.
|
|
79
|
+
*/
|
|
80
|
+
void invoke_cxx(jni::alias_ref<jni::JArrayClass<JTrackItem>> playNextQueue, jni::alias_ref<jni::JArrayClass<JTrackItem>> upNextQueue) {
|
|
81
|
+
_func([&]() {
|
|
82
|
+
size_t __size = playNextQueue->size();
|
|
83
|
+
std::vector<TrackItem> __vector;
|
|
84
|
+
__vector.reserve(__size);
|
|
85
|
+
for (size_t __i = 0; __i < __size; __i++) {
|
|
86
|
+
auto __element = playNextQueue->getElement(__i);
|
|
87
|
+
__vector.push_back(__element->toCpp());
|
|
88
|
+
}
|
|
89
|
+
return __vector;
|
|
90
|
+
}(), [&]() {
|
|
91
|
+
size_t __size = upNextQueue->size();
|
|
92
|
+
std::vector<TrackItem> __vector;
|
|
93
|
+
__vector.reserve(__size);
|
|
94
|
+
for (size_t __i = 0; __i < __size; __i++) {
|
|
95
|
+
auto __element = upNextQueue->getElement(__i);
|
|
96
|
+
__vector.push_back(__element->toCpp());
|
|
97
|
+
}
|
|
98
|
+
return __vector;
|
|
99
|
+
}());
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
public:
|
|
103
|
+
[[nodiscard]]
|
|
104
|
+
inline const std::function<void(const std::vector<TrackItem>& /* playNextQueue */, const std::vector<TrackItem>& /* upNextQueue */)>& getFunction() const {
|
|
105
|
+
return _func;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
public:
|
|
109
|
+
static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/Func_void_std__vector_TrackItem__std__vector_TrackItem__cxx;";
|
|
110
|
+
static void registerNatives() {
|
|
111
|
+
registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_std__vector_TrackItem__std__vector_TrackItem__cxx::invoke_cxx)});
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
private:
|
|
115
|
+
explicit JFunc_void_std__vector_TrackItem__std__vector_TrackItem__cxx(const std::function<void(const std::vector<TrackItem>& /* playNextQueue */, const std::vector<TrackItem>& /* upNextQueue */)>& func): _func(func) { }
|
|
116
|
+
|
|
117
|
+
private:
|
|
118
|
+
friend HybridBase;
|
|
119
|
+
std::function<void(const std::vector<TrackItem>& /* playNextQueue */, const std::vector<TrackItem>& /* upNextQueue */)> _func;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
} // namespace margelo::nitro::nitroplayer
|
|
@@ -9,6 +9,9 @@
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
|
+
#include <NitroModules/Promise.hpp>
|
|
13
|
+
#include <NitroModules/JPromise.hpp>
|
|
14
|
+
#include <NitroModules/JUnit.hpp>
|
|
12
15
|
#include <string>
|
|
13
16
|
|
|
14
17
|
namespace margelo::nitro::nitroplayer {
|
|
@@ -44,13 +47,35 @@ namespace margelo::nitro::nitroplayer {
|
|
|
44
47
|
|
|
45
48
|
|
|
46
49
|
// Methods
|
|
47
|
-
void JHybridAndroidAutoMediaLibrarySpec::setMediaLibrary(const std::string& libraryJson) {
|
|
48
|
-
static const auto method = _javaPart->javaClassStatic()->getMethod<
|
|
49
|
-
method(_javaPart, jni::make_jstring(libraryJson));
|
|
50
|
+
std::shared_ptr<Promise<void>> JHybridAndroidAutoMediaLibrarySpec::setMediaLibrary(const std::string& libraryJson) {
|
|
51
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* libraryJson */)>("setMediaLibrary");
|
|
52
|
+
auto __result = method(_javaPart, jni::make_jstring(libraryJson));
|
|
53
|
+
return [&]() {
|
|
54
|
+
auto __promise = Promise<void>::create();
|
|
55
|
+
__result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
|
|
56
|
+
__promise->resolve();
|
|
57
|
+
});
|
|
58
|
+
__result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
|
|
59
|
+
jni::JniException __jniError(__throwable);
|
|
60
|
+
__promise->reject(std::make_exception_ptr(__jniError));
|
|
61
|
+
});
|
|
62
|
+
return __promise;
|
|
63
|
+
}();
|
|
50
64
|
}
|
|
51
|
-
void JHybridAndroidAutoMediaLibrarySpec::clearMediaLibrary() {
|
|
52
|
-
static const auto method = _javaPart->javaClassStatic()->getMethod<
|
|
53
|
-
method(_javaPart);
|
|
65
|
+
std::shared_ptr<Promise<void>> JHybridAndroidAutoMediaLibrarySpec::clearMediaLibrary() {
|
|
66
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("clearMediaLibrary");
|
|
67
|
+
auto __result = method(_javaPart);
|
|
68
|
+
return [&]() {
|
|
69
|
+
auto __promise = Promise<void>::create();
|
|
70
|
+
__result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
|
|
71
|
+
__promise->resolve();
|
|
72
|
+
});
|
|
73
|
+
__result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
|
|
74
|
+
jni::JniException __jniError(__throwable);
|
|
75
|
+
__promise->reject(std::make_exception_ptr(__jniError));
|
|
76
|
+
});
|
|
77
|
+
return __promise;
|
|
78
|
+
}();
|
|
54
79
|
}
|
|
55
80
|
|
|
56
81
|
} // namespace margelo::nitro::nitroplayer
|
|
@@ -54,8 +54,8 @@ namespace margelo::nitro::nitroplayer {
|
|
|
54
54
|
|
|
55
55
|
public:
|
|
56
56
|
// Methods
|
|
57
|
-
void setMediaLibrary(const std::string& libraryJson) override;
|
|
58
|
-
void clearMediaLibrary() override;
|
|
57
|
+
std::shared_ptr<Promise<void>> setMediaLibrary(const std::string& libraryJson) override;
|
|
58
|
+
std::shared_ptr<Promise<void>> clearMediaLibrary() override;
|
|
59
59
|
|
|
60
60
|
private:
|
|
61
61
|
jni::global_ref<JHybridAndroidAutoMediaLibrarySpec::JavaPart> _javaPart;
|
|
@@ -14,6 +14,9 @@ namespace margelo::nitro::nitroplayer { struct TAudioDevice; }
|
|
|
14
14
|
#include <vector>
|
|
15
15
|
#include "JTAudioDevice.hpp"
|
|
16
16
|
#include <string>
|
|
17
|
+
#include <NitroModules/Promise.hpp>
|
|
18
|
+
#include <NitroModules/JPromise.hpp>
|
|
19
|
+
#include <NitroModules/JUnit.hpp>
|
|
17
20
|
|
|
18
21
|
namespace margelo::nitro::nitroplayer {
|
|
19
22
|
|
|
@@ -62,10 +65,20 @@ namespace margelo::nitro::nitroplayer {
|
|
|
62
65
|
return __vector;
|
|
63
66
|
}();
|
|
64
67
|
}
|
|
65
|
-
|
|
66
|
-
static const auto method = _javaPart->javaClassStatic()->getMethod<
|
|
68
|
+
std::shared_ptr<Promise<void>> JHybridAudioDevicesSpec::setAudioDevice(double deviceId) {
|
|
69
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(double /* deviceId */)>("setAudioDevice");
|
|
67
70
|
auto __result = method(_javaPart, deviceId);
|
|
68
|
-
return
|
|
71
|
+
return [&]() {
|
|
72
|
+
auto __promise = Promise<void>::create();
|
|
73
|
+
__result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
|
|
74
|
+
__promise->resolve();
|
|
75
|
+
});
|
|
76
|
+
__result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
|
|
77
|
+
jni::JniException __jniError(__throwable);
|
|
78
|
+
__promise->reject(std::make_exception_ptr(__jniError));
|
|
79
|
+
});
|
|
80
|
+
return __promise;
|
|
81
|
+
}();
|
|
69
82
|
}
|
|
70
83
|
|
|
71
84
|
} // namespace margelo::nitro::nitroplayer
|
|
@@ -55,7 +55,7 @@ namespace margelo::nitro::nitroplayer {
|
|
|
55
55
|
public:
|
|
56
56
|
// Methods
|
|
57
57
|
std::vector<TAudioDevice> getAudioDevices() override;
|
|
58
|
-
|
|
58
|
+
std::shared_ptr<Promise<void>> setAudioDevice(double deviceId) override;
|
|
59
59
|
|
|
60
60
|
private:
|
|
61
61
|
jni::global_ref<JHybridAudioDevicesSpec::JavaPart> _javaPart;
|
|
@@ -318,63 +318,151 @@ namespace margelo::nitro::nitroplayer {
|
|
|
318
318
|
auto __result = method(_javaPart, jni::make_jstring(trackId));
|
|
319
319
|
return __result->toCpp();
|
|
320
320
|
}
|
|
321
|
-
bool JHybridDownloadManagerSpec::isTrackDownloaded(const std::string& trackId) {
|
|
322
|
-
static const auto method = _javaPart->javaClassStatic()->getMethod<
|
|
321
|
+
std::shared_ptr<Promise<bool>> JHybridDownloadManagerSpec::isTrackDownloaded(const std::string& trackId) {
|
|
322
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* trackId */)>("isTrackDownloaded");
|
|
323
323
|
auto __result = method(_javaPart, jni::make_jstring(trackId));
|
|
324
|
-
return
|
|
324
|
+
return [&]() {
|
|
325
|
+
auto __promise = Promise<bool>::create();
|
|
326
|
+
__result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
|
|
327
|
+
auto __result = jni::static_ref_cast<jni::JBoolean>(__boxedResult);
|
|
328
|
+
__promise->resolve(static_cast<bool>(__result->value()));
|
|
329
|
+
});
|
|
330
|
+
__result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
|
|
331
|
+
jni::JniException __jniError(__throwable);
|
|
332
|
+
__promise->reject(std::make_exception_ptr(__jniError));
|
|
333
|
+
});
|
|
334
|
+
return __promise;
|
|
335
|
+
}();
|
|
325
336
|
}
|
|
326
|
-
bool JHybridDownloadManagerSpec::isPlaylistDownloaded(const std::string& playlistId) {
|
|
327
|
-
static const auto method = _javaPart->javaClassStatic()->getMethod<
|
|
337
|
+
std::shared_ptr<Promise<bool>> JHybridDownloadManagerSpec::isPlaylistDownloaded(const std::string& playlistId) {
|
|
338
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* playlistId */)>("isPlaylistDownloaded");
|
|
328
339
|
auto __result = method(_javaPart, jni::make_jstring(playlistId));
|
|
329
|
-
return
|
|
340
|
+
return [&]() {
|
|
341
|
+
auto __promise = Promise<bool>::create();
|
|
342
|
+
__result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
|
|
343
|
+
auto __result = jni::static_ref_cast<jni::JBoolean>(__boxedResult);
|
|
344
|
+
__promise->resolve(static_cast<bool>(__result->value()));
|
|
345
|
+
});
|
|
346
|
+
__result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
|
|
347
|
+
jni::JniException __jniError(__throwable);
|
|
348
|
+
__promise->reject(std::make_exception_ptr(__jniError));
|
|
349
|
+
});
|
|
350
|
+
return __promise;
|
|
351
|
+
}();
|
|
330
352
|
}
|
|
331
|
-
bool JHybridDownloadManagerSpec::isPlaylistPartiallyDownloaded(const std::string& playlistId) {
|
|
332
|
-
static const auto method = _javaPart->javaClassStatic()->getMethod<
|
|
353
|
+
std::shared_ptr<Promise<bool>> JHybridDownloadManagerSpec::isPlaylistPartiallyDownloaded(const std::string& playlistId) {
|
|
354
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* playlistId */)>("isPlaylistPartiallyDownloaded");
|
|
333
355
|
auto __result = method(_javaPart, jni::make_jstring(playlistId));
|
|
334
|
-
return
|
|
356
|
+
return [&]() {
|
|
357
|
+
auto __promise = Promise<bool>::create();
|
|
358
|
+
__result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
|
|
359
|
+
auto __result = jni::static_ref_cast<jni::JBoolean>(__boxedResult);
|
|
360
|
+
__promise->resolve(static_cast<bool>(__result->value()));
|
|
361
|
+
});
|
|
362
|
+
__result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
|
|
363
|
+
jni::JniException __jniError(__throwable);
|
|
364
|
+
__promise->reject(std::make_exception_ptr(__jniError));
|
|
365
|
+
});
|
|
366
|
+
return __promise;
|
|
367
|
+
}();
|
|
335
368
|
}
|
|
336
|
-
std::variant<nitro::NullType, DownloadedTrack
|
|
337
|
-
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<
|
|
369
|
+
std::shared_ptr<Promise<std::variant<nitro::NullType, DownloadedTrack>>> JHybridDownloadManagerSpec::getDownloadedTrack(const std::string& trackId) {
|
|
370
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* trackId */)>("getDownloadedTrack");
|
|
338
371
|
auto __result = method(_javaPart, jni::make_jstring(trackId));
|
|
339
|
-
return
|
|
372
|
+
return [&]() {
|
|
373
|
+
auto __promise = Promise<std::variant<nitro::NullType, DownloadedTrack>>::create();
|
|
374
|
+
__result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
|
|
375
|
+
auto __result = jni::static_ref_cast<JVariant_NullType_DownloadedTrack>(__boxedResult);
|
|
376
|
+
__promise->resolve(__result->toCpp());
|
|
377
|
+
});
|
|
378
|
+
__result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
|
|
379
|
+
jni::JniException __jniError(__throwable);
|
|
380
|
+
__promise->reject(std::make_exception_ptr(__jniError));
|
|
381
|
+
});
|
|
382
|
+
return __promise;
|
|
383
|
+
}();
|
|
340
384
|
}
|
|
341
|
-
std::vector<DownloadedTrack
|
|
342
|
-
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<
|
|
385
|
+
std::shared_ptr<Promise<std::vector<DownloadedTrack>>> JHybridDownloadManagerSpec::getAllDownloadedTracks() {
|
|
386
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("getAllDownloadedTracks");
|
|
343
387
|
auto __result = method(_javaPart);
|
|
344
388
|
return [&]() {
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
389
|
+
auto __promise = Promise<std::vector<DownloadedTrack>>::create();
|
|
390
|
+
__result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
|
|
391
|
+
auto __result = jni::static_ref_cast<jni::JArrayClass<JDownloadedTrack>>(__boxedResult);
|
|
392
|
+
__promise->resolve([&]() {
|
|
393
|
+
size_t __size = __result->size();
|
|
394
|
+
std::vector<DownloadedTrack> __vector;
|
|
395
|
+
__vector.reserve(__size);
|
|
396
|
+
for (size_t __i = 0; __i < __size; __i++) {
|
|
397
|
+
auto __element = __result->getElement(__i);
|
|
398
|
+
__vector.push_back(__element->toCpp());
|
|
399
|
+
}
|
|
400
|
+
return __vector;
|
|
401
|
+
}());
|
|
402
|
+
});
|
|
403
|
+
__result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
|
|
404
|
+
jni::JniException __jniError(__throwable);
|
|
405
|
+
__promise->reject(std::make_exception_ptr(__jniError));
|
|
406
|
+
});
|
|
407
|
+
return __promise;
|
|
353
408
|
}();
|
|
354
409
|
}
|
|
355
|
-
std::variant<nitro::NullType, DownloadedPlaylist
|
|
356
|
-
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<
|
|
410
|
+
std::shared_ptr<Promise<std::variant<nitro::NullType, DownloadedPlaylist>>> JHybridDownloadManagerSpec::getDownloadedPlaylist(const std::string& playlistId) {
|
|
411
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* playlistId */)>("getDownloadedPlaylist");
|
|
357
412
|
auto __result = method(_javaPart, jni::make_jstring(playlistId));
|
|
358
|
-
return
|
|
413
|
+
return [&]() {
|
|
414
|
+
auto __promise = Promise<std::variant<nitro::NullType, DownloadedPlaylist>>::create();
|
|
415
|
+
__result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
|
|
416
|
+
auto __result = jni::static_ref_cast<JVariant_NullType_DownloadedPlaylist>(__boxedResult);
|
|
417
|
+
__promise->resolve(__result->toCpp());
|
|
418
|
+
});
|
|
419
|
+
__result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
|
|
420
|
+
jni::JniException __jniError(__throwable);
|
|
421
|
+
__promise->reject(std::make_exception_ptr(__jniError));
|
|
422
|
+
});
|
|
423
|
+
return __promise;
|
|
424
|
+
}();
|
|
359
425
|
}
|
|
360
|
-
std::vector<DownloadedPlaylist
|
|
361
|
-
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<
|
|
426
|
+
std::shared_ptr<Promise<std::vector<DownloadedPlaylist>>> JHybridDownloadManagerSpec::getAllDownloadedPlaylists() {
|
|
427
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("getAllDownloadedPlaylists");
|
|
362
428
|
auto __result = method(_javaPart);
|
|
363
429
|
return [&]() {
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
430
|
+
auto __promise = Promise<std::vector<DownloadedPlaylist>>::create();
|
|
431
|
+
__result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
|
|
432
|
+
auto __result = jni::static_ref_cast<jni::JArrayClass<JDownloadedPlaylist>>(__boxedResult);
|
|
433
|
+
__promise->resolve([&]() {
|
|
434
|
+
size_t __size = __result->size();
|
|
435
|
+
std::vector<DownloadedPlaylist> __vector;
|
|
436
|
+
__vector.reserve(__size);
|
|
437
|
+
for (size_t __i = 0; __i < __size; __i++) {
|
|
438
|
+
auto __element = __result->getElement(__i);
|
|
439
|
+
__vector.push_back(__element->toCpp());
|
|
440
|
+
}
|
|
441
|
+
return __vector;
|
|
442
|
+
}());
|
|
443
|
+
});
|
|
444
|
+
__result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
|
|
445
|
+
jni::JniException __jniError(__throwable);
|
|
446
|
+
__promise->reject(std::make_exception_ptr(__jniError));
|
|
447
|
+
});
|
|
448
|
+
return __promise;
|
|
372
449
|
}();
|
|
373
450
|
}
|
|
374
|
-
std::variant<nitro::NullType, std::string
|
|
375
|
-
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<
|
|
451
|
+
std::shared_ptr<Promise<std::variant<nitro::NullType, std::string>>> JHybridDownloadManagerSpec::getLocalPath(const std::string& trackId) {
|
|
452
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* trackId */)>("getLocalPath");
|
|
376
453
|
auto __result = method(_javaPart, jni::make_jstring(trackId));
|
|
377
|
-
return
|
|
454
|
+
return [&]() {
|
|
455
|
+
auto __promise = Promise<std::variant<nitro::NullType, std::string>>::create();
|
|
456
|
+
__result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
|
|
457
|
+
auto __result = jni::static_ref_cast<JVariant_NullType_String>(__boxedResult);
|
|
458
|
+
__promise->resolve(__result->toCpp());
|
|
459
|
+
});
|
|
460
|
+
__result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
|
|
461
|
+
jni::JniException __jniError(__throwable);
|
|
462
|
+
__promise->reject(std::make_exception_ptr(__jniError));
|
|
463
|
+
});
|
|
464
|
+
return __promise;
|
|
465
|
+
}();
|
|
378
466
|
}
|
|
379
467
|
std::shared_ptr<Promise<void>> JHybridDownloadManagerSpec::deleteDownloadedTrack(const std::string& trackId) {
|
|
380
468
|
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* trackId */)>("deleteDownloadedTrack");
|
|
@@ -437,10 +525,21 @@ namespace margelo::nitro::nitroplayer {
|
|
|
437
525
|
return __promise;
|
|
438
526
|
}();
|
|
439
527
|
}
|
|
440
|
-
double JHybridDownloadManagerSpec::syncDownloads() {
|
|
441
|
-
static const auto method = _javaPart->javaClassStatic()->getMethod<
|
|
528
|
+
std::shared_ptr<Promise<double>> JHybridDownloadManagerSpec::syncDownloads() {
|
|
529
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("syncDownloads");
|
|
442
530
|
auto __result = method(_javaPart);
|
|
443
|
-
return
|
|
531
|
+
return [&]() {
|
|
532
|
+
auto __promise = Promise<double>::create();
|
|
533
|
+
__result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
|
|
534
|
+
auto __result = jni::static_ref_cast<jni::JDouble>(__boxedResult);
|
|
535
|
+
__promise->resolve(__result->value());
|
|
536
|
+
});
|
|
537
|
+
__result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
|
|
538
|
+
jni::JniException __jniError(__throwable);
|
|
539
|
+
__promise->reject(std::make_exception_ptr(__jniError));
|
|
540
|
+
});
|
|
541
|
+
return __promise;
|
|
542
|
+
}();
|
|
444
543
|
}
|
|
445
544
|
void JHybridDownloadManagerSpec::setPlaybackSourcePreference(PlaybackSource preference) {
|
|
446
545
|
static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JPlaybackSource> /* preference */)>("setPlaybackSourcePreference");
|
|
@@ -451,10 +550,21 @@ namespace margelo::nitro::nitroplayer {
|
|
|
451
550
|
auto __result = method(_javaPart);
|
|
452
551
|
return __result->toCpp();
|
|
453
552
|
}
|
|
454
|
-
std::string JHybridDownloadManagerSpec::getEffectiveUrl(const TrackItem& track) {
|
|
455
|
-
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<
|
|
553
|
+
std::shared_ptr<Promise<std::string>> JHybridDownloadManagerSpec::getEffectiveUrl(const TrackItem& track) {
|
|
554
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JTrackItem> /* track */)>("getEffectiveUrl");
|
|
456
555
|
auto __result = method(_javaPart, JTrackItem::fromCpp(track));
|
|
457
|
-
return
|
|
556
|
+
return [&]() {
|
|
557
|
+
auto __promise = Promise<std::string>::create();
|
|
558
|
+
__result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
|
|
559
|
+
auto __result = jni::static_ref_cast<jni::JString>(__boxedResult);
|
|
560
|
+
__promise->resolve(__result->toStdString());
|
|
561
|
+
});
|
|
562
|
+
__result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
|
|
563
|
+
jni::JniException __jniError(__throwable);
|
|
564
|
+
__promise->reject(std::make_exception_ptr(__jniError));
|
|
565
|
+
});
|
|
566
|
+
return __promise;
|
|
567
|
+
}();
|
|
458
568
|
}
|
|
459
569
|
void JHybridDownloadManagerSpec::onDownloadProgress(const std::function<void(const DownloadProgress& /* progress */)>& callback) {
|
|
460
570
|
static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_DownloadProgress::javaobject> /* callback */)>("onDownloadProgress_cxx");
|
|
@@ -70,22 +70,22 @@ namespace margelo::nitro::nitroplayer {
|
|
|
70
70
|
DownloadQueueStatus getQueueStatus() override;
|
|
71
71
|
bool isDownloading(const std::string& trackId) override;
|
|
72
72
|
DownloadState getDownloadState(const std::string& trackId) override;
|
|
73
|
-
bool isTrackDownloaded(const std::string& trackId) override;
|
|
74
|
-
bool isPlaylistDownloaded(const std::string& playlistId) override;
|
|
75
|
-
bool isPlaylistPartiallyDownloaded(const std::string& playlistId) override;
|
|
76
|
-
std::variant<nitro::NullType, DownloadedTrack
|
|
77
|
-
std::vector<DownloadedTrack
|
|
78
|
-
std::variant<nitro::NullType, DownloadedPlaylist
|
|
79
|
-
std::vector<DownloadedPlaylist
|
|
80
|
-
std::variant<nitro::NullType, std::string
|
|
73
|
+
std::shared_ptr<Promise<bool>> isTrackDownloaded(const std::string& trackId) override;
|
|
74
|
+
std::shared_ptr<Promise<bool>> isPlaylistDownloaded(const std::string& playlistId) override;
|
|
75
|
+
std::shared_ptr<Promise<bool>> isPlaylistPartiallyDownloaded(const std::string& playlistId) override;
|
|
76
|
+
std::shared_ptr<Promise<std::variant<nitro::NullType, DownloadedTrack>>> getDownloadedTrack(const std::string& trackId) override;
|
|
77
|
+
std::shared_ptr<Promise<std::vector<DownloadedTrack>>> getAllDownloadedTracks() override;
|
|
78
|
+
std::shared_ptr<Promise<std::variant<nitro::NullType, DownloadedPlaylist>>> getDownloadedPlaylist(const std::string& playlistId) override;
|
|
79
|
+
std::shared_ptr<Promise<std::vector<DownloadedPlaylist>>> getAllDownloadedPlaylists() override;
|
|
80
|
+
std::shared_ptr<Promise<std::variant<nitro::NullType, std::string>>> getLocalPath(const std::string& trackId) override;
|
|
81
81
|
std::shared_ptr<Promise<void>> deleteDownloadedTrack(const std::string& trackId) override;
|
|
82
82
|
std::shared_ptr<Promise<void>> deleteDownloadedPlaylist(const std::string& playlistId) override;
|
|
83
83
|
std::shared_ptr<Promise<void>> deleteAllDownloads() override;
|
|
84
84
|
std::shared_ptr<Promise<DownloadStorageInfo>> getStorageInfo() override;
|
|
85
|
-
double syncDownloads() override;
|
|
85
|
+
std::shared_ptr<Promise<double>> syncDownloads() override;
|
|
86
86
|
void setPlaybackSourcePreference(PlaybackSource preference) override;
|
|
87
87
|
PlaybackSource getPlaybackSourcePreference() override;
|
|
88
|
-
std::string getEffectiveUrl(const TrackItem& track) override;
|
|
88
|
+
std::shared_ptr<Promise<std::string>> getEffectiveUrl(const TrackItem& track) override;
|
|
89
89
|
void onDownloadProgress(const std::function<void(const DownloadProgress& /* progress */)>& callback) override;
|
|
90
90
|
void onDownloadStateChange(const std::function<void(const std::string& /* downloadId */, const std::string& /* trackId */, DownloadState /* state */, const std::optional<DownloadError>& /* error */)>& callback) override;
|
|
91
91
|
void onDownloadComplete(const std::function<void(const DownloadedTrack& /* downloadedTrack */)>& callback) override;
|