Fixed messages being sent to sender

This commit is contained in:
michael-bailey 2022-09-28 09:11:13 +01:00
parent 42677d71b5
commit 0fb618d5c1
1 changed files with 16 additions and 16 deletions

View File

@ -58,11 +58,11 @@ impl ClientManager {
pub(crate) fn send_client_list( pub(crate) fn send_client_list(
&mut self, &mut self,
ctx: &mut Context<Self>, ctx: &mut Context<Self>,
addr: WeakAddr<Client>, sender: WeakAddr<Client>,
) { ) {
println!("[ClientManager] sending update to client"); println!("[ClientManager] sending update to client");
use crate::client_management::client::ClientMessage::ClientList; use crate::client_management::client::ClientMessage::ClientList;
if let Some(to_send) = addr.upgrade() { if let Some(to_send) = sender.upgrade() {
let client_addr: Vec<Addr<Client>> = let client_addr: Vec<Addr<Client>> =
self.clients.iter().map(|(_, v)| v).cloned().collect(); self.clients.iter().map(|(_, v)| v).cloned().collect();
@ -89,9 +89,9 @@ impl ClientManager {
pub(crate) fn send_global_messages( pub(crate) fn send_global_messages(
&self, &self,
ctx: &mut Context<ClientManager>, ctx: &mut Context<ClientManager>,
addr: WeakAddr<Client>, sender: WeakAddr<Client>,
) { ) {
if let Some(to_send) = addr.upgrade() { if let Some(to_send) = sender.upgrade() {
let fut = wrap_future(self.chat_manager.send(ChatManagerDataMessage::GetMessages)) let fut = wrap_future(self.chat_manager.send(ChatManagerDataMessage::GetMessages))
.map(move |out, _a, _ctx| { .map(move |out, _a, _ctx| {
if let Ok(ChatManagerDataResponse::GotMessages(res)) = out { if let Ok(ChatManagerDataResponse::GotMessages(res)) = out {
@ -106,14 +106,14 @@ impl ClientManager {
&self, &self,
ctx: &mut Context<ClientManager>, ctx: &mut Context<ClientManager>,
sender: WeakAddr<Client>, sender: WeakAddr<Client>,
_uuid: Uuid, to: Uuid,
content: String, content: String,
) { ) {
println!("[ClientManager] sending message to client"); println!("[ClientManager] sending message to client");
let client_addr: Vec<Addr<Client>> = let client_addr: Vec<Addr<Client>> =
self.clients.iter().map(|(_, v)| v).cloned().collect(); self.clients.iter().map(|(_, v)| v).cloned().collect();
let collection = tokio_stream::iter(client_addr) let collection = tokio_stream::iter(client_addr.clone())
.then(|addr| addr.send(ClientDataMessage::Details)) .then(|addr| addr.send(ClientDataMessage::Details))
.map(|val| val.unwrap()) .map(|val| val.unwrap())
.map(|val: ClientDataResponse| { .map(|val: ClientDataResponse| {
@ -127,19 +127,19 @@ impl ClientManager {
let fut = wrap_future(async move { let fut = wrap_future(async move {
if let Some(sender) = sender.upgrade() { if let Some(sender) = sender.upgrade() {
let details: ClientDataResponse = let sender_details: ClientDataResponse =
sender.send(ClientDataMessage::Details).await.unwrap(); sender.send(ClientDataMessage::Details).await.unwrap();
let from = if let Details(details) = details { let from = if let Details(details) = sender_details {
details.uuid details.uuid
} else { } else {
ClientDetails::default().uuid ClientDetails::default().uuid
}; };
let client_details: Vec<ClientDetails> = collection.await; let client_details: Vec<ClientDetails> = collection.await;
let pos = client_details.iter().position(|i| i.uuid == from); let pos = client_details.iter().position(|i| i.uuid == to);
if pos.is_some() { if let Some(pos) = pos {
sender client_addr[pos]
.send(ClientMessage::ClientlySentMessage { content, from }) .send(ClientMessage::ClientlySentMessage { content, from })
.await .await
.expect("TODO: panic message"); .expect("TODO: panic message");
@ -274,12 +274,12 @@ impl Handler<ClientObservableMessage> for ClientManager {
Message, Message,
}; };
match msg { match msg {
Message(addr, uuid, content) => self.send_message_request(ctx, addr, uuid, content), Message(sender, to, content) => self.send_message_request(ctx, sender, to, content),
GlobalMessage(addr, content) => { GlobalMessage(sender, content) => {
self.send_global_message_request(ctx, addr, content) self.send_global_message_request(ctx, sender, content)
} }
GetClients(addr) => self.send_client_list(ctx, addr), GetClients(sender) => self.send_client_list(ctx, sender),
GetGlobalMessages(addr) => self.send_global_messages(ctx, addr), GetGlobalMessages(sender) => self.send_global_messages(ctx, sender),
} }
} }
} }