diff --git a/src/imp.rs b/src/imp.rs index a64dded..df56cd7 100644 --- a/src/imp.rs +++ b/src/imp.rs @@ -3,19 +3,20 @@ use libcwtch::structs::*; use libcwtch::CwtchLib; use serde_json; +use crate::imp::NewContactPolicy::AllowList; // Todo: move Behaviour + building to seperate file -pub struct AllowList { +pub struct AllowListMembers { // list of peers to allow by handle peers: Vec, // list of groups to join and listen for peers in peer list from groups: Vec, } -impl AllowList { +impl AllowListMembers { pub fn new(peers: Vec, groups: Vec) -> Self { - AllowList{peers: peers, groups: groups} + AllowListMembers {peers: peers, groups: groups} } } @@ -29,7 +30,7 @@ pub enum NewContactPolicy { Accept, /// AllowList is a list of handles that connections will be allowed from and connected to, and will be accepted /// everything else will be ignored - AllowList(AllowList) + AllowList(AllowListMembers) } /// Settings for the bot on how it should automatically behave @@ -234,10 +235,19 @@ impl Imp { self.process_contact(conversation.identifier); } + // Allow list should add all people in the list + if let AllowList(allow_list) = &self.behaviour.new_contant_policy { + for handle in &allow_list.peers { + if let None = profile.find_conversation_id_by_handle(handle.clone()) { + self.cwtch.import_bundle(&profile.handle.clone(), &handle.clone()); + } + } + } + self.profile = Some(profile); } Event::AppError { data } => { - if initialized && data["Error"] == "Loaded 0 profiles" { + if initialized && data.contains_key("Error") && data["Error"] == "Loaded 0 profiles" { self.cwtch .create_profile(&self.behaviour.profile_name, &self.password); }