mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2026-05-26 20:49:55 +00:00
feat: Do not allow suspended users to send typing statuses
This commit is contained in:
+34
-33
@@ -26,41 +26,42 @@ pub(crate) async fn create_typing_event_route(
|
||||
{
|
||||
return Err!(Request(Forbidden("You are not in this room.")));
|
||||
}
|
||||
|
||||
match body.state {
|
||||
| Typing::Yes(duration) => {
|
||||
let duration = utils::clamp(
|
||||
duration.as_millis().try_into().unwrap_or(u64::MAX),
|
||||
if !services.users.is_suspended(sender_user).await? {
|
||||
match body.state {
|
||||
| Typing::Yes(duration) => {
|
||||
let duration = utils::clamp(
|
||||
duration.as_millis().try_into().unwrap_or(u64::MAX),
|
||||
services
|
||||
.server
|
||||
.config
|
||||
.typing_client_timeout_min_s
|
||||
.try_mul(1000)?,
|
||||
services
|
||||
.server
|
||||
.config
|
||||
.typing_client_timeout_max_s
|
||||
.try_mul(1000)?,
|
||||
);
|
||||
services
|
||||
.server
|
||||
.config
|
||||
.typing_client_timeout_min_s
|
||||
.try_mul(1000)?,
|
||||
.rooms
|
||||
.typing
|
||||
.typing_add(
|
||||
sender_user,
|
||||
&body.room_id,
|
||||
utils::millis_since_unix_epoch()
|
||||
.checked_add(duration)
|
||||
.expect("user typing timeout should not get this high"),
|
||||
)
|
||||
.await?;
|
||||
},
|
||||
| _ => {
|
||||
services
|
||||
.server
|
||||
.config
|
||||
.typing_client_timeout_max_s
|
||||
.try_mul(1000)?,
|
||||
);
|
||||
services
|
||||
.rooms
|
||||
.typing
|
||||
.typing_add(
|
||||
sender_user,
|
||||
&body.room_id,
|
||||
utils::millis_since_unix_epoch()
|
||||
.checked_add(duration)
|
||||
.expect("user typing timeout should not get this high"),
|
||||
)
|
||||
.await?;
|
||||
},
|
||||
| _ => {
|
||||
services
|
||||
.rooms
|
||||
.typing
|
||||
.typing_remove(sender_user, &body.room_id)
|
||||
.await?;
|
||||
},
|
||||
.rooms
|
||||
.typing
|
||||
.typing_remove(sender_user, &body.room_id)
|
||||
.await?;
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// ping presence
|
||||
|
||||
Reference in New Issue
Block a user