pub mod connection_handle;
pub mod err;
pub mod jason;
pub mod local_media_track;
pub mod media_device_details;
pub mod media_manager_handle;
pub mod media_stream_settings;
pub mod member_connection_state;
pub mod reconnect_handle;
pub mod remote_media_track;
pub mod room_close_reason;
pub mod room_handle;
use derive_more::with_trait::Display;
use js_sys::Promise;
use wasm_bindgen::prelude::*;
use wasm_bindgen_futures::future_to_promise;
pub use self::{
connection_handle::ConnectionHandle,
err::Error,
jason::Jason,
local_media_track::LocalMediaTrack,
media_device_details::MediaDeviceDetails,
media_manager_handle::MediaManagerHandle,
media_stream_settings::{
DeviceAudioTrackConstraints, DeviceVideoTrackConstraints,
DisplayAudioTrackConstraints, DisplayVideoTrackConstraints,
MediaStreamSettings,
},
member_connection_state::{
MemberConnectionState, MemberConnectionStateKind,
},
reconnect_handle::ReconnectHandle,
remote_media_track::RemoteMediaTrack,
room_close_reason::RoomCloseReason,
room_handle::RoomHandle,
};
use crate::{api, media, platform};
#[wasm_bindgen]
pub fn set_log_level(level: api::LogLevel) -> Promise {
future_to_promise(async move {
platform::set_log_level(level).await;
Ok(JsValue::UNDEFINED)
})
}
#[wasm_bindgen]
#[derive(Clone, Copy, Debug, Display, Eq, PartialEq)]
pub enum MediaKind {
Audio,
Video,
}
impl From<media::MediaKind> for MediaKind {
fn from(that: media::MediaKind) -> Self {
match that {
media::MediaKind::Audio => Self::Audio,
media::MediaKind::Video => Self::Video,
}
}
}
impl From<MediaKind> for media::MediaKind {
fn from(that: MediaKind) -> Self {
match that {
MediaKind::Audio => Self::Audio,
MediaKind::Video => Self::Video,
}
}
}
#[wasm_bindgen]
#[derive(Clone, Copy, Debug, Display, Eq, PartialEq)]
pub enum MediaDeviceKind {
AudioInput,
VideoInput,
AudioOutput,
}
impl From<media::MediaDeviceKind> for MediaDeviceKind {
fn from(that: media::MediaDeviceKind) -> Self {
use media::MediaDeviceKind as K;
match that {
K::AudioInput => Self::AudioInput,
K::VideoInput => Self::VideoInput,
K::AudioOutput => Self::AudioOutput,
}
}
}
#[wasm_bindgen]
#[derive(Clone, Copy, Debug, Display, Eq, PartialEq)]
pub enum MediaSourceKind {
Device,
Display,
}
impl From<media::MediaSourceKind> for MediaSourceKind {
fn from(that: media::MediaSourceKind) -> Self {
match that {
media::MediaSourceKind::Device => Self::Device,
media::MediaSourceKind::Display => Self::Display,
}
}
}
impl From<MediaSourceKind> for media::MediaSourceKind {
fn from(that: MediaSourceKind) -> Self {
match that {
MediaSourceKind::Device => Self::Device,
MediaSourceKind::Display => Self::Display,
}
}
}
#[wasm_bindgen]
#[derive(Clone, Copy, Debug, Display, Eq, PartialEq)]
pub enum MediaStreamTrackState {
Live,
Ended,
}
impl From<media::MediaStreamTrackState> for MediaStreamTrackState {
fn from(that: media::MediaStreamTrackState) -> Self {
match that {
media::MediaStreamTrackState::Live => Self::Live,
media::MediaStreamTrackState::Ended => Self::Ended,
}
}
}
impl From<MediaStreamTrackState> for media::MediaStreamTrackState {
fn from(that: MediaStreamTrackState) -> Self {
match that {
MediaStreamTrackState::Live => Self::Live,
MediaStreamTrackState::Ended => Self::Ended,
}
}
}
#[wasm_bindgen]
#[derive(Clone, Copy, Debug, Display, Eq, PartialEq)]
pub enum FacingMode {
User,
Environment,
Left,
Right,
}
impl From<media::FacingMode> for FacingMode {
fn from(that: media::FacingMode) -> Self {
use media::FacingMode as M;
match that {
M::User => Self::User,
M::Environment => Self::Environment,
M::Left => Self::Left,
M::Right => Self::Right,
}
}
}
impl From<FacingMode> for media::FacingMode {
fn from(val: FacingMode) -> Self {
match val {
FacingMode::User => Self::User,
FacingMode::Environment => Self::Environment,
FacingMode::Left => Self::Left,
FacingMode::Right => Self::Right,
}
}
}
#[wasm_bindgen]
#[derive(Clone, Copy, Debug, Display, Eq, PartialEq)]
pub enum MediaDirection {
SendRecv,
SendOnly,
RecvOnly,
Inactive,
}
impl From<MediaDirection> for media::MediaDirection {
fn from(val: MediaDirection) -> Self {
match val {
MediaDirection::SendRecv => Self::SendRecv,
MediaDirection::SendOnly => Self::SendOnly,
MediaDirection::RecvOnly => Self::RecvOnly,
MediaDirection::Inactive => Self::Inactive,
}
}
}
impl From<media::MediaDirection> for MediaDirection {
fn from(val: media::MediaDirection) -> Self {
use media::MediaDirection as D;
match val {
D::SendRecv => Self::SendRecv,
D::SendOnly => Self::SendOnly,
D::RecvOnly => Self::RecvOnly,
D::Inactive => Self::Inactive,
}
}
}