rustybook-messenger 0.2.1

Messenger client for Rustybook
Documentation
pub mod events;
pub mod update;

mod message;
mod user;

pub use message::MessageCache;
pub use user::UserCache;

use crate::cache::update::CacheUpdate;
use crate::client::models::{
    Message,
    User,
};
use crate::gateway::events::Event;

#[derive(Debug)]
pub struct Cache {
    user: UserCache,
    messages: MessageCache,
}

impl Cache {
    /// Creates a cache with default limits.
    pub fn new() -> Self {
        Self {
            user: UserCache::new(None),
            messages: MessageCache::new(),
        }
    }

    /// Returns the cached user.
    pub fn user(&self) -> Option<User> {
        self.user.get()
    }

    /// Updates cached user.
    pub fn set_user(&self, user: User) {
        self.user.set(user);
    }

    /// Returns cached message events.
    pub fn messages(&self) -> Vec<Message> {
        self.messages.messages()
    }

    /// Caches incoming messenger event payloads.
    pub fn update(&self, event: &mut Event) {
        let _ = event.update(self);
    }

    pub fn push_message(&self, message: Message) {
        self.messages.push_message(message);
    }
}

impl Default for Cache {
    fn default() -> Self {
        Self::new()
    }
}