changed password input to use block based api

This commit is contained in:
michael starke
2017-05-18 15:36:46 +02:00
parent 9e67d0a1ef
commit 4a95b10af1
3 changed files with 18 additions and 14 deletions

View File

@@ -323,7 +323,10 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword);
self.passwordInputController = [[MPPasswordInputController alloc] init];
}
[self _setContentViewController:self.passwordInputController];
[self.passwordInputController requestPassword];
__weak MPDocumentWindowController *welf = self;
[self.passwordInputController requestPassword:^BOOL(NSString *password, NSURL *keyURL, NSError *__autoreleasing *error) {
return [((MPDocument *)welf.document) unlockWithPassword:password keyFileURL:keyURL error:error];
}];
}
- (void)editPassword:(id)sender {

View File

@@ -8,8 +8,12 @@
#import "MPViewController.h"
@class KPKCompositeKey;
@interface MPPasswordInputController : MPViewController
- (void)requestPassword;
typedef BOOL (^passwordInputCompletionBlock)(NSString *password, NSURL *keyURL, NSError *__autoreleasing*error);
- (void)requestPassword:(passwordInputCompletionBlock)completionHandler;
@end

View File

@@ -29,7 +29,7 @@
@property (assign) BOOL showPassword;
@property (nonatomic, assign) BOOL enablePassword;
@property (copy) passwordInputCompletionBlock completionHandler;
@end
@implementation MPPasswordInputController
@@ -66,8 +66,8 @@
return self.passwordTextField;
}
- (void)requestPassword {
// show warning if read-only mode!
- (void)requestPassword:(passwordInputCompletionBlock)completionHandler {
self.completionHandler = completionHandler;
[self _reset];
}
@@ -87,15 +87,12 @@
#pragma mark -
#pragma mark Private
- (IBAction)_decrypt:(id)sender {
/* reset show password */
MPDocument *document = self.windowController.document;
if(document) {
NSError *error = nil;
/* No password is different than an empty password */
NSString *password = self.enablePassword ? self.passwordTextField.stringValue : nil;
if(![document unlockWithPassword:password
keyFileURL:self.keyPathControl.URL
error:&error]) {
if(self.completionHandler) {
if(!self.completionHandler(password, self.keyPathControl.URL, &error)) {
[self _showError:error];
[self.view.window shakeWindow:nil];
}