refactor: ♻️ error handling for permission and window

This commit is contained in:
Ahmet Kaan Gümüş 2025-05-06 04:58:03 +03:00
parent 97ff087111
commit 604806670e
3 changed files with 8 additions and 3 deletions

View file

@ -1,11 +1,14 @@
use protocol::Error;
pub mod gui;
pub mod media;
pub mod webrtc;
pub mod signal;
pub mod webrtc;
pub async fn sleep(timeout: u16) {
let sleep_promise = web_sys::js_sys::Promise::new(&mut |resolve, _| {
web_sys::window()
.ok_or(Error::Window)
.unwrap()
.set_timeout_with_callback_and_timeout_and_arguments_0(&resolve, timeout as i32)
.unwrap();

View file

@ -13,7 +13,7 @@ use crate::webrtc::WebRTC;
pub async fn get_audio_stream() -> Result<MediaStream, Error> {
let media_devices = window()
.ok_or(Error::MediaStream("Accessing Window".to_owned()))?
.ok_or(Error::Window)?
.navigator()
.media_devices()
.map_err(|err_val| Error::MediaStream(format!("{:?}", err_val)))?;
@ -31,7 +31,7 @@ pub async fn get_audio_stream() -> Result<MediaStream, Error> {
.map_err(|err_val| Error::MediaStream(format!("{:?}", err_val)))?;
let media_stream = JsFuture::from(media_stream_promise)
.await
.map_err(|err_val| Error::MediaStream(format!("{:?}", err_val)))?;
.map_err(|err_val| Error::Permission(format!("{:?}", err_val)))?;
let media_stream = media_stream.unchecked_ref::<MediaStream>();
let audio_stream_tracks = media_stream.get_audio_tracks();

View file

@ -10,6 +10,7 @@ pub struct User {
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Error {
Window,
Permission(String),
MediaPlay(String),
MediaStream(String),
@ -42,6 +43,7 @@ impl std::error::Error for Error {
impl Display for Error {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Error::Window => write!(f, "Window"),
Error::Permission(permission_cause) => write!(f, "Permission | {}", permission_cause),
Error::MediaPlay(err_val) => write!(f, "Media Play | {}", err_val),
Error::MediaStream(err_val) => write!(f, "Media Stream | {}", err_val),