diff --git a/OpenChange/MAPIStoreMailFolder.h b/OpenChange/MAPIStoreMailFolder.h index 2263f955b..c56e74862 100644 --- a/OpenChange/MAPIStoreMailFolder.h +++ b/OpenChange/MAPIStoreMailFolder.h @@ -55,6 +55,11 @@ - (NSData *) changeKeyForMessageWithKey: (NSString *) messageKey; - (NSData *) predecessorChangeListForMessageWithKey: (NSString *) messageKey; +/* Extra properties from mail messages that already hit the server */ +- (void) setExtraProperties: (NSDictionary *) props + forMessage: (NSString *) messageKey; +- (NSDictionary *) extraPropertiesForMessage: (NSString *) messageKey; + @end /* MAPIStoreOutboxFolder is a special subclass of MAPIStoreMailFolder where diff --git a/OpenChange/MAPIStoreMailFolder.m b/OpenChange/MAPIStoreMailFolder.m index ba2339586..f0a6c33bc 100644 --- a/OpenChange/MAPIStoreMailFolder.m +++ b/OpenChange/MAPIStoreMailFolder.m @@ -964,6 +964,37 @@ _compareFetchResultsByMODSEQ (id entry1, id entry2, void *data) return list; } +/* Management for extra properties once they already hit the IMAP server */ +- (void) setExtraProperties: (NSDictionary *) props + forMessage: (NSString *) messageKey +{ + NSMutableDictionary *extraProps, *currentProperties; + NSString *messageUid; + + messageUid = [self messageUIDFromMessageKey: messageKey]; + currentProperties = [versionsMessage properties]; + extraProps = [currentProperties objectForKey: @"ExtraMessagesProperties"]; + if (!extraProps) + { + extraProps = [NSMutableDictionary new]; + [currentProperties setObject: extraProps forKey: @"ExtraMessagesProperties"]; + [extraProps release]; + } + + [extraProps setObject: props + forKey: messageUid]; + [versionsMessage save]; +} + +- (NSDictionary *) extraPropertiesForMessage: (NSString *) messageKey +{ + NSString *messageUid; + + messageUid = [self messageUIDFromMessageKey: messageKey]; + return [[[versionsMessage properties] objectForKey: @"ExtraMessagesProperties"] + objectForKey: messageUid]; +} + - (NSArray *) getDeletedKeysFromChangeNumber: (uint64_t) changeNum andCN: (NSNumber **) cnNbr inTableType: (uint8_t) tableType