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
}
}