one 2.11.5 → 2.12.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 (199) hide show
  1. package/android/src/main/java/com/margelo/nitro/one/HybridOneAudio.kt +309 -124
  2. package/dist/cjs/cli/build.cjs +31 -33
  3. package/dist/cjs/cli/build.native.cjs +31 -33
  4. package/dist/cjs/cli/build.native.js +31 -33
  5. package/dist/cjs/cli/build.native.js.map +1 -1
  6. package/dist/cjs/cli/buildPage.cjs +11 -7
  7. package/dist/cjs/cli/buildPage.native.cjs +11 -7
  8. package/dist/cjs/cli/buildPage.native.js +11 -7
  9. package/dist/cjs/cli/buildPage.native.js.map +1 -1
  10. package/dist/cjs/cli/buildPageWorker.cjs +1 -1
  11. package/dist/cjs/cli/buildPageWorker.native.cjs +1 -1
  12. package/dist/cjs/cli/buildPageWorker.native.js +1 -1
  13. package/dist/cjs/cli/buildPageWorker.native.js.map +1 -1
  14. package/dist/cjs/cli-dev-memory.cjs +43 -0
  15. package/dist/cjs/cli-dev-memory.native.cjs +84 -0
  16. package/dist/cjs/cli-dev-memory.native.js +86 -0
  17. package/dist/cjs/cli-dev-memory.native.js.map +1 -0
  18. package/dist/cjs/headless-server.cjs +2 -5
  19. package/dist/cjs/headless-server.native.cjs +2 -5
  20. package/dist/cjs/headless-server.native.js +2 -5
  21. package/dist/cjs/headless-server.native.js.map +1 -1
  22. package/dist/cjs/platform/audio/index.cjs +83 -76
  23. package/dist/cjs/platform/audio/index.native.cjs +2 -2
  24. package/dist/cjs/platform/audio/index.native.js +2 -2
  25. package/dist/cjs/platform/audio/index.native.js.map +1 -1
  26. package/dist/cjs/platform/audio/nowPlaying.cjs +126 -0
  27. package/dist/cjs/platform/audio/nowPlaying.native.cjs +160 -0
  28. package/dist/cjs/platform/audio/nowPlaying.native.js +162 -0
  29. package/dist/cjs/platform/audio/nowPlaying.native.js.map +1 -0
  30. package/dist/cjs/platform/audio/player.cjs +15 -0
  31. package/dist/cjs/platform/audio/player.native.cjs +14 -0
  32. package/dist/cjs/platform/audio/player.native.js +14 -0
  33. package/dist/cjs/platform/audio/player.native.js.map +1 -1
  34. package/dist/cjs/platform/audio/unavailable.cjs +1 -1
  35. package/dist/cjs/platform/audio/unavailable.native.cjs +1 -1
  36. package/dist/cjs/platform/audio/unavailable.native.js +1 -1
  37. package/dist/cjs/platform/audio/unavailable.native.js.map +1 -1
  38. package/dist/cjs/serve-worker.cjs +0 -3
  39. package/dist/cjs/serve-worker.native.cjs +0 -3
  40. package/dist/cjs/serve-worker.native.js +0 -3
  41. package/dist/cjs/serve-worker.native.js.map +1 -1
  42. package/dist/cjs/server/oneServe.cjs +0 -6
  43. package/dist/cjs/server/oneServe.native.cjs +0 -6
  44. package/dist/cjs/server/oneServe.native.js +0 -6
  45. package/dist/cjs/server/oneServe.native.js.map +1 -1
  46. package/dist/cjs/server/workerHandler.cjs +12 -10
  47. package/dist/cjs/server/workerHandler.native.cjs +14 -10
  48. package/dist/cjs/server/workerHandler.native.js +14 -10
  49. package/dist/cjs/server/workerHandler.native.js.map +1 -1
  50. package/dist/cjs/vite/plugins/workerdDevPlugin.cjs +33 -37
  51. package/dist/cjs/vite/plugins/workerdDevPlugin.native.cjs +33 -37
  52. package/dist/cjs/vite/plugins/workerdDevPlugin.native.js +33 -37
  53. package/dist/cjs/vite/plugins/workerdDevPlugin.native.js.map +1 -1
  54. package/dist/esm/cli/build.mjs +31 -33
  55. package/dist/esm/cli/build.mjs.map +1 -1
  56. package/dist/esm/cli/build.native.js +31 -33
  57. package/dist/esm/cli/build.native.js.map +1 -1
  58. package/dist/esm/cli/buildPage.mjs +11 -7
  59. package/dist/esm/cli/buildPage.mjs.map +1 -1
  60. package/dist/esm/cli/buildPage.native.js +11 -7
  61. package/dist/esm/cli/buildPage.native.js.map +1 -1
  62. package/dist/esm/cli/buildPageWorker.mjs +1 -1
  63. package/dist/esm/cli/buildPageWorker.mjs.map +1 -1
  64. package/dist/esm/cli/buildPageWorker.native.js +1 -1
  65. package/dist/esm/cli/buildPageWorker.native.js.map +1 -1
  66. package/dist/esm/cli-dev-memory.mjs +23 -0
  67. package/dist/esm/cli-dev-memory.mjs.map +1 -0
  68. package/dist/esm/cli-dev-memory.native.js +62 -0
  69. package/dist/esm/cli-dev-memory.native.js.map +1 -0
  70. package/dist/esm/headless-server.mjs +2 -3
  71. package/dist/esm/headless-server.mjs.map +1 -1
  72. package/dist/esm/headless-server.native.js +2 -3
  73. package/dist/esm/headless-server.native.js.map +1 -1
  74. package/dist/esm/platform/audio/index.mjs +83 -76
  75. package/dist/esm/platform/audio/index.mjs.map +1 -1
  76. package/dist/esm/platform/audio/index.native.js +2 -2
  77. package/dist/esm/platform/audio/index.native.js.map +1 -1
  78. package/dist/esm/platform/audio/nowPlaying.mjs +102 -0
  79. package/dist/esm/platform/audio/nowPlaying.mjs.map +1 -0
  80. package/dist/esm/platform/audio/nowPlaying.native.js +134 -0
  81. package/dist/esm/platform/audio/nowPlaying.native.js.map +1 -0
  82. package/dist/esm/platform/audio/player.mjs +15 -0
  83. package/dist/esm/platform/audio/player.mjs.map +1 -1
  84. package/dist/esm/platform/audio/player.native.js +14 -0
  85. package/dist/esm/platform/audio/player.native.js.map +1 -1
  86. package/dist/esm/platform/audio/unavailable.mjs +1 -1
  87. package/dist/esm/platform/audio/unavailable.mjs.map +1 -1
  88. package/dist/esm/platform/audio/unavailable.native.js +1 -1
  89. package/dist/esm/platform/audio/unavailable.native.js.map +1 -1
  90. package/dist/esm/serve-worker.mjs +1 -2
  91. package/dist/esm/serve-worker.mjs.map +1 -1
  92. package/dist/esm/serve-worker.native.js +1 -2
  93. package/dist/esm/serve-worker.native.js.map +1 -1
  94. package/dist/esm/server/oneServe.mjs +0 -6
  95. package/dist/esm/server/oneServe.mjs.map +1 -1
  96. package/dist/esm/server/oneServe.native.js +0 -6
  97. package/dist/esm/server/oneServe.native.js.map +1 -1
  98. package/dist/esm/server/workerHandler.mjs +12 -10
  99. package/dist/esm/server/workerHandler.mjs.map +1 -1
  100. package/dist/esm/server/workerHandler.native.js +14 -10
  101. package/dist/esm/server/workerHandler.native.js.map +1 -1
  102. package/dist/esm/vite/plugins/workerdDevPlugin.mjs +33 -37
  103. package/dist/esm/vite/plugins/workerdDevPlugin.mjs.map +1 -1
  104. package/dist/esm/vite/plugins/workerdDevPlugin.native.js +33 -37
  105. package/dist/esm/vite/plugins/workerdDevPlugin.native.js.map +1 -1
  106. package/ios/Nitro/HybridOneAudio.swift +309 -96
  107. package/nitrogen/generated/android/c++/JAudioPlayOptions.hpp +61 -0
  108. package/nitrogen/generated/android/c++/JAudioRemoteCommandEvent.hpp +8 -3
  109. package/nitrogen/generated/android/c++/JFunc_void_AudioRemoteCommandEvent.hpp +1 -0
  110. package/nitrogen/generated/android/c++/JHybridOneAudioSpec.cpp +37 -3
  111. package/nitrogen/generated/android/c++/JHybridOneAudioSpec.hpp +3 -1
  112. package/nitrogen/generated/android/kotlin/com/margelo/nitro/one/AudioPlayOptions.kt +56 -0
  113. package/nitrogen/generated/android/kotlin/com/margelo/nitro/one/AudioRemoteCommandEvent.kt +9 -4
  114. package/nitrogen/generated/android/kotlin/com/margelo/nitro/one/HybridOneAudioSpec.kt +40 -32
  115. package/nitrogen/generated/ios/One-Swift-Cxx-Umbrella.hpp +3 -0
  116. package/nitrogen/generated/ios/c++/HybridOneAudioSpecSwift.hpp +21 -2
  117. package/nitrogen/generated/ios/swift/AudioPlayOptions.swift +60 -0
  118. package/nitrogen/generated/ios/swift/AudioRemoteCommandEvent.swift +19 -1
  119. package/nitrogen/generated/ios/swift/HybridOneAudioSpec.swift +3 -1
  120. package/nitrogen/generated/ios/swift/HybridOneAudioSpec_cxx.swift +70 -32
  121. package/nitrogen/generated/shared/c++/AudioPlayOptions.hpp +87 -0
  122. package/nitrogen/generated/shared/c++/AudioRemoteCommandEvent.hpp +7 -2
  123. package/nitrogen/generated/shared/c++/HybridOneAudioSpec.cpp +2 -0
  124. package/nitrogen/generated/shared/c++/HybridOneAudioSpec.hpp +6 -1
  125. package/package.json +13 -13
  126. package/run.mjs +5 -1
  127. package/src/cli/build.ts +35 -32
  128. package/src/cli/buildPage.test.ts +152 -0
  129. package/src/cli/buildPage.ts +14 -9
  130. package/src/cli/buildPageWorker.ts +2 -1
  131. package/src/cli/workerPool.ts +1 -0
  132. package/src/cli-dev-memory.ts +24 -0
  133. package/src/headless-server.ts +2 -2
  134. package/src/index.ts +1 -0
  135. package/src/platform/audio/index.native.ts +4 -2
  136. package/src/platform/audio/index.ts +102 -74
  137. package/src/platform/audio/nowPlaying.ts +122 -0
  138. package/src/platform/audio/player.native.ts +17 -1
  139. package/src/platform/audio/player.ts +23 -1
  140. package/src/platform/audio/types.ts +6 -1
  141. package/src/platform/audio/unavailable.ts +3 -1
  142. package/src/platform/index.native.ts +1 -0
  143. package/src/platform/index.ts +1 -0
  144. package/src/platform/specs/OneAudio.nitro.ts +11 -1
  145. package/src/serve-worker.ts +2 -3
  146. package/src/server/oneServe.ts +0 -6
  147. package/src/server/workerHandler.ts +34 -18
  148. package/src/vite/plugins/workerdDevPlugin.ts +33 -37
  149. package/src/vite/resolveResponse.ts +2 -2
  150. package/types/cli/build.d.ts.map +1 -1
  151. package/types/cli/buildPage.d.ts +1 -1
  152. package/types/cli/buildPage.d.ts.map +1 -1
  153. package/types/cli/workerPool.d.ts +1 -0
  154. package/types/cli/workerPool.d.ts.map +1 -1
  155. package/types/cli-dev-memory.d.ts +2 -0
  156. package/types/cli-dev-memory.d.ts.map +1 -0
  157. package/types/headless-server.d.ts +3 -3
  158. package/types/headless-server.d.ts.map +1 -1
  159. package/types/index.d.ts +1 -1
  160. package/types/index.d.ts.map +1 -1
  161. package/types/platform/audio/index.d.ts +2 -2
  162. package/types/platform/audio/index.d.ts.map +1 -1
  163. package/types/platform/audio/index.native.d.ts +3 -3
  164. package/types/platform/audio/index.native.d.ts.map +1 -1
  165. package/types/platform/audio/nowPlaying.d.ts +12 -0
  166. package/types/platform/audio/nowPlaying.d.ts.map +1 -0
  167. package/types/platform/audio/player.d.ts +3 -1
  168. package/types/platform/audio/player.d.ts.map +1 -1
  169. package/types/platform/audio/player.native.d.ts +3 -1
  170. package/types/platform/audio/player.native.d.ts.map +1 -1
  171. package/types/platform/audio/types.d.ts +3 -1
  172. package/types/platform/audio/types.d.ts.map +1 -1
  173. package/types/platform/audio/unavailable.d.ts +3 -3
  174. package/types/platform/audio/unavailable.d.ts.map +1 -1
  175. package/types/platform/index.d.ts +1 -1
  176. package/types/platform/index.d.ts.map +1 -1
  177. package/types/platform/index.native.d.ts +1 -1
  178. package/types/platform/index.native.d.ts.map +1 -1
  179. package/types/platform/specs/OneAudio.nitro.d.ts +8 -1
  180. package/types/platform/specs/OneAudio.nitro.d.ts.map +1 -1
  181. package/types/serve-worker.d.ts +3 -3
  182. package/types/serve-worker.d.ts.map +1 -1
  183. package/types/server/oneServe.d.ts.map +1 -1
  184. package/types/server/workerHandler.d.ts +1 -1
  185. package/types/server/workerHandler.d.ts.map +1 -1
  186. package/types/vite/plugins/workerdDevPlugin.d.ts.map +1 -1
  187. package/types/vite/resolveResponse.d.ts +1 -1
  188. package/types/vite/resolveResponse.d.ts.map +1 -1
  189. package/dist/cjs/server/staticHtmlFetcher.cjs +0 -33
  190. package/dist/cjs/server/staticHtmlFetcher.native.cjs +0 -35
  191. package/dist/cjs/server/staticHtmlFetcher.native.js +0 -37
  192. package/dist/cjs/server/staticHtmlFetcher.native.js.map +0 -1
  193. package/dist/esm/server/staticHtmlFetcher.mjs +0 -10
  194. package/dist/esm/server/staticHtmlFetcher.mjs.map +0 -1
  195. package/dist/esm/server/staticHtmlFetcher.native.js +0 -10
  196. package/dist/esm/server/staticHtmlFetcher.native.js.map +0 -1
  197. package/src/server/staticHtmlFetcher.ts +0 -12
  198. package/types/server/staticHtmlFetcher.d.ts +0 -3
  199. package/types/server/staticHtmlFetcher.d.ts.map +0 -1
@@ -0,0 +1,61 @@
1
+ ///
2
+ /// JAudioPlayOptions.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 "AudioPlayOptions.hpp"
12
+
13
+ #include <optional>
14
+
15
+ namespace margelo::nitro::one {
16
+
17
+ using namespace facebook;
18
+
19
+ /**
20
+ * The C++ JNI bridge between the C++ struct "AudioPlayOptions" and the Kotlin data class "AudioPlayOptions".
21
+ */
22
+ struct JAudioPlayOptions final: public jni::JavaClass<JAudioPlayOptions> {
23
+ public:
24
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/one/AudioPlayOptions;";
25
+
26
+ public:
27
+ /**
28
+ * Convert this Java/Kotlin-based struct to the C++ struct AudioPlayOptions by copying all values to C++.
29
+ */
30
+ [[maybe_unused]]
31
+ [[nodiscard]]
32
+ AudioPlayOptions toCpp() const {
33
+ static const auto clazz = javaClassStatic();
34
+ static const auto fieldPositionMs = clazz->getField<jni::JDouble>("positionMs");
35
+ jni::local_ref<jni::JDouble> positionMs = this->getFieldValue(fieldPositionMs);
36
+ static const auto fieldPaused = clazz->getField<jni::JBoolean>("paused");
37
+ jni::local_ref<jni::JBoolean> paused = this->getFieldValue(fieldPaused);
38
+ return AudioPlayOptions(
39
+ positionMs != nullptr ? std::make_optional(positionMs->value()) : std::nullopt,
40
+ paused != nullptr ? std::make_optional(static_cast<bool>(paused->value())) : std::nullopt
41
+ );
42
+ }
43
+
44
+ public:
45
+ /**
46
+ * Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
47
+ */
48
+ [[maybe_unused]]
49
+ static jni::local_ref<JAudioPlayOptions::javaobject> fromCpp(const AudioPlayOptions& value) {
50
+ using JSignature = JAudioPlayOptions(jni::alias_ref<jni::JDouble>, jni::alias_ref<jni::JBoolean>);
51
+ static const auto clazz = javaClassStatic();
52
+ static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
53
+ return create(
54
+ clazz,
55
+ value.positionMs.has_value() ? jni::JDouble::valueOf(value.positionMs.value()) : nullptr,
56
+ value.paused.has_value() ? jni::JBoolean::valueOf(value.paused.value()) : nullptr
57
+ );
58
+ }
59
+ };
60
+
61
+ } // namespace margelo::nitro::one
@@ -13,6 +13,7 @@
13
13
  #include "AudioRemoteCommandType.hpp"
14
14
  #include "JAudioRemoteCommandType.hpp"
15
15
  #include <optional>
16
+ #include <string>
16
17
 
17
18
  namespace margelo::nitro::one {
18
19
 
@@ -37,9 +38,12 @@ namespace margelo::nitro::one {
37
38
  jni::local_ref<JAudioRemoteCommandType> type = this->getFieldValue(fieldType);
38
39
  static const auto fieldPositionMs = clazz->getField<jni::JDouble>("positionMs");
39
40
  jni::local_ref<jni::JDouble> positionMs = this->getFieldValue(fieldPositionMs);
41
+ static const auto fieldPlayerId = clazz->getField<jni::JString>("playerId");
42
+ jni::local_ref<jni::JString> playerId = this->getFieldValue(fieldPlayerId);
40
43
  return AudioRemoteCommandEvent(
41
44
  type->toCpp(),
42
- positionMs != nullptr ? std::make_optional(positionMs->value()) : std::nullopt
45
+ positionMs != nullptr ? std::make_optional(positionMs->value()) : std::nullopt,
46
+ playerId != nullptr ? std::make_optional(playerId->toStdString()) : std::nullopt
43
47
  );
44
48
  }
45
49
 
@@ -49,13 +53,14 @@ namespace margelo::nitro::one {
49
53
  */
50
54
  [[maybe_unused]]
51
55
  static jni::local_ref<JAudioRemoteCommandEvent::javaobject> fromCpp(const AudioRemoteCommandEvent& value) {
52
- using JSignature = JAudioRemoteCommandEvent(jni::alias_ref<JAudioRemoteCommandType>, jni::alias_ref<jni::JDouble>);
56
+ using JSignature = JAudioRemoteCommandEvent(jni::alias_ref<JAudioRemoteCommandType>, jni::alias_ref<jni::JDouble>, jni::alias_ref<jni::JString>);
53
57
  static const auto clazz = javaClassStatic();
54
58
  static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
55
59
  return create(
56
60
  clazz,
57
61
  JAudioRemoteCommandType::fromCpp(value.type),
58
- value.positionMs.has_value() ? jni::JDouble::valueOf(value.positionMs.value()) : nullptr
62
+ value.positionMs.has_value() ? jni::JDouble::valueOf(value.positionMs.value()) : nullptr,
63
+ value.playerId.has_value() ? jni::make_jstring(value.playerId.value()) : nullptr
59
64
  );
60
65
  }
61
66
  };
@@ -17,6 +17,7 @@
17
17
  #include "AudioRemoteCommandType.hpp"
18
18
  #include "JAudioRemoteCommandType.hpp"
19
19
  #include <optional>
20
+ #include <string>
20
21
 
21
22
  namespace margelo::nitro::one {
22
23
 
@@ -21,6 +21,8 @@ namespace margelo::nitro::one { enum class AudioRecordingState; }
21
21
  namespace margelo::nitro::one { struct AudioRecordingResult; }
22
22
  // Forward declaration of `AudioPlayerStatus` to properly resolve imports.
23
23
  namespace margelo::nitro::one { struct AudioPlayerStatus; }
24
+ // Forward declaration of `AudioPlayOptions` to properly resolve imports.
25
+ namespace margelo::nitro::one { struct AudioPlayOptions; }
24
26
  // Forward declaration of `AudioInterruptionEvent` to properly resolve imports.
25
27
  namespace margelo::nitro::one { struct AudioInterruptionEvent; }
26
28
  // Forward declaration of `AudioInterruptionType` to properly resolve imports.
@@ -56,6 +58,8 @@ namespace margelo::nitro::one { enum class PitchCorrectionQuality; }
56
58
  #include <NitroModules/JNICallable.hpp>
57
59
  #include "AudioPlayerStatus.hpp"
58
60
  #include "JAudioPlayerStatus.hpp"
61
+ #include "AudioPlayOptions.hpp"
62
+ #include "JAudioPlayOptions.hpp"
59
63
  #include "AudioInterruptionEvent.hpp"
60
64
  #include "JFunc_void_AudioInterruptionEvent.hpp"
61
65
  #include "JAudioInterruptionEvent.hpp"
@@ -137,9 +141,9 @@ namespace margelo::nitro::one {
137
141
  return __promise;
138
142
  }();
139
143
  }
140
- std::shared_ptr<Promise<AudioPlaybackStatus>> JHybridOneAudioSpec::play(const std::string& uri) {
141
- static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* uri */)>("play");
142
- auto __result = method(_javaPart, jni::make_jstring(uri));
144
+ std::shared_ptr<Promise<AudioPlaybackStatus>> JHybridOneAudioSpec::play(const std::string& uri, const AudioPlayOptions& options) {
145
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* uri */, jni::alias_ref<JAudioPlayOptions> /* options */)>("play");
146
+ auto __result = method(_javaPart, jni::make_jstring(uri), JAudioPlayOptions::fromCpp(options));
143
147
  return [&]() {
144
148
  auto __promise = Promise<AudioPlaybackStatus>::create();
145
149
  __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
@@ -416,6 +420,36 @@ namespace margelo::nitro::one {
416
420
  static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* playerId */)>("removePlayer");
417
421
  method(_javaPart, jni::make_jstring(playerId));
418
422
  }
423
+ std::shared_ptr<Promise<void>> JHybridOneAudioSpec::setPlayerNowPlayingInfo(const std::string& playerId, const AudioNowPlayingInfo& info) {
424
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* playerId */, jni::alias_ref<JAudioNowPlayingInfo> /* info */)>("setPlayerNowPlayingInfo");
425
+ auto __result = method(_javaPart, jni::make_jstring(playerId), JAudioNowPlayingInfo::fromCpp(info));
426
+ return [&]() {
427
+ auto __promise = Promise<void>::create();
428
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
429
+ __promise->resolve();
430
+ });
431
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
432
+ jni::JniException __jniError(__throwable);
433
+ __promise->reject(std::make_exception_ptr(__jniError));
434
+ });
435
+ return __promise;
436
+ }();
437
+ }
438
+ std::shared_ptr<Promise<void>> JHybridOneAudioSpec::clearPlayerNowPlayingInfo(const std::string& playerId) {
439
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* playerId */)>("clearPlayerNowPlayingInfo");
440
+ auto __result = method(_javaPart, jni::make_jstring(playerId));
441
+ return [&]() {
442
+ auto __promise = Promise<void>::create();
443
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
444
+ __promise->resolve();
445
+ });
446
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
447
+ jni::JniException __jniError(__throwable);
448
+ __promise->reject(std::make_exception_ptr(__jniError));
449
+ });
450
+ return __promise;
451
+ }();
452
+ }
419
453
  AudioPlayerStatus JHybridOneAudioSpec::getPlayerStatus(const std::string& playerId) {
420
454
  static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JAudioPlayerStatus>(jni::alias_ref<jni::JString> /* playerId */)>("getPlayerStatus");
421
455
  auto __result = method(_javaPart, jni::make_jstring(playerId));
@@ -56,7 +56,7 @@ namespace margelo::nitro::one {
56
56
  // Methods
57
57
  std::shared_ptr<Promise<AudioRecordingPermission>> getRecordingPermissionStatus() override;
58
58
  std::shared_ptr<Promise<AudioRecordingPermission>> requestRecordingPermission() override;
59
- std::shared_ptr<Promise<AudioPlaybackStatus>> play(const std::string& uri) override;
59
+ std::shared_ptr<Promise<AudioPlaybackStatus>> play(const std::string& uri, const AudioPlayOptions& options) override;
60
60
  std::shared_ptr<Promise<AudioPlaybackStatus>> getPlaybackStatus() override;
61
61
  std::shared_ptr<Promise<AudioPlaybackStatus>> pause() override;
62
62
  std::shared_ptr<Promise<AudioPlaybackStatus>> resume() override;
@@ -77,6 +77,8 @@ namespace margelo::nitro::one {
77
77
  std::shared_ptr<Promise<void>> playerSeek(const std::string& playerId, double seconds, std::optional<double> toleranceBeforeMs, std::optional<double> toleranceAfterMs) override;
78
78
  void playerReplace(const std::string& playerId, const std::optional<std::string>& sourceUri, const std::optional<std::unordered_map<std::string, std::string>>& headers) override;
79
79
  void removePlayer(const std::string& playerId) override;
80
+ std::shared_ptr<Promise<void>> setPlayerNowPlayingInfo(const std::string& playerId, const AudioNowPlayingInfo& info) override;
81
+ std::shared_ptr<Promise<void>> clearPlayerNowPlayingInfo(const std::string& playerId) override;
80
82
  AudioPlayerStatus getPlayerStatus(const std::string& playerId) override;
81
83
  void setPlayerRate(const std::string& playerId, double rate, std::optional<PitchCorrectionQuality> pitchQuality) override;
82
84
  void setPlayerVolume(const std::string& playerId, double volume) override;
@@ -0,0 +1,56 @@
1
+ ///
2
+ /// AudioPlayOptions.kt
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ package com.margelo.nitro.one
9
+
10
+ import androidx.annotation.Keep
11
+ import com.facebook.proguard.annotations.DoNotStrip
12
+ import java.util.Objects
13
+
14
+
15
+ /**
16
+ * Represents the JavaScript object/struct "AudioPlayOptions".
17
+ */
18
+ @DoNotStrip
19
+ @Keep
20
+ data class AudioPlayOptions(
21
+ @DoNotStrip
22
+ @Keep
23
+ val positionMs: Double?,
24
+ @DoNotStrip
25
+ @Keep
26
+ val paused: Boolean?
27
+ ) {
28
+ /* primary constructor */
29
+
30
+ override fun equals(other: Any?): Boolean {
31
+ if (this === other) return true
32
+ if (other !is AudioPlayOptions) return false
33
+ return Objects.deepEquals(this.positionMs, other.positionMs)
34
+ && Objects.deepEquals(this.paused, other.paused)
35
+ }
36
+
37
+ override fun hashCode(): Int {
38
+ return arrayOf<Any?>(
39
+ positionMs,
40
+ paused
41
+ ).contentDeepHashCode()
42
+ }
43
+
44
+ companion object {
45
+ /**
46
+ * Constructor called from C++
47
+ */
48
+ @DoNotStrip
49
+ @Keep
50
+ @Suppress("unused")
51
+ @JvmStatic
52
+ private fun fromCpp(positionMs: Double?, paused: Boolean?): AudioPlayOptions {
53
+ return AudioPlayOptions(positionMs, paused)
54
+ }
55
+ }
56
+ }
@@ -23,7 +23,10 @@ data class AudioRemoteCommandEvent(
23
23
  val type: AudioRemoteCommandType,
24
24
  @DoNotStrip
25
25
  @Keep
26
- val positionMs: Double?
26
+ val positionMs: Double?,
27
+ @DoNotStrip
28
+ @Keep
29
+ val playerId: String?
27
30
  ) {
28
31
  /* primary constructor */
29
32
 
@@ -32,12 +35,14 @@ data class AudioRemoteCommandEvent(
32
35
  if (other !is AudioRemoteCommandEvent) return false
33
36
  return Objects.deepEquals(this.type, other.type)
34
37
  && Objects.deepEquals(this.positionMs, other.positionMs)
38
+ && Objects.deepEquals(this.playerId, other.playerId)
35
39
  }
36
40
 
37
41
  override fun hashCode(): Int {
38
42
  return arrayOf<Any?>(
39
43
  type,
40
- positionMs
44
+ positionMs,
45
+ playerId
41
46
  ).contentDeepHashCode()
42
47
  }
43
48
 
@@ -49,8 +54,8 @@ data class AudioRemoteCommandEvent(
49
54
  @Keep
50
55
  @Suppress("unused")
51
56
  @JvmStatic
52
- private fun fromCpp(type: AudioRemoteCommandType, positionMs: Double?): AudioRemoteCommandEvent {
53
- return AudioRemoteCommandEvent(type, positionMs)
57
+ private fun fromCpp(type: AudioRemoteCommandType, positionMs: Double?, playerId: String?): AudioRemoteCommandEvent {
58
+ return AudioRemoteCommandEvent(type, positionMs, playerId)
54
59
  }
55
60
  }
56
61
  }
@@ -27,131 +27,139 @@ import com.margelo.nitro.core.HybridObject
27
27
  )
28
28
  abstract class HybridOneAudioSpec: HybridObject() {
29
29
  // Properties
30
-
30
+
31
31
 
32
32
  // Methods
33
33
  @DoNotStrip
34
34
  @Keep
35
35
  abstract fun getRecordingPermissionStatus(): Promise<AudioRecordingPermission>
36
-
36
+
37
37
  @DoNotStrip
38
38
  @Keep
39
39
  abstract fun requestRecordingPermission(): Promise<AudioRecordingPermission>
40
-
40
+
41
41
  @DoNotStrip
42
42
  @Keep
43
- abstract fun play(uri: String): Promise<AudioPlaybackStatus>
44
-
43
+ abstract fun play(uri: String, options: AudioPlayOptions): Promise<AudioPlaybackStatus>
44
+
45
45
  @DoNotStrip
46
46
  @Keep
47
47
  abstract fun getPlaybackStatus(): Promise<AudioPlaybackStatus>
48
-
48
+
49
49
  @DoNotStrip
50
50
  @Keep
51
51
  abstract fun pause(): Promise<AudioPlaybackStatus>
52
-
52
+
53
53
  @DoNotStrip
54
54
  @Keep
55
55
  abstract fun resume(): Promise<AudioPlaybackStatus>
56
-
56
+
57
57
  @DoNotStrip
58
58
  @Keep
59
59
  abstract fun seek(positionMs: Double): Promise<AudioPlaybackStatus>
60
-
60
+
61
61
  @DoNotStrip
62
62
  @Keep
63
63
  abstract fun stop(): Promise<Unit>
64
-
64
+
65
65
  @DoNotStrip
66
66
  @Keep
67
67
  abstract fun startRecording(): Promise<AudioRecordingStatus>
68
-
68
+
69
69
  @DoNotStrip
70
70
  @Keep
71
71
  abstract fun getRecordingStatus(): Promise<AudioRecordingStatus>
72
-
72
+
73
73
  @DoNotStrip
74
74
  @Keep
75
75
  abstract fun pauseRecording(): Promise<AudioRecordingStatus>
76
-
76
+
77
77
  @DoNotStrip
78
78
  @Keep
79
79
  abstract fun resumeRecording(): Promise<AudioRecordingStatus>
80
-
80
+
81
81
  @DoNotStrip
82
82
  @Keep
83
83
  abstract fun stopRecording(): Promise<AudioRecordingResult>
84
-
84
+
85
85
  abstract fun addInterruptionListener(onEvent: (event: AudioInterruptionEvent) -> Unit): () -> Unit
86
-
86
+
87
87
  @DoNotStrip
88
88
  @Keep
89
89
  private fun addInterruptionListener_cxx(onEvent: Func_void_AudioInterruptionEvent): Func_void {
90
90
  val __result = addInterruptionListener(onEvent)
91
91
  return Func_void_java(__result)
92
92
  }
93
-
93
+
94
94
  @DoNotStrip
95
95
  @Keep
96
96
  abstract fun setNowPlayingInfo(info: AudioNowPlayingInfo): Promise<Unit>
97
-
97
+
98
98
  @DoNotStrip
99
99
  @Keep
100
100
  abstract fun clearNowPlayingInfo(): Promise<Unit>
101
-
101
+
102
102
  abstract fun addRemoteCommandListener(onEvent: (event: AudioRemoteCommandEvent) -> Unit): () -> Unit
103
-
103
+
104
104
  @DoNotStrip
105
105
  @Keep
106
106
  private fun addRemoteCommandListener_cxx(onEvent: Func_void_AudioRemoteCommandEvent): Func_void {
107
107
  val __result = addRemoteCommandListener(onEvent)
108
108
  return Func_void_java(__result)
109
109
  }
110
-
110
+
111
111
  @DoNotStrip
112
112
  @Keep
113
113
  abstract fun createPlayer(sourceUri: String?, headers: Map<String, String>?): String
114
-
114
+
115
115
  @DoNotStrip
116
116
  @Keep
117
117
  abstract fun playerPlay(playerId: String): Unit
118
-
118
+
119
119
  @DoNotStrip
120
120
  @Keep
121
121
  abstract fun playerPause(playerId: String): Unit
122
-
122
+
123
123
  @DoNotStrip
124
124
  @Keep
125
125
  abstract fun playerSeek(playerId: String, seconds: Double, toleranceBeforeMs: Double?, toleranceAfterMs: Double?): Promise<Unit>
126
-
126
+
127
127
  @DoNotStrip
128
128
  @Keep
129
129
  abstract fun playerReplace(playerId: String, sourceUri: String?, headers: Map<String, String>?): Unit
130
-
130
+
131
131
  @DoNotStrip
132
132
  @Keep
133
133
  abstract fun removePlayer(playerId: String): Unit
134
-
134
+
135
+ @DoNotStrip
136
+ @Keep
137
+ abstract fun setPlayerNowPlayingInfo(playerId: String, info: AudioNowPlayingInfo): Promise<Unit>
138
+
139
+ @DoNotStrip
140
+ @Keep
141
+ abstract fun clearPlayerNowPlayingInfo(playerId: String): Promise<Unit>
142
+
135
143
  @DoNotStrip
136
144
  @Keep
137
145
  abstract fun getPlayerStatus(playerId: String): AudioPlayerStatus
138
-
146
+
139
147
  @DoNotStrip
140
148
  @Keep
141
149
  abstract fun setPlayerRate(playerId: String, rate: Double, pitchQuality: PitchCorrectionQuality?): Unit
142
-
150
+
143
151
  @DoNotStrip
144
152
  @Keep
145
153
  abstract fun setPlayerVolume(playerId: String, volume: Double): Unit
146
-
154
+
147
155
  @DoNotStrip
148
156
  @Keep
149
157
  abstract fun setPlayerMuted(playerId: String, muted: Boolean): Unit
150
-
158
+
151
159
  @DoNotStrip
152
160
  @Keep
153
161
  abstract fun setPlayerLoop(playerId: String, loop: Boolean): Unit
154
-
162
+
155
163
  @DoNotStrip
156
164
  @Keep
157
165
  abstract fun setPlayerPitchCorrection(playerId: String, enabled: Boolean): Unit
@@ -36,6 +36,8 @@ namespace margelo::nitro::one { struct AudioInterruptionEvent; }
36
36
  namespace margelo::nitro::one { enum class AudioInterruptionType; }
37
37
  // Forward declaration of `AudioNowPlayingInfo` to properly resolve imports.
38
38
  namespace margelo::nitro::one { struct AudioNowPlayingInfo; }
39
+ // Forward declaration of `AudioPlayOptions` to properly resolve imports.
40
+ namespace margelo::nitro::one { struct AudioPlayOptions; }
39
41
  // Forward declaration of `AudioPlaybackState` to properly resolve imports.
40
42
  namespace margelo::nitro::one { enum class AudioPlaybackState; }
41
43
  // Forward declaration of `AudioPlaybackStatus` to properly resolve imports.
@@ -486,6 +488,7 @@ namespace margelo::nitro::one { enum class UserInterfaceSizeClass; }
486
488
  #include "AudioInterruptionEvent.hpp"
487
489
  #include "AudioInterruptionType.hpp"
488
490
  #include "AudioNowPlayingInfo.hpp"
491
+ #include "AudioPlayOptions.hpp"
489
492
  #include "AudioPlaybackState.hpp"
490
493
  #include "AudioPlaybackStatus.hpp"
491
494
  #include "AudioPlayerStatus.hpp"
@@ -18,6 +18,8 @@ namespace margelo::nitro::one { enum class AudioRecordingPermission; }
18
18
  namespace margelo::nitro::one { struct AudioPlaybackStatus; }
19
19
  // Forward declaration of `AudioPlaybackState` to properly resolve imports.
20
20
  namespace margelo::nitro::one { enum class AudioPlaybackState; }
21
+ // Forward declaration of `AudioPlayOptions` to properly resolve imports.
22
+ namespace margelo::nitro::one { struct AudioPlayOptions; }
21
23
  // Forward declaration of `AudioRecordingStatus` to properly resolve imports.
22
24
  namespace margelo::nitro::one { struct AudioRecordingStatus; }
23
25
  // Forward declaration of `AudioRecordingState` to properly resolve imports.
@@ -45,6 +47,7 @@ namespace margelo::nitro::one { enum class PitchCorrectionQuality; }
45
47
  #include "AudioPlaybackState.hpp"
46
48
  #include <string>
47
49
  #include <optional>
50
+ #include "AudioPlayOptions.hpp"
48
51
  #include "AudioRecordingStatus.hpp"
49
52
  #include "AudioRecordingState.hpp"
50
53
  #include "AudioRecordingResult.hpp"
@@ -124,8 +127,8 @@ namespace margelo::nitro::one {
124
127
  auto __value = std::move(__result.value());
125
128
  return __value;
126
129
  }
127
- inline std::shared_ptr<Promise<AudioPlaybackStatus>> play(const std::string& uri) override {
128
- auto __result = _swiftPart.play(uri);
130
+ inline std::shared_ptr<Promise<AudioPlaybackStatus>> play(const std::string& uri, const AudioPlayOptions& options) override {
131
+ auto __result = _swiftPart.play(uri, std::forward<decltype(options)>(options));
129
132
  if (__result.hasError()) [[unlikely]] {
130
133
  std::rethrow_exception(__result.error());
131
134
  }
@@ -284,6 +287,22 @@ namespace margelo::nitro::one {
284
287
  std::rethrow_exception(__result.error());
285
288
  }
286
289
  }
290
+ inline std::shared_ptr<Promise<void>> setPlayerNowPlayingInfo(const std::string& playerId, const AudioNowPlayingInfo& info) override {
291
+ auto __result = _swiftPart.setPlayerNowPlayingInfo(playerId, std::forward<decltype(info)>(info));
292
+ if (__result.hasError()) [[unlikely]] {
293
+ std::rethrow_exception(__result.error());
294
+ }
295
+ auto __value = std::move(__result.value());
296
+ return __value;
297
+ }
298
+ inline std::shared_ptr<Promise<void>> clearPlayerNowPlayingInfo(const std::string& playerId) override {
299
+ auto __result = _swiftPart.clearPlayerNowPlayingInfo(playerId);
300
+ if (__result.hasError()) [[unlikely]] {
301
+ std::rethrow_exception(__result.error());
302
+ }
303
+ auto __value = std::move(__result.value());
304
+ return __value;
305
+ }
287
306
  inline AudioPlayerStatus getPlayerStatus(const std::string& playerId) override {
288
307
  auto __result = _swiftPart.getPlayerStatus(playerId);
289
308
  if (__result.hasError()) [[unlikely]] {
@@ -0,0 +1,60 @@
1
+ ///
2
+ /// AudioPlayOptions.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ import NitroModules
9
+
10
+ /**
11
+ * Represents an instance of `AudioPlayOptions`, backed by a C++ struct.
12
+ */
13
+ public typealias AudioPlayOptions = margelo.nitro.one.AudioPlayOptions
14
+
15
+ public extension AudioPlayOptions {
16
+ private typealias bridge = margelo.nitro.one.bridge.swift
17
+
18
+ /**
19
+ * Create a new instance of `AudioPlayOptions`.
20
+ */
21
+ init(positionMs: Double?, paused: Bool?) {
22
+ self.init({ () -> bridge.std__optional_double_ in
23
+ if let __unwrappedValue = positionMs {
24
+ return bridge.create_std__optional_double_(__unwrappedValue)
25
+ } else {
26
+ return .init()
27
+ }
28
+ }(), { () -> bridge.std__optional_bool_ in
29
+ if let __unwrappedValue = paused {
30
+ return bridge.create_std__optional_bool_(__unwrappedValue)
31
+ } else {
32
+ return .init()
33
+ }
34
+ }())
35
+ }
36
+
37
+ @inline(__always)
38
+ var positionMs: Double? {
39
+ return { () -> Double? in
40
+ if bridge.has_value_std__optional_double_(self.__positionMs) {
41
+ let __unwrapped = bridge.get_std__optional_double_(self.__positionMs)
42
+ return __unwrapped
43
+ } else {
44
+ return nil
45
+ }
46
+ }()
47
+ }
48
+
49
+ @inline(__always)
50
+ var paused: Bool? {
51
+ return { () -> Bool? in
52
+ if bridge.has_value_std__optional_bool_(self.__paused) {
53
+ let __unwrapped = bridge.get_std__optional_bool_(self.__paused)
54
+ return __unwrapped
55
+ } else {
56
+ return nil
57
+ }
58
+ }()
59
+ }
60
+ }
@@ -18,13 +18,19 @@ public extension AudioRemoteCommandEvent {
18
18
  /**
19
19
  * Create a new instance of `AudioRemoteCommandEvent`.
20
20
  */
21
- init(type: AudioRemoteCommandType, positionMs: Double?) {
21
+ init(type: AudioRemoteCommandType, positionMs: Double?, playerId: String?) {
22
22
  self.init(type, { () -> bridge.std__optional_double_ in
23
23
  if let __unwrappedValue = positionMs {
24
24
  return bridge.create_std__optional_double_(__unwrappedValue)
25
25
  } else {
26
26
  return .init()
27
27
  }
28
+ }(), { () -> bridge.std__optional_std__string_ in
29
+ if let __unwrappedValue = playerId {
30
+ return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
31
+ } else {
32
+ return .init()
33
+ }
28
34
  }())
29
35
  }
30
36
 
@@ -44,4 +50,16 @@ public extension AudioRemoteCommandEvent {
44
50
  }
45
51
  }()
46
52
  }
53
+
54
+ @inline(__always)
55
+ var playerId: String? {
56
+ return { () -> String? in
57
+ if bridge.has_value_std__optional_std__string_(self.__playerId) {
58
+ let __unwrapped = bridge.get_std__optional_std__string_(self.__playerId)
59
+ return String(__unwrapped)
60
+ } else {
61
+ return nil
62
+ }
63
+ }()
64
+ }
47
65
  }
@@ -15,7 +15,7 @@ public protocol HybridOneAudioSpec_protocol: HybridObject {
15
15
  // Methods
16
16
  func getRecordingPermissionStatus() throws -> Promise<AudioRecordingPermission>
17
17
  func requestRecordingPermission() throws -> Promise<AudioRecordingPermission>
18
- func play(uri: String) throws -> Promise<AudioPlaybackStatus>
18
+ func play(uri: String, options: AudioPlayOptions) throws -> Promise<AudioPlaybackStatus>
19
19
  func getPlaybackStatus() throws -> Promise<AudioPlaybackStatus>
20
20
  func pause() throws -> Promise<AudioPlaybackStatus>
21
21
  func resume() throws -> Promise<AudioPlaybackStatus>
@@ -36,6 +36,8 @@ public protocol HybridOneAudioSpec_protocol: HybridObject {
36
36
  func playerSeek(playerId: String, seconds: Double, toleranceBeforeMs: Double?, toleranceAfterMs: Double?) throws -> Promise<Void>
37
37
  func playerReplace(playerId: String, sourceUri: String?, headers: Dictionary<String, String>?) throws -> Void
38
38
  func removePlayer(playerId: String) throws -> Void
39
+ func setPlayerNowPlayingInfo(playerId: String, info: AudioNowPlayingInfo) throws -> Promise<Void>
40
+ func clearPlayerNowPlayingInfo(playerId: String) throws -> Promise<Void>
39
41
  func getPlayerStatus(playerId: String) throws -> AudioPlayerStatus
40
42
  func setPlayerRate(playerId: String, rate: Double, pitchQuality: PitchCorrectionQuality?) throws -> Void
41
43
  func setPlayerVolume(playerId: String, volume: Double) throws -> Void