multiverse: expand user names when inviting (#5146)
When the user does an `/invite`, if the target user doesn't start with an `@`, try expanding it as a user on the local server. This makes it much easier when repeatedly testing inviting!
This commit is contained in:
committed by
GitHub
parent
2fa6a98052
commit
56be9dec59
@@ -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 {
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user