diff --git a/hunter/src/scheduler.rs b/hunter/src/scheduler.rs index 1577631..680f6de 100644 --- a/hunter/src/scheduler.rs +++ b/hunter/src/scheduler.rs @@ -1,4 +1,4 @@ -use std::collections::{HashMap, BTreeMap}; +use std::collections::{HashMap, BTreeMap, hash_map}; use std::sync::Arc; use std::time::Duration; use cave::feed::{Mention, Account}; @@ -86,13 +86,20 @@ impl Scheduler { let now = Instant::now(); let host = introduce_host.host; - if let std::collections::hash_map::Entry::Vacant(entry) = self.instances.entry(host.clone()) { - entry.insert(Instance { - last_fetch: None, - error: false, - known_user: introduce_host.known_user, - }); - self.queue.insert(now, host); + match self.instances.entry(host.clone()) { + hash_map::Entry::Vacant(entry) => { + entry.insert(Instance { + last_fetch: None, + error: false, + known_user: introduce_host.known_user, + }); + self.queue.insert(now, host); + } + hash_map::Entry::Occupied(ref mut entry) => { + if let Some(known_user) = &introduce_host.known_user { + entry.get_mut().known_user = Some(known_user.clone()); + } + } } true