api/ws/tickets/
handlers.rs1use std::sync::Arc;
2use axum::{
3 extract::{Path, State, WebSocketUpgrade},
4 response::IntoResponse,
5 Extension,
6};
7use util::state::AppState;
8use util::ws::serve::WsServerOptions;
9use util::ws::axum_adapter::ws_route;
10use crate::auth::AuthUser;
11use super::topics::ticket_chat_topic;
12use super::ws_handlers::TicketWsHandler;
13
14pub async fn ticket_chat_handler(
15 ws: WebSocketUpgrade,
16 State(state): State<AppState>,
17 Extension(AuthUser(claims)): Extension<AuthUser>,
18 Path(ticket_id): Path<i64>,
19) -> impl IntoResponse {
20 let uid_opt = Some(claims.sub); let handler = Arc::new(TicketWsHandler);
22 let topic = move || ticket_chat_topic(ticket_id);
23 let opts = WsServerOptions::default(); ws_route(ws, State(state), Extension(uid_opt), topic, handler, opts).await
27}