SettingsViewController: Use SingleImagePickerPresenter for profile avatar picture.

This commit is contained in:
SBiOSoftWhare 2019-08-02 17:27:49 +02:00
parent ccc930ccc7
commit 35d3ff1e6a
2 changed files with 33 additions and 40 deletions

View file

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

View file

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