diff --git a/src/chat.rs b/src/chat.rs index 75a236525..eba16047a 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -2529,18 +2529,6 @@ pub fn delete_device_expired_messages(context: &Context) -> sql::Result<()> { Ok(()) } -/// Removes from the database locally deleted messages that also don't -/// have a server UID. -pub fn prune_tombstones(context: &Context) -> sql::Result<()> { - context.sql.execute( - "DELETE FROM msgs \ - WHERE (chat_id = ? OR hidden) \ - AND server_uid = 0", - params![DC_CHAT_ID_TRASH], - )?; - Ok(()) -} - #[cfg(test)] mod tests { use super::*; diff --git a/src/sql.rs b/src/sql.rs index 8e15d1fdd..51ee65262 100644 --- a/src/sql.rs +++ b/src/sql.rs @@ -8,7 +8,7 @@ use rusqlite::{Connection, OpenFlags, Statement, NO_PARAMS}; use thread_local_object::ThreadLocal; use crate::chat::{update_device_icon, update_saved_messages_icon}; -use crate::constants::ShowEmails; +use crate::constants::{ShowEmails, DC_CHAT_ID_TRASH}; use crate::context::Context; use crate::dc_tools::*; use crate::param::*; @@ -1053,6 +1053,18 @@ pub fn get_rowid2_with_conn( } } +/// Removes from the database locally deleted messages that also don't +/// have a server UID. +fn prune_tombstones(context: &Context) -> Result<()> { + context.sql.execute( + "DELETE FROM msgs \ + WHERE (chat_id = ? OR hidden) \ + AND server_uid = 0", + params![DC_CHAT_ID_TRASH], + )?; + Ok(()) +} + pub fn housekeeping(context: &Context) { let mut files_in_use = HashSet::new(); let mut unreferenced_count = 0; @@ -1165,6 +1177,13 @@ pub fn housekeeping(context: &Context) { } } + if let Err(err) = prune_tombstones(context) { + warn!( + context, + "Houskeeping: Cannot prune message tombstones: {}", err + ); + } + info!(context, "Housekeeping done.",); }