This commit is contained in:
2026-08-23 16:02:17 +02:00
parent 8d57310ec6
commit 5e97e9c223
26 changed files with 818 additions and 77 deletions
+16 -6
View File
@@ -6,11 +6,13 @@ use crate::models::user::Model as User;
use crate::routes::category::mapper::category_model_to_category_response;
use crate::routes::channel::mapper::channel_model_to_channel_response;
use crate::routes::message::mapper::{
message_model_to_message_response_with_data,
message_model_to_message_response_with_reactions,
message_model_to_message_response_with_server_id, reaction_model_to_response,
reaction_model_to_response,
};
use crate::routes::server::mapper::server_model_to_server_response;
use crate::services::Services;
use crate::repositories::Repositories;
use axum::extract::ws::Message;
use event_bus::EventBus;
use events::GatewayEvent;
@@ -29,6 +31,7 @@ pub mod routes;
pub struct GatewayManager {
pub clients: RwLock<HashMap<ConnectionKey, GatewayClient>>,
services: Arc<Services>,
repositories: Arc<Repositories>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
@@ -47,10 +50,11 @@ pub struct GatewayClient {
}
impl GatewayManager {
pub fn new(services: Arc<Services>) -> Self {
pub fn new(services: Arc<Services>, repositories: Arc<Repositories>) -> Self {
Self {
clients: RwLock::new(HashMap::new()),
services,
repositories,
}
}
/// Démarre les routeurs centraux des événements de messages.
@@ -59,13 +63,19 @@ impl GatewayManager {
event_bus.on_async::<MessageCreatedEvent, _, _>("message_created", move |event| {
let manager = Arc::clone(&manager);
async move {
let message_id = event.message.id;
let attachments = manager
.repositories
.message
.attachments_for_messages(&[message_id])
.await
.ok()
.and_then(|mut items| items.remove(&message_id))
.unwrap_or_default();
manager.broadcast_message(
event.channel_id,
"add",
message_model_to_message_response_with_server_id(
event.message,
event.server_id,
),
message_model_to_message_response_with_data(event.message, event.server_id, Vec::new(), attachments),
);
}
});