fix(web): make source a listenable state, fixes the view

This commit is contained in:
2026-07-31 19:43:49 +02:00
parent d2ca76b4a9
commit 0c7c2b3848
21 changed files with 323 additions and 54 deletions
@@ -22,6 +22,8 @@ namespace margelo::nitro::omni {
prototype.registerHybridMethod("removePlayerStatusListener", &HybridOmniEventMapSpec::removePlayerStatusListener);
prototype.registerHybridMethod("addCastStatusListener", &HybridOmniEventMapSpec::addCastStatusListener);
prototype.registerHybridMethod("removeCastStatusListener", &HybridOmniEventMapSpec::removeCastStatusListener);
prototype.registerHybridMethod("addSourceListener", &HybridOmniEventMapSpec::addSourceListener);
prototype.registerHybridMethod("removeSourceListener", &HybridOmniEventMapSpec::removeSourceListener);
prototype.registerHybridMethod("addOnEndListener", &HybridOmniEventMapSpec::addOnEndListener);
prototype.registerHybridMethod("removeOnEndListener", &HybridOmniEventMapSpec::removeOnEndListener);
prototype.registerHybridMethod("addOnPrevListener", &HybridOmniEventMapSpec::addOnPrevListener);
+6 -1
View File
@@ -21,6 +21,8 @@ namespace margelo::nitro::omni { enum class BoolProperty; }
namespace margelo::nitro::omni { enum class PlayerStatus; }
// Forward declaration of `CastStatus` to properly resolve imports.
namespace margelo::nitro::omni { enum class CastStatus; }
// Forward declaration of `Source` to properly resolve imports.
namespace margelo::nitro::omni { struct Source; }
// Forward declaration of `Track` to properly resolve imports.
namespace margelo::nitro::omni { struct Track; }
// Forward declaration of `Rendition` to properly resolve imports.
@@ -31,9 +33,10 @@ namespace margelo::nitro::omni { struct Rendition; }
#include "BoolProperty.hpp"
#include "PlayerStatus.hpp"
#include "CastStatus.hpp"
#include "Source.hpp"
#include <optional>
#include <string>
#include "Track.hpp"
#include <optional>
#include "Rendition.hpp"
namespace margelo::nitro::omni {
@@ -75,6 +78,8 @@ namespace margelo::nitro::omni {
virtual void removePlayerStatusListener(const std::function<void(PlayerStatus /* value */)>& cb) = 0;
virtual void addCastStatusListener(const std::function<void(CastStatus /* value */)>& cb) = 0;
virtual void removeCastStatusListener(const std::function<void(CastStatus /* value */)>& cb) = 0;
virtual void addSourceListener(const std::function<void(const std::optional<Source>& /* value */)>& cb) = 0;
virtual void removeSourceListener(const std::function<void(const std::optional<Source>& /* value */)>& cb) = 0;
virtual void addOnEndListener(const std::function<void()>& cb) = 0;
virtual void removeOnEndListener(const std::function<void()>& cb) = 0;
virtual void addOnPrevListener(const std::function<void()>& cb) = 0;
+2 -2
View File
@@ -17,14 +17,14 @@ namespace margelo::nitro::omni {
prototype.registerHybridGetter("eventMap", &HybridOmniPlayerSpec::getEventMap);
prototype.registerHybridGetter("showNotification", &HybridOmniPlayerSpec::getShowNotification);
prototype.registerHybridSetter("showNotification", &HybridOmniPlayerSpec::setShowNotification);
prototype.registerHybridGetter("source", &HybridOmniPlayerSpec::getSource);
prototype.registerHybridSetter("source", &HybridOmniPlayerSpec::setSource);
prototype.registerHybridGetter("hasPrev", &HybridOmniPlayerSpec::getHasPrev);
prototype.registerHybridGetter("hasNext", &HybridOmniPlayerSpec::getHasNext);
prototype.registerHybridGetter("videos", &HybridOmniPlayerSpec::getVideos);
prototype.registerHybridGetter("audios", &HybridOmniPlayerSpec::getAudios);
prototype.registerHybridGetter("subtitles", &HybridOmniPlayerSpec::getSubtitles);
prototype.registerHybridGetter("rendition", &HybridOmniPlayerSpec::getRendition);
prototype.registerHybridGetter("source", &HybridOmniPlayerSpec::getSource);
prototype.registerHybridSetter("source", &HybridOmniPlayerSpec::setSource);
prototype.registerHybridGetter("status", &HybridOmniPlayerSpec::getStatus);
prototype.registerHybridGetter("isPlaying", &HybridOmniPlayerSpec::getIsPlaying);
prototype.registerHybridGetter("currentTime", &HybridOmniPlayerSpec::getCurrentTime);
+5 -5
View File
@@ -15,12 +15,12 @@
// Forward declaration of `HybridOmniEventMapSpec` to properly resolve imports.
namespace margelo::nitro::omni { class HybridOmniEventMapSpec; }
// Forward declaration of `Source` to properly resolve imports.
namespace margelo::nitro::omni { struct Source; }
// Forward declaration of `Track` to properly resolve imports.
namespace margelo::nitro::omni { struct Track; }
// Forward declaration of `Rendition` to properly resolve imports.
namespace margelo::nitro::omni { struct Rendition; }
// Forward declaration of `Source` to properly resolve imports.
namespace margelo::nitro::omni { struct Source; }
// Forward declaration of `PlayerStatus` to properly resolve imports.
namespace margelo::nitro::omni { enum class PlayerStatus; }
// Forward declaration of `CastStatus` to properly resolve imports.
@@ -29,10 +29,10 @@ namespace margelo::nitro::omni { enum class CastStatus; }
#include <memory>
#include "HybridOmniEventMapSpec.hpp"
#include <optional>
#include "Source.hpp"
#include "Track.hpp"
#include <vector>
#include "Rendition.hpp"
#include "Source.hpp"
#include "PlayerStatus.hpp"
#include "CastStatus.hpp"
@@ -66,14 +66,14 @@ namespace margelo::nitro::omni {
virtual std::shared_ptr<HybridOmniEventMapSpec> getEventMap() = 0;
virtual std::optional<bool> getShowNotification() = 0;
virtual void setShowNotification(std::optional<bool> showNotification) = 0;
virtual std::optional<Source> getSource() = 0;
virtual void setSource(const std::optional<Source>& source) = 0;
virtual bool getHasPrev() = 0;
virtual bool getHasNext() = 0;
virtual std::vector<Track> getVideos() = 0;
virtual std::vector<Track> getAudios() = 0;
virtual std::vector<Track> getSubtitles() = 0;
virtual std::vector<Rendition> getRendition() = 0;
virtual std::optional<Source> getSource() = 0;
virtual void setSource(const std::optional<Source>& source) = 0;
virtual PlayerStatus getStatus() = 0;
virtual bool getIsPlaying() = 0;
virtual double getCurrentTime() = 0;