From e0af9c515a33a32fcce641b82ac0b7e689e8b769 Mon Sep 17 00:00:00 2001 From: Bartal Laearsson Date: Mon, 24 Aug 2026 11:53:43 +0100 Subject: [PATCH] fix clippy errs --- src/handlers/chat.rs | 11 +++++++++-- src/handlers/mod.rs | 2 +- src/handlers/ws.rs | 25 +++++++++++-------------- src/main.rs | 14 +++++++++++--- src/state.rs | 5 ++++- 5 files changed, 36 insertions(+), 21 deletions(-) diff --git a/src/handlers/chat.rs b/src/handlers/chat.rs index 1350046..790e792 100644 --- a/src/handlers/chat.rs +++ b/src/handlers/chat.rs @@ -115,7 +115,11 @@ pub async fn get_supporter_messages( "Session not found. Chat history may have been cleared.", )); }; - let html: String = session.messages.iter().map(render_supporter_message).collect(); + let html: String = session + .messages + .iter() + .map(render_supporter_message) + .collect(); Html(html) } @@ -171,7 +175,10 @@ pub async fn supporter_send_message( State(state): State>, Form(form): Form, ) -> Html { - if state.is_rate_limited(limit_key("supporter-message", addr), MESSAGE_LIMIT_PER_WINDOW) { + if state.is_rate_limited( + limit_key("supporter-message", addr), + MESSAGE_LIMIT_PER_WINDOW, + ) { return Html(render_system_notice( "Too many messages from this network. Please wait until the 3-minute window resets.", )); diff --git a/src/handlers/mod.rs b/src/handlers/mod.rs index 9fcba95..1ee4bc3 100644 --- a/src/handlers/mod.rs +++ b/src/handlers/mod.rs @@ -1,3 +1,3 @@ -pub mod pages; pub mod chat; +pub mod pages; pub mod ws; diff --git a/src/handlers/ws.rs b/src/handlers/ws.rs index 96dac2d..b4ca940 100644 --- a/src/handlers/ws.rs +++ b/src/handlers/ws.rs @@ -1,7 +1,7 @@ use axum::{ extract::{ - ws::{Message, WebSocket, WebSocketUpgrade}, Path, State, + ws::{Message, WebSocket, WebSocketUpgrade}, }, response::IntoResponse, }; @@ -14,7 +14,6 @@ const USER_TYPING_STOP_PREFIX: &str = "typing:user:stop:"; const SUPPORTER_TYPING_START_PREFIX: &str = "typing:supporter:start:"; const SUPPORTER_TYPING_STOP_PREFIX: &str = "typing:supporter:stop:"; -/// WebSocket for user — pushes notifications when supporter replies pub async fn user_ws( ws: WebSocketUpgrade, Path(session_id): Path, @@ -36,15 +35,13 @@ async fn handle_user_socket(mut socket: WebSocket, session_id: String, state: Ar loop { tokio::select! { - // Forward broadcast events to the user browser. Ok(event) = rx.recv() => { - if event == session_id || event == RESET_EVENT || is_typing_event_for_session(&event, &session_id) { - if socket.send(Message::Text(event)).await.is_err() { - break; - } + if (event == session_id || event == RESET_EVENT || is_typing_event_for_session(&event, &session_id)) + && socket.send(Message::Text(event)).await.is_err() + { + break; } } - // Handle ping/close and typing events from client. msg = socket.recv() => { match msg { Some(Ok(Message::Text(text))) => { @@ -63,7 +60,6 @@ async fn handle_user_socket(mut socket: WebSocket, session_id: String, state: Ar } } -/// WebSocket for supporter dashboard — pushes notifications when any session updates pub async fn supporter_ws( ws: WebSocketUpgrade, Path(_supporter_id): Path, @@ -90,11 +86,12 @@ async fn handle_supporter_socket(mut socket: WebSocket, state: Arc) { msg = socket.recv() => { match msg { Some(Ok(Message::Text(text))) => { - if let Some(session_id) = supporter_typing_session_id(&text) { - if !session_id.is_empty() && state.sessions.contains_key(session_id) { - let tx = state.get_or_create_notifier(session_id); - let _ = tx.send(text); - } + if let Some(session_id) = supporter_typing_session_id(&text) + && !session_id.is_empty() + && state.sessions.contains_key(session_id) + { + let tx = state.get_or_create_notifier(session_id); + let _ = tx.send(text); } } Some(Ok(Message::Close(_))) | None => break, diff --git a/src/main.rs b/src/main.rs index e75d177..740e0f2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -28,7 +28,9 @@ async fn main() { loop { tokio::time::sleep(CHAT_RESET_INTERVAL).await; reset_state.clear_everything(); - tracing::info!("Cleared all in-memory chat sessions, messages, notifiers, and rate limits"); + tracing::info!( + "Cleared all in-memory chat sessions, messages, notifiers, and rate limits" + ); } }); @@ -38,9 +40,15 @@ async fn main() { .route("/supporter", get(handlers::pages::supporter_page)) .route("/reset-countdown", get(handlers::pages::reset_countdown)) .route("/ws/user/:session_id", get(handlers::ws::user_ws)) - .route("/ws/supporter/:supporter_id", get(handlers::ws::supporter_ws)) + .route( + "/ws/supporter/:supporter_id", + get(handlers::ws::supporter_ws), + ) .route("/messages/:session_id", get(handlers::chat::get_messages)) - .route("/supporter/messages/:session_id", get(handlers::chat::get_supporter_messages)) + .route( + "/supporter/messages/:session_id", + get(handlers::chat::get_supporter_messages), + ) .route("/send/:session_id", post(handlers::chat::send_message)) .route( "/supporter/send/:session_id", diff --git a/src/state.rs b/src/state.rs index ced64ec..c496d5d 100644 --- a/src/state.rs +++ b/src/state.rs @@ -1,6 +1,9 @@ use crate::models::ChatSession; use dashmap::DashMap; -use std::{sync::Mutex, time::{Duration, Instant}}; +use std::{ + sync::Mutex, + time::{Duration, Instant}, +}; use tokio::sync::broadcast; pub const RESET_EVENT: &str = "__reset__";