mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-28 23:32:41 +00:00
SettingsViewController: Use SingleImagePickerPresenter for profile avatar picture.
This commit is contained in:
parent
ccc930ccc7
commit
35d3ff1e6a
2 changed files with 33 additions and 40 deletions
|
@ -20,7 +20,7 @@
|
|||
|
||||
#import "MediaPickerViewController.h"
|
||||
|
||||
@interface SettingsViewController : MXKTableViewController<UITextFieldDelegate, MediaPickerViewControllerDelegate, MXKDeviceViewDelegate, UIDocumentInteractionControllerDelegate, MXKCountryPickerViewControllerDelegate, MXKLanguagePickerViewControllerDelegate, MXKDataSourceDelegate>
|
||||
@interface SettingsViewController : MXKTableViewController<UITextFieldDelegate, MXKDeviceViewDelegate, UIDocumentInteractionControllerDelegate, MXKCountryPickerViewControllerDelegate, MXKLanguagePickerViewControllerDelegate, MXKDataSourceDelegate>
|
||||
|
||||
@end
|
||||
|
||||
|
|
|
@ -20,10 +20,7 @@
|
|||
|
||||
#import <MatrixKit/MatrixKit.h>
|
||||
|
||||
#import <MediaPlayer/MediaPlayer.h>
|
||||
#import <MobileCoreServices/MobileCoreServices.h>
|
||||
#import <OLMKit/OLMKit.h>
|
||||
#import <Photos/Photos.h>
|
||||
|
||||
#import "AppDelegate.h"
|
||||
#import "AvatarGenerator.h"
|
||||
|
@ -141,7 +138,8 @@ SettingsKeyBackupTableViewSectionDelegate,
|
|||
MXKEncryptionInfoViewDelegate,
|
||||
KeyBackupSetupCoordinatorBridgePresenterDelegate,
|
||||
KeyBackupRecoverCoordinatorBridgePresenterDelegate,
|
||||
SignOutAlertPresenterDelegate>
|
||||
SignOutAlertPresenterDelegate,
|
||||
SingleImagePickerPresenterDelegate>
|
||||
{
|
||||
// Current alert (if any).
|
||||
UIAlertController *currentAlert;
|
||||
|
@ -155,9 +153,6 @@ SignOutAlertPresenterDelegate>
|
|||
id notificationCenterDidUpdateObserver;
|
||||
id notificationCenterDidFailObserver;
|
||||
|
||||
// picker
|
||||
MediaPickerViewController* mediaPicker;
|
||||
|
||||
// profile updates
|
||||
// avatar
|
||||
UIImage* newAvatarImage;
|
||||
|
@ -252,6 +247,7 @@ SignOutAlertPresenterDelegate>
|
|||
@property (nonatomic, weak) DeactivateAccountViewController *deactivateAccountViewController;
|
||||
@property (nonatomic, strong) SignOutAlertPresenter *signOutAlertPresenter;
|
||||
@property (nonatomic, weak) UIButton *signOutButton;
|
||||
@property (nonatomic, strong) SingleImagePickerPresenter *imagePickerPresenter;
|
||||
|
||||
@end
|
||||
|
||||
|
@ -3711,13 +3707,18 @@ SignOutAlertPresenterDelegate>
|
|||
|
||||
- (void)onProfileAvatarTap:(UITapGestureRecognizer *)recognizer
|
||||
{
|
||||
mediaPicker = [MediaPickerViewController mediaPickerViewController];
|
||||
mediaPicker.mediaTypes = @[(NSString *)kUTTypeImage];
|
||||
mediaPicker.delegate = self;
|
||||
UINavigationController *navigationController = [UINavigationController new];
|
||||
[navigationController pushViewController:mediaPicker animated:NO];
|
||||
SingleImagePickerPresenter *singleImagePickerPresenter = [[SingleImagePickerPresenter alloc] initWithSession:self.mainSession];
|
||||
singleImagePickerPresenter.delegate = self;
|
||||
|
||||
[self presentViewController:navigationController animated:YES completion:nil];
|
||||
|
||||
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:userSettingsProfilePictureIndex inSection:SETTINGS_SECTION_USER_SETTINGS_INDEX];
|
||||
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
|
||||
|
||||
UIView *sourceView = cell;
|
||||
|
||||
[singleImagePickerPresenter presentFrom:self sourceView:sourceView sourceRect:sourceView.bounds animated:YES];
|
||||
|
||||
self.imagePickerPresenter = singleImagePickerPresenter;
|
||||
}
|
||||
|
||||
- (void)exportEncryptionKeys:(UITapGestureRecognizer *)recognizer
|
||||
|
@ -3890,32 +3891,6 @@ SignOutAlertPresenterDelegate>
|
|||
self.deactivateAccountViewController = deactivateAccountViewController;
|
||||
}
|
||||
|
||||
#pragma mark - MediaPickerViewController Delegate
|
||||
|
||||
- (void)dismissMediaPicker
|
||||
{
|
||||
if (mediaPicker)
|
||||
{
|
||||
[mediaPicker withdrawViewControllerAnimated:YES completion:nil];
|
||||
mediaPicker = nil;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)mediaPickerController:(MediaPickerViewController *)mediaPickerController didSelectImage:(NSData*)imageData withMimeType:(NSString *)mimetype isPhotoLibraryAsset:(BOOL)isPhotoLibraryAsset
|
||||
{
|
||||
[self dismissMediaPicker];
|
||||
|
||||
newAvatarImage = [UIImage imageWithData:imageData];
|
||||
|
||||
[self.tableView reloadData];
|
||||
}
|
||||
|
||||
- (void)mediaPickerController:(MediaPickerViewController *)mediaPickerController didSelectVideo:(NSURL*)videoURL
|
||||
{
|
||||
// this method should not be called
|
||||
[self dismissMediaPicker];
|
||||
}
|
||||
|
||||
#pragma mark - TextField listener
|
||||
|
||||
- (IBAction)textFieldDidChange:(id)sender
|
||||
|
@ -4427,4 +4402,22 @@ SignOutAlertPresenterDelegate>
|
|||
}];
|
||||
}
|
||||
|
||||
#pragma mark - SingleImagePickerPresenterDelegate
|
||||
|
||||
- (void)singleImagePickerPresenterDidCancel:(SingleImagePickerPresenter *)presenter
|
||||
{
|
||||
[presenter dismissWithAnimated:YES completion:nil];
|
||||
self.imagePickerPresenter = nil;
|
||||
}
|
||||
|
||||
- (void)singleImagePickerPresenter:(SingleImagePickerPresenter *)presenter didSelectImageData:(NSData *)imageData withUTI:(MXKUTI *)uti
|
||||
{
|
||||
[presenter dismissWithAnimated:YES completion:nil];
|
||||
self.imagePickerPresenter = nil;
|
||||
|
||||
newAvatarImage = [UIImage imageWithData:imageData];
|
||||
|
||||
[self.tableView reloadData];
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
Loading…
Reference in a new issue