mirror of
https://github.com/zoriya/react-native-omni.git
synced 2026-08-06 14:16:58 +00:00
fix(provider): make source optional
This commit is contained in:
@@ -24,12 +24,12 @@ namespace margelo::nitro::omni { enum class MixAudioMode; }
|
||||
#include "HybridOmniPlayerSpec.hpp"
|
||||
#include "JHybridOmniPlayerSpec.hpp"
|
||||
#include "Source.hpp"
|
||||
#include <optional>
|
||||
#include "JSource.hpp"
|
||||
#include "VideoSrc.hpp"
|
||||
#include <vector>
|
||||
#include "JVideoSrc.hpp"
|
||||
#include <string>
|
||||
#include <optional>
|
||||
#include <unordered_map>
|
||||
#include "Subtitle.hpp"
|
||||
#include "JSubtitle.hpp"
|
||||
@@ -71,9 +71,9 @@ namespace margelo::nitro::omni {
|
||||
|
||||
|
||||
// Methods
|
||||
std::shared_ptr<HybridOmniPlayerSpec> JHybridOmniPlayerFactorySpec::createPlayer(const Source& props) {
|
||||
std::shared_ptr<HybridOmniPlayerSpec> JHybridOmniPlayerFactorySpec::createPlayer(const std::optional<Source>& props) {
|
||||
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridOmniPlayerSpec::JavaPart>(jni::alias_ref<JSource> /* props */)>("createPlayer");
|
||||
auto __result = method(_javaPart, JSource::fromCpp(props));
|
||||
auto __result = method(_javaPart, props.has_value() ? JSource::fromCpp(props.value()) : nullptr);
|
||||
return __result->getJHybridOmniPlayerSpec();
|
||||
}
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace margelo::nitro::omni {
|
||||
|
||||
public:
|
||||
// Methods
|
||||
std::shared_ptr<HybridOmniPlayerSpec> createPlayer(const Source& props) override;
|
||||
std::shared_ptr<HybridOmniPlayerSpec> createPlayer(const std::optional<Source>& props) override;
|
||||
|
||||
private:
|
||||
jni::global_ref<JHybridOmniPlayerFactorySpec::JavaPart> _javaPart;
|
||||
|
||||
+2
-2
@@ -232,9 +232,9 @@ namespace margelo::nitro::omni {
|
||||
}
|
||||
|
||||
// Methods
|
||||
void JHybridOmniPlayerSpec::setSource(const Source& src) {
|
||||
void JHybridOmniPlayerSpec::setSource(const std::optional<Source>& src) {
|
||||
static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JSource> /* src */)>("setSource");
|
||||
method(_javaPart, JSource::fromCpp(src));
|
||||
method(_javaPart, src.has_value() ? JSource::fromCpp(src.value()) : nullptr);
|
||||
}
|
||||
void JHybridOmniPlayerSpec::play() {
|
||||
static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("play");
|
||||
|
||||
+1
-1
@@ -76,7 +76,7 @@ namespace margelo::nitro::omni {
|
||||
|
||||
public:
|
||||
// Methods
|
||||
void setSource(const Source& src) override;
|
||||
void setSource(const std::optional<Source>& src) override;
|
||||
void play() override;
|
||||
void pause() override;
|
||||
void seekBy(double offset) override;
|
||||
|
||||
+5
-1
@@ -54,6 +54,8 @@ namespace margelo::nitro::omni {
|
||||
jni::local_ref<JMetadata> metadata = this->getFieldValue(fieldMetadata);
|
||||
static const auto fieldMixAudio = clazz->getField<JMixAudioMode>("mixAudio");
|
||||
jni::local_ref<JMixAudioMode> mixAudio = this->getFieldValue(fieldMixAudio);
|
||||
static const auto fieldCastId = clazz->getField<jni::JString>("castId");
|
||||
jni::local_ref<jni::JString> castId = this->getFieldValue(fieldCastId);
|
||||
static const auto fieldCastData = clazz->getField<jni::JMap<jni::JString, jni::JString>>("castData");
|
||||
jni::local_ref<jni::JMap<jni::JString, jni::JString>> castData = this->getFieldValue(fieldCastData);
|
||||
return Source(
|
||||
@@ -90,6 +92,7 @@ namespace margelo::nitro::omni {
|
||||
}(fonts)) : std::nullopt,
|
||||
metadata != nullptr ? std::make_optional(metadata->toCpp()) : std::nullopt,
|
||||
mixAudio != nullptr ? std::make_optional(mixAudio->toCpp()) : std::nullopt,
|
||||
castId != nullptr ? std::make_optional(castId->toStdString()) : std::nullopt,
|
||||
castData != nullptr ? std::make_optional([&]() {
|
||||
std::unordered_map<std::string, std::string> __map;
|
||||
__map.reserve(castData->size());
|
||||
@@ -107,7 +110,7 @@ namespace margelo::nitro::omni {
|
||||
*/
|
||||
[[maybe_unused]]
|
||||
static jni::local_ref<JSource::javaobject> fromCpp(const Source& value) {
|
||||
using JSignature = JSource(jni::alias_ref<jni::JArrayClass<JVideoSrc>>, jni::alias_ref<jni::JDouble>, jni::alias_ref<jni::JArrayClass<JSubtitle>>, jni::alias_ref<jni::JArrayClass<jni::JString>>, jni::alias_ref<JMetadata>, jni::alias_ref<JMixAudioMode>, jni::alias_ref<jni::JMap<jni::JString, jni::JString>>);
|
||||
using JSignature = JSource(jni::alias_ref<jni::JArrayClass<JVideoSrc>>, jni::alias_ref<jni::JDouble>, jni::alias_ref<jni::JArrayClass<JSubtitle>>, jni::alias_ref<jni::JArrayClass<jni::JString>>, jni::alias_ref<JMetadata>, jni::alias_ref<JMixAudioMode>, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JMap<jni::JString, jni::JString>>);
|
||||
static const auto clazz = javaClassStatic();
|
||||
static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
|
||||
return create(
|
||||
@@ -145,6 +148,7 @@ namespace margelo::nitro::omni {
|
||||
}(value.fonts.value()) : nullptr,
|
||||
value.metadata.has_value() ? JMetadata::fromCpp(value.metadata.value()) : nullptr,
|
||||
value.mixAudio.has_value() ? JMixAudioMode::fromCpp(value.mixAudio.value()) : nullptr,
|
||||
value.castId.has_value() ? jni::make_jstring(value.castId.value()) : nullptr,
|
||||
value.castData.has_value() ? [&]() -> jni::local_ref<jni::JMap<jni::JString, jni::JString>> {
|
||||
auto __map = jni::JHashMap<jni::JString, jni::JString>::create(value.castData.value().size());
|
||||
for (const auto& __entry : value.castData.value()) {
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ abstract class HybridOmniPlayerFactorySpec: HybridObject() {
|
||||
// Methods
|
||||
@DoNotStrip
|
||||
@Keep
|
||||
abstract fun createPlayer(props: Source): HybridOmniPlayerSpec
|
||||
abstract fun createPlayer(props: Source?): HybridOmniPlayerSpec
|
||||
|
||||
// Default implementation of `HybridObject.toString()`
|
||||
override fun toString(): String {
|
||||
|
||||
+1
-1
@@ -110,7 +110,7 @@ abstract class HybridOmniPlayerSpec: HybridObject() {
|
||||
// Methods
|
||||
@DoNotStrip
|
||||
@Keep
|
||||
abstract fun setSource(src: Source): Unit
|
||||
abstract fun setSource(src: Source?): Unit
|
||||
|
||||
@DoNotStrip
|
||||
@Keep
|
||||
|
||||
@@ -38,6 +38,9 @@ data class Source(
|
||||
val mixAudio: MixAudioMode?,
|
||||
@DoNotStrip
|
||||
@Keep
|
||||
val castId: String?,
|
||||
@DoNotStrip
|
||||
@Keep
|
||||
val castData: Map<String, String>?
|
||||
) {
|
||||
/* primary constructor */
|
||||
@@ -51,6 +54,7 @@ data class Source(
|
||||
&& Objects.deepEquals(this.fonts, other.fonts)
|
||||
&& Objects.deepEquals(this.metadata, other.metadata)
|
||||
&& Objects.deepEquals(this.mixAudio, other.mixAudio)
|
||||
&& Objects.deepEquals(this.castId, other.castId)
|
||||
&& Objects.deepEquals(this.castData, other.castData)
|
||||
}
|
||||
|
||||
@@ -62,6 +66,7 @@ data class Source(
|
||||
fonts,
|
||||
metadata,
|
||||
mixAudio,
|
||||
castId,
|
||||
castData
|
||||
).contentDeepHashCode()
|
||||
}
|
||||
@@ -74,8 +79,8 @@ data class Source(
|
||||
@Keep
|
||||
@Suppress("unused")
|
||||
@JvmStatic
|
||||
private fun fromCpp(src: Array<VideoSrc>, startTime: Double?, subtitles: Array<Subtitle>, fonts: Array<String>?, metadata: Metadata?, mixAudio: MixAudioMode?, castData: Map<String, String>?): Source {
|
||||
return Source(src, startTime, subtitles, fonts, metadata, mixAudio, castData)
|
||||
private fun fromCpp(src: Array<VideoSrc>, startTime: Double?, subtitles: Array<Subtitle>, fonts: Array<String>?, metadata: Metadata?, mixAudio: MixAudioMode?, castId: String?, castData: Map<String, String>?): Source {
|
||||
return Source(src, startTime, subtitles, fonts, metadata, mixAudio, castId, castData)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user