From baf3d1f986d48d4fa37a076ccf555d75f4d5dbda Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Fri, 20 Mar 2015 09:10:49 -0400 Subject: [PATCH] immediately delete mails from EAS clients when they are marked as deleted on the IMAP server --- NEWS | 1 + SoObjects/Mailer/SOGoMailFolder.m | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/NEWS b/NEWS index 505731fe3..88fccc564 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,7 @@ Enhancements - support for mail prority using EAS + - immediately delete mails from EAS clients when they are marked as deleted on the IMAP server Bug fixes - fixed login issue after password change (#2601) diff --git a/SoObjects/Mailer/SOGoMailFolder.m b/SoObjects/Mailer/SOGoMailFolder.m index d83ca78a6..c65c6c43c 100644 --- a/SoObjects/Mailer/SOGoMailFolder.m +++ b/SoObjects/Mailer/SOGoMailFolder.m @@ -2129,13 +2129,13 @@ _compareFetchResultsByMODSEQ (id entry1, id entry2, void *data) value: nextModseq]; searchQualifier = [[EOAndQualifier alloc] initWithQualifiers: - kvQualifier, [self _nonDeletedQualifier], nil]; + kvQualifier, nil]; [kvQualifier release]; [searchQualifier autorelease]; } else { - searchQualifier = [self _nonDeletedQualifier]; + searchQualifier = nil; } if (theStartDate) @@ -2144,7 +2144,7 @@ _compareFetchResultsByMODSEQ (id entry1, id entry2, void *data) sinceDateQualifier = [EOQualifier qualifierWithQualifierFormat: @"(DATE >= %@)", theStartDate]; - searchQualifier = [[EOAndQualifier alloc] initWithQualifiers: searchQualifier, sinceDateQualifier, + searchQualifier = [[EOAndQualifier alloc] initWithQualifiers: sinceDateQualifier, searchQualifier, nil]; [searchQualifier autorelease]; } @@ -2155,7 +2155,7 @@ _compareFetchResultsByMODSEQ (id entry1, id entry2, void *data) sortOrdering: nil]; fetchResults = [(NSDictionary *)[self fetchUIDs: uids - parts: [NSArray arrayWithObject: @"modseq"]] + parts: [NSArray arrayWithObjects: @"modseq", @"flags", nil]] objectForKey: @"fetch"]; /* NOTE: we sort items manually because Cyrus does not properly sort @@ -2166,7 +2166,7 @@ _compareFetchResultsByMODSEQ (id entry1, id entry2, void *data) for (i = 0; i < [fetchResults count]; i++) { - d = [NSDictionary dictionaryWithObject: [[fetchResults objectAtIndex: i] objectForKey: @"modseq"] + d = [NSDictionary dictionaryWithObject: ([[[fetchResults objectAtIndex: i] objectForKey: @"flags"] containsObject: @"deleted"]) ? [NSNull null] : [[fetchResults objectAtIndex: i] objectForKey: @"modseq"] forKey: [[[fetchResults objectAtIndex: i] objectForKey: @"uid"] stringValue]]; [allTokens addObject: d]; }