diff --git a/src/context.rs b/src/context.rs index e1a0725e8..104db486b 100644 --- a/src/context.rs +++ b/src/context.rs @@ -4,7 +4,6 @@ use crate::chat::*; use crate::constants::*; use crate::contact::*; use crate::dc_loginparam::*; -use crate::dc_move::*; use crate::dc_receive_imf::*; use crate::dc_tools::*; use crate::imap::*; @@ -228,7 +227,7 @@ unsafe fn cb_precheck_imf( if as_str(old_server_folder) != server_folder || old_server_uid != server_uid { dc_update_server_uid(context, rfc724_mid, server_folder, server_uid); } - dc_do_heuristics_moves(context, server_folder, msg_id); + do_heuristics_moves(context, server_folder, msg_id); if 0 != mark_seen { job_add( context, @@ -575,6 +574,45 @@ pub fn dc_is_mvbox(context: &Context, folder_name: impl AsRef) -> bool { } } +pub fn do_heuristics_moves(context: &Context, folder: &str, msg_id: u32) { + if context + .sql + .get_config_int(context, "mvbox_move") + .unwrap_or_else(|| 1) + == 0 + { + return; + } + + if !dc_is_inbox(context, folder) && !dc_is_sentbox(context, folder) { + return; + } + + if let Ok(msg) = dc_msg_new_load(context, msg_id) { + if dc_msg_is_setupmessage(&msg) { + // do not move setup messages; + // there may be a non-delta device that wants to handle it + return; + } + + if dc_is_mvbox(context, folder) { + dc_update_msg_move_state(context, msg.rfc724_mid, MoveState::Stay); + } + + // 1 = dc message, 2 = reply to dc message + if 0 != msg.is_dc_message { + job_add( + context, + Action::MoveMsg, + msg.id as libc::c_int, + Params::new(), + 0, + ); + dc_update_msg_move_state(context, msg.rfc724_mid, MoveState::Moving); + } + } +} + #[cfg(test)] mod tests { use super::*; diff --git a/src/dc_move.rs b/src/dc_move.rs deleted file mode 100644 index a4f29751c..000000000 --- a/src/dc_move.rs +++ /dev/null @@ -1,44 +0,0 @@ -use crate::constants::*; -use crate::context::*; -use crate::job::*; -use crate::message::*; -use crate::param::Params; - -pub fn dc_do_heuristics_moves(context: &Context, folder: &str, msg_id: u32) { - if context - .sql - .get_config_int(context, "mvbox_move") - .unwrap_or_else(|| 1) - == 0 - { - return; - } - - if !dc_is_inbox(context, folder) && !dc_is_sentbox(context, folder) { - return; - } - - if let Ok(msg) = dc_msg_new_load(context, msg_id) { - if dc_msg_is_setupmessage(&msg) { - // do not move setup messages; - // there may be a non-delta device that wants to handle it - return; - } - - if dc_is_mvbox(context, folder) { - dc_update_msg_move_state(context, msg.rfc724_mid, MoveState::Stay); - } - - // 1 = dc message, 2 = reply to dc message - if 0 != msg.is_dc_message { - job_add( - context, - Action::MoveMsg, - msg.id as libc::c_int, - Params::new(), - 0, - ); - dc_update_msg_move_state(context, msg.rfc724_mid, MoveState::Moving); - } - } -} diff --git a/src/dc_receive_imf.rs b/src/dc_receive_imf.rs index 1871a226c..d66e01fe8 100644 --- a/src/dc_receive_imf.rs +++ b/src/dc_receive_imf.rs @@ -13,9 +13,8 @@ use sha2::{Digest, Sha256}; use crate::chat::{self, Chat}; use crate::constants::*; use crate::contact::*; -use crate::context::Context; +use crate::context::{do_heuristics_moves, Context}; use crate::dc_mimeparser::*; -use crate::dc_move::*; use crate::dc_securejoin::*; use crate::dc_strencode::*; use crate::dc_tools::*; @@ -735,7 +734,7 @@ unsafe fn add_parts( } } - dc_do_heuristics_moves(context, server_folder.as_ref(), *insert_msg_id); + do_heuristics_moves(context, server_folder.as_ref(), *insert_msg_id); cleanup(mime_in_reply_to, mime_references, txt_raw); Ok(()) diff --git a/src/lib.rs b/src/lib.rs index cfb4ca51c..e67d6c046 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -56,7 +56,6 @@ pub mod dc_imex; mod dc_loginparam; mod dc_mimefactory; pub mod dc_mimeparser; -mod dc_move; pub mod dc_receive_imf; pub mod dc_securejoin; mod dc_simplify;