react-native-nitro-player 0.6.1 → 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/nitro.json +44 -11
- package/nitrogen/generated/android/NitroPlayerOnLoad.cpp +63 -24
- package/nitrogen/generated/android/c++/JCurrentPlayingType.hpp +1 -1
- package/nitrogen/generated/android/c++/JDownloadConfig.hpp +1 -1
- package/nitrogen/generated/android/c++/JDownloadError.hpp +1 -1
- package/nitrogen/generated/android/c++/JDownloadErrorReason.hpp +1 -1
- package/nitrogen/generated/android/c++/JDownloadProgress.hpp +1 -1
- package/nitrogen/generated/android/c++/JDownloadQueueStatus.hpp +1 -1
- package/nitrogen/generated/android/c++/JDownloadState.hpp +1 -1
- package/nitrogen/generated/android/c++/JDownloadStorageInfo.hpp +1 -1
- package/nitrogen/generated/android/c++/JDownloadTask.hpp +1 -1
- package/nitrogen/generated/android/c++/JDownloadedPlaylist.hpp +1 -1
- package/nitrogen/generated/android/c++/JDownloadedTrack.hpp +1 -1
- package/nitrogen/generated/android/c++/JEqualizerBand.hpp +1 -1
- package/nitrogen/generated/android/c++/JEqualizerPreset.hpp +1 -1
- package/nitrogen/generated/android/c++/JEqualizerState.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_DownloadProgress.hpp +2 -2
- package/nitrogen/generated/android/c++/JFunc_void_DownloadedTrack.hpp +2 -2
- package/nitrogen/generated/android/c++/JFunc_void_TrackItem_std__optional_Reason_.hpp +2 -2
- package/nitrogen/generated/android/c++/JFunc_void_TrackPlayerState_std__optional_Reason_.hpp +2 -2
- package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +2 -2
- package/nitrogen/generated/android/c++/JFunc_void_double_double.hpp +2 -2
- package/nitrogen/generated/android/c++/JFunc_void_double_double_std__optional_bool_.hpp +2 -2
- package/nitrogen/generated/android/c++/JFunc_void_std__optional_std__variant_nitro__NullType__std__string__.hpp +2 -2
- package/nitrogen/generated/android/c++/JFunc_void_std__string_Playlist_std__optional_QueueOperation_.hpp +2 -2
- package/nitrogen/generated/android/c++/JFunc_void_std__string_std__string_DownloadState_std__optional_DownloadError_.hpp +2 -2
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_EqualizerBand_.hpp +2 -2
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_Playlist__std__optional_QueueOperation_.hpp +2 -2
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_TrackItem__double.hpp +2 -2
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_TrackItem__std__vector_TrackItem_.hpp +122 -0
- package/nitrogen/generated/android/c++/JGainRange.hpp +1 -1
- package/nitrogen/generated/android/c++/JHybridAndroidAutoMediaLibrarySpec.cpp +49 -30
- package/nitrogen/generated/android/c++/JHybridAndroidAutoMediaLibrarySpec.hpp +21 -24
- package/nitrogen/generated/android/c++/JHybridAudioDevicesSpec.cpp +35 -28
- package/nitrogen/generated/android/c++/JHybridAudioDevicesSpec.hpp +20 -23
- package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.cpp +197 -93
- package/nitrogen/generated/android/c++/JHybridDownloadManagerSpec.hpp +29 -32
- package/nitrogen/generated/android/c++/JHybridEqualizerSpec.cpp +157 -67
- package/nitrogen/generated/android/c++/JHybridEqualizerSpec.hpp +28 -31
- package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.cpp +138 -53
- package/nitrogen/generated/android/c++/JHybridPlayerQueueSpec.hpp +27 -30
- package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.cpp +282 -69
- package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.hpp +35 -30
- package/nitrogen/generated/android/c++/JPlaybackSource.hpp +1 -1
- package/nitrogen/generated/android/c++/JPlayerConfig.hpp +1 -1
- package/nitrogen/generated/android/c++/JPlayerState.hpp +1 -1
- package/nitrogen/generated/android/c++/JPlaylist.hpp +1 -1
- package/nitrogen/generated/android/c++/JPresetType.hpp +1 -1
- package/nitrogen/generated/android/c++/JQueueOperation.hpp +1 -1
- package/nitrogen/generated/android/c++/JReason.hpp +1 -1
- package/nitrogen/generated/android/c++/JRepeatMode.hpp +1 -1
- package/nitrogen/generated/android/c++/JStorageLocation.hpp +1 -1
- package/nitrogen/generated/android/c++/JTAudioDevice.hpp +1 -1
- package/nitrogen/generated/android/c++/JTrackItem.hpp +1 -1
- package/nitrogen/generated/android/c++/JTrackPlayerState.hpp +1 -1
- package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +3 -3
- package/nitrogen/generated/android/c++/JVariant_NullType_DownloadError.hpp +3 -3
- package/nitrogen/generated/android/c++/JVariant_NullType_DownloadTask.hpp +3 -3
- package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedPlaylist.hpp +3 -3
- package/nitrogen/generated/android/c++/JVariant_NullType_DownloadedTrack.hpp +3 -3
- package/nitrogen/generated/android/c++/JVariant_NullType_Playlist.hpp +3 -3
- package/nitrogen/generated/android/c++/JVariant_NullType_String.hpp +3 -3
- package/nitrogen/generated/android/c++/JVariant_NullType_TrackItem.hpp +3 -3
- 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 +18 -20
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridAudioDevicesSpec.kt +17 -19
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridDownloadManagerSpec.kt +25 -28
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridEqualizerSpec.kt +25 -27
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridPlayerQueueSpec.kt +24 -26
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/HybridTrackPlayerSpec.kt +60 -26
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_Double.kt +0 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadError.kt +0 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadTask.kt +0 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadedPlaylist.kt +0 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_DownloadedTrack.kt +0 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_Playlist.kt +0 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_String.kt +0 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroplayer/Variant_NullType_TrackItem.kt +0 -6
- 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 +3 -3
- 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
|
|
@@ -21,7 +21,7 @@ namespace margelo::nitro::nitroplayer {
|
|
|
21
21
|
*/
|
|
22
22
|
struct JGainRange final: public jni::JavaClass<JGainRange> {
|
|
23
23
|
public:
|
|
24
|
-
static auto
|
|
24
|
+
static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/GainRange;";
|
|
25
25
|
|
|
26
26
|
public:
|
|
27
27
|
/**
|
|
@@ -9,54 +9,73 @@
|
|
|
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 {
|
|
15
18
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
});
|
|
19
|
+
std::shared_ptr<JHybridAndroidAutoMediaLibrarySpec> JHybridAndroidAutoMediaLibrarySpec::JavaPart::getJHybridAndroidAutoMediaLibrarySpec() {
|
|
20
|
+
auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
|
|
21
|
+
auto castHybridObject = std::dynamic_pointer_cast<JHybridAndroidAutoMediaLibrarySpec>(hybridObject);
|
|
22
|
+
if (castHybridObject == nullptr) [[unlikely]] {
|
|
23
|
+
throw std::runtime_error("Failed to downcast JHybridObject to JHybridAndroidAutoMediaLibrarySpec!");
|
|
24
|
+
}
|
|
25
|
+
return castHybridObject;
|
|
24
26
|
}
|
|
25
27
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return method(_javaPart);
|
|
28
|
+
jni::local_ref<JHybridAndroidAutoMediaLibrarySpec::CxxPart::jhybriddata> JHybridAndroidAutoMediaLibrarySpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
|
|
29
|
+
return makeCxxInstance(jThis);
|
|
29
30
|
}
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
std::shared_ptr<JHybridObject> JHybridAndroidAutoMediaLibrarySpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
|
|
33
|
+
auto castJavaPart = jni::dynamic_ref_cast<JHybridAndroidAutoMediaLibrarySpec::JavaPart>(javaPart);
|
|
34
|
+
if (castJavaPart == nullptr) [[unlikely]] {
|
|
35
|
+
throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridAndroidAutoMediaLibrarySpec::JavaPart!");
|
|
34
36
|
}
|
|
35
|
-
return
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
void JHybridAndroidAutoMediaLibrarySpec::dispose() noexcept {
|
|
39
|
-
static const auto method = javaClassStatic()->getMethod<void()>("dispose");
|
|
40
|
-
method(_javaPart);
|
|
37
|
+
return std::make_shared<JHybridAndroidAutoMediaLibrarySpec>(castJavaPart);
|
|
41
38
|
}
|
|
42
39
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
void JHybridAndroidAutoMediaLibrarySpec::CxxPart::registerNatives() {
|
|
41
|
+
registerHybrid({
|
|
42
|
+
makeNativeMethod("initHybrid", JHybridAndroidAutoMediaLibrarySpec::CxxPart::initHybrid),
|
|
43
|
+
});
|
|
47
44
|
}
|
|
48
45
|
|
|
49
46
|
// Properties
|
|
50
47
|
|
|
51
48
|
|
|
52
49
|
// Methods
|
|
53
|
-
void JHybridAndroidAutoMediaLibrarySpec::setMediaLibrary(const std::string& libraryJson) {
|
|
54
|
-
static const auto method = javaClassStatic()->getMethod<
|
|
55
|
-
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
|
+
}();
|
|
56
64
|
}
|
|
57
|
-
void JHybridAndroidAutoMediaLibrarySpec::clearMediaLibrary() {
|
|
58
|
-
static const auto method = javaClassStatic()->getMethod<
|
|
59
|
-
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
|
+
}();
|
|
60
79
|
}
|
|
61
80
|
|
|
62
81
|
} // namespace margelo::nitro::nitroplayer
|
|
@@ -18,34 +18,33 @@ namespace margelo::nitro::nitroplayer {
|
|
|
18
18
|
|
|
19
19
|
using namespace facebook;
|
|
20
20
|
|
|
21
|
-
class JHybridAndroidAutoMediaLibrarySpec: public
|
|
22
|
-
public virtual HybridAndroidAutoMediaLibrarySpec {
|
|
21
|
+
class JHybridAndroidAutoMediaLibrarySpec: public virtual HybridAndroidAutoMediaLibrarySpec, public virtual JHybridObject {
|
|
23
22
|
public:
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
HybridBase
|
|
33
|
-
|
|
23
|
+
struct JavaPart: public jni::JavaClass<JavaPart, JHybridObject::JavaPart> {
|
|
24
|
+
static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrarySpec;";
|
|
25
|
+
std::shared_ptr<JHybridAndroidAutoMediaLibrarySpec> getJHybridAndroidAutoMediaLibrarySpec();
|
|
26
|
+
};
|
|
27
|
+
struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
|
|
28
|
+
static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/HybridAndroidAutoMediaLibrarySpec$CxxPart;";
|
|
29
|
+
static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
|
|
30
|
+
static void registerNatives();
|
|
31
|
+
using HybridBase::HybridBase;
|
|
32
|
+
protected:
|
|
33
|
+
std::shared_ptr<JHybridObject> createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) override;
|
|
34
|
+
};
|
|
34
35
|
|
|
35
36
|
public:
|
|
37
|
+
explicit JHybridAndroidAutoMediaLibrarySpec(const jni::local_ref<JHybridAndroidAutoMediaLibrarySpec::JavaPart>& javaPart):
|
|
38
|
+
HybridObject(HybridAndroidAutoMediaLibrarySpec::TAG),
|
|
39
|
+
JHybridObject(javaPart),
|
|
40
|
+
_javaPart(jni::make_global(javaPart)) {}
|
|
36
41
|
~JHybridAndroidAutoMediaLibrarySpec() override {
|
|
37
42
|
// Hermes GC can destroy JS objects on a non-JNI Thread.
|
|
38
43
|
jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
|
|
39
44
|
}
|
|
40
45
|
|
|
41
46
|
public:
|
|
42
|
-
|
|
43
|
-
bool equals(const std::shared_ptr<HybridObject>& other) override;
|
|
44
|
-
void dispose() noexcept override;
|
|
45
|
-
std::string toString() override;
|
|
46
|
-
|
|
47
|
-
public:
|
|
48
|
-
inline const jni::global_ref<JHybridAndroidAutoMediaLibrarySpec::javaobject>& getJavaPart() const noexcept {
|
|
47
|
+
inline const jni::global_ref<JHybridAndroidAutoMediaLibrarySpec::JavaPart>& getJavaPart() const noexcept {
|
|
49
48
|
return _javaPart;
|
|
50
49
|
}
|
|
51
50
|
|
|
@@ -55,13 +54,11 @@ namespace margelo::nitro::nitroplayer {
|
|
|
55
54
|
|
|
56
55
|
public:
|
|
57
56
|
// Methods
|
|
58
|
-
void setMediaLibrary(const std::string& libraryJson) override;
|
|
59
|
-
void clearMediaLibrary() override;
|
|
57
|
+
std::shared_ptr<Promise<void>> setMediaLibrary(const std::string& libraryJson) override;
|
|
58
|
+
std::shared_ptr<Promise<void>> clearMediaLibrary() override;
|
|
60
59
|
|
|
61
60
|
private:
|
|
62
|
-
|
|
63
|
-
using HybridBase::HybridBase;
|
|
64
|
-
jni::global_ref<JHybridAndroidAutoMediaLibrarySpec::javaobject> _javaPart;
|
|
61
|
+
jni::global_ref<JHybridAndroidAutoMediaLibrarySpec::JavaPart> _javaPart;
|
|
65
62
|
};
|
|
66
63
|
|
|
67
64
|
} // namespace margelo::nitro::nitroplayer
|
|
@@ -14,40 +14,37 @@ 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
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
});
|
|
23
|
+
std::shared_ptr<JHybridAudioDevicesSpec> JHybridAudioDevicesSpec::JavaPart::getJHybridAudioDevicesSpec() {
|
|
24
|
+
auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
|
|
25
|
+
auto castHybridObject = std::dynamic_pointer_cast<JHybridAudioDevicesSpec>(hybridObject);
|
|
26
|
+
if (castHybridObject == nullptr) [[unlikely]] {
|
|
27
|
+
throw std::runtime_error("Failed to downcast JHybridObject to JHybridAudioDevicesSpec!");
|
|
28
|
+
}
|
|
29
|
+
return castHybridObject;
|
|
28
30
|
}
|
|
29
31
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
return method(_javaPart);
|
|
32
|
+
jni::local_ref<JHybridAudioDevicesSpec::CxxPart::jhybriddata> JHybridAudioDevicesSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
|
|
33
|
+
return makeCxxInstance(jThis);
|
|
33
34
|
}
|
|
34
35
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
std::shared_ptr<JHybridObject> JHybridAudioDevicesSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
|
|
37
|
+
auto castJavaPart = jni::dynamic_ref_cast<JHybridAudioDevicesSpec::JavaPart>(javaPart);
|
|
38
|
+
if (castJavaPart == nullptr) [[unlikely]] {
|
|
39
|
+
throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridAudioDevicesSpec::JavaPart!");
|
|
38
40
|
}
|
|
39
|
-
return
|
|
41
|
+
return std::make_shared<JHybridAudioDevicesSpec>(castJavaPart);
|
|
40
42
|
}
|
|
41
43
|
|
|
42
|
-
void JHybridAudioDevicesSpec::
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
std::string JHybridAudioDevicesSpec::toString() {
|
|
48
|
-
static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
|
|
49
|
-
auto javaString = method(_javaPart);
|
|
50
|
-
return javaString->toStdString();
|
|
44
|
+
void JHybridAudioDevicesSpec::CxxPart::registerNatives() {
|
|
45
|
+
registerHybrid({
|
|
46
|
+
makeNativeMethod("initHybrid", JHybridAudioDevicesSpec::CxxPart::initHybrid),
|
|
47
|
+
});
|
|
51
48
|
}
|
|
52
49
|
|
|
53
50
|
// Properties
|
|
@@ -55,7 +52,7 @@ namespace margelo::nitro::nitroplayer {
|
|
|
55
52
|
|
|
56
53
|
// Methods
|
|
57
54
|
std::vector<TAudioDevice> JHybridAudioDevicesSpec::getAudioDevices() {
|
|
58
|
-
static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<JTAudioDevice>>()>("getAudioDevices");
|
|
55
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<JTAudioDevice>>()>("getAudioDevices");
|
|
59
56
|
auto __result = method(_javaPart);
|
|
60
57
|
return [&]() {
|
|
61
58
|
size_t __size = __result->size();
|
|
@@ -68,10 +65,20 @@ namespace margelo::nitro::nitroplayer {
|
|
|
68
65
|
return __vector;
|
|
69
66
|
}();
|
|
70
67
|
}
|
|
71
|
-
|
|
72
|
-
static const auto method = 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");
|
|
73
70
|
auto __result = method(_javaPart, deviceId);
|
|
74
|
-
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
|
+
}();
|
|
75
82
|
}
|
|
76
83
|
|
|
77
84
|
} // namespace margelo::nitro::nitroplayer
|
|
@@ -18,34 +18,33 @@ namespace margelo::nitro::nitroplayer {
|
|
|
18
18
|
|
|
19
19
|
using namespace facebook;
|
|
20
20
|
|
|
21
|
-
class JHybridAudioDevicesSpec: public
|
|
22
|
-
public virtual HybridAudioDevicesSpec {
|
|
21
|
+
class JHybridAudioDevicesSpec: public virtual HybridAudioDevicesSpec, public virtual JHybridObject {
|
|
23
22
|
public:
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
HybridBase
|
|
33
|
-
|
|
23
|
+
struct JavaPart: public jni::JavaClass<JavaPart, JHybridObject::JavaPart> {
|
|
24
|
+
static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/HybridAudioDevicesSpec;";
|
|
25
|
+
std::shared_ptr<JHybridAudioDevicesSpec> getJHybridAudioDevicesSpec();
|
|
26
|
+
};
|
|
27
|
+
struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
|
|
28
|
+
static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroplayer/HybridAudioDevicesSpec$CxxPart;";
|
|
29
|
+
static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
|
|
30
|
+
static void registerNatives();
|
|
31
|
+
using HybridBase::HybridBase;
|
|
32
|
+
protected:
|
|
33
|
+
std::shared_ptr<JHybridObject> createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) override;
|
|
34
|
+
};
|
|
34
35
|
|
|
35
36
|
public:
|
|
37
|
+
explicit JHybridAudioDevicesSpec(const jni::local_ref<JHybridAudioDevicesSpec::JavaPart>& javaPart):
|
|
38
|
+
HybridObject(HybridAudioDevicesSpec::TAG),
|
|
39
|
+
JHybridObject(javaPart),
|
|
40
|
+
_javaPart(jni::make_global(javaPart)) {}
|
|
36
41
|
~JHybridAudioDevicesSpec() override {
|
|
37
42
|
// Hermes GC can destroy JS objects on a non-JNI Thread.
|
|
38
43
|
jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
|
|
39
44
|
}
|
|
40
45
|
|
|
41
46
|
public:
|
|
42
|
-
|
|
43
|
-
bool equals(const std::shared_ptr<HybridObject>& other) override;
|
|
44
|
-
void dispose() noexcept override;
|
|
45
|
-
std::string toString() override;
|
|
46
|
-
|
|
47
|
-
public:
|
|
48
|
-
inline const jni::global_ref<JHybridAudioDevicesSpec::javaobject>& getJavaPart() const noexcept {
|
|
47
|
+
inline const jni::global_ref<JHybridAudioDevicesSpec::JavaPart>& getJavaPart() const noexcept {
|
|
49
48
|
return _javaPart;
|
|
50
49
|
}
|
|
51
50
|
|
|
@@ -56,12 +55,10 @@ namespace margelo::nitro::nitroplayer {
|
|
|
56
55
|
public:
|
|
57
56
|
// Methods
|
|
58
57
|
std::vector<TAudioDevice> getAudioDevices() override;
|
|
59
|
-
|
|
58
|
+
std::shared_ptr<Promise<void>> setAudioDevice(double deviceId) override;
|
|
60
59
|
|
|
61
60
|
private:
|
|
62
|
-
|
|
63
|
-
using HybridBase::HybridBase;
|
|
64
|
-
jni::global_ref<JHybridAudioDevicesSpec::javaobject> _javaPart;
|
|
61
|
+
jni::global_ref<JHybridAudioDevicesSpec::JavaPart> _javaPart;
|
|
65
62
|
};
|
|
66
63
|
|
|
67
64
|
} // namespace margelo::nitro::nitroplayer
|