Share: The extension crashes if you try to share a GIF image (#1759)

This commit is contained in:
manuroe 2018-02-05 15:36:56 +01:00
parent ebc1a08fb8
commit 8d80c0d6a7

View file

@ -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