|
|
|
|
@ -34,7 +34,8 @@ use ruma::{
@@ -34,7 +34,8 @@ use ruma::{
|
|
|
|
|
media::{create_content, get_content, get_content_thumbnail, get_media_config}, |
|
|
|
|
membership::{ |
|
|
|
|
ban_user, forget_room, get_member_events, invite_user, join_room_by_id, |
|
|
|
|
join_room_by_id_or_alias, joined_rooms, kick_user, leave_room, unban_user, |
|
|
|
|
join_room_by_id_or_alias, joined_members, joined_rooms, kick_user, leave_room, |
|
|
|
|
unban_user, |
|
|
|
|
}, |
|
|
|
|
message::{create_message_event, get_message_events}, |
|
|
|
|
presence::set_presence, |
|
|
|
|
@ -1667,6 +1668,38 @@ pub fn kick_user_route(
@@ -1667,6 +1668,38 @@ pub fn kick_user_route(
|
|
|
|
|
Ok(kick_user::Response.into()) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[get("/_matrix/client/r0/rooms/<_room_id>/joined_members", data = "<body>")] |
|
|
|
|
pub fn joined_members_route( |
|
|
|
|
db: State<'_, Database>, |
|
|
|
|
body: Ruma<joined_members::Request>, |
|
|
|
|
_room_id: String, |
|
|
|
|
) -> ConduitResult<joined_members::Response> { |
|
|
|
|
let user_id = body.user_id.as_ref().expect("user is authenticated"); |
|
|
|
|
|
|
|
|
|
if !db.rooms.is_joined(&user_id, &body.room_id).unwrap_or(false) { |
|
|
|
|
return Err(Error::BadRequest( |
|
|
|
|
ErrorKind::Forbidden, |
|
|
|
|
"You aren't a member of the room.", |
|
|
|
|
)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
let mut joined = BTreeMap::new(); |
|
|
|
|
for user_id in db.rooms.room_members(&body.room_id).filter_map(|r| r.ok()) { |
|
|
|
|
let display_name = db.users.displayname(&user_id)?; |
|
|
|
|
let avatar_url = db.users.avatar_url(&user_id)?; |
|
|
|
|
|
|
|
|
|
joined.insert( |
|
|
|
|
user_id, |
|
|
|
|
joined_members::RoomMember { |
|
|
|
|
display_name, |
|
|
|
|
avatar_url, |
|
|
|
|
}, |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Ok(joined_members::Response { joined }.into()) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[post("/_matrix/client/r0/rooms/<_room_id>/ban", data = "<body>")] |
|
|
|
|
pub fn ban_user_route( |
|
|
|
|
db: State<'_, Database>, |
|
|
|
|
|