signer-daemon 0.3.2

Signer daemon package.
Documentation
use crate::{SignerDaemon, SignerDaemonCore, model::viewobject::MessageVO};
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MessageKeyVO {
    pub chat_key: String,
    pub chat_variant: String,
    pub user_key: String,
    pub message_id: String,
}

impl MessageKeyVO {
    pub async fn from_message(
        core: &SignerDaemonCore,
        message: &MessageVO,
    ) -> crate::DaemonResult<Self> {
        let chat_key = message.chat.chat_key(&core).await?;
        let chat_variant = message.chat.chat_variant();
        let user_key = message.user_key.clone();
        let message_id = message.id.clone();
        Ok(Self {
            chat_key,
            chat_variant,
            user_key,
            message_id,
        })
    }

    pub async fn get_message(
        &self,
        daemon: &SignerDaemon,
    ) -> crate::DaemonResult<Option<MessageVO>> {
        daemon
            .store
            .message
            .get(
                &self.message_id,
                &self.user_key,
                &self.chat_key,
                &self.chat_variant,
            )
            .await
    }
}