use super::*;
use crate::fl;
impl App {
pub fn is_selected_favorite(&mut self) -> bool {
if let Some(s) = self.selected_server() {
self.favorites.contains(&Self::server_key(&s))
} else {
false
}
}
pub fn toggle_favorite(&mut self) {
if let Some(server) = self.selected_server() {
let key = Self::server_key(&server);
if self.favorites.contains(&key) {
self.favorites.remove(&key);
self.set_status_message(fl!("favorite-removed"));
} else {
self.favorites.insert(key);
self.set_status_message(fl!("favorite-added"));
}
}
}
pub fn toggle_favorites_view(&mut self) {
self.favorites_only = !self.favorites_only;
self.items_dirty = true;
self.selected_index = 0;
self.list_state.select(Some(0));
let msg = if self.favorites_only {
fl!("favorites-title")
} else {
fl!("status-normal")
};
self.set_status_message(msg);
}
pub fn record_connection(&mut self, server: &ResolvedServer) {
let key = Self::server_key(server);
let ts = std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.map(|d| d.as_secs())
.unwrap_or(0);
self.last_seen.insert(key, ts);
}
pub fn last_seen_for(&self, server: &ResolvedServer) -> Option<u64> {
self.last_seen.get(&Self::server_key(server)).copied()
}
}