use leptos::logging::log; use wasm_bindgen_futures::JsFuture; use web_sys::{ RtcConfiguration, RtcIceServer, RtcPeerConnection, RtcSessionDescriptionInit, js_sys::{Array, Reflect}, wasm_bindgen::{JsCast, JsValue}, }; use crate::signal::send_offer; pub async fn offer(username: String) { let ice_server_addresses = vec![JsValue::from("stun:stun.l.google.com:19302")] .into_iter() .collect::(); let ice_server = RtcIceServer::new(); ice_server.set_urls(&JsValue::from(ice_server_addresses)); let ice_servers = vec![ice_server].into_iter().collect::(); let rtc_configuration = RtcConfiguration::new(); rtc_configuration.set_ice_servers(&ice_servers); let peer_connection = RtcPeerConnection::new_with_configuration(&rtc_configuration).unwrap(); let peer_connection_create_offer_promise = peer_connection.create_offer(); let rtc_session_offer = JsFuture::from(peer_connection_create_offer_promise) .await .unwrap(); log!("{:#?}", rtc_session_offer); let rtc_session_offer = rtc_session_offer .as_ref() .unchecked_ref::(); log!("{:#?}", rtc_session_offer); JsFuture::from(peer_connection.set_local_description(rtc_session_offer)) .await .unwrap(); let rtc_session_offer = Reflect::get(&rtc_session_offer, &JsValue::from_str("sdp")) .unwrap() .as_string() .unwrap(); log!("{}", rtc_session_offer); let data = rtc_session_offer; send_offer(&username, &data).await.unwrap(); } pub async fn answer() {}