use std::collections::HashMap;
use std::sync::Mutex;
use matrix_sdk::ruma::OwnedUserId;
#[derive(Clone, Debug)]
pub struct CachedProfile {
pub display_name: Option<String>,
pub avatar_url: Option<String>,
}
pub struct UserProfileCache {
entries: Mutex<HashMap<OwnedUserId, CachedProfile>>,
}
impl UserProfileCache {
pub fn new() -> Self {
Self {
entries: Mutex::new(HashMap::new()),
}
}
pub fn get(&self, user_id: &OwnedUserId) -> Option<CachedProfile> {
self.entries.lock().ok()?.get(user_id).cloned()
}
pub fn insert(&self, user_id: OwnedUserId, profile: CachedProfile) {
if let Ok(mut entries) = self.entries.lock() {
entries.insert(user_id, profile);
}
}
}
impl Default for UserProfileCache {
fn default() -> Self {
Self::new()
}
}