diff --git a/src/imap.rs b/src/imap.rs index 2f648e4d5..52458cdcc 100644 --- a/src/imap.rs +++ b/src/imap.rs @@ -19,6 +19,14 @@ use crate::param::Params; const DC_IMAP_SEEN: usize = 0x0001; +#[derive(Debug, Display, Clone, Copy, PartialEq, Eq)] +pub enum ImapResult { + Failed, + RetryLater, + AlreadyDone, + Success, +} + pub const DC_SUCCESS: usize = 3; pub const DC_ALREADY_DONE: usize = 2; pub const DC_RETRY_LATER: usize = 1; @@ -1130,12 +1138,12 @@ impl Imap { uid: u32, dest_folder: S2, dest_uid: &mut u32, - ) -> usize { - let mut res = DC_RETRY_LATER; + ) -> ImapResult { + let mut res = ImapResult::RetryLater; let set = format!("{}", uid); if uid == 0 { - res = DC_FAILED; + res = ImapResult::Failed; } else if folder.as_ref() == dest_folder.as_ref() { info!( context, @@ -1145,7 +1153,7 @@ impl Imap { dest_folder.as_ref() ); - res = DC_ALREADY_DONE; + res = ImapResult::AlreadyDone; } else { info!( context, @@ -1165,7 +1173,7 @@ impl Imap { let moved = if let Some(ref mut session) = &mut *self.session.lock().unwrap() { match session.uid_mv(&set, &dest_folder) { Ok(_) => { - res = DC_SUCCESS; + res = ImapResult::Success; true } Err(err) => { @@ -1205,22 +1213,22 @@ impl Imap { warn!(context, "Cannot mark message as \"Deleted\".",); } self.config.write().unwrap().selected_folder_needs_expunge = true; - res = DC_SUCCESS; + res = ImapResult::Success; } } } } - if res == DC_SUCCESS { + if res == ImapResult::Success { // TODO: is this correct? *dest_uid = uid; } - if res == DC_RETRY_LATER { + if res == ImapResult::RetryLater { if self.should_reconnect() { - DC_RETRY_LATER + ImapResult::RetryLater } else { - DC_FAILED + ImapResult::Failed } } else { res diff --git a/src/job.rs b/src/job.rs index 28d1b3569..6b570fa0d 100644 --- a/src/job.rs +++ b/src/job.rs @@ -247,13 +247,13 @@ impl Job { &dest_folder, &mut dest_uid, ) { - DC_RETRY_LATER => { + ImapResult::RetryLater => { self.try_again_later(3i32, None); } - DC_SUCCESS => { + ImapResult::Success => { dc_update_server_uid(context, &msg.rfc724_mid, &dest_folder, dest_uid); } - DC_FAILED | DC_ALREADY_DONE | _ => {} + ImapResult::Failed | ImapResult::AlreadyDone => {} } } } @@ -401,8 +401,8 @@ impl Job { } let dest_folder = context.sql.get_config(context, "configured_mvbox_folder"); if let Some(dest_folder) = dest_folder { - if 1 == inbox.mv(context, folder, uid, dest_folder, &mut dest_uid) - as libc::c_uint + if ImapResult::RetryLater + == inbox.mv(context, folder, uid, dest_folder, &mut dest_uid) { self.try_again_later(3, None); }