From 1df99c5812289514d948058cf9479fb7a3fbb745 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Fri, 9 Sep 2016 19:03:10 -0400 Subject: [PATCH 1/2] fix voice messages for iOS // FREEBIE --- src/Messages/Attachments/OWSAttachmentsProcessor.m | 11 +++++++++++ src/Util/MIMETypeUtil.m | 1 + 2 files changed, 12 insertions(+) diff --git a/src/Messages/Attachments/OWSAttachmentsProcessor.m b/src/Messages/Attachments/OWSAttachmentsProcessor.m index ea245a642..9982ca170 100644 --- a/src/Messages/Attachments/OWSAttachmentsProcessor.m +++ b/src/Messages/Attachments/OWSAttachmentsProcessor.m @@ -61,6 +61,7 @@ NS_ASSUME_NONNULL_BEGIN [supportedAttachmentPointers addObject:pointer]; [supportedAttachmentIds addObject:pointer.uniqueId]; } else { + DDLogError(@"%@ Received unsupported attachment of type: %@", self.tag, pointer.contentType); TSInfoMessage *infoMessage = [[TSInfoMessage alloc] initWithTimestamp:timestamp inThread:thread messageType:TSInfoMessageTypeUnsupportedMessage]; @@ -87,6 +88,16 @@ NS_ASSUME_NONNULL_BEGIN return self.supportedAttachmentPointers.count > 0; } ++ (NSString *)tag +{ + return [NSString stringWithFormat:@"[%@]", self.class]; +} + +- (NSString *)tag +{ + return self.class.tag; +} + @end NS_ASSUME_NONNULL_END diff --git a/src/Util/MIMETypeUtil.m b/src/Util/MIMETypeUtil.m index 6e89ee86b..420abece4 100644 --- a/src/Util/MIMETypeUtil.m +++ b/src/Util/MIMETypeUtil.m @@ -20,6 +20,7 @@ NSString *const OWSMimeTypeImagePng = @"image/png"; + (NSDictionary *)supportedAudioMIMETypesToExtensionTypes { return @{ + @"audio/aac" : @"m4a", @"audio/x-m4p" : @"m4p", @"audio/x-m4b" : @"m4b", @"audio/x-m4a" : @"m4a", From 3e5af16dc399295b130767db69ffad54b9cca6d5 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Sun, 11 Sep 2016 12:06:25 -0400 Subject: [PATCH 2/2] Don't explode when attachment support revoked. Also, more nullability annotations. NSURL can't be given a nil filepath. This can occur when a previously supported attachment was downloaded, and then viewed after that attachment was no longer supported (e.g. when installing back and forth across versions) // FREEBIE --- src/Messages/Attachments/TSAttachmentStream.h | 10 +++++++--- src/Messages/Attachments/TSAttachmentStream.m | 18 +++++++++++++----- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/Messages/Attachments/TSAttachmentStream.h b/src/Messages/Attachments/TSAttachmentStream.h index 8748d2968..bf386c919 100644 --- a/src/Messages/Attachments/TSAttachmentStream.h +++ b/src/Messages/Attachments/TSAttachmentStream.h @@ -6,6 +6,8 @@ #import #endif +NS_ASSUME_NONNULL_BEGIN + @interface TSAttachmentStream : TSAttachment @property (nonatomic) BOOL isDownloaded; @@ -16,17 +18,19 @@ contentType:(NSString *)contentType NS_DESIGNATED_INITIALIZER; #if TARGET_OS_IPHONE -- (UIImage *)image; +- (nullable UIImage *)image; #endif - (BOOL)isAnimated; - (BOOL)isImage; - (BOOL)isVideo; -- (NSString *)filePath; -- (NSURL *)mediaURL; +- (nullable NSString *)filePath; +- (nullable NSURL *)mediaURL; + (void)deleteAttachments; + (NSString *)attachmentsFolder; + (NSUInteger)numberOfItemsInAttachmentsFolder; @end + +NS_ASSUME_NONNULL_END diff --git a/src/Messages/Attachments/TSAttachmentStream.m b/src/Messages/Attachments/TSAttachmentStream.m index c827af750..d95049edc 100644 --- a/src/Messages/Attachments/TSAttachmentStream.m +++ b/src/Messages/Attachments/TSAttachmentStream.m @@ -6,6 +6,8 @@ #import #import +NS_ASSUME_NONNULL_BEGIN + @implementation TSAttachmentStream - (instancetype)initWithIdentifier:(NSString *)identifier @@ -73,15 +75,17 @@ return count; } -- (NSString *)filePath +- (nullable NSString *)filePath { return [MIMETypeUtil filePathForAttachment:self.uniqueId ofMIMEType:self.contentType inFolder:[[self class] attachmentsFolder]]; } -- (NSURL *)mediaURL { - return [NSURL fileURLWithPath:[self filePath]]; +- (nullable NSURL *)mediaURL +{ + NSString *filePath = self.filePath; + return filePath ? [NSURL fileURLWithPath:filePath] : nil; } - (BOOL)isAnimated { @@ -100,7 +104,8 @@ return [MIMETypeUtil isAudio:self.contentType]; } -- (UIImage *)image { +- (nullable UIImage *)image +{ if ([self isVideo] || [self isAudio]) { return [self videoThumbnail]; } else { @@ -109,7 +114,8 @@ } } -- (UIImage *)videoThumbnail { +- (nullable UIImage *)videoThumbnail +{ AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:[NSURL fileURLWithPath:self.filePath] options:nil]; AVAssetImageGenerator *generate = [[AVAssetImageGenerator alloc] initWithAsset:asset]; generate.appliesPreferredTrackTransform = YES; @@ -129,3 +135,5 @@ } @end + +NS_ASSUME_NONNULL_END