From d4f2c0f249fea5353ab36110ace5166b6bb2b780 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Thu, 7 Jul 2016 09:54:30 -0700 Subject: [PATCH] ensure picker source available to prevent crash This is crashing on simulator, but presumable if it weren't available for other reasons (permissions?) it would also crash. // FREEBIE --- .../view controllers/MessagesViewController.m | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/Signal/src/view controllers/MessagesViewController.m b/Signal/src/view controllers/MessagesViewController.m index 573272baec..d2c1b145ba 100644 --- a/Signal/src/view controllers/MessagesViewController.m +++ b/Signal/src/view controllers/MessagesViewController.m @@ -1334,29 +1334,30 @@ typedef enum : NSUInteger { */ - (void)takePictureOrVideo { - UIImagePickerController *picker = [[UIImagePickerController alloc] init]; - picker.delegate = self; - picker.allowsEditing = NO; - picker.sourceType = UIImagePickerControllerSourceTypeCamera; - - if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { - picker.mediaTypes = @[ (NSString *)kUTTypeImage, (NSString *)kUTTypeMovie ]; - [self presentViewController:picker animated:YES completion:[UIUtil modalCompletionBlock]]; + if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { + DDLogError(@"Camera ImagePicker source not available"); + return; } + + UIImagePickerController *picker = [[UIImagePickerController alloc] init]; + picker.sourceType = UIImagePickerControllerSourceTypeCamera; + picker.mediaTypes = @[ (__bridge NSString *)kUTTypeImage, (__bridge NSString *)kUTTypeMovie ]; + picker.allowsEditing = NO; + picker.delegate = self; + [self presentViewController:picker animated:YES completion:[UIUtil modalCompletionBlock]]; } - (void)chooseFromLibrary { - UIImagePickerController *picker = [[UIImagePickerController alloc] init]; - picker.delegate = self; - picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; - - if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) { - NSArray *photoOrVideoTypeArray = [[NSArray alloc] - initWithObjects:(NSString *)kUTTypeImage, (NSString *)kUTTypeMovie, (NSString *)kUTTypeVideo, nil]; - - picker.mediaTypes = photoOrVideoTypeArray; - [self presentViewController:picker animated:YES completion:[UIUtil modalCompletionBlock]]; + if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) { + DDLogError(@"PhotoLibrary ImagePicker source not available"); + return; } + + UIImagePickerController *picker = [[UIImagePickerController alloc] init]; + picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; + picker.delegate = self; + picker.mediaTypes = @[ (__bridge NSString *)kUTTypeImage, (__bridge NSString *)kUTTypeMovie ]; + [self presentViewController:picker animated:YES completion:[UIUtil modalCompletionBlock]]; } /*