use derive_more::From;
use js_sys::Promise;
use wasm_bindgen::prelude::*;
use wasm_bindgen_futures::future_to_promise;
use crate::{
api::{MediaKind, MediaSourceKind},
media::track::local,
};
#[wasm_bindgen]
#[derive(Debug, From)]
pub struct LocalMediaTrack(local::LocalMediaTrack);
#[wasm_bindgen]
impl LocalMediaTrack {
#[must_use]
pub fn get_track(&self) -> web_sys::MediaStreamTrack {
Clone::clone(self.0.get_track().as_ref())
}
#[must_use]
pub fn kind(&self) -> MediaKind {
self.0.kind().into()
}
#[expect(clippy::allow_attributes, reason = "`#[expect]` doesn't work")]
#[allow(clippy::as_conversions, reason = "needs refactoring")]
pub fn state(&self) -> Promise {
let this = self.0.clone();
future_to_promise(
async move { Ok(JsValue::from(this.state().await as u8)) },
)
}
#[must_use]
pub fn media_source_kind(&self) -> MediaSourceKind {
self.0.media_source_kind().into()
}
}