signer-daemon 0.2.1

Signer daemon package.
Documentation
use crate::{SignerDaemon, 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(
    daemon: &SignerDaemon,
    message: &MessageVO,
  ) -> anyhow::Result<Self> {
    let chat_key = message.chat.chat_key(&daemon).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,
  ) -> anyhow::Result<Option<MessageVO>> {
    daemon
      .get_message(
        &self.message_id,
        &self.user_key,
        &self.chat_key,
        &self.chat_variant,
      )
      .await
  }
}