diff --git a/UI/MailPartViewers/UIxMailPartMixedViewer.m b/UI/MailPartViewers/UIxMailPartMixedViewer.m index 5f7d54a1f..00f6b2123 100644 --- a/UI/MailPartViewers/UIxMailPartMixedViewer.m +++ b/UI/MailPartViewers/UIxMailPartMixedViewer.m @@ -124,21 +124,18 @@ info = [self childInfo]; ud = [[[self context] activeUser] userDefaults]; + viewer = [[[self context] mailRenderingContext] viewerForBodyInfo: info]; + [viewer setBodyInfo: info]; + [viewer setPartPath: [self childPartPath]]; + if ([self decodedFlatContent]) + [viewer setDecodedContent: [parts objectAtIndex: i]]; + [viewer setAttachmentIds: attachmentIds + displayAttachment:!([info objectForKey:@"disposition"] + && [[info objectForKey:@"disposition"] objectForKey:@"type"] + && [[[[info objectForKey:@"disposition"] objectForKey:@"type"] uppercaseString] isEqualToString:@"INLINE"] + && [ud hideInlineAttachments])]; - if (!([info objectForKey:@"disposition"] - && [[info objectForKey:@"disposition"] objectForKey:@"type"] - && [[[[info objectForKey:@"disposition"] objectForKey:@"type"] uppercaseString] isEqualToString:@"INLINE"] - && [ud hideInlineAttachments])) { - viewer = [[[self context] mailRenderingContext] viewerForBodyInfo: info]; - [viewer setBodyInfo: info]; - [viewer setPartPath: [self childPartPath]]; - if ([self decodedFlatContent]) - [viewer setDecodedContent: [parts objectAtIndex: i]]; - [viewer setAttachmentIds: attachmentIds]; - - - [renderedParts addObject: [viewer renderedPart]]; - } + [renderedParts addObject: [viewer renderedPart]]; } contentType = [NSString stringWithFormat: @"%@/%@", diff --git a/UI/MailPartViewers/UIxMailPartViewer.h b/UI/MailPartViewers/UIxMailPartViewer.h index 8d18dc8d8..0cb3622e3 100644 --- a/UI/MailPartViewers/UIxMailPartViewer.h +++ b/UI/MailPartViewers/UIxMailPartViewer.h @@ -46,6 +46,7 @@ @class NSData; @class NSFormatter; @class NSMutableDictionary; +@class NSNumber; @class SOGoMailBodyPart; @@ -56,6 +57,7 @@ NSData *flatContent; id decodedContent; NSDictionary *attachmentIds; + BOOL _shouldDisplayAttachment; } /* accessors */ @@ -71,6 +73,7 @@ - (NSDictionary *) attachmentIds; - (void) setAttachmentIds: (NSDictionary *) newAttachmentIds; +- (void) setAttachmentIds:(NSDictionary *)newAttachmentIds displayAttachment:(BOOL)shouldDisplayAttachment; - (NSData *)flatContent; - (void) setFlatContent: (NSData *) theData; diff --git a/UI/MailPartViewers/UIxMailPartViewer.m b/UI/MailPartViewers/UIxMailPartViewer.m index c08ab65dc..13a7f89c9 100644 --- a/UI/MailPartViewers/UIxMailPartViewer.m +++ b/UI/MailPartViewers/UIxMailPartViewer.m @@ -54,6 +54,7 @@ attachmentIds = nil; flatContent = nil; decodedContent = nil; + _shouldDisplayAttachment = YES; } return self; @@ -204,6 +205,7 @@ [[self sizeFormatter] stringForObjectValue: [bodyInfo objectForKey: @"size"]], @"size", [self pathToAttachment], @"viewURL", [self pathForDownload], @"downloadURL", + [NSNumber numberWithBool:_shouldDisplayAttachment], @"shouldDisplayAttachment", nil]; } @@ -222,6 +224,12 @@ attachmentIds = newAttachmentIds; } +- (void) setAttachmentIds:(NSDictionary *)newAttachmentIds displayAttachment:(BOOL)shouldDisplayAttachment +{ + [self setAttachmentIds: newAttachmentIds]; + _shouldDisplayAttachment = shouldDisplayAttachment; +} + - (NSString *) flatContentAsString { NSString *charset, *s; diff --git a/UI/WebServerResources/js/Mailer/Message.service.js b/UI/WebServerResources/js/Mailer/Message.service.js index cfccabc19..7d9a17d9e 100644 --- a/UI/WebServerResources/js/Mailer/Message.service.js +++ b/UI/WebServerResources/js/Mailer/Message.service.js @@ -461,7 +461,9 @@ // Trusted content that can be compiled (Angularly-speaking) part.compile = true; - parts.push(part); + if (!Object.hasOwn(part, 'shouldDisplayAttachment') || 1 == part.shouldDisplayAttachment ) { + parts.push(part); + } } else { part.html = true;