Limit nickname length to 50 unicode codepoints
parent
152d51f4fc
commit
244145696c
|
@ -26,6 +26,7 @@
|
|||
type="text"
|
||||
id="join-session-nickname"
|
||||
placeholder="Nickname"
|
||||
maxlength="50"
|
||||
required
|
||||
/>
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ use warp as warb; // i think it's funny
|
|||
mod events;
|
||||
mod viewer_connection;
|
||||
mod watch_session;
|
||||
mod utils;
|
||||
|
||||
use serde::Deserialize;
|
||||
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
pub fn truncate_str(s: &str, max_chars: usize) -> &str {
|
||||
match s.char_indices().nth(max_chars) {
|
||||
None => s,
|
||||
Some((idx, _)) => &s[..idx],
|
||||
}
|
||||
}
|
|
@ -16,6 +16,7 @@ use warp::ws::{Message, WebSocket};
|
|||
|
||||
use crate::{
|
||||
events::{WatchEvent, WatchEventData},
|
||||
utils::truncate_str,
|
||||
watch_session::{get_session, handle_watch_event_data},
|
||||
};
|
||||
|
||||
|
@ -53,6 +54,7 @@ pub async fn ws_subscribe(session_uuid: Uuid, nickname: String, colour: String,
|
|||
if !colour.len() == 6 || !colour.chars().all(|x| x.is_ascii_hexdigit()) {
|
||||
colour = String::from("7ed0ff");
|
||||
}
|
||||
let nickname = truncate_str(&nickname, 50).to_string();
|
||||
|
||||
CONNECTED_VIEWERS.write().await.insert(
|
||||
viewer_id,
|
||||
|
|
Loading…
Reference in New Issue