This commit is contained in:
sxyazi 2025-05-02 19:08:49 +08:00
parent 436b483fb7
commit db4541282a
No known key found for this signature in database

View file

@ -100,30 +100,27 @@ impl Client {
); );
} }
if receiver == 0 { match (receiver, peers.get(&receiver).map(|p| p.able(kind))) {
// check if any peer is able to receive the message // Send to all receivers
let any_able = (Id(0), _) if peers.is_empty() => {
peers.keys().any(|peer| Self::receiver_able(kind, peer, &peers).is_ok()).then_some(()); bail!("No receiver found. Check if any receivers are running.")
if any_able.is_none() {
bail!("No peer is able to receive `{kind}` messages.");
} }
} else { (Id(0), _) if peers.values().all(|p| !p.able(kind)) => {
Self::receiver_able(kind, &receiver, &peers)?; bail!("No receiver has the ability to receive `{kind}` messages.")
}
(Id(0), _) => {}
// Send to a specific receiver
(_, Some(true)) => {}
(_, Some(false)) => {
bail!("Receiver `{receiver}` does not have the ability to receive `{kind}` messages.")
}
(_, None) => bail!("Receiver `{receiver}` not found. Check if the receiver is running."),
} }
Ok(()) Ok(())
} }
fn receiver_able(kind: &str, receiver: &Id, peers: &HashMap<Id, Peer>) -> Result<()> {
match peers.get(receiver).map(|p| p.able(kind)) {
Some(true) => Ok(()),
Some(false) => {
bail!("Receiver `{receiver}` does not have the ability to receive `{kind}` messages.")
}
None => bail!("Receiver `{receiver}` not found. Check if the receiver is running."),
}
}
/// Connect to an existing server and listen in on the messages that are being /// Connect to an existing server and listen in on the messages that are being
/// sent by other yazi instances: /// sent by other yazi instances:
/// - If no server is running, fail right away; /// - If no server is running, fail right away;