Merge branch 'coffee-compiler/restrict_chat_msg_len_client' into 'master'

Restrict chat message length on client side

See merge request veloren/veloren!4557
This commit is contained in:
Marcel 2024-08-18 11:40:00 +00:00
commit b598f38eca
4 changed files with 9 additions and 6 deletions

View File

@ -26,6 +26,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Localization support for prompt dialogs, diary sections, trade and group invitations, command descriptions.
- Added Freezing Potion
- Clear command to delete chat messages.
- Chat message capping to prevent too long messages before sending.
### Changed

View File

@ -197,6 +197,7 @@ pub type ChatMsg = GenericChatMsg<String>;
pub type UnresolvedChatMsg = GenericChatMsg<Group>;
impl<G> GenericChatMsg<G> {
pub const MAX_BYTES_PLAYER_CHAT_MSG: usize = 256;
pub const NPC_DISTANCE: f32 = 100.0;
pub const NPC_SAY_DISTANCE: f32 = 30.0;
pub const REGION_DISTANCE: f32 = 1000.0;

View File

@ -1,7 +1,7 @@
use crate::settings::ModerationSettings;
use authc::Uuid;
use censor::Censor;
use common::comp::{AdminRole, ChatType, Group};
use common::comp::{AdminRole, ChatMsg, ChatType, Group};
use hashbrown::HashMap;
use std::{
fmt,
@ -10,8 +10,6 @@ use std::{
};
use tracing::info;
pub const MAX_BYTES_CHAT_MSG: usize = 256;
pub enum ActionNote {
SpamWarn,
}
@ -45,7 +43,7 @@ impl fmt::Display for ActionErr {
ActionErr::TooLong => write!(
f,
"Your message was too long, no more than {} characters are permitted.",
MAX_BYTES_CHAT_MSG
ChatMsg::MAX_BYTES_PLAYER_CHAT_MSG
),
ActionErr::SpamMuted(dur) => write!(
f,
@ -99,7 +97,7 @@ impl AutoMod {
msg: &str,
) -> Result<Option<ActionNote>, ActionErr> {
// TODO: Consider using grapheme cluster count instead of size in bytes
if msg.len() > MAX_BYTES_CHAT_MSG {
if msg.len() > ChatMsg::MAX_BYTES_PLAYER_CHAT_MSG {
Err(ActionErr::TooLong)
} else if !self.settings.automod
// Is this a private chat message?

View File

@ -504,9 +504,12 @@ impl<'a> Widget for Chat<'a> {
.set(state.ids.chat_input, ui)
{
input.retain(|c| c != '\n');
if input.len() <= ChatMsg::MAX_BYTES_PLAYER_CHAT_MSG {
state.update(|s| s.input.message = input);
}
}
}
// Message box
Rectangle::fill([chat_size.x, chat_size.y])