diff options
| author | Max Audron <audron@cocaine.farm> | 2021-07-21 18:24:39 +0200 |
|---|---|---|
| committer | Max Audron <audron@cocaine.farm> | 2021-07-21 18:24:39 +0200 |
| commit | 11284c56bb064c81d23e8d9f73c6a20171f89876 (patch) | |
| tree | 7c4956b6138a1ef449db4821ed241d36a19a3b23 /src/message | |
| parent | minor docs and cleanup (diff) | |
fix network object
Diffstat (limited to 'src/message')
| -rw-r--r-- | src/message/signalproxy/objects/network.rs | 42 |
1 files changed, 24 insertions, 18 deletions
diff --git a/src/message/signalproxy/objects/network.rs b/src/message/signalproxy/objects/network.rs index 6bf9265..cecc412 100644 --- a/src/message/signalproxy/objects/network.rs +++ b/src/message/signalproxy/objects/network.rs @@ -150,26 +150,32 @@ impl crate::message::signalproxy::Network for Network { }) .unwrap(), irc_users: { - let users: Vec<IrcUser> = Vec::<IrcUser>::from_network( - &mut users_and_channels.get("Users").unwrap().try_into().unwrap(), - ); - users - .into_iter() - .map(|user| (user.nick.clone(), user)) - .collect() + match users_and_channels.get("Users") { + Some(users) => { + let users: Vec<IrcUser> = Vec::<IrcUser>::from_network( + &mut users.try_into().expect("failed to convert Users"), + ); + + users + .into_iter() + .map(|user| (user.nick.clone(), user)) + .collect() + } + None => HashMap::new(), + } }, irc_channels: { - let channels: Vec<IrcChannel> = Vec::<IrcChannel>::from_network( - &mut users_and_channels - .get("Channels") - .unwrap() - .try_into() - .unwrap(), - ); - channels - .into_iter() - .map(|channel| (channel.name.clone(), channel)) - .collect() + match users_and_channels.get("Channels") { + Some(channels) => { + let channels: Vec<IrcChannel> = + Vec::<IrcChannel>::from_network(&mut channels.try_into().unwrap()); + channels + .into_iter() + .map(|channel| (channel.name.clone(), channel)) + .collect() + } + None => HashMap::new(), + } }, supports: { i.position(|x| *x == Variant::ByteArray(String::from("Supports"))) |
