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.passwordInputController = [[MPPasswordInputController alloc] init];
} }
[self _setContentViewController:self.passwordInputController]; [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 { - (void)editPassword:(id)sender {

View File

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

View File

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