Files
tuwunel/src/service/membership/ban.rs
dasha_uwu 8e9c6661b2 Membership refactor
Introduce deactivate, membership services

Move membership and user deactivation functions from api crate into those services
2025-08-28 23:28:20 +05:00

45 lines
928 B
Rust

use ruma::{
RoomId, UserId,
events::room::member::{MembershipState, RoomMemberEventContent},
};
use tuwunel_core::{Result, implement, pdu::PduBuilder};
use super::Service;
use crate::rooms::timeline::RoomMutexGuard;
#[implement(Service)]
#[tracing::instrument(
level = "debug",
skip_all,
fields(%sender_user, %room_id, %user_id)
)]
pub async fn ban(
&self,
room_id: &RoomId,
user_id: &UserId,
reason: Option<&String>,
sender_user: &UserId,
state_lock: &RoomMutexGuard,
) -> Result {
self.services
.timeline
.build_and_append_pdu(
PduBuilder::state(user_id.to_string(), &RoomMemberEventContent {
membership: MembershipState::Ban,
reason: reason.cloned(),
displayname: None,
avatar_url: None,
blurhash: None,
is_direct: None,
join_authorized_via_users_server: None,
third_party_invite: None,
}),
sender_user,
room_id,
state_lock,
)
.await?;
Ok(())
}