mirror of
https://github.com/chatmail/core.git
synced 2026-05-22 16:26:31 +03:00
Do not schedule delayed DeleteMsgOnImap jobs
All IMAP deletion jobs are scheduled either immediately, or later by job::add_imap_deletion_jobs().
This commit is contained in:
@@ -192,7 +192,11 @@ pub fn dc_receive_imf(
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
if needs_delete_job && !created_db_entries.is_empty() {
|
// Get user-configured server deletion
|
||||||
|
let delete_server_after = context.get_config_delete_server_after();
|
||||||
|
|
||||||
|
if !created_db_entries.is_empty() {
|
||||||
|
if needs_delete_job || delete_server_after == Some(0) {
|
||||||
for db_entry in &created_db_entries {
|
for db_entry in &created_db_entries {
|
||||||
job_add(
|
job_add(
|
||||||
context,
|
context,
|
||||||
@@ -203,29 +207,9 @@ pub fn dc_receive_imf(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Get user-configured server deletion
|
|
||||||
let delete_server_after = context.get_config_delete_server_after();
|
|
||||||
|
|
||||||
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 let Some(delete_server_after) = delete_server_after {
|
|
||||||
info!(
|
|
||||||
context,
|
|
||||||
"Scheduling message deletion in {} seconds", delete_server_after
|
|
||||||
);
|
|
||||||
for db_entry in &created_db_entries {
|
|
||||||
job_add(
|
|
||||||
context,
|
|
||||||
Action::DeleteMsgOnImap,
|
|
||||||
db_entry.1.to_u32() as i32,
|
|
||||||
Params::new(),
|
|
||||||
delete_server_after as i64,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
info!(
|
info!(
|
||||||
|
|||||||
@@ -1320,35 +1320,6 @@ fn precheck_imf(context: &Context, rfc724_mid: &str, server_folder: &str, server
|
|||||||
0,
|
0,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(delete_server_after) = delete_server_after {
|
|
||||||
info!(
|
|
||||||
context,
|
|
||||||
"Scheduling BCC-self deletion in {} seconds", delete_server_after
|
|
||||||
);
|
|
||||||
|
|
||||||
let msg_ids = match message::get_all_by_rfc724_mid(context, &rfc724_mid) {
|
|
||||||
Err(err) => {
|
|
||||||
warn!(
|
|
||||||
context,
|
|
||||||
"Cannot get all database records for Message-ID {}: {}",
|
|
||||||
&rfc724_mid,
|
|
||||||
err
|
|
||||||
);
|
|
||||||
vec![msg_id] // Remove at least the MsgId we know about
|
|
||||||
}
|
|
||||||
Ok(msg_ids) => msg_ids,
|
|
||||||
};
|
|
||||||
for part_msg_id in msg_ids {
|
|
||||||
job_add(
|
|
||||||
context,
|
|
||||||
Action::DeleteMsgOnImap,
|
|
||||||
part_msg_id.to_u32() as i32,
|
|
||||||
Params::new(),
|
|
||||||
delete_server_after as i64,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if old_server_folder != server_folder {
|
} else if old_server_folder != server_folder {
|
||||||
info!(context, "[move] detected moved message {}", rfc724_mid,);
|
info!(context, "[move] detected moved message {}", rfc724_mid,);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1410,28 +1410,6 @@ pub(crate) fn rfc724_mid_exists(
|
|||||||
.map_err(Into::into)
|
.map_err(Into::into)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns all MsgIds corresponding to Message-ID
|
|
||||||
pub(crate) fn get_all_by_rfc724_mid(
|
|
||||||
context: &Context,
|
|
||||||
rfc724_mid: &str,
|
|
||||||
) -> Result<Vec<MsgId>, Error> {
|
|
||||||
ensure!(!rfc724_mid.is_empty(), "empty rfc724_mid");
|
|
||||||
|
|
||||||
let msg_ids = context.sql.query_map(
|
|
||||||
"SELECT id FROM msgs WHERE rfc724_mid=?",
|
|
||||||
params![rfc724_mid],
|
|
||||||
|row| row.get::<_, MsgId>("id"),
|
|
||||||
|ids| {
|
|
||||||
let mut ret: Vec<MsgId> = Vec::new();
|
|
||||||
for id in ids {
|
|
||||||
ret.push(id?);
|
|
||||||
}
|
|
||||||
Ok(ret)
|
|
||||||
},
|
|
||||||
)?;
|
|
||||||
Ok(msg_ids)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn update_server_uid(
|
pub fn update_server_uid(
|
||||||
context: &Context,
|
context: &Context,
|
||||||
rfc724_mid: &str,
|
rfc724_mid: &str,
|
||||||
|
|||||||
Reference in New Issue
Block a user