use parking_lot::RwLock;
use crate::client::models::User;
#[derive(Debug)]
pub struct UserCache {
user: RwLock<Option<User>>,
}
impl UserCache {
pub fn new(user: Option<User>) -> Self {
Self {
user: RwLock::new(user),
}
}
pub fn get(&self) -> Option<User> {
let user = self.user.read();
user.as_ref().map(|user| user.clone())
}
pub fn set(&self, user: User) {
let mut current = self.user.write();
*current = Some(user);
}
}
impl Default for UserCache {
fn default() -> Self {
Self::new(None)
}
}