Merge pull request #201 from zentyal/ejhernandez/sync-expunged-msgs-first-sync

oc-mail: Sync expunged messages on first cache sync
This commit is contained in:
Jesús García Sáez 2015-10-26 19:37:01 +01:00
commit c8d05d41a5

View file

@ -594,8 +594,7 @@ _compareFetchResultsByMODSEQ (id entry1, id entry2, void *data)
{ {
BOOL rc = YES; BOOL rc = YES;
uint64_t newChangeNum; uint64_t newChangeNum;
NSNumber *ti, *modseq, *initialLastModseq, *lastModseq, NSNumber *ti, *modseq, *lastModseq, *nextModseq;
*nextModseq;
NSString *changeNumber, *uid, *messageKey; NSString *changeNumber, *uid, *messageKey;
uint64_t lastModseqNbr; uint64_t lastModseqNbr;
EOQualifier *searchQualifier; EOQualifier *searchQualifier;
@ -634,7 +633,6 @@ _compareFetchResultsByMODSEQ (id entry1, id entry2, void *data)
} }
lastModseq = [currentProperties objectForKey: @"SyncLastModseq"]; lastModseq = [currentProperties objectForKey: @"SyncLastModseq"];
initialLastModseq = lastModseq;
if (lastModseq) if (lastModseq)
{ {
lastModseqNbr = [lastModseq unsignedLongLongValue]; lastModseqNbr = [lastModseq unsignedLongLongValue];
@ -718,40 +716,37 @@ _compareFetchResultsByMODSEQ (id entry1, id entry2, void *data)
} }
/* 2. we synchronise expunged UIDs */ /* 2. we synchronise expunged UIDs */
if (initialLastModseq) fetchResults = [(SOGoMailFolder *) sogoObject
fetchUIDsOfVanishedItems: lastModseqNbr];
max = [fetchResults count];
changeNumber = nil;
for (count = 0; count < max; count++)
{ {
fetchResults = [(SOGoMailFolder *) sogoObject uid = [[fetchResults objectAtIndex: count] stringValue];
fetchUIDsOfVanishedItems: lastModseqNbr]; if ([messages objectForKey: uid])
max = [fetchResults count];
changeNumber = nil;
for (count = 0; count < max; count++)
{ {
uid = [[fetchResults objectAtIndex: count] stringValue]; if (!changeNumber)
if ([messages objectForKey: uid])
{ {
if (!changeNumber) newChangeNum = [[self context] getNewChangeNumber];
{ changeNumber = [NSString stringWithUnsignedLongLong: newChangeNum];
newChangeNum = [[self context] getNewChangeNumber];
changeNumber = [NSString stringWithUnsignedLongLong: newChangeNum];
}
[messages removeObjectForKey: uid];
[self logWithFormat: @"Removed message entry for UID %@", uid];
}
else
{
[self logWithFormat:@"Message entry not found for UID %@", uid];
} }
[messages removeObjectForKey: uid];
[self logWithFormat: @"Removed message entry for UID %@", uid];
} }
if (changeNumber) else
{ {
[currentProperties setObject: changeNumber [self logWithFormat:@"Message entry not found for UID %@", uid];
forKey: @"SyncLastDeleteChangeNumber"];
[mapping setObject: lastModseq forKey: changeNumber];
foundChange = YES;
} }
} }
if (changeNumber)
{
[currentProperties setObject: changeNumber
forKey: @"SyncLastDeleteChangeNumber"];
[mapping setObject: lastModseq forKey: changeNumber];
foundChange = YES;
}
if (foundChange) if (foundChange)
{ {