diff --git a/Cargo.lock b/Cargo.lock index bb2e283..babd06e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3279,7 +3279,7 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "ttp-core" version = "0.1.0" -source = "git+https://git.methanium.net/Tensamin/TTP.git#01cefdf60d77b39565d662f5b585058a2b62decf" +source = "git+https://git.methanium.net/Tensamin/TTP.git#4c8cacf8e8b58d917c24fa6baecefefbce2294b3" dependencies = [ "base64 0.22.1", "byteorder", @@ -3292,7 +3292,7 @@ dependencies = [ [[package]] name = "ttp-native" version = "0.1.0" -source = "git+https://git.methanium.net/Tensamin/TTP.git#01cefdf60d77b39565d662f5b585058a2b62decf" +source = "git+https://git.methanium.net/Tensamin/TTP.git#4c8cacf8e8b58d917c24fa6baecefefbce2294b3" dependencies = [ "quinn", "rustls", @@ -3345,9 +3345,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" [[package]] name = "unicode-ident" diff --git a/src/rho/connection.rs b/src/rho/connection.rs index 255463e..e4ff1b2 100755 --- a/src/rho/connection.rs +++ b/src/rho/connection.rs @@ -452,32 +452,40 @@ impl GeneralConnection { }) .collect() }; + if mapped.is_empty() { + DataValue::Array(contacts) + } else { + let mut new_contacts: Vec = Vec::new(); + for contact in contacts { + if let Some(mut contact_map) = contact.as_map() { + let filtered_mapped: Vec<( + Arc, + &Arc, + )> = mapped + .clone() + .into_iter() + .filter(|(caller, _)| { + caller.user_id + == contact_map + .get(&DataTypes::user_id) + .unwrap_or(&DataValue::Null) + .as_number() + .unwrap_or(0) + as u64 + }) + .collect(); + if filtered_mapped.is_empty() { + new_contacts.push( + DataValue::container_from_map(&contact_map), + ); + continue; + } - let mut new_contacts: Vec = Vec::new(); - for contact in contacts { - if let Some(mut contact_map) = contact.as_map() { - let filtered_mapped: Vec<( - Arc, - &Arc, - )> = mapped - .clone() - .into_iter() - .filter(|(caller, _)| { - caller.user_id - == contact_map - .get(&DataTypes::user_id) - .unwrap_or(&DataValue::Null) - .as_number() - .unwrap_or(0) - as u64 - }) - .collect(); - - let mut vec_of_filtered_calls: Vec = - Vec::new(); - for (caller, call_group) in filtered_mapped { - vec_of_filtered_calls.push(DataValue::Container( - vec![ + let mut vec_of_filtered_calls: Vec = + Vec::new(); + for (caller, call_group) in filtered_mapped { + vec_of_filtered_calls.push( + DataValue::Container(vec![ ( DataTypes::call_id, DataValue::Str( @@ -508,22 +516,24 @@ impl GeneralConnection { .clone(), ), ), - ], + ]), + ); + } + + contact_map.insert( + DataTypes::calls, + DataValue::Array(vec_of_filtered_calls), + ); + + new_contacts.push(DataValue::container_from_map( + &contact_map, )); + } else { + new_contacts.push(contact.clone()); } - - contact_map.insert( - DataTypes::calls, - DataValue::Array(vec_of_filtered_calls), - ); - - new_contacts - .push(DataValue::container_from_map(&contact_map)); - } else { - new_contacts.push(contact.clone()); } + DataValue::Array(new_contacts) } - DataValue::Array(new_contacts) } else { v.clone() }