mirror of
https://github.com/chatmail/core.git
synced 2026-05-19 06:46:32 +03:00
cargo fmt
This commit is contained in:
232
src/imap.rs
232
src/imap.rs
@@ -1182,71 +1182,71 @@ impl Imap {
|
|||||||
dest_folder.as_ref()
|
dest_folder.as_ref()
|
||||||
);
|
);
|
||||||
return ImapResult::AlreadyDone;
|
return ImapResult::AlreadyDone;
|
||||||
}
|
}
|
||||||
info!(
|
info!(
|
||||||
|
context,
|
||||||
|
0,
|
||||||
|
"Moving message {}/{} to {}...",
|
||||||
|
folder.as_ref(),
|
||||||
|
uid,
|
||||||
|
dest_folder.as_ref()
|
||||||
|
);
|
||||||
|
|
||||||
|
if !self.select_folder(context, Some(folder.as_ref())) {
|
||||||
|
warn!(
|
||||||
context,
|
context,
|
||||||
0,
|
0,
|
||||||
"Moving message {}/{} to {}...",
|
"Cannot select folder {} for moving message.",
|
||||||
folder.as_ref(),
|
folder.as_ref()
|
||||||
uid,
|
|
||||||
dest_folder.as_ref()
|
|
||||||
);
|
);
|
||||||
|
return if !self.should_reconnect() {
|
||||||
if !self.select_folder(context, Some(folder.as_ref())) {
|
ImapResult::Failed
|
||||||
warn!(
|
} else {
|
||||||
context,
|
ImapResult::RetryLater
|
||||||
0,
|
};
|
||||||
"Cannot select folder {} for moving message.",
|
}
|
||||||
folder.as_ref()
|
let set = format!("{}", uid);
|
||||||
);
|
if let Some(ref mut session) = &mut *self.session.lock().unwrap() {
|
||||||
return if !self.should_reconnect() {
|
match session.uid_mv(&set, &dest_folder) {
|
||||||
ImapResult::Failed
|
Ok(_) => {
|
||||||
} else {
|
// XXX set dest_uid properly (like it was done in C)
|
||||||
ImapResult::RetryLater
|
return ImapResult::Success;
|
||||||
}
|
}
|
||||||
}
|
Err(err) => {
|
||||||
let set = format!("{}", uid);
|
info!(
|
||||||
if let Some(ref mut session) = &mut *self.session.lock().unwrap() {
|
context,
|
||||||
match session.uid_mv(&set, &dest_folder) {
|
0,
|
||||||
Ok(_) => {
|
"Cannot move message, fallback to COPY/DELETE {}/{} to {}: {}",
|
||||||
// XXX set dest_uid properly (like it was done in C)
|
folder.as_ref(),
|
||||||
return ImapResult::Success;
|
uid,
|
||||||
}
|
dest_folder.as_ref(),
|
||||||
Err(err) => {
|
err
|
||||||
info!(
|
);
|
||||||
context,
|
}
|
||||||
0,
|
}
|
||||||
"Cannot move message, fallback to COPY/DELETE {}/{} to {}: {}",
|
} else {
|
||||||
folder.as_ref(),
|
unreachable!();
|
||||||
uid,
|
};
|
||||||
dest_folder.as_ref(),
|
|
||||||
err
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
unreachable!();
|
|
||||||
};
|
|
||||||
|
|
||||||
// message was NOT moved, let's try copy
|
// message was NOT moved, let's try copy
|
||||||
if let Some(ref mut session) = &mut *self.session.lock().unwrap() {
|
if let Some(ref mut session) = &mut *self.session.lock().unwrap() {
|
||||||
match session.uid_copy(&set, &dest_folder) {
|
match session.uid_copy(&set, &dest_folder) {
|
||||||
Ok(_) => {},
|
Ok(_) => {}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
info!(context, 0, "Cannot copy message. {:?}", err);
|
info!(context, 0, "Cannot copy message. {:?}", err);
|
||||||
return ImapResult::Failed;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
unreachable!();
|
|
||||||
};
|
|
||||||
|
|
||||||
if self.add_flag(context, uid, "\\Deleted") {
|
|
||||||
self.config.write().unwrap().selected_folder_needs_expunge = true;
|
|
||||||
return ImapResult::Success;
|
|
||||||
}
|
|
||||||
warn!(context, 0, "Cannot mark message as \"Deleted\".",);
|
|
||||||
return ImapResult::Failed;
|
return ImapResult::Failed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
unreachable!();
|
||||||
|
};
|
||||||
|
|
||||||
|
if self.add_flag(context, uid, "\\Deleted") {
|
||||||
|
self.config.write().unwrap().selected_folder_needs_expunge = true;
|
||||||
|
return ImapResult::Success;
|
||||||
|
}
|
||||||
|
warn!(context, 0, "Cannot mark message as \"Deleted\".",);
|
||||||
|
return ImapResult::Failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn add_flag<S: AsRef<str>>(&self, context: &Context, server_uid: u32, flag: S) -> bool {
|
fn add_flag<S: AsRef<str>>(&self, context: &Context, server_uid: u32, flag: S) -> bool {
|
||||||
@@ -1414,80 +1414,80 @@ impl Imap {
|
|||||||
server_uid: &mut u32,
|
server_uid: &mut u32,
|
||||||
) -> ImapResult {
|
) -> ImapResult {
|
||||||
if *server_uid == 0 {
|
if *server_uid == 0 {
|
||||||
return ImapResult::Failed
|
return ImapResult::Failed;
|
||||||
}
|
}
|
||||||
if !self.is_connected() {
|
if !self.is_connected() {
|
||||||
return ImapResult::RetryLater
|
return ImapResult::RetryLater;
|
||||||
}
|
}
|
||||||
info!(
|
info!(
|
||||||
|
context,
|
||||||
|
0,
|
||||||
|
"Marking message \"{}\", {}/{} for deletion...",
|
||||||
|
message_id.as_ref(),
|
||||||
|
folder.as_ref(),
|
||||||
|
server_uid,
|
||||||
|
);
|
||||||
|
|
||||||
|
if !self.select_folder(context, Some(&folder)) {
|
||||||
|
warn!(
|
||||||
context,
|
context,
|
||||||
0,
|
0,
|
||||||
"Marking message \"{}\", {}/{} for deletion...",
|
"Cannot select folder {} for deleting message.",
|
||||||
message_id.as_ref(),
|
folder.as_ref()
|
||||||
folder.as_ref(),
|
|
||||||
server_uid,
|
|
||||||
);
|
);
|
||||||
|
return ImapResult::RetryLater;
|
||||||
if !self.select_folder(context, Some(&folder)) {
|
}
|
||||||
warn!(
|
{
|
||||||
context,
|
let set = format!("{}", server_uid);
|
||||||
0,
|
if let Some(ref mut session) = &mut *self.session.lock().unwrap() {
|
||||||
"Cannot select folder {} for deleting message.",
|
match session.uid_fetch(set, PREFETCH_FLAGS) {
|
||||||
folder.as_ref()
|
Ok(msgs) => {
|
||||||
);
|
if msgs.is_empty()
|
||||||
return ImapResult::RetryLater
|
|| msgs
|
||||||
}
|
.first()
|
||||||
{
|
.unwrap()
|
||||||
let set = format!("{}", server_uid);
|
.envelope()
|
||||||
if let Some(ref mut session) = &mut *self.session.lock().unwrap() {
|
.expect("missing envelope")
|
||||||
match session.uid_fetch(set, PREFETCH_FLAGS) {
|
.message_id
|
||||||
Ok(msgs) => {
|
.expect("missing message id")
|
||||||
if msgs.is_empty()
|
!= message_id.as_ref()
|
||||||
|| msgs
|
{
|
||||||
.first()
|
|
||||||
.unwrap()
|
|
||||||
.envelope()
|
|
||||||
.expect("missing envelope")
|
|
||||||
.message_id
|
|
||||||
.expect("missing message id")
|
|
||||||
!= message_id.as_ref()
|
|
||||||
{
|
|
||||||
warn!(
|
|
||||||
context,
|
|
||||||
0,
|
|
||||||
"Cannot delete on IMAP, {}/{} does not match {}.",
|
|
||||||
folder.as_ref(),
|
|
||||||
server_uid,
|
|
||||||
message_id.as_ref(),
|
|
||||||
);
|
|
||||||
*server_uid = 0;
|
|
||||||
return ImapResult::Failed;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Err(err) => {
|
|
||||||
eprintln!("fetch error: {:?}", err);
|
|
||||||
|
|
||||||
warn!(
|
warn!(
|
||||||
context,
|
context,
|
||||||
0,
|
0,
|
||||||
"Cannot delete on IMAP, {}/{} not found.",
|
"Cannot delete on IMAP, {}/{} does not match {}.",
|
||||||
folder.as_ref(),
|
folder.as_ref(),
|
||||||
server_uid,
|
server_uid,
|
||||||
|
message_id.as_ref(),
|
||||||
);
|
);
|
||||||
*server_uid = 0;
|
*server_uid = 0;
|
||||||
return ImapResult::Failed;
|
return ImapResult::Failed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
Err(err) => {
|
||||||
// mark the message for deletion
|
eprintln!("fetch error: {:?}", err);
|
||||||
if !self.add_flag(context, *server_uid, "\\Deleted") {
|
|
||||||
warn!(context, 0, "Cannot mark message as \"Deleted\".");
|
warn!(
|
||||||
return ImapResult::Failed;
|
context,
|
||||||
} else {
|
0,
|
||||||
self.config.write().unwrap().selected_folder_needs_expunge = true;
|
"Cannot delete on IMAP, {}/{} not found.",
|
||||||
return ImapResult::Success;
|
folder.as_ref(),
|
||||||
|
server_uid,
|
||||||
|
);
|
||||||
|
*server_uid = 0;
|
||||||
|
return ImapResult::Failed;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// mark the message for deletion
|
||||||
|
if !self.add_flag(context, *server_uid, "\\Deleted") {
|
||||||
|
warn!(context, 0, "Cannot mark message as \"Deleted\".");
|
||||||
|
return ImapResult::Failed;
|
||||||
|
} else {
|
||||||
|
self.config.write().unwrap().selected_folder_needs_expunge = true;
|
||||||
|
return ImapResult::Success;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn configure_folders(&self, context: &Context, flags: libc::c_int) {
|
pub fn configure_folders(&self, context: &Context, flags: libc::c_int) {
|
||||||
|
|||||||
Reference in New Issue
Block a user