mirror of
https://github.com/chatmail/core.git
synced 2026-05-15 12:56:30 +03:00
Use 0 value for "delete_server_after" default.
Now 0 means "never delete", 1 means "delete at once" and other values indicate the number of seconds after which them message should be deleted from the server. Configuration value interpretation is moved into Context.get_config_delete_server_after() function.
This commit is contained in:
@@ -68,9 +68,12 @@ pub enum Config {
|
|||||||
/// Timer in seconds after which the message is deleted from the
|
/// Timer in seconds after which the message is deleted from the
|
||||||
/// server.
|
/// server.
|
||||||
///
|
///
|
||||||
/// Equals to -1 by default, which means the message is never
|
/// Equals to 0 by default, which means the message is never
|
||||||
/// deleted.
|
/// deleted.
|
||||||
#[strum(props(default = "-1"))]
|
///
|
||||||
|
/// Value 1 is treated as "delete at once": messages are deleted
|
||||||
|
/// immediately, without moving to DeltaChat folder.
|
||||||
|
#[strum(props(default = "0"))]
|
||||||
DeleteServerAfter,
|
DeleteServerAfter,
|
||||||
|
|
||||||
SaveMimeHeaders,
|
SaveMimeHeaders,
|
||||||
@@ -136,6 +139,18 @@ impl Context {
|
|||||||
self.get_config_int(key) != 0
|
self.get_config_int(key) != 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets configured "delete_server_after" value.
|
||||||
|
///
|
||||||
|
/// `None` means never delete the message, `Some(0)` means delete
|
||||||
|
/// at once, `Some(x)` means delete after `x` seconds.
|
||||||
|
pub fn get_config_delete_server_after(&self) -> Option<i64> {
|
||||||
|
match self.get_config_int(Config::DeleteServerAfter) {
|
||||||
|
0 => None,
|
||||||
|
1 => Some(0),
|
||||||
|
x => Some(x as i64),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Set the given config key.
|
/// Set the given config key.
|
||||||
/// If `None` is passed as a value the value is cleared and set to the default if there is one.
|
/// If `None` is passed as a value the value is cleared and set to the default if there is one.
|
||||||
pub fn set_config(&self, key: Config, value: Option<&str>) -> crate::sql::Result<()> {
|
pub fn set_config(&self, key: Config, value: Option<&str>) -> crate::sql::Result<()> {
|
||||||
|
|||||||
@@ -204,14 +204,14 @@ pub fn dc_receive_imf(
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Get user-configured server deletion
|
// Get user-configured server deletion
|
||||||
let delete_server_after = context.get_config_int(Config::DeleteServerAfter);
|
let delete_server_after = context.get_config_delete_server_after();
|
||||||
|
|
||||||
if delete_server_after != 0 {
|
if delete_server_after != Some(0) {
|
||||||
// Move message if we don't delete it immediately.
|
// Move message if we don't delete it immediately.
|
||||||
context.do_heuristics_moves(server_folder.as_ref(), insert_msg_id);
|
context.do_heuristics_moves(server_folder.as_ref(), insert_msg_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if delete_server_after >= 0 {
|
if let Some(delete_server_after) = delete_server_after {
|
||||||
info!(
|
info!(
|
||||||
context,
|
context,
|
||||||
"Scheduling message deletion in {} seconds", delete_server_after
|
"Scheduling message deletion in {} seconds", delete_server_after
|
||||||
|
|||||||
@@ -1308,9 +1308,9 @@ fn precheck_imf(context: &Context, rfc724_mid: &str, server_folder: &str, server
|
|||||||
if old_server_folder.is_empty() && old_server_uid == 0 {
|
if old_server_folder.is_empty() && old_server_uid == 0 {
|
||||||
info!(context, "[move] detected bcc-self {}", rfc724_mid,);
|
info!(context, "[move] detected bcc-self {}", rfc724_mid,);
|
||||||
|
|
||||||
let delete_server_after = context.get_config_int(Config::DeleteServerAfter);
|
let delete_server_after = context.get_config_delete_server_after();
|
||||||
|
|
||||||
if delete_server_after != 0 {
|
if delete_server_after != Some(0) {
|
||||||
context.do_heuristics_moves(server_folder.as_ref(), msg_id);
|
context.do_heuristics_moves(server_folder.as_ref(), msg_id);
|
||||||
job_add(
|
job_add(
|
||||||
context,
|
context,
|
||||||
@@ -1321,7 +1321,7 @@ fn precheck_imf(context: &Context, rfc724_mid: &str, server_folder: &str, server
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if delete_server_after >= 0 {
|
if let Some(delete_server_after) = delete_server_after {
|
||||||
info!(
|
info!(
|
||||||
context,
|
context,
|
||||||
"Scheduling BCC-self deletion in {} seconds", delete_server_after
|
"Scheduling BCC-self deletion in {} seconds", delete_server_after
|
||||||
|
|||||||
@@ -859,8 +859,11 @@ pub fn job_send_msg(context: &Context, msg_id: MsgId) -> Result<()> {
|
|||||||
.get_config(Config::ConfiguredAddr)
|
.get_config(Config::ConfiguredAddr)
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
let lowercase_from = from.to_lowercase();
|
let lowercase_from = from.to_lowercase();
|
||||||
|
|
||||||
|
// Send BCC to self if it is enabled and we are not going to
|
||||||
|
// delete it immediately.
|
||||||
if context.get_config_bool(Config::BccSelf)
|
if context.get_config_bool(Config::BccSelf)
|
||||||
&& context.get_config_int(Config::DeleteServerAfter) != 0
|
&& context.get_config_delete_server_after() != Some(0)
|
||||||
&& !recipients
|
&& !recipients
|
||||||
.iter()
|
.iter()
|
||||||
.any(|x| x.to_lowercase() == lowercase_from)
|
.any(|x| x.to_lowercase() == lowercase_from)
|
||||||
|
|||||||
Reference in New Issue
Block a user