From 7434d131c492cefbe8ab66d33da838ca84f3d237 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20Kaan=20G=C3=BCm=C3=BC=C5=9F?= Date: Mon, 7 Apr 2025 01:52:52 +0300 Subject: [PATCH] build: :truck: moving to workspace structure --- .gitignore | 4 ++-- Cargo.toml | 28 ++++++------------------ client/Cargo.toml | 22 +++++++++++++++++++ index.html => client/index.html | 0 {src => client/src}/gui.rs | 38 +++++++++++++++++++++++++++------ {src => client/src}/lib.rs | 0 {src => client/src}/main.rs | 0 server/Cargo.toml | 6 ++++++ server/src/main.rs | 3 +++ 9 files changed, 72 insertions(+), 29 deletions(-) create mode 100644 client/Cargo.toml rename index.html => client/index.html (100%) rename {src => client/src}/gui.rs (55%) rename {src => client/src}/lib.rs (100%) rename {src => client/src}/main.rs (100%) create mode 100644 server/Cargo.toml create mode 100644 server/src/main.rs diff --git a/.gitignore b/.gitignore index c25e778..8808037 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -/target -/dist +**/target +**/dist Cargo.lock diff --git a/Cargo.toml b/Cargo.toml index 7279077..42a3da9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,22 +1,8 @@ -[package] -name = "rust_communication" -version = "0.1.0" -edition = "2024" +[workspace] +members = [ + "client", + "server", +] -[dependencies] -console_error_panic_hook = "0.1.7" -leptos = { version = "0.7.8", features = ["csr"] } -wasm-bindgen-futures = "0.4.50" -web-sys = { version = "0.3.77", features = ["AudioBuffer", "AudioBufferSourceNode", "AudioContext", "HtmlAudioElement","MediaDevices", "MediaStream", "MediaStreamConstraints", "MediaStreamTrack", "Navigator", "Window"] } - -[profile] - -[profile.wasm-dev] -inherits = "dev" -opt-level = 1 - -[profile.server-dev] -inherits = "dev" - -[profile.android-dev] -inherits = "dev" +[workspace.dependencies] +serde = "1.0.219" diff --git a/client/Cargo.toml b/client/Cargo.toml new file mode 100644 index 0000000..e85a801 --- /dev/null +++ b/client/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "rust_communication" +version = "0.1.0" +edition = "2024" + +[dependencies] +console_error_panic_hook = "0.1.7" +leptos = { version = "0.7.8", features = ["csr"] } +wasm-bindgen-futures = "0.4.50" +web-sys = { version = "0.3.77", features = ["AudioBuffer", "AudioBufferSourceNode", "AudioContext", "HtmlAudioElement","MediaDevices", "MediaStream", "MediaStreamConstraints", "MediaStreamTrack", "MediaTrackConstraints", "MediaTrackConstraintSet", "Navigator", "Window"] } + +[profile] + +[profile.wasm-dev] +inherits = "dev" +opt-level = 1 + +[profile.server-dev] +inherits = "dev" + +[profile.android-dev] +inherits = "dev" diff --git a/index.html b/client/index.html similarity index 100% rename from index.html rename to client/index.html diff --git a/src/gui.rs b/client/src/gui.rs similarity index 55% rename from src/gui.rs rename to client/src/gui.rs index a75c8a8..bf27b70 100644 --- a/src/gui.rs +++ b/client/src/gui.rs @@ -8,7 +8,7 @@ use leptos::{ }; use wasm_bindgen_futures::JsFuture; use web_sys::{ - HtmlAudioElement, MediaStream, MediaStreamConstraints, + HtmlAudioElement, MediaStream, MediaStreamConstraints, MediaStreamTrack, MediaTrackConstraints, wasm_bindgen::{JsCast, JsValue}, window, }; @@ -43,16 +43,42 @@ pub fn app() -> impl IntoView { async fn media() -> MediaStream { let media_devices = window().unwrap().navigator().media_devices().unwrap(); - let constraints = MediaStreamConstraints::new(); - constraints.set_audio(&JsValue::TRUE); + let media_stream_constraints = MediaStreamConstraints::new(); + let media_track_constraints = MediaTrackConstraints::new(); + + media_stream_constraints.set_audio(&JsValue::TRUE); + + media_track_constraints.set_echo_cancellation(&JsValue::FALSE); + media_track_constraints.set_noise_suppression(&JsValue::FALSE); + media_track_constraints.set_auto_gain_control(&JsValue::FALSE); + let media_stream_promise = media_devices - .get_user_media_with_constraints(&constraints) + .get_user_media_with_constraints(&media_stream_constraints) .unwrap(); let media_stream = JsFuture::from(media_stream_promise) .await .unwrap() .dyn_into::() .unwrap(); - let audio_tracks = media_stream.get_audio_tracks(); - MediaStream::new_with_tracks(&audio_tracks).unwrap() + let audio_stream_tracks = media_stream.get_audio_tracks(); + let audio_stream_tracks = audio_stream_tracks + .iter() + .map(|audio_track| audio_track.dyn_into::().unwrap()) + .collect::>(); + log!( + "{:#?}\n audio_stream_track_count = {}", + audio_stream_tracks, + audio_stream_tracks.len() + ); + let audio_stream_track = audio_stream_tracks.first().unwrap(); + let audio_stream_track_apply_constraints_promise = audio_stream_track + .apply_constraints_with_constraints(&media_track_constraints) + .unwrap(); + JsFuture::from(audio_stream_track_apply_constraints_promise) + .await + .unwrap(); + let audio_stream = MediaStream::new().unwrap(); + log!("{:#?}", audio_stream_track.get_constraints()); + audio_stream.add_track(audio_stream_track); + audio_stream } diff --git a/src/lib.rs b/client/src/lib.rs similarity index 100% rename from src/lib.rs rename to client/src/lib.rs diff --git a/src/main.rs b/client/src/main.rs similarity index 100% rename from src/main.rs rename to client/src/main.rs diff --git a/server/Cargo.toml b/server/Cargo.toml new file mode 100644 index 0000000..ff06670 --- /dev/null +++ b/server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "server" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/server/src/main.rs b/server/src/main.rs new file mode 100644 index 0000000..e7a11a9 --- /dev/null +++ b/server/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +}