diff --git a/RiotShareExtension/Model/ShareExtensionManager.m b/RiotShareExtension/Model/ShareExtensionManager.m index 7068c9756..e98dcb90d 100644 --- a/RiotShareExtension/Model/ShareExtensionManager.m +++ b/RiotShareExtension/Model/ShareExtensionManager.m @@ -228,8 +228,11 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode) UIAlertController *compressionPrompt = [self compressionPromptForImage:self.pendingImages.firstObject shareBlock:^{ [self sendImages:self.pendingImages withProviders:item.attachments toRoom:room extensionItem:item failureBlock:failureBlock]; }]; - - [self.delegate shareExtensionManager:self showImageCompressionPrompt:compressionPrompt]; + + if (compressionPrompt) + { + [self.delegate shareExtensionManager:self showImageCompressionPrompt:compressionPrompt]; + } } } }]; @@ -630,13 +633,29 @@ typedef NS_ENUM(NSInteger, ImageCompressionMode) } else if ([itemProvider hasItemConformingToTypeIdentifier:(__bridge NSString *)kUTTypeJPEG]) { - // Use jpeg format by default. mimeType = @"image/jpeg"; if (convertedImage != image) { imageData = UIImageJPEGRepresentation(convertedImage, 0.9); } } + else + { + // Other image types like GIF + NSString *imageFileName = itemProvider.registeredTypeIdentifiers[0]; + mimeType = (__bridge_transfer NSString *) UTTypeCopyPreferredTagWithClass((__bridge CFStringRef)imageFileName, kUTTagClassMIMEType); + } + + // Sanity check + if (!mimeType) + { + NSLog(@"[ShareExtensionManager] sendImage failed. Cannot determine MIME type of %@", itemProvider); + if (failureBlock) + { + failureBlock(nil); + } + return; + } UIImage *thumbnail = nil; // Thumbnail is useful only in case of encrypted room