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:
commit
c8d05d41a5
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue