diff options
Diffstat (limited to 'src/user_presences.rs')
-rw-r--r-- | src/user_presences.rs | 126 |
1 files changed, 81 insertions, 45 deletions
diff --git a/src/user_presences.rs b/src/user_presences.rs index 1a719a2..e864dbf 100644 --- a/src/user_presences.rs +++ b/src/user_presences.rs @@ -43,7 +43,7 @@ impl UserPresences { pub struct Presences { /// presences are sorted by time, first by type, then by last activity. - presences: IndexMap<String, Presence> + presences: IndexMap<String, Presence>, } impl Presences { @@ -55,47 +55,89 @@ impl Presences { /// gets the highest priority presence pub fn presence(&self) -> Option<(String, Presence)> { - if let Some((resource, presence)) = self.presences.iter().filter(|(_resource, presence)| if let PresenceType::Online(online) = &presence.presence { - online.show == Some(Show::DoNotDisturb) - } else { - false - }).next() { - return Some((resource.clone(), presence.clone())) + if let Some((resource, presence)) = self + .presences + .iter() + .filter(|(_resource, presence)| { + if let PresenceType::Online(online) = &presence.presence { + online.show == Some(Show::DoNotDisturb) + } else { + false + } + }) + .next() + { + return Some((resource.clone(), presence.clone())); } - if let Some((resource, presence)) = self.presences.iter().filter(|(_resource, presence)| if let PresenceType::Online(online) = &presence.presence { - online.show == Some(Show::Chat) - } else { - false - }).next() { - return Some((resource.clone(), presence.clone())) + if let Some((resource, presence)) = self + .presences + .iter() + .filter(|(_resource, presence)| { + if let PresenceType::Online(online) = &presence.presence { + online.show == Some(Show::Chat) + } else { + false + } + }) + .next() + { + return Some((resource.clone(), presence.clone())); } - if let Some((resource, presence)) = self.presences.iter().filter(|(_resource, presence)| if let PresenceType::Online(online) = &presence.presence { - online.show == None - } else { - false - }).next() { - return Some((resource.clone(), presence.clone())) + if let Some((resource, presence)) = self + .presences + .iter() + .filter(|(_resource, presence)| { + if let PresenceType::Online(online) = &presence.presence { + online.show == None + } else { + false + } + }) + .next() + { + return Some((resource.clone(), presence.clone())); } - if let Some((resource, presence)) = self.presences.iter().filter(|(_resource, presence)| if let PresenceType::Online(online) = &presence.presence { - online.show == Some(Show::Away) - } else { - false - }).next() { - return Some((resource.clone(), presence.clone())) + if let Some((resource, presence)) = self + .presences + .iter() + .filter(|(_resource, presence)| { + if let PresenceType::Online(online) = &presence.presence { + online.show == Some(Show::Away) + } else { + false + } + }) + .next() + { + return Some((resource.clone(), presence.clone())); } - if let Some((resource, presence)) = self.presences.iter().filter(|(_resource, presence)| if let PresenceType::Online(online) = &presence.presence { - online.show == Some(Show::ExtendedAway) - } else { - false - }).next() { - return Some((resource.clone(), presence.clone())) + if let Some((resource, presence)) = self + .presences + .iter() + .filter(|(_resource, presence)| { + if let PresenceType::Online(online) = &presence.presence { + online.show == Some(Show::ExtendedAway) + } else { + false + } + }) + .next() + { + return Some((resource.clone(), presence.clone())); } - if let Some((resource, presence)) = self.presences.iter().filter(|(_resource, presence)| if let PresenceType::Offline(_offline) = &presence.presence { - true - } else { - false - }).next() { - return Some((resource.clone(), presence.clone())) + if let Some((resource, presence)) = self + .presences + .iter() + .filter(|(_resource, presence)| { + if let PresenceType::Offline(_offline) = &presence.presence { + true + } else { + false + } + }) + .next() + { + return Some((resource.clone(), presence.clone())); } else { None } @@ -103,19 +145,14 @@ impl Presences { pub fn update_presence(&mut self, resource: String, presence: Presence) { let index = match self.presences.binary_search_by(|_, existing_presence| { - presence.timestamp - .cmp( - &existing_presence.timestamp - ) + presence.timestamp.cmp(&existing_presence.timestamp) }) { Ok(i) => i, Err(i) => i, }; self.presences.insert_before( // TODO: check if this logic is correct - index, - resource, - presence, + index, resource, presence, ); } @@ -130,4 +167,3 @@ impl Presences { } } } - |