@neoskola/auto-play 0.2.18 → 0.3.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.
Files changed (27) hide show
  1. package/ios/hybrid/HybridNowPlayingTemplate.swift +90 -0
  2. package/ios/templates/NowPlayingTemplate.swift +191 -0
  3. package/lib/specs/NowPlayingTemplate.nitro.d.ts +6 -0
  4. package/lib/templates/NowPlayingTemplate.d.ts +8 -0
  5. package/lib/templates/NowPlayingTemplate.js +18 -0
  6. package/nitrogen/generated/android/ReactNativeAutoPlayOnLoad.cpp +2 -0
  7. package/nitrogen/generated/android/c++/JFunc_void_double_double.hpp +75 -0
  8. package/nitrogen/generated/android/c++/JHybridNowPlayingTemplateSpec.cpp +92 -0
  9. package/nitrogen/generated/android/c++/JHybridNowPlayingTemplateSpec.hpp +6 -0
  10. package/nitrogen/generated/android/c++/JNowPlayingTemplateConfig.hpp +27 -2
  11. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_double_double.kt +80 -0
  12. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridNowPlayingTemplateSpec.kt +24 -0
  13. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NowPlayingTemplateConfig.kt +11 -5
  14. package/nitrogen/generated/ios/ReactNativeAutoPlay-Swift-Cxx-Bridge.cpp +8 -0
  15. package/nitrogen/generated/ios/ReactNativeAutoPlay-Swift-Cxx-Bridge.hpp +58 -0
  16. package/nitrogen/generated/ios/c++/HybridNowPlayingTemplateSpecSwift.hpp +48 -0
  17. package/nitrogen/generated/ios/swift/Func_void_bool.swift +5 -5
  18. package/nitrogen/generated/ios/swift/Func_void_double_double.swift +47 -0
  19. package/nitrogen/generated/ios/swift/HybridNowPlayingTemplateSpec.swift +6 -0
  20. package/nitrogen/generated/ios/swift/HybridNowPlayingTemplateSpec_cxx.swift +114 -0
  21. package/nitrogen/generated/ios/swift/NowPlayingTemplateConfig.swift +83 -1
  22. package/nitrogen/generated/shared/c++/HybridNowPlayingTemplateSpec.cpp +6 -0
  23. package/nitrogen/generated/shared/c++/HybridNowPlayingTemplateSpec.hpp +6 -0
  24. package/nitrogen/generated/shared/c++/NowPlayingTemplateConfig.hpp +10 -2
  25. package/package.json +1 -1
  26. package/src/specs/NowPlayingTemplate.nitro.ts +8 -0
  27. package/src/templates/NowPlayingTemplate.ts +26 -0
@@ -20,6 +20,7 @@
20
20
  #include "JDistance.hpp"
21
21
  #include "JDistanceUnits.hpp"
22
22
  #include "JFunc_void.hpp"
23
+ #include "JFunc_void_double_double.hpp"
23
24
  #include "JFunc_void_std__optional_bool_.hpp"
24
25
  #include "JGlyphImage.hpp"
25
26
  #include "JNitroColor.hpp"
@@ -86,6 +87,10 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay {
86
87
  jni::local_ref<JFunc_void::javaobject> onSkipBackward = this->getFieldValue(fieldOnSkipBackward);
87
88
  static const auto fieldOnComplete = clazz->getField<JFunc_void::javaobject>("onComplete");
88
89
  jni::local_ref<JFunc_void::javaobject> onComplete = this->getFieldValue(fieldOnComplete);
90
+ static const auto fieldOnProgressUpdate = clazz->getField<JFunc_void_double_double::javaobject>("onProgressUpdate");
91
+ jni::local_ref<JFunc_void_double_double::javaobject> onProgressUpdate = this->getFieldValue(fieldOnProgressUpdate);
92
+ static const auto fieldOnPlaybackFinished = clazz->getField<JFunc_void::javaobject>("onPlaybackFinished");
93
+ jni::local_ref<JFunc_void::javaobject> onPlaybackFinished = this->getFieldValue(fieldOnPlaybackFinished);
89
94
  return NowPlayingTemplateConfig(
90
95
  id->toStdString(),
91
96
  onWillAppear != nullptr ? std::make_optional([&]() -> std::function<void(std::optional<bool> /* animated */)> {
@@ -184,6 +189,24 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay {
184
189
  auto onCompleteRef = jni::make_global(onComplete);
185
190
  return JNICallable<JFunc_void, void()>(std::move(onCompleteRef));
186
191
  }
192
+ }()) : std::nullopt,
193
+ onProgressUpdate != nullptr ? std::make_optional([&]() -> std::function<void(double /* currentTime */, double /* duration */)> {
194
+ if (onProgressUpdate->isInstanceOf(JFunc_void_double_double_cxx::javaClassStatic())) [[likely]] {
195
+ auto downcast = jni::static_ref_cast<JFunc_void_double_double_cxx::javaobject>(onProgressUpdate);
196
+ return downcast->cthis()->getFunction();
197
+ } else {
198
+ auto onProgressUpdateRef = jni::make_global(onProgressUpdate);
199
+ return JNICallable<JFunc_void_double_double, void(double, double)>(std::move(onProgressUpdateRef));
200
+ }
201
+ }()) : std::nullopt,
202
+ onPlaybackFinished != nullptr ? std::make_optional([&]() -> std::function<void()> {
203
+ if (onPlaybackFinished->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] {
204
+ auto downcast = jni::static_ref_cast<JFunc_void_cxx::javaobject>(onPlaybackFinished);
205
+ return downcast->cthis()->getFunction();
206
+ } else {
207
+ auto onPlaybackFinishedRef = jni::make_global(onPlaybackFinished);
208
+ return JNICallable<JFunc_void, void()>(std::move(onPlaybackFinishedRef));
209
+ }
187
210
  }()) : std::nullopt
188
211
  );
189
212
  }
@@ -194,7 +217,7 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay {
194
217
  */
195
218
  [[maybe_unused]]
196
219
  static jni::local_ref<JNowPlayingTemplateConfig::javaobject> fromCpp(const NowPlayingTemplateConfig& value) {
197
- using JSignature = JNowPlayingTemplateConfig(jni::alias_ref<jni::JString>, jni::alias_ref<JFunc_void_std__optional_bool_::javaobject>, jni::alias_ref<JFunc_void_std__optional_bool_::javaobject>, jni::alias_ref<JFunc_void_std__optional_bool_::javaobject>, jni::alias_ref<JFunc_void_std__optional_bool_::javaobject>, jni::alias_ref<JFunc_void::javaobject>, jni::alias_ref<jni::JDouble>, jni::alias_ref<JAutoText>, jni::alias_ref<JAutoText>, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>, jni::alias_ref<JVariant_GlyphImage_AssetImage>, jboolean, jni::alias_ref<JFunc_void::javaobject>, jni::alias_ref<JFunc_void::javaobject>, jni::alias_ref<JFunc_void::javaobject>, jni::alias_ref<JFunc_void::javaobject>, jni::alias_ref<JFunc_void::javaobject>);
220
+ using JSignature = JNowPlayingTemplateConfig(jni::alias_ref<jni::JString>, jni::alias_ref<JFunc_void_std__optional_bool_::javaobject>, jni::alias_ref<JFunc_void_std__optional_bool_::javaobject>, jni::alias_ref<JFunc_void_std__optional_bool_::javaobject>, jni::alias_ref<JFunc_void_std__optional_bool_::javaobject>, jni::alias_ref<JFunc_void::javaobject>, jni::alias_ref<jni::JDouble>, jni::alias_ref<JAutoText>, jni::alias_ref<JAutoText>, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>, jni::alias_ref<JVariant_GlyphImage_AssetImage>, jboolean, jni::alias_ref<JFunc_void::javaobject>, jni::alias_ref<JFunc_void::javaobject>, jni::alias_ref<JFunc_void::javaobject>, jni::alias_ref<JFunc_void::javaobject>, jni::alias_ref<JFunc_void::javaobject>, jni::alias_ref<JFunc_void_double_double::javaobject>, jni::alias_ref<JFunc_void::javaobject>);
198
221
  static const auto clazz = javaClassStatic();
199
222
  static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
200
223
  return create(
@@ -216,7 +239,9 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay {
216
239
  value.onPause.has_value() ? JFunc_void_cxx::fromCpp(value.onPause.value()) : nullptr,
217
240
  value.onSkipForward.has_value() ? JFunc_void_cxx::fromCpp(value.onSkipForward.value()) : nullptr,
218
241
  value.onSkipBackward.has_value() ? JFunc_void_cxx::fromCpp(value.onSkipBackward.value()) : nullptr,
219
- value.onComplete.has_value() ? JFunc_void_cxx::fromCpp(value.onComplete.value()) : nullptr
242
+ value.onComplete.has_value() ? JFunc_void_cxx::fromCpp(value.onComplete.value()) : nullptr,
243
+ value.onProgressUpdate.has_value() ? JFunc_void_double_double_cxx::fromCpp(value.onProgressUpdate.value()) : nullptr,
244
+ value.onPlaybackFinished.has_value() ? JFunc_void_cxx::fromCpp(value.onPlaybackFinished.value()) : nullptr
220
245
  );
221
246
  }
222
247
  };
@@ -0,0 +1,80 @@
1
+ ///
2
+ /// Func_void_double_double.kt
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ package com.margelo.nitro.swe.iternio.reactnativeautoplay
9
+
10
+ import androidx.annotation.Keep
11
+ import com.facebook.jni.HybridData
12
+ import com.facebook.proguard.annotations.DoNotStrip
13
+ import dalvik.annotation.optimization.FastNative
14
+
15
+
16
+ /**
17
+ * Represents the JavaScript callback `(currentTime: number, duration: number) => void`.
18
+ * This can be either implemented in C++ (in which case it might be a callback coming from JS),
19
+ * or in Kotlin/Java (in which case it is a native callback).
20
+ */
21
+ @DoNotStrip
22
+ @Keep
23
+ @Suppress("ClassName", "RedundantUnitReturnType")
24
+ fun interface Func_void_double_double: (Double, Double) -> Unit {
25
+ /**
26
+ * Call the given JS callback.
27
+ * @throws Throwable if the JS function itself throws an error, or if the JS function/runtime has already been deleted.
28
+ */
29
+ @DoNotStrip
30
+ @Keep
31
+ override fun invoke(currentTime: Double, duration: Double): Unit
32
+ }
33
+
34
+ /**
35
+ * Represents the JavaScript callback `(currentTime: number, duration: number) => void`.
36
+ * This is implemented in C++, via a `std::function<...>`.
37
+ * The callback might be coming from JS.
38
+ */
39
+ @DoNotStrip
40
+ @Keep
41
+ @Suppress(
42
+ "KotlinJniMissingFunction", "unused",
43
+ "RedundantSuppression", "RedundantUnitReturnType", "FunctionName",
44
+ "ConvertSecondaryConstructorToPrimary", "ClassName", "LocalVariableName",
45
+ )
46
+ class Func_void_double_double_cxx: Func_void_double_double {
47
+ @DoNotStrip
48
+ @Keep
49
+ private val mHybridData: HybridData
50
+
51
+ @DoNotStrip
52
+ @Keep
53
+ private constructor(hybridData: HybridData) {
54
+ mHybridData = hybridData
55
+ }
56
+
57
+ @DoNotStrip
58
+ @Keep
59
+ override fun invoke(currentTime: Double, duration: Double): Unit
60
+ = invoke_cxx(currentTime,duration)
61
+
62
+ @FastNative
63
+ private external fun invoke_cxx(currentTime: Double, duration: Double): Unit
64
+ }
65
+
66
+ /**
67
+ * Represents the JavaScript callback `(currentTime: number, duration: number) => void`.
68
+ * This is implemented in Java/Kotlin, via a `(Double, Double) -> Unit`.
69
+ * The callback is always coming from native.
70
+ */
71
+ @DoNotStrip
72
+ @Keep
73
+ @Suppress("ClassName", "RedundantUnitReturnType", "unused")
74
+ class Func_void_double_double_java(private val function: (Double, Double) -> Unit): Func_void_double_double {
75
+ @DoNotStrip
76
+ @Keep
77
+ override fun invoke(currentTime: Double, duration: Double): Unit {
78
+ return this.function(currentTime, duration)
79
+ }
80
+ }
@@ -61,6 +61,30 @@ abstract class HybridNowPlayingTemplateSpec: HybridObject() {
61
61
  @DoNotStrip
62
62
  @Keep
63
63
  abstract fun updateNowPlayingTemplateElapsedTime(templateId: String, elapsedTime: Double, duration: Double): Promise<Unit>
64
+
65
+ @DoNotStrip
66
+ @Keep
67
+ abstract fun playAudio(templateId: String, url: String, startFrom: Double): Promise<Boolean>
68
+
69
+ @DoNotStrip
70
+ @Keep
71
+ abstract fun pauseAudio(templateId: String): Promise<Unit>
72
+
73
+ @DoNotStrip
74
+ @Keep
75
+ abstract fun resumeAudio(templateId: String): Promise<Unit>
76
+
77
+ @DoNotStrip
78
+ @Keep
79
+ abstract fun seekForward(templateId: String, seconds: Double): Promise<Unit>
80
+
81
+ @DoNotStrip
82
+ @Keep
83
+ abstract fun seekBackward(templateId: String, seconds: Double): Promise<Unit>
84
+
85
+ @DoNotStrip
86
+ @Keep
87
+ abstract fun stopAudio(templateId: String): Promise<Unit>
64
88
 
65
89
  private external fun initHybrid(): HybridData
66
90
 
@@ -70,13 +70,19 @@ data class NowPlayingTemplateConfig(
70
70
  val onSkipBackward: Func_void?,
71
71
  @DoNotStrip
72
72
  @Keep
73
- val onComplete: Func_void?
73
+ val onComplete: Func_void?,
74
+ @DoNotStrip
75
+ @Keep
76
+ val onProgressUpdate: Func_void_double_double?,
77
+ @DoNotStrip
78
+ @Keep
79
+ val onPlaybackFinished: Func_void?
74
80
  ) {
75
81
  /**
76
82
  * Create a new instance of NowPlayingTemplateConfig from Kotlin
77
83
  */
78
- constructor(id: String, onWillAppear: ((animated: Boolean?) -> Unit)?, onWillDisappear: ((animated: Boolean?) -> Unit)?, onDidAppear: ((animated: Boolean?) -> Unit)?, onDidDisappear: ((animated: Boolean?) -> Unit)?, onPopped: (() -> Unit)?, autoDismissMs: Double?, title: AutoText, subtitle: AutoText?, courseId: String, lessonId: String, image: Variant_GlyphImage_AssetImage?, isPlaying: Boolean, onPlay: (() -> Unit)?, onPause: (() -> Unit)?, onSkipForward: (() -> Unit)?, onSkipBackward: (() -> Unit)?, onComplete: (() -> Unit)?):
79
- this(id, onWillAppear?.let { Func_void_std__optional_bool__java(it) }, onWillDisappear?.let { Func_void_std__optional_bool__java(it) }, onDidAppear?.let { Func_void_std__optional_bool__java(it) }, onDidDisappear?.let { Func_void_std__optional_bool__java(it) }, onPopped?.let { Func_void_java(it) }, autoDismissMs, title, subtitle, courseId, lessonId, image, isPlaying, onPlay?.let { Func_void_java(it) }, onPause?.let { Func_void_java(it) }, onSkipForward?.let { Func_void_java(it) }, onSkipBackward?.let { Func_void_java(it) }, onComplete?.let { Func_void_java(it) })
84
+ constructor(id: String, onWillAppear: ((animated: Boolean?) -> Unit)?, onWillDisappear: ((animated: Boolean?) -> Unit)?, onDidAppear: ((animated: Boolean?) -> Unit)?, onDidDisappear: ((animated: Boolean?) -> Unit)?, onPopped: (() -> Unit)?, autoDismissMs: Double?, title: AutoText, subtitle: AutoText?, courseId: String, lessonId: String, image: Variant_GlyphImage_AssetImage?, isPlaying: Boolean, onPlay: (() -> Unit)?, onPause: (() -> Unit)?, onSkipForward: (() -> Unit)?, onSkipBackward: (() -> Unit)?, onComplete: (() -> Unit)?, onProgressUpdate: ((currentTime: Double, duration: Double) -> Unit)?, onPlaybackFinished: (() -> Unit)?):
85
+ this(id, onWillAppear?.let { Func_void_std__optional_bool__java(it) }, onWillDisappear?.let { Func_void_std__optional_bool__java(it) }, onDidAppear?.let { Func_void_std__optional_bool__java(it) }, onDidDisappear?.let { Func_void_std__optional_bool__java(it) }, onPopped?.let { Func_void_java(it) }, autoDismissMs, title, subtitle, courseId, lessonId, image, isPlaying, onPlay?.let { Func_void_java(it) }, onPause?.let { Func_void_java(it) }, onSkipForward?.let { Func_void_java(it) }, onSkipBackward?.let { Func_void_java(it) }, onComplete?.let { Func_void_java(it) }, onProgressUpdate?.let { Func_void_double_double_java(it) }, onPlaybackFinished?.let { Func_void_java(it) })
80
86
 
81
87
  private companion object {
82
88
  /**
@@ -86,8 +92,8 @@ data class NowPlayingTemplateConfig(
86
92
  @Keep
87
93
  @Suppress("unused")
88
94
  @JvmStatic
89
- private fun fromCpp(id: String, onWillAppear: Func_void_std__optional_bool_?, onWillDisappear: Func_void_std__optional_bool_?, onDidAppear: Func_void_std__optional_bool_?, onDidDisappear: Func_void_std__optional_bool_?, onPopped: Func_void?, autoDismissMs: Double?, title: AutoText, subtitle: AutoText?, courseId: String, lessonId: String, image: Variant_GlyphImage_AssetImage?, isPlaying: Boolean, onPlay: Func_void?, onPause: Func_void?, onSkipForward: Func_void?, onSkipBackward: Func_void?, onComplete: Func_void?): NowPlayingTemplateConfig {
90
- return NowPlayingTemplateConfig(id, onWillAppear, onWillDisappear, onDidAppear, onDidDisappear, onPopped, autoDismissMs, title, subtitle, courseId, lessonId, image, isPlaying, onPlay, onPause, onSkipForward, onSkipBackward, onComplete)
95
+ private fun fromCpp(id: String, onWillAppear: Func_void_std__optional_bool_?, onWillDisappear: Func_void_std__optional_bool_?, onDidAppear: Func_void_std__optional_bool_?, onDidDisappear: Func_void_std__optional_bool_?, onPopped: Func_void?, autoDismissMs: Double?, title: AutoText, subtitle: AutoText?, courseId: String, lessonId: String, image: Variant_GlyphImage_AssetImage?, isPlaying: Boolean, onPlay: Func_void?, onPause: Func_void?, onSkipForward: Func_void?, onSkipBackward: Func_void?, onComplete: Func_void?, onProgressUpdate: Func_void_double_double?, onPlaybackFinished: Func_void?): NowPlayingTemplateConfig {
96
+ return NowPlayingTemplateConfig(id, onWillAppear, onWillDisappear, onDidAppear, onDidDisappear, onPopped, autoDismissMs, title, subtitle, courseId, lessonId, image, isPlaying, onPlay, onPause, onSkipForward, onSkipBackward, onComplete, onProgressUpdate, onPlaybackFinished)
91
97
  }
92
98
  }
93
99
  }
@@ -357,6 +357,14 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay::bridge::swift {
357
357
  return swiftPart.toUnsafe();
358
358
  }
359
359
 
360
+ // pragma MARK: std::function<void(double /* currentTime */, double /* duration */)>
361
+ Func_void_double_double create_Func_void_double_double(void* NON_NULL swiftClosureWrapper) noexcept {
362
+ auto swiftClosure = ReactNativeAutoPlay::Func_void_double_double::fromUnsafe(swiftClosureWrapper);
363
+ return [swiftClosure = std::move(swiftClosure)](double currentTime, double duration) mutable -> void {
364
+ swiftClosure.call(currentTime, duration);
365
+ };
366
+ }
367
+
360
368
  // pragma MARK: std::shared_ptr<HybridNowPlayingTemplateSpec>
361
369
  std::shared_ptr<HybridNowPlayingTemplateSpec> create_std__shared_ptr_HybridNowPlayingTemplateSpec_(void* NON_NULL swiftUnsafePointer) noexcept {
362
370
  ReactNativeAutoPlay::HybridNowPlayingTemplateSpec_cxx swiftPart = ReactNativeAutoPlay::HybridNowPlayingTemplateSpec_cxx::fromUnsafe(swiftUnsafePointer);
@@ -1663,6 +1663,55 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay::bridge::swift {
1663
1663
  using std__weak_ptr_HybridNeoSkolaTemplateSpec_ = std::weak_ptr<HybridNeoSkolaTemplateSpec>;
1664
1664
  inline std__weak_ptr_HybridNeoSkolaTemplateSpec_ weakify_std__shared_ptr_HybridNeoSkolaTemplateSpec_(const std::shared_ptr<HybridNeoSkolaTemplateSpec>& strong) noexcept { return strong; }
1665
1665
 
1666
+ // pragma MARK: std::function<void(double /* currentTime */, double /* duration */)>
1667
+ /**
1668
+ * Specialized version of `std::function<void(double, double)>`.
1669
+ */
1670
+ using Func_void_double_double = std::function<void(double /* currentTime */, double /* duration */)>;
1671
+ /**
1672
+ * Wrapper class for a `std::function<void(double / * currentTime * /, double / * duration * /)>`, this can be used from Swift.
1673
+ */
1674
+ class Func_void_double_double_Wrapper final {
1675
+ public:
1676
+ explicit Func_void_double_double_Wrapper(std::function<void(double /* currentTime */, double /* duration */)>&& func): _function(std::make_unique<std::function<void(double /* currentTime */, double /* duration */)>>(std::move(func))) {}
1677
+ inline void call(double currentTime, double duration) const noexcept {
1678
+ _function->operator()(currentTime, duration);
1679
+ }
1680
+ private:
1681
+ std::unique_ptr<std::function<void(double /* currentTime */, double /* duration */)>> _function;
1682
+ } SWIFT_NONCOPYABLE;
1683
+ Func_void_double_double create_Func_void_double_double(void* NON_NULL swiftClosureWrapper) noexcept;
1684
+ inline Func_void_double_double_Wrapper wrap_Func_void_double_double(Func_void_double_double value) noexcept {
1685
+ return Func_void_double_double_Wrapper(std::move(value));
1686
+ }
1687
+
1688
+ // pragma MARK: std::optional<std::function<void(double /* currentTime */, double /* duration */)>>
1689
+ /**
1690
+ * Specialized version of `std::optional<std::function<void(double / * currentTime * /, double / * duration * /)>>`.
1691
+ */
1692
+ using std__optional_std__function_void_double____currentTime_____double____duration______ = std::optional<std::function<void(double /* currentTime */, double /* duration */)>>;
1693
+ inline std::optional<std::function<void(double /* currentTime */, double /* duration */)>> create_std__optional_std__function_void_double____currentTime_____double____duration______(const std::function<void(double /* currentTime */, double /* duration */)>& value) noexcept {
1694
+ return std::optional<std::function<void(double /* currentTime */, double /* duration */)>>(value);
1695
+ }
1696
+ inline bool has_value_std__optional_std__function_void_double____currentTime_____double____duration______(const std::optional<std::function<void(double /* currentTime */, double /* duration */)>>& optional) noexcept {
1697
+ return optional.has_value();
1698
+ }
1699
+ inline std::function<void(double /* currentTime */, double /* duration */)> get_std__optional_std__function_void_double____currentTime_____double____duration______(const std::optional<std::function<void(double /* currentTime */, double /* duration */)>>& optional) noexcept {
1700
+ return *optional;
1701
+ }
1702
+
1703
+ // pragma MARK: std::shared_ptr<Promise<bool>>
1704
+ /**
1705
+ * Specialized version of `std::shared_ptr<Promise<bool>>`.
1706
+ */
1707
+ using std__shared_ptr_Promise_bool__ = std::shared_ptr<Promise<bool>>;
1708
+ inline std::shared_ptr<Promise<bool>> create_std__shared_ptr_Promise_bool__() noexcept {
1709
+ return Promise<bool>::create();
1710
+ }
1711
+ inline PromiseHolder<bool> wrap_std__shared_ptr_Promise_bool__(std::shared_ptr<Promise<bool>> promise) noexcept {
1712
+ return PromiseHolder<bool>(std::move(promise));
1713
+ }
1714
+
1666
1715
  // pragma MARK: std::shared_ptr<HybridNowPlayingTemplateSpec>
1667
1716
  /**
1668
1717
  * Specialized version of `std::shared_ptr<HybridNowPlayingTemplateSpec>`.
@@ -1675,6 +1724,15 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay::bridge::swift {
1675
1724
  using std__weak_ptr_HybridNowPlayingTemplateSpec_ = std::weak_ptr<HybridNowPlayingTemplateSpec>;
1676
1725
  inline std__weak_ptr_HybridNowPlayingTemplateSpec_ weakify_std__shared_ptr_HybridNowPlayingTemplateSpec_(const std::shared_ptr<HybridNowPlayingTemplateSpec>& strong) noexcept { return strong; }
1677
1726
 
1727
+ // pragma MARK: Result<std::shared_ptr<Promise<bool>>>
1728
+ using Result_std__shared_ptr_Promise_bool___ = Result<std::shared_ptr<Promise<bool>>>;
1729
+ inline Result_std__shared_ptr_Promise_bool___ create_Result_std__shared_ptr_Promise_bool___(const std::shared_ptr<Promise<bool>>& value) noexcept {
1730
+ return Result<std::shared_ptr<Promise<bool>>>::withValue(value);
1731
+ }
1732
+ inline Result_std__shared_ptr_Promise_bool___ create_Result_std__shared_ptr_Promise_bool___(const std::exception_ptr& error) noexcept {
1733
+ return Result<std::shared_ptr<Promise<bool>>>::withError(error);
1734
+ }
1735
+
1678
1736
  // pragma MARK: std::shared_ptr<HybridSearchTemplateSpec>
1679
1737
  /**
1680
1738
  * Specialized version of `std::shared_ptr<HybridSearchTemplateSpec>`.
@@ -114,6 +114,54 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay {
114
114
  auto __value = std::move(__result.value());
115
115
  return __value;
116
116
  }
117
+ inline std::shared_ptr<Promise<bool>> playAudio(const std::string& templateId, const std::string& url, double startFrom) override {
118
+ auto __result = _swiftPart.playAudio(templateId, url, std::forward<decltype(startFrom)>(startFrom));
119
+ if (__result.hasError()) [[unlikely]] {
120
+ std::rethrow_exception(__result.error());
121
+ }
122
+ auto __value = std::move(__result.value());
123
+ return __value;
124
+ }
125
+ inline std::shared_ptr<Promise<void>> pauseAudio(const std::string& templateId) override {
126
+ auto __result = _swiftPart.pauseAudio(templateId);
127
+ if (__result.hasError()) [[unlikely]] {
128
+ std::rethrow_exception(__result.error());
129
+ }
130
+ auto __value = std::move(__result.value());
131
+ return __value;
132
+ }
133
+ inline std::shared_ptr<Promise<void>> resumeAudio(const std::string& templateId) override {
134
+ auto __result = _swiftPart.resumeAudio(templateId);
135
+ if (__result.hasError()) [[unlikely]] {
136
+ std::rethrow_exception(__result.error());
137
+ }
138
+ auto __value = std::move(__result.value());
139
+ return __value;
140
+ }
141
+ inline std::shared_ptr<Promise<void>> seekForward(const std::string& templateId, double seconds) override {
142
+ auto __result = _swiftPart.seekForward(templateId, std::forward<decltype(seconds)>(seconds));
143
+ if (__result.hasError()) [[unlikely]] {
144
+ std::rethrow_exception(__result.error());
145
+ }
146
+ auto __value = std::move(__result.value());
147
+ return __value;
148
+ }
149
+ inline std::shared_ptr<Promise<void>> seekBackward(const std::string& templateId, double seconds) override {
150
+ auto __result = _swiftPart.seekBackward(templateId, std::forward<decltype(seconds)>(seconds));
151
+ if (__result.hasError()) [[unlikely]] {
152
+ std::rethrow_exception(__result.error());
153
+ }
154
+ auto __value = std::move(__result.value());
155
+ return __value;
156
+ }
157
+ inline std::shared_ptr<Promise<void>> stopAudio(const std::string& templateId) override {
158
+ auto __result = _swiftPart.stopAudio(templateId);
159
+ if (__result.hasError()) [[unlikely]] {
160
+ std::rethrow_exception(__result.error());
161
+ }
162
+ auto __value = std::move(__result.value());
163
+ return __value;
164
+ }
117
165
 
118
166
  private:
119
167
  ReactNativeAutoPlay::HybridNowPlayingTemplateSpec_cxx _swiftPart;
@@ -9,21 +9,21 @@ import Foundation
9
9
  import NitroModules
10
10
 
11
11
  /**
12
- * Wraps a Swift `(_ isPanningInterfaceVisible: Bool) -> Void` as a class.
12
+ * Wraps a Swift `(_ value: Bool) -> Void` as a class.
13
13
  * This class can be used from C++, e.g. to wrap the Swift closure as a `std::function`.
14
14
  */
15
15
  public final class Func_void_bool {
16
16
  public typealias bridge = margelo.nitro.swe.iternio.reactnativeautoplay.bridge.swift
17
17
 
18
- private let closure: (_ isPanningInterfaceVisible: Bool) -> Void
18
+ private let closure: (_ value: Bool) -> Void
19
19
 
20
- public init(_ closure: @escaping (_ isPanningInterfaceVisible: Bool) -> Void) {
20
+ public init(_ closure: @escaping (_ value: Bool) -> Void) {
21
21
  self.closure = closure
22
22
  }
23
23
 
24
24
  @inline(__always)
25
- public func call(isPanningInterfaceVisible: Bool) -> Void {
26
- self.closure(isPanningInterfaceVisible)
25
+ public func call(value: Bool) -> Void {
26
+ self.closure(value)
27
27
  }
28
28
 
29
29
  /**
@@ -0,0 +1,47 @@
1
+ ///
2
+ /// Func_void_double_double.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ import Foundation
9
+ import NitroModules
10
+
11
+ /**
12
+ * Wraps a Swift `(_ currentTime: Double, _ duration: Double) -> Void` as a class.
13
+ * This class can be used from C++, e.g. to wrap the Swift closure as a `std::function`.
14
+ */
15
+ public final class Func_void_double_double {
16
+ public typealias bridge = margelo.nitro.swe.iternio.reactnativeautoplay.bridge.swift
17
+
18
+ private let closure: (_ currentTime: Double, _ duration: Double) -> Void
19
+
20
+ public init(_ closure: @escaping (_ currentTime: Double, _ duration: Double) -> Void) {
21
+ self.closure = closure
22
+ }
23
+
24
+ @inline(__always)
25
+ public func call(currentTime: Double, duration: Double) -> Void {
26
+ self.closure(currentTime, duration)
27
+ }
28
+
29
+ /**
30
+ * Casts this instance to a retained unsafe raw pointer.
31
+ * This acquires one additional strong reference on the object!
32
+ */
33
+ @inline(__always)
34
+ public func toUnsafe() -> UnsafeMutableRawPointer {
35
+ return Unmanaged.passRetained(self).toOpaque()
36
+ }
37
+
38
+ /**
39
+ * Casts an unsafe pointer to a `Func_void_double_double`.
40
+ * The pointer has to be a retained opaque `Unmanaged<Func_void_double_double>`.
41
+ * This removes one strong reference from the object!
42
+ */
43
+ @inline(__always)
44
+ public static func fromUnsafe(_ pointer: UnsafeMutableRawPointer) -> Func_void_double_double {
45
+ return Unmanaged<Func_void_double_double>.fromOpaque(pointer).takeRetainedValue()
46
+ }
47
+ }
@@ -18,6 +18,12 @@ public protocol HybridNowPlayingTemplateSpec_protocol: HybridObject {
18
18
  func updateNowPlayingTemplatePlaybackState(templateId: String, isPlaying: Bool) throws -> Promise<Void>
19
19
  func updateNowPlayingTemplateInfo(templateId: String, title: String, subtitle: String) throws -> Promise<Void>
20
20
  func updateNowPlayingTemplateElapsedTime(templateId: String, elapsedTime: Double, duration: Double) throws -> Promise<Void>
21
+ func playAudio(templateId: String, url: String, startFrom: Double) throws -> Promise<Bool>
22
+ func pauseAudio(templateId: String) throws -> Promise<Void>
23
+ func resumeAudio(templateId: String) throws -> Promise<Void>
24
+ func seekForward(templateId: String, seconds: Double) throws -> Promise<Void>
25
+ func seekBackward(templateId: String, seconds: Double) throws -> Promise<Void>
26
+ func stopAudio(templateId: String) throws -> Promise<Void>
21
27
  }
22
28
 
23
29
  public extension HybridNowPlayingTemplateSpec_protocol {
@@ -184,4 +184,118 @@ open class HybridNowPlayingTemplateSpec_cxx {
184
184
  return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
185
185
  }
186
186
  }
187
+
188
+ @inline(__always)
189
+ public final func playAudio(templateId: std.string, url: std.string, startFrom: Double) -> bridge.Result_std__shared_ptr_Promise_bool___ {
190
+ do {
191
+ let __result = try self.__implementation.playAudio(templateId: String(templateId), url: String(url), startFrom: startFrom)
192
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_bool__ in
193
+ let __promise = bridge.create_std__shared_ptr_Promise_bool__()
194
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_bool__(__promise)
195
+ __result
196
+ .then({ __result in __promiseHolder.resolve(__result) })
197
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
198
+ return __promise
199
+ }()
200
+ return bridge.create_Result_std__shared_ptr_Promise_bool___(__resultCpp)
201
+ } catch (let __error) {
202
+ let __exceptionPtr = __error.toCpp()
203
+ return bridge.create_Result_std__shared_ptr_Promise_bool___(__exceptionPtr)
204
+ }
205
+ }
206
+
207
+ @inline(__always)
208
+ public final func pauseAudio(templateId: std.string) -> bridge.Result_std__shared_ptr_Promise_void___ {
209
+ do {
210
+ let __result = try self.__implementation.pauseAudio(templateId: String(templateId))
211
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_void__ in
212
+ let __promise = bridge.create_std__shared_ptr_Promise_void__()
213
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_void__(__promise)
214
+ __result
215
+ .then({ __result in __promiseHolder.resolve() })
216
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
217
+ return __promise
218
+ }()
219
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__resultCpp)
220
+ } catch (let __error) {
221
+ let __exceptionPtr = __error.toCpp()
222
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
223
+ }
224
+ }
225
+
226
+ @inline(__always)
227
+ public final func resumeAudio(templateId: std.string) -> bridge.Result_std__shared_ptr_Promise_void___ {
228
+ do {
229
+ let __result = try self.__implementation.resumeAudio(templateId: String(templateId))
230
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_void__ in
231
+ let __promise = bridge.create_std__shared_ptr_Promise_void__()
232
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_void__(__promise)
233
+ __result
234
+ .then({ __result in __promiseHolder.resolve() })
235
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
236
+ return __promise
237
+ }()
238
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__resultCpp)
239
+ } catch (let __error) {
240
+ let __exceptionPtr = __error.toCpp()
241
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
242
+ }
243
+ }
244
+
245
+ @inline(__always)
246
+ public final func seekForward(templateId: std.string, seconds: Double) -> bridge.Result_std__shared_ptr_Promise_void___ {
247
+ do {
248
+ let __result = try self.__implementation.seekForward(templateId: String(templateId), seconds: seconds)
249
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_void__ in
250
+ let __promise = bridge.create_std__shared_ptr_Promise_void__()
251
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_void__(__promise)
252
+ __result
253
+ .then({ __result in __promiseHolder.resolve() })
254
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
255
+ return __promise
256
+ }()
257
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__resultCpp)
258
+ } catch (let __error) {
259
+ let __exceptionPtr = __error.toCpp()
260
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
261
+ }
262
+ }
263
+
264
+ @inline(__always)
265
+ public final func seekBackward(templateId: std.string, seconds: Double) -> bridge.Result_std__shared_ptr_Promise_void___ {
266
+ do {
267
+ let __result = try self.__implementation.seekBackward(templateId: String(templateId), seconds: seconds)
268
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_void__ in
269
+ let __promise = bridge.create_std__shared_ptr_Promise_void__()
270
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_void__(__promise)
271
+ __result
272
+ .then({ __result in __promiseHolder.resolve() })
273
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
274
+ return __promise
275
+ }()
276
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__resultCpp)
277
+ } catch (let __error) {
278
+ let __exceptionPtr = __error.toCpp()
279
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
280
+ }
281
+ }
282
+
283
+ @inline(__always)
284
+ public final func stopAudio(templateId: std.string) -> bridge.Result_std__shared_ptr_Promise_void___ {
285
+ do {
286
+ let __result = try self.__implementation.stopAudio(templateId: String(templateId))
287
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_void__ in
288
+ let __promise = bridge.create_std__shared_ptr_Promise_void__()
289
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_void__(__promise)
290
+ __result
291
+ .then({ __result in __promiseHolder.resolve() })
292
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
293
+ return __promise
294
+ }()
295
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__resultCpp)
296
+ } catch (let __error) {
297
+ let __exceptionPtr = __error.toCpp()
298
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
299
+ }
300
+ }
187
301
  }