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