aboutsummaryrefslogtreecommitdiffstats
path: root/filamento/src
diff options
context:
space:
mode:
authorLibravatar cel 🌸 <cel@bunny.garden>2025-05-05 18:40:05 +0100
committerLibravatar cel 🌸 <cel@bunny.garden>2025-05-05 18:40:05 +0100
commit8e6a02f16c3e542492241f585a91fa0100ea7e33 (patch)
tree315c8432368029d8373d75ff12d824c68ab19ce0 /filamento/src
parentccae86c3b38f829828adc40ab1695b137dc2b070 (diff)
downloadluz-8e6a02f16c3e542492241f585a91fa0100ea7e33.tar.gz
luz-8e6a02f16c3e542492241f585a91fa0100ea7e33.tar.bz2
luz-8e6a02f16c3e542492241f585a91fa0100ea7e33.zip
feat(filamento): reactive_stores support
Diffstat (limited to '')
-rw-r--r--filamento/src/chat.rs4
-rw-r--r--filamento/src/logic/process_stanza.rs1
-rw-r--r--filamento/src/roster.rs2
-rw-r--r--filamento/src/user.rs1
4 files changed, 7 insertions, 1 deletions
diff --git a/filamento/src/chat.rs b/filamento/src/chat.rs
index 936613e..bb0793f 100644
--- a/filamento/src/chat.rs
+++ b/filamento/src/chat.rs
@@ -1,13 +1,14 @@
use chrono::{DateTime, Utc};
use jid::JID;
use rusqlite::{
- types::{FromSql, ToSqlOutput, Value},
ToSql,
+ types::{FromSql, ToSqlOutput, Value},
};
use uuid::Uuid;
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+#[cfg_attr(feature = "reactive_stores", derive(reactive_stores::Store))]
pub struct Message {
pub id: Uuid,
// does not contain full user information
@@ -78,6 +79,7 @@ pub struct Body {
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+#[cfg_attr(feature = "reactive_stores", derive(reactive_stores::Store))]
pub struct Chat {
pub correspondent: JID,
pub have_chatted: bool,
diff --git a/filamento/src/logic/process_stanza.rs b/filamento/src/logic/process_stanza.rs
index a5d40b2..81c3b1f 100644
--- a/filamento/src/logic/process_stanza.rs
+++ b/filamento/src/logic/process_stanza.rs
@@ -77,6 +77,7 @@ pub async fn recv_message<Fs: FileStore + Clone>(
},
delivery: None,
};
+ // TODO: process message type="error"
// save the message to the database
match logic.db().upsert_chat_and_user(&from).await {
diff --git a/filamento/src/roster.rs b/filamento/src/roster.rs
index 8f77086..284e2b8 100644
--- a/filamento/src/roster.rs
+++ b/filamento/src/roster.rs
@@ -12,6 +12,7 @@ pub struct ContactUpdate {
}
#[derive(Debug, Clone, PartialEq, Eq)]
+#[cfg_attr(feature = "reactive_stores", derive(reactive_stores::Store))]
pub struct Contact {
// jid is the id used to reference everything, but not the primary key
pub user_jid: JID,
@@ -21,6 +22,7 @@ pub struct Contact {
// TODO: avatar, nickname
/// nickname picked by contact
// nickname: Option<String>,
+ #[cfg_attr(feature = "reactive_stores", store(key: String = |group| group.clone()))]
pub groups: HashSet<String>,
}
diff --git a/filamento/src/user.rs b/filamento/src/user.rs
index f19a4ad..f30933c 100644
--- a/filamento/src/user.rs
+++ b/filamento/src/user.rs
@@ -2,6 +2,7 @@ use jid::JID;
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+#[cfg_attr(feature = "reactive_stores", derive(reactive_stores::Store))]
pub struct User {
pub jid: JID,
pub nick: Option<String>,