diff --git a/server/src/client_management/chat_manager/chat_manager.rs b/server/src/client_management/chat_manager/actor.rs similarity index 100% rename from server/src/client_management/chat_manager/chat_manager.rs rename to server/src/client_management/chat_manager/actor.rs diff --git a/server/src/client_management/chat_manager/message_type.rs b/server/src/client_management/chat_manager/message_type.rs index 6adf0bd..39120ee 100644 --- a/server/src/client_management/chat_manager/message_type.rs +++ b/server/src/client_management/chat_manager/message_type.rs @@ -3,19 +3,19 @@ use uuid::Uuid; #[derive(Clone)] pub struct Message { - id: Uuid, - from: Uuid, - content: String, - time: DateTime, + _id: Uuid, + _from: Uuid, + _content: String, + _time: DateTime, } impl Message { pub fn new(from: Uuid, content: String) -> Self { Self { - id: Uuid::new(), - from, - content, - time: Local::now(), + _id: Uuid::new_v4(), + _from: from, + _content: content, + _time: Local::now(), } } } diff --git a/server/src/client_management/chat_manager/messages.rs b/server/src/client_management/chat_manager/messages.rs index 62f1574..88d0677 100644 --- a/server/src/client_management/chat_manager/messages.rs +++ b/server/src/client_management/chat_manager/messages.rs @@ -9,6 +9,7 @@ pub enum ChatManagerMessage { AddMessage(Uuid, String), } +#[allow(dead_code)] #[derive(ActixMessage, Debug)] #[rtype(result = "ChatManagerDataResponse")] pub enum ChatManagerDataMessage { diff --git a/server/src/client_management/chat_manager/mod.rs b/server/src/client_management/chat_manager/mod.rs index b241019..91c3602 100644 --- a/server/src/client_management/chat_manager/mod.rs +++ b/server/src/client_management/chat_manager/mod.rs @@ -4,9 +4,14 @@ //! - Messages //! - Mesage type -mod chat_manager; +mod actor; mod message_type; mod messages; -pub(crate) use chat_manager::ChatManager; +pub(crate) use actor::ChatManager; use message_type::Message; +pub(crate) use messages::{ + ChatManagerDataMessage, + ChatManagerDataResponse, + ChatManagerMessage, +}; diff --git a/server/src/client_management/client_manager.rs b/server/src/client_management/client_manager.rs index e8c9424..ee1c016 100644 --- a/server/src/client_management/client_manager.rs +++ b/server/src/client_management/client_manager.rs @@ -15,7 +15,7 @@ use tokio_stream::StreamExt; use uuid::Uuid; use crate::client_management::{ - chat_manager::ChatManager, + chat_manager::{ChatManager, ChatManagerMessage}, client::{ Client, ClientDataMessage, @@ -112,7 +112,7 @@ impl ClientManager { let client_details: Vec = collection.await; let pos = client_details.iter().position(|i| i.uuid == from); - if let Some(_) = pos { + if pos.is_some() { sender .send(SendMessage { content, from }) .await @@ -131,13 +131,22 @@ impl ClientManager { content: String, ) { use crate::client_management::client::ClientMessage::SendGlobalMessage; + let client_addr: Vec> = self.clients.iter().map(|(_, v)| v).cloned().collect(); if let Some(sender) = sender.upgrade() { + let cm = self.chat_manager.clone(); + + let snd1 = sender.clone(); + let snd2 = sender; + + let cont1 = content.clone(); + let cont2 = content; + let fut = wrap_future(async move { let details: ClientDataResponse = - sender.send(ClientDataMessage::Details).await.unwrap(); + snd1.send(ClientDataMessage::Details).await.unwrap(); let from = if let Details(details) = details { details.uuid @@ -148,15 +157,28 @@ impl ClientManager { let collection = tokio_stream::iter(client_addr) .then(move |addr| { addr.send(SendGlobalMessage { - content: content.clone(), + content: cont1.clone(), from, }) }) .collect(); - // this is shit, i dont need this let _: Vec<_> = collection.await; }); + + let chat_manager_fut = wrap_future(async move { + let details: ClientDataResponse = + snd2.send(ClientDataMessage::Details).await.unwrap(); + + let from = if let Details(details) = details { + details.uuid + } else { + ClientDetails::default().uuid + }; + + let _ = cm.send(ChatManagerMessage::AddMessage(from, cont2)).await; + }); ctx.spawn(fut); + ctx.spawn(chat_manager_fut); } } diff --git a/server/src/client_management/mod.rs b/server/src/client_management/mod.rs index d8210e7..5e69979 100644 --- a/server/src/client_management/mod.rs +++ b/server/src/client_management/mod.rs @@ -12,7 +12,13 @@ pub mod client; mod client_manager; mod messages; -use chat_manager::ChatManager; +#[allow(unused_imports)] +use chat_manager::{ + ChatManager, + ChatManagerDataMessage, + ChatManagerDataResponse, + ChatManagerMessage, +}; pub(crate) use client_manager::ClientManager; pub(crate) use messages::{ ClientManagerDataMessage,