Merge remote-tracking branch 'lavina/main' into feature/muc-join-messages

This commit is contained in:
Mikhail 2024-05-25 18:11:47 +02:00
commit 538de5e849
1 changed files with 23 additions and 15 deletions

View File

@ -893,25 +893,33 @@ async fn handle_join(
) -> Result<()> {
match chan {
Chan::Global(chan_name) => {
let room_id = RoomId::try_from(chan_name.clone())?;
if let JoinResult::Success(room_info) = user_handle.join_room(room_id).await? {
produce_on_join_cmd_messages(&config, &user, chan, &room_info, writer).await?;
} else {
ServerMessage {
tags: vec![],
sender: Some(config.server_name.clone()),
body: ServerMessageBody::N474BannedFromChan {
client: user.nickname.clone(),
chan: chan.clone(),
message: "U dun goofed".into(),
},
let room_id = RoomId::from(chan_name.clone())?;
match user_handle.join_room(room_id).await? {
JoinResult::Success(room_info) => {
produce_on_join_cmd_messages(&config, &user, chan, &room_info, writer).await?;
}
JoinResult::AlreadyJoined => {
// we do nothing on repeated joins
}
JoinResult::Banned => {
ServerMessage {
tags: vec![],
sender: Some(config.server_name.clone()),
body: ServerMessageBody::N474BannedFromChan {
client: user.nickname.clone(),
chan: chan.clone(),
message: "U dun goofed".into(),
},
}
.write_async(writer)
.await?;
}
.write_async(writer)
.await?;
}
writer.flush().await?;
}
Chan::Local(_) => {}
Chan::Local(_) => {
// TODO handle join attempts to local chans with an error, we don't support these
}
};
Ok(())
}