From 41f776763b549faa8cd2db9605e5a49dd296238a Mon Sep 17 00:00:00 2001 From: Alexander Krotov Date: Sun, 8 Mar 2020 21:43:05 +0300 Subject: [PATCH] Remove MarkseenMdnOnImap MarkseenMdnOnImap stored server folder and UID which are never updated by update_server_uid. Now hidden entries are created for MDNs, so they should be handled as ordinary messages. --- src/dc_receive_imf.rs | 2 +- src/job.rs | 43 ------------------------------------------- src/mimeparser.rs | 23 +---------------------- 3 files changed, 2 insertions(+), 66 deletions(-) diff --git a/src/dc_receive_imf.rs b/src/dc_receive_imf.rs index a99a14c55..b50a66323 100644 --- a/src/dc_receive_imf.rs +++ b/src/dc_receive_imf.rs @@ -219,7 +219,7 @@ pub fn dc_receive_imf( cleanup(context, &create_event_to_send, created_db_entries); - mime_parser.handle_reports(context, from_id, sent_timestamp, &server_folder, server_uid); + mime_parser.handle_reports(context, from_id, sent_timestamp); Ok(()) } diff --git a/src/job.rs b/src/job.rs index 31933686b..c0fdfad49 100644 --- a/src/job.rs +++ b/src/job.rs @@ -81,7 +81,6 @@ pub enum Action { Housekeeping = 105, // low priority ... EmptyServer = 107, DeleteMsgOnImap = 110, - MarkseenMdnOnImap = 120, MarkseenMsgOnImap = 130, MoveMsg = 200, ConfigureImap = 900, @@ -110,7 +109,6 @@ impl From for Thread { Housekeeping => Thread::Imap, DeleteMsgOnImap => Thread::Imap, EmptyServer => Thread::Imap, - MarkseenMdnOnImap => Thread::Imap, MarkseenMsgOnImap => Thread::Imap, MoveMsg => Thread::Imap, ConfigureImap => Thread::Imap, @@ -555,46 +553,6 @@ impl Job { } } } - - #[allow(non_snake_case)] - fn MarkseenMdnOnImap(&mut self, context: &Context) -> Status { - let folder = self - .param - .get(Param::ServerFolder) - .unwrap_or_default() - .to_string(); - let uid = self.param.get_int(Param::ServerUid).unwrap_or_default() as u32; - let imap_inbox = &context.inbox_thread.read().unwrap().imap; - if imap_inbox.set_seen(context, &folder, uid) == ImapActionResult::RetryLater { - return Status::RetryLater; - } - if self.param.get_bool(Param::AlsoMove).unwrap_or_default() { - if let Err(err) = imap_inbox.ensure_configured_folders(context, true) { - warn!(context, "configuring folders failed: {:?}", err); - return Status::RetryLater; - } - let dest_folder = context - .sql - .get_raw_config(context, "configured_mvbox_folder"); - if let Some(dest_folder) = dest_folder { - if ImapActionResult::RetryLater - == imap_inbox.mv(context, &folder, uid, &dest_folder) - { - Status::RetryLater - } else { - // FIXME: server UID should be updated for all - // hidden MDN entries, but it does not happen - // because we don't know Message-ID here and can't - // find corresponding MsgId. - Status::Finished(Ok(())) - } - } else { - Status::Finished(Err(format_err!("MVBOX is not configured"))) - } - } else { - Status::Finished(Ok(())) - } - } } /* delete all pending jobs with the given action */ @@ -1135,7 +1093,6 @@ fn perform_job_action(context: &Context, mut job: &mut Job, thread: Thread, trie Action::EmptyServer => job.EmptyServer(context), Action::DeleteMsgOnImap => job.DeleteMsgOnImap(context), Action::MarkseenMsgOnImap => job.MarkseenMsgOnImap(context), - Action::MarkseenMdnOnImap => job.MarkseenMdnOnImap(context), Action::MoveMsg => job.MoveMsg(context), Action::SendMdn => job.SendMdn(context), Action::ConfigureImap => JobConfigureImap(context), diff --git a/src/mimeparser.rs b/src/mimeparser.rs index 376a7d9ad..b1c14bd22 100644 --- a/src/mimeparser.rs +++ b/src/mimeparser.rs @@ -7,7 +7,6 @@ use mailparse::{DispositionType, MailAddr, MailHeaderMap}; use crate::aheader::Aheader; use crate::bail; use crate::blob::BlobObject; -use crate::config::Config; use crate::constants::Viewtype; use crate::contact::*; use crate::context::Context; @@ -17,7 +16,6 @@ use crate::e2ee; use crate::error::Result; use crate::events::Event; use crate::headerdef::{HeaderDef, HeaderDefMap}; -use crate::job::{job_add, Action}; use crate::location; use crate::message; use crate::param::*; @@ -805,19 +803,11 @@ impl MimeMessage { } /// Handle reports (only MDNs for now) - pub fn handle_reports( - &self, - context: &Context, - from_id: u32, - sent_timestamp: i64, - server_folder: impl AsRef, - server_uid: u32, - ) { + pub fn handle_reports(&self, context: &Context, from_id: u32, sent_timestamp: i64) { if self.reports.is_empty() { return; } - let mut mdn_recognized = false; for report in &self.reports { for original_message_id in std::iter::once(&report.original_message_id).chain(&report.additional_message_ids) @@ -826,20 +816,9 @@ impl MimeMessage { message::mdn_from_ext(context, from_id, original_message_id, sent_timestamp) { context.call_cb(Event::MsgRead { chat_id, msg_id }); - mdn_recognized = true; } } } - - if self.has_chat_version() || mdn_recognized { - let mut param = Params::new(); - param.set(Param::ServerFolder, server_folder.as_ref()); - param.set_int(Param::ServerUid, server_uid as i32); - if self.has_chat_version() && context.get_config_bool(Config::MvboxMove) { - param.set_int(Param::AlsoMove, 1); - } - job_add(context, Action::MarkseenMdnOnImap, 0, param, 0); - } } }