ubisync/ubisync-lib/src/messages/mod.rs

72 lines
1.4 KiB
Rust
Raw Normal View History

2024-01-05 20:48:23 +01:00
use serde::{Deserialize, Serialize};
2023-12-07 19:51:19 +01:00
2024-03-23 18:39:06 +01:00
use crate::types::{ElementContent, ElementId, Family, MessageId, PotId};
2023-12-07 19:51:19 +01:00
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Message {
id: MessageId,
signature: MessageSignature,
content: MessageContent,
}
2024-01-05 21:34:37 +01:00
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct MessageRelations {
pub parents: Vec<MessageId>,
}
2023-12-07 19:51:19 +01:00
#[derive(Serialize, Deserialize, Debug, Clone)]
pub enum MessageContent {
Hello {
peer_name: String,
family: Option<Family>,
2023-12-07 19:51:19 +01:00
},
JoinFamily,
AddedToFamily {
family: Family,
},
LeaveFamily,
2023-12-07 19:51:19 +01:00
CreateElement {
id: ElementId,
content: ElementContent,
2024-01-21 12:24:05 +01:00
pot: PotId,
2023-12-07 19:51:19 +01:00
},
UpdateElement {
2023-12-07 19:51:19 +01:00
id: ElementId,
content: ElementContent,
},
RemoveElement {
id: ElementId,
2024-01-05 20:48:23 +01:00
},
2024-01-21 12:24:05 +01:00
AddPot {
id: PotId,
app_type: String,
},
2023-12-07 19:51:19 +01:00
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct MessageSignature {}
impl Message {
pub fn new(content: MessageContent) -> Self {
Message {
id: MessageId::new(),
2024-01-05 20:48:23 +01:00
signature: MessageSignature {},
2023-12-07 19:51:19 +01:00
content: content,
}
}
pub fn content(&self) -> &MessageContent {
&self.content
}
pub fn id(&self) -> &MessageId {
&self.id
}
}
impl MessageSignature {
pub fn verify(&self, _content: &MessageContent) -> bool {
true
}
2024-01-05 20:48:23 +01:00
}