diff --git a/labs/multiverse/src/widgets/room_view/input.rs b/labs/multiverse/src/widgets/room_view/input.rs index bf6b06eac..00841150f 100644 --- a/labs/multiverse/src/widgets/room_view/input.rs +++ b/labs/multiverse/src/widgets/room_view/input.rs @@ -1,6 +1,6 @@ use clap::{Parser, Subcommand}; use crossterm::event::KeyEvent; -use matrix_sdk::{ruma::OwnedUserId, Room}; +use matrix_sdk::Room; use ratatui::{prelude::*, widgets::*}; use style::palette::tailwind; use tui_textarea::TextArea; @@ -14,7 +14,7 @@ struct Cli { #[derive(Debug, Subcommand)] pub enum Command { - Invite { user_id: OwnedUserId }, + Invite { user_id: String }, } pub enum MessageOrCommand { diff --git a/labs/multiverse/src/widgets/room_view/mod.rs b/labs/multiverse/src/widgets/room_view/mod.rs index f7ee7a8fa..05199fc66 100644 --- a/labs/multiverse/src/widgets/room_view/mod.rs +++ b/labs/multiverse/src/widgets/room_view/mod.rs @@ -8,7 +8,7 @@ use matrix_sdk::{ locks::Mutex, ruma::{ api::client::receipt::create_receipt::v3::ReceiptType, - events::room::message::RoomMessageEventContent, OwnedRoomId, OwnedUserId, + events::room::message::RoomMessageEventContent, OwnedRoomId, UserId, }, RoomState, }; @@ -264,7 +264,7 @@ impl RoomView { }; } - async fn invite_member(&mut self, user_id: OwnedUserId) { + async fn invite_member(&mut self, user_id: &str) { let Some(room) = self .selected_room .as_deref() @@ -275,6 +275,18 @@ impl RoomView { return; }; + let user_id = match UserId::parse_with_server_name( + user_id, + room.client().user_id().unwrap().server_name(), + ) { + Ok(user_id) => user_id, + Err(e) => { + self.status_handle + .set_message(format!("Failed to parse {user_id} as a user ID: {e:?}")); + return; + } + }; + match room.invite_user_by_id(&user_id).await { Ok(_) => { self.status_handle @@ -290,7 +302,7 @@ impl RoomView { async fn handle_command(&mut self, command: input::Command) { match command { - input::Command::Invite { user_id } => self.invite_member(user_id).await, + input::Command::Invite { user_id } => self.invite_member(&user_id).await, } }