@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.
- package/ios/hybrid/HybridNowPlayingTemplate.swift +90 -0
- package/ios/templates/NowPlayingTemplate.swift +191 -0
- package/lib/specs/NowPlayingTemplate.nitro.d.ts +6 -0
- package/lib/templates/NowPlayingTemplate.d.ts +8 -0
- package/lib/templates/NowPlayingTemplate.js +18 -0
- package/nitrogen/generated/android/ReactNativeAutoPlayOnLoad.cpp +2 -0
- package/nitrogen/generated/android/c++/JFunc_void_double_double.hpp +75 -0
- package/nitrogen/generated/android/c++/JHybridNowPlayingTemplateSpec.cpp +92 -0
- package/nitrogen/generated/android/c++/JHybridNowPlayingTemplateSpec.hpp +6 -0
- package/nitrogen/generated/android/c++/JNowPlayingTemplateConfig.hpp +27 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_double_double.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridNowPlayingTemplateSpec.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NowPlayingTemplateConfig.kt +11 -5
- package/nitrogen/generated/ios/ReactNativeAutoPlay-Swift-Cxx-Bridge.cpp +8 -0
- package/nitrogen/generated/ios/ReactNativeAutoPlay-Swift-Cxx-Bridge.hpp +58 -0
- package/nitrogen/generated/ios/c++/HybridNowPlayingTemplateSpecSwift.hpp +48 -0
- package/nitrogen/generated/ios/swift/Func_void_bool.swift +5 -5
- package/nitrogen/generated/ios/swift/Func_void_double_double.swift +47 -0
- package/nitrogen/generated/ios/swift/HybridNowPlayingTemplateSpec.swift +6 -0
- package/nitrogen/generated/ios/swift/HybridNowPlayingTemplateSpec_cxx.swift +114 -0
- package/nitrogen/generated/ios/swift/NowPlayingTemplateConfig.swift +83 -1
- package/nitrogen/generated/shared/c++/HybridNowPlayingTemplateSpec.cpp +6 -0
- package/nitrogen/generated/shared/c++/HybridNowPlayingTemplateSpec.hpp +6 -0
- package/nitrogen/generated/shared/c++/NowPlayingTemplateConfig.hpp +10 -2
- package/package.json +1 -1
- package/src/specs/NowPlayingTemplate.nitro.ts +8 -0
- 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 `(_
|
|
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: (_
|
|
18
|
+
private let closure: (_ value: Bool) -> Void
|
|
19
19
|
|
|
20
|
-
public init(_ closure: @escaping (_
|
|
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(
|
|
26
|
-
self.closure(
|
|
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
|
}
|