Fixed messages being sent to sender
This commit is contained in:
parent
42677d71b5
commit
0fb618d5c1
|
|
@ -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),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue