mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-05-20 19:05:25 +00:00
Monotone-Parent: 48c9c37f78835c3255c4103136b86bdfcaaca051
Monotone-Revision: d9c62c6e142174bc3d2adb12ee04492347c95ede Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-07-29T02:13:39 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
@@ -32,6 +32,7 @@
|
||||
#import <EOControl/EOSortOrdering.h>
|
||||
#import <NGExtensions/NSObject+Logs.h>
|
||||
#import <NGExtensions/NSString+misc.h>
|
||||
#import <NGImap4/NGImap4Connection.h>
|
||||
#import <Mailer/SOGoDraftsFolder.h>
|
||||
#import <Mailer/SOGoMailAccount.h>
|
||||
#import <Mailer/SOGoMailAccounts.h>
|
||||
@@ -97,6 +98,9 @@ static Class SOGoMailFolderK;
|
||||
accountFolder = [accountsFolder lookupName: @"0"
|
||||
inContext: woContext
|
||||
acquire: NO];
|
||||
[[accountFolder imap4Connection]
|
||||
enableExtension: @"QRESYNC"];
|
||||
|
||||
[parentContainersBag addObject: accountFolder];
|
||||
[woContext setClientObject: accountFolder];
|
||||
|
||||
@@ -501,6 +505,61 @@ _compareFetchResultsByMODSEQ (id entry1, id entry2, void *data)
|
||||
return changeNumber;
|
||||
}
|
||||
|
||||
- (NSArray *) getDeletedKeysFromChangeNumber: (uint64_t) changeNum
|
||||
andCN: (NSNumber **) cnNbr
|
||||
inTableType: (uint8_t) tableType
|
||||
{
|
||||
NSArray *deletedKeys, *deletedUIDs;
|
||||
NSNumber *changeNumNbr;
|
||||
uint64_t modseq;
|
||||
NSDictionary *versionProperties, *status;
|
||||
NSMutableDictionary *messages, *mapping;
|
||||
NSNumber *newChangeNumNbr, *highestModseq;
|
||||
uint64_t newChangeNum;
|
||||
NSUInteger count, max;
|
||||
|
||||
if (tableType == MAPISTORE_MESSAGE_TABLE)
|
||||
{
|
||||
changeNumNbr = [NSNumber numberWithUnsignedLongLong: changeNum];
|
||||
modseq = [[self modseqFromMessageChangeNumber: changeNumNbr]
|
||||
unsignedLongLongValue];
|
||||
if (modseq > 0)
|
||||
{
|
||||
status
|
||||
= [sogoObject
|
||||
statusForFlags: [NSArray arrayWithObject: @"HIGHESTMODSEQ"]];
|
||||
highestModseq = [status objectForKey: @"highestmodseq"];
|
||||
|
||||
versionProperties = [versionsMessage properties];
|
||||
messages = [versionProperties objectForKey: @"Messages"];
|
||||
deletedUIDs = [(SOGoMailFolder *) sogoObject
|
||||
fetchUIDsOfVanishedItems: modseq];
|
||||
deletedKeys = [deletedUIDs stringsWithFormat: @"%@.eml"];
|
||||
max = [deletedUIDs count];
|
||||
if (max > 0)
|
||||
{
|
||||
[messages removeObjectsForKeys: deletedUIDs];
|
||||
|
||||
mapping = [versionProperties objectForKey: @"VersionsMapping"];
|
||||
for (count = 0; count < max; count++)
|
||||
newChangeNum = [[self context] getNewChangeNumber];
|
||||
newChangeNumNbr = [NSNumber numberWithUnsignedLongLong: newChangeNum];
|
||||
*cnNbr = newChangeNumNbr;
|
||||
[mapping setObject: newChangeNumNbr forKey: @"SyncLastModseq"];
|
||||
[versionsMessage save];
|
||||
}
|
||||
}
|
||||
else
|
||||
deletedKeys = [NSArray array];
|
||||
}
|
||||
else
|
||||
deletedKeys = [super getDeletedKeysFromChangeNumber: changeNum
|
||||
andCN: cnNbr
|
||||
inTableType: tableType];
|
||||
|
||||
return deletedKeys;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation MAPIStoreInboxFolder : MAPIStoreMailFolder
|
||||
|
||||
Reference in New Issue
Block a user