diff options
Diffstat (limited to 'filamento/src/logic')
| -rw-r--r-- | filamento/src/logic/abort.rs | 4 | ||||
| -rw-r--r-- | filamento/src/logic/connect.rs | 4 | ||||
| -rw-r--r-- | filamento/src/logic/connection_error.rs | 4 | ||||
| -rw-r--r-- | filamento/src/logic/disconnect.rs | 4 | ||||
| -rw-r--r-- | filamento/src/logic/local_only.rs | 4 | ||||
| -rw-r--r-- | filamento/src/logic/mod.rs | 4 | ||||
| -rw-r--r-- | filamento/src/logic/offline.rs | 15 | ||||
| -rw-r--r-- | filamento/src/logic/online.rs | 9 | ||||
| -rw-r--r-- | filamento/src/logic/process_stanza.rs | 34 |
9 files changed, 51 insertions, 31 deletions
diff --git a/filamento/src/logic/abort.rs b/filamento/src/logic/abort.rs index 3588b13..1de905a 100644 --- a/filamento/src/logic/abort.rs +++ b/filamento/src/logic/abort.rs @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2025 cel <cel@bunny.garden> +// +// SPDX-License-Identifier: AGPL-3.0-or-later + use lampada::error::ReadError; use crate::files::FileStore; diff --git a/filamento/src/logic/connect.rs b/filamento/src/logic/connect.rs index 6e392f1..a4d6f72 100644 --- a/filamento/src/logic/connect.rs +++ b/filamento/src/logic/connect.rs @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2025 cel <cel@bunny.garden> +// +// SPDX-License-Identifier: AGPL-3.0-or-later + use lampada::{Connected, Logic, error::WriteError}; use tokio::sync::oneshot; use tracing::debug; diff --git a/filamento/src/logic/connection_error.rs b/filamento/src/logic/connection_error.rs index 36c1cef..7cb39b6 100644 --- a/filamento/src/logic/connection_error.rs +++ b/filamento/src/logic/connection_error.rs @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2025 cel <cel@bunny.garden> +// +// SPDX-License-Identifier: AGPL-3.0-or-later + use lampada::error::ConnectionError; use crate::files::FileStore; diff --git a/filamento/src/logic/disconnect.rs b/filamento/src/logic/disconnect.rs index ebcfd4f..bbff8be 100644 --- a/filamento/src/logic/disconnect.rs +++ b/filamento/src/logic/disconnect.rs @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2025 cel <cel@bunny.garden> +// +// SPDX-License-Identifier: AGPL-3.0-or-later + use lampada::Connected; use stanza::client::Stanza; diff --git a/filamento/src/logic/local_only.rs b/filamento/src/logic/local_only.rs index 7f3a2e6..5dc8793 100644 --- a/filamento/src/logic/local_only.rs +++ b/filamento/src/logic/local_only.rs @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2025 cel <cel@bunny.garden> +// +// SPDX-License-Identifier: AGPL-3.0-or-later + use jid::{BareJID, JID}; use uuid::Uuid; diff --git a/filamento/src/logic/mod.rs b/filamento/src/logic/mod.rs index ddf0343..7ae0235 100644 --- a/filamento/src/logic/mod.rs +++ b/filamento/src/logic/mod.rs @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2025 cel <cel@bunny.garden> +// +// SPDX-License-Identifier: AGPL-3.0-or-later + use std::{collections::HashMap, sync::Arc}; use jid::{BareJID, JID}; diff --git a/filamento/src/logic/offline.rs b/filamento/src/logic/offline.rs index aa84f3d..1d79f86 100644 --- a/filamento/src/logic/offline.rs +++ b/filamento/src/logic/offline.rs @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2025 cel <cel@bunny.garden> +// +// SPDX-License-Identifier: AGPL-3.0-or-later + use std::process::id; use chrono::Utc; @@ -163,21 +167,14 @@ pub async fn handle_offline_result<Fs: FileStore + Clone>( delivery: Some(Delivery::Failed), timestamp, body, + source: Vec::new(), }; // try to store in message history that there is a new message that is sending. if client is quit mid-send then can mark as failed and re-send // TODO: mark these as potentially failed upon client launch if let Err(e) = logic .db() // TODO: can create message without a resource.... - .create_message_with_user_resource( - message.clone(), - jid.clone(), - // TODO: when message is queued and sent, the from must also be updated with the correct resource - FullJID { - bare_jid: logic.jid.clone(), - resourcepart: "unsent".to_string(), - }, - ) + .create_message(message.clone(), jid.clone(), logic.jid.clone()) .await { // TODO: should these really be handle_error or just the error macro? diff --git a/filamento/src/logic/online.rs b/filamento/src/logic/online.rs index b36f9a9..d49a844 100644 --- a/filamento/src/logic/online.rs +++ b/filamento/src/logic/online.rs @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2025 cel <cel@bunny.garden> +// +// SPDX-License-Identifier: AGPL-3.0-or-later + use std::{io::Cursor, time::Duration}; use base64::{prelude::BASE64_STANDARD, Engine}; @@ -520,13 +524,15 @@ pub async fn handle_send_message<Fs: FileStore + Clone>(logic: &ClientLogic<Fs>, body: body.clone(), timestamp, delivery: Some(Delivery::Sending), + // TODO: raw stanza logging + source: Vec::new(), }; // try to store in message history that there is a new message that is sending. if client is quit mid-send then can mark as failed and re-send // TODO: mark these as potentially failed upon client launch if let Err(e) = logic .db() - .create_message_with_user_resource(message.clone(), jid.clone(), connection.jid().clone()) + .create_message(message.clone(), jid.clone(), connection.jid().to_bare()) .await { // TODO: should these really be handle_error or just the error macro? @@ -586,6 +592,7 @@ pub async fn handle_send_message<Fs: FileStore + Clone>(logic: &ClientLogic<Fs>, match result { Ok(_) => { info!("sent message: {:?}", message_stanza); + // TODO: raw stanza if let Err(e) = logic.db().update_message_delivery(id, Delivery::Written).await { error!("updating message delivery: {}", e); } diff --git a/filamento/src/logic/process_stanza.rs b/filamento/src/logic/process_stanza.rs index 67b0d3f..dab475d 100644 --- a/filamento/src/logic/process_stanza.rs +++ b/filamento/src/logic/process_stanza.rs @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2025 cel <cel@bunny.garden> +// +// SPDX-License-Identifier: AGPL-3.0-or-later + use std::str::FromStr; use base64::{Engine, prelude::BASE64_STANDARD}; @@ -76,31 +80,19 @@ pub async fn recv_message<Fs: FileStore + Clone>( body: body.body.unwrap_or_default(), }, delivery: None, + // TODO: log raw stanza + source: Vec::new(), }; // TODO: process message type="error" // save the message to the database - match logic.db().upsert_chat_and_user(from.to_bare()).await { - Ok(_) => match from.as_full() { - Ok(from) => { - if let Err(e) = logic - .db() - .create_message_with_user_resource( - message.clone(), - from.to_bare(), - from.clone(), - ) - .await - { - error!("failed to create message: {}", e); - } - } - Err(e) => error!("failed to create message: {}", e), - }, - Err(e) => { - error!("failed to upsert chat and user: {}", e); - } - }; + if let Err(e) = logic + .db() + .create_message(message.clone(), from.to_bare(), from.to_bare()) + .await + { + error!("failed to create message: {}", e); + } let from_user = match logic.db().read_user(from.to_bare()).await { Ok(u) => u, |
