diff --git a/src/rho/iota_connection.rs b/src/rho/iota_connection.rs index b827a07..a2378cf 100644 --- a/src/rho/iota_connection.rs +++ b/src/rho/iota_connection.rs @@ -283,42 +283,55 @@ impl IotaConnection { let mut interested_ids: Vec = Vec::new(); let calls: Vec> = call_manager::get_call_groups(receiver_id).await; - let mut invites: HashMap> = HashMap::new(); - + let mut invites: HashMap> = HashMap::new(); + let empty = &calls.is_empty(); for call in calls { for inviter in call.members.read().await.iter() { let inviter_id = inviter.user_id; if let Some(call_ids) = invites.get_mut(&inviter_id) { - call_ids.push(call.call_id); + call_ids.push(JsonValue::String(call.call_id.to_string())); } else { - invites.insert(inviter_id, vec![call.call_id]); + invites.insert( + inviter_id, + vec![JsonValue::String(call.call_id.to_string())], + ); } } } // Process contacts and add call information - // Enriched Contacts data: - // [{"user_id": "uuid", "calls": ["call_id"]}, {"user_id": "uuid"}] - let mut enriched_contacts = JsonValue::new_array(); - // Contacts data: - // [{"user_id": "uuid"}, {"user_id": "uuid"}] - if let Some(contacts_data) = cv.get_data(DataTypes::user_ids) { - if let JsonValue::Array(user_ids) = contacts_data { - for user_id in user_ids { - if let JsonValue::String(user_id_str) = user_id { - if let Ok(user_id) = Uuid::parse_str(user_id_str) { + let enriched_contacts = if *empty { + if let Some(contacts_data) = cv.get_data(DataTypes::user_ids) { + line(PrintType::CallIn, "Call empty"); + contacts_data.clone() + } else { + line(PrintType::CallIn, "Call empty No Data"); + JsonValue::new_array() + } + } else { + line(PrintType::CallIn, &format!("not empty: {:?}", invites)); + let mut enrc_contacts = JsonValue::new_array(); + if let Some(contacts_data) = cv.get_data(DataTypes::user_ids) { + if let JsonValue::Array(user_ids) = contacts_data { + for user_json in user_ids { + let user_id_str = user_json["user_id"].as_str().unwrap_or(""); + if let Ok(user_id) = Uuid::parse_str(&user_id_str) { interested_ids.push(user_id); let mut enriched_contact = JsonValue::new_object(); let _ = enriched_contact.insert("user_id", user_id.to_string()); - let _ = enriched_contact.insert("calls", JsonValue::new_array()); - let _ = enriched_contacts.push(enriched_contact); + let _ = enriched_contact.insert( + "calls", + JsonValue::Array(invites.get(&user_id).unwrap_or(&vec![]).clone()), + ); + let _ = enrc_contacts.push(enriched_contact); } } + } else { + enrc_contacts = contacts_data.clone(); } - } else { - enriched_contacts = contacts_data.clone(); } - } + enrc_contacts + }; // Notify OmegaConnection about user states OmegaConnection::user_states(receiver_id, interested_ids.clone()).await;