diff --git a/src/callmanager.rs b/src/callmanager.rs index 90ae8af..aba22cc 100644 --- a/src/callmanager.rs +++ b/src/callmanager.rs @@ -191,7 +191,7 @@ impl CallManager { }; let content = AnyMessageEventContent::CallInvite(call_offer_content); - + // TODO setup a future that cancels the call when we don't get an answer client.room_send(&room_id, content, None).await?; Ok(()) diff --git a/src/matrixbot.rs b/src/matrixbot.rs index 053e591..18aff21 100644 --- a/src/matrixbot.rs +++ b/src/matrixbot.rs @@ -21,6 +21,7 @@ use matrix_sdk::{ member::MemberEventContent, message::{MessageEventContent, TextMessageEventContent}, }, + AnyMessageEventContent, AnySyncMessageEvent::{CallAnswer, CallCandidates, CallHangup, CallInvite}, AnySyncRoomEvent::Message, AnyToDeviceEvent, StrippedStateEvent, SyncMessageEvent, @@ -49,11 +50,11 @@ impl CommandBot { println!("<{}> {} ", sender, message); if message.contains("!party") { - let content = MessageEventContent::Text(TextMessageEventContent { + let content = AnyMessageEventContent::RoomMessage(MessageEventContent::Text(TextMessageEventContent { body: "🎉🎊🥳 let's PARTY!! 🥳🎊🎉".to_string(), formatted: None, relates_to: None, - }); + })); // we clone here to hold the lock for as little time as possible. let room_id = room.read().await.room_id.clone(); @@ -106,12 +107,12 @@ async fn handle_call_invite( println!("Incoming call from {}", user); - let message = MessageEventContent::Text(TextMessageEventContent { + let message = AnyMessageEventContent::RoomMessage(MessageEventContent::Text(TextMessageEventContent { body: format!("Got call invite, trying to setup gst {:?}", myself), /* This is renderng weirdly in vscode, * ignore the spaces for my sanity */ formatted: None, relates_to: None, - }); + })); let offer_sdp: String = offer.sdp; @@ -137,12 +138,12 @@ async fn handle_call_answer( println!("Call Answer from {}", user); - let message = MessageEventContent::Text(TextMessageEventContent { + let message = AnyMessageEventContent::RoomMessage(MessageEventContent::Text(TextMessageEventContent { body: format!("got call answer, trying to accept {:?}", myself), /* This is renderng weirdly in vscode, * ignore the spaces for my sanity */ formatted: None, relates_to: None, - }); + })); client.room_send(room_id, message, None).await.unwrap(); sender.send(AnswerCall(answer.sdp)).unwrap(); @@ -162,12 +163,12 @@ async fn handle_call_candidate( println!("Incoming call from {}", user); - let message = MessageEventContent::Text(TextMessageEventContent { + let message = AnyMessageEventContent::RoomMessage(MessageEventContent::Text(TextMessageEventContent { body: format!("🎉🎊🥳 let's PARTY!! 🥳🎊🎉 {:?}", myself), /* This is renderng weirdly in vscode, * ignore the spaces for my sanity */ formatted: None, relates_to: None, - }); + })); let candidates_desc: Vec = candidates .into_iter() @@ -197,12 +198,12 @@ async fn handle_call_hangup( println!("Call hangup from {}", user); - let message = MessageEventContent::Text(TextMessageEventContent { + let message = AnyMessageEventContent::RoomMessage(MessageEventContent::Text(TextMessageEventContent { body: format!("You hung up on me :( {:?}", myself), /* This is renderng weirdly in vscode, * ignore the spaces for my sanity */ formatted: None, relates_to: None, - }); + })); client.room_send(room_id, message, None).await.unwrap(); sender.send(CloseActive()).unwrap(); @@ -273,26 +274,19 @@ pub async fn login(botname: &String) -> Result { // homeserver_url: String, username: String, password: String //let {homeserver_url: String, username: String, password: String} = config.matrix; let config: config::Config = config::load_config(&botname)?; - let homeserver_url = config.matrix.homeserver_url; - let username = config.matrix.username; - let password = config.matrix.password; let store_dir = config::get_config_directory("party_bot")?; - let store = JsonStore::open(&store_dir)?; let client_config = ClientConfig::new().state_store(Box::new(store)); - let homeserver_url = Url::parse(&homeserver_url).expect("Couldn't parse the homeserver URL"); // create a new Client with the given homeserver url and config let mut client = Client::new_with_config(homeserver_url, client_config).unwrap(); - let commandbot = CommandBot::new(client.clone()); - let commandbox = Box::new(commandbot); client