build: 🚚 moving to workspace structure

This commit is contained in:
Ahmet Kaan Gümüş 2025-04-07 01:52:52 +03:00
parent 0f34554797
commit 7434d131c4
9 changed files with 72 additions and 29 deletions

4
.gitignore vendored
View file

@ -1,4 +1,4 @@
/target
/dist
**/target
**/dist
Cargo.lock

View file

@ -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"

22
client/Cargo.toml Normal file
View file

@ -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"

View file

@ -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::<MediaStream>()
.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::<MediaStreamTrack>().unwrap())
.collect::<Vec<_>>();
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
}

6
server/Cargo.toml Normal file
View file

@ -0,0 +1,6 @@
[package]
name = "server"
version = "0.1.0"
edition = "2024"
[dependencies]

3
server/src/main.rs Normal file
View file

@ -0,0 +1,3 @@
fn main() {
println!("Hello, world!");
}