Remove PearlAppDelegate.
This commit is contained in:
		
							
								
								
									
										2
									
								
								platform-darwin/External/Pearl
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								platform-darwin/External/Pearl
									
									
									
									
										vendored
									
									
								
							 Submodule platform-darwin/External/Pearl updated: fb38d0e35f...fbb8e6f94b
									
								
							@@ -117,7 +117,7 @@ PearlAssociatedObjectProperty( NSMutableArray*, ProductObservers, productObserve
 | 
				
			|||||||
            [self performPurchaseProductWithIdentifier:productIdentifier quantity:quantity];
 | 
					            [self performPurchaseProductWithIdentifier:productIdentifier quantity:quantity];
 | 
				
			||||||
        }]];
 | 
					        }]];
 | 
				
			||||||
        [controller addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil]];
 | 
					        [controller addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil]];
 | 
				
			||||||
        [self.navigationController presentViewController:controller animated:YES completion:nil];
 | 
					        [self.window.rootViewController presentViewController:controller animated:YES completion:nil];
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -167,7 +167,7 @@ PearlAssociatedObjectProperty( NSMutableArray*, ProductObservers, productObserve
 | 
				
			|||||||
                                @"Ensure you are online and try logging out and back into iTunes from your device's Settings." )
 | 
					                                @"Ensure you are online and try logging out and back into iTunes from your device's Settings." )
 | 
				
			||||||
                                                                     preferredStyle:UIAlertControllerStyleAlert];
 | 
					                                                                     preferredStyle:UIAlertControllerStyleAlert];
 | 
				
			||||||
        [controller addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleCancel handler:nil]];
 | 
					        [controller addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleCancel handler:nil]];
 | 
				
			||||||
        [self.navigationController presentViewController:controller animated:YES completion:nil];
 | 
					        [self.window.rootViewController presentViewController:controller animated:YES completion:nil];
 | 
				
			||||||
    } );
 | 
					    } );
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -260,7 +260,7 @@
 | 
				
			|||||||
                                ^(UIAlertAction *_Nonnull action) {
 | 
					                                ^(UIAlertAction *_Nonnull action) {
 | 
				
			||||||
                                    setResult( nil );
 | 
					                                    setResult( nil );
 | 
				
			||||||
                                }]];
 | 
					                                }]];
 | 
				
			||||||
                        [self.navigationController presentViewController:controller animated:YES completion:nil];
 | 
					                        [self.window.rootViewController presentViewController:controller animated:YES completion:nil];
 | 
				
			||||||
                    } );
 | 
					                    } );
 | 
				
			||||||
                } );
 | 
					                } );
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if TARGET_OS_IPHONE
 | 
					#if TARGET_OS_IPHONE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@interface MPAppDelegate_Shared : PearlAppDelegate
 | 
					@interface MPAppDelegate_Shared : UIResponder<UIApplicationDelegate, PearlConfigDelegate>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,6 +23,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@interface MPiOSAppDelegate : MPAppDelegate_Shared <SKStoreProductViewControllerDelegate>
 | 
					@interface MPiOSAppDelegate : MPAppDelegate_Shared <SKStoreProductViewControllerDelegate>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@property(nonatomic, strong) UIWindow *window;
 | 
				
			||||||
@property(nonatomic, strong) SKStoreProductViewController *voltoViewController;
 | 
					@property(nonatomic, strong) SKStoreProductViewController *voltoViewController;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- (void)openURL:(NSURL *)url;
 | 
					- (void)openURL:(NSURL *)url;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,7 +35,7 @@
 | 
				
			|||||||
@implementation CountlyPushNotifications(MPNotifications)
 | 
					@implementation CountlyPushNotifications(MPNotifications)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- (void)openURL:(NSString *)URLString {
 | 
					- (void)openURL:(NSString *)URLString {
 | 
				
			||||||
    [[MPiOSAppDelegate get].navigationController performSegueWithIdentifier:@"web" sender:[NSURL URLWithString:URLString]];
 | 
					    [[MPiOSAppDelegate get].window.rootViewController performSegueWithIdentifier:@"web" sender:[NSURL URLWithString:URLString]];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@end
 | 
					@end
 | 
				
			||||||
@@ -48,6 +48,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@implementation MPiOSAppDelegate
 | 
					@implementation MPiOSAppDelegate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@synthesize window;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
+ (void)initialize {
 | 
					+ (void)initialize {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [MPiOSConfig get];
 | 
					    [MPiOSConfig get];
 | 
				
			||||||
@@ -150,12 +152,6 @@
 | 
				
			|||||||
    @catch (id exception) {
 | 
					    @catch (id exception) {
 | 
				
			||||||
        err( @"During Config Test: %@", exception );
 | 
					        err( @"During Config Test: %@", exception );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    @try {
 | 
					 | 
				
			||||||
        [super application:application didFinishLaunchingWithOptions:launchOptions];
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    @catch (id exception) {
 | 
					 | 
				
			||||||
        err( @"During Pearl Application Launch: %@", exception );
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    @try {
 | 
					    @try {
 | 
				
			||||||
        inf( @"Started up with device identifier: %@", [PearlKeyChain deviceIdentifier] );
 | 
					        inf( @"Started up with device identifier: %@", [PearlKeyChain deviceIdentifier] );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -206,7 +202,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        PearlMainQueueOperation( ^{
 | 
					        PearlMainQueueOperation( ^{
 | 
				
			||||||
            if ([[MPiOSConfig get].showSetup boolValue])
 | 
					            if ([[MPiOSConfig get].showSetup boolValue])
 | 
				
			||||||
                [self.navigationController performSegueWithIdentifier:@"setup" sender:self];
 | 
					                [self.window.rootViewController performSegueWithIdentifier:@"setup" sender:self];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            [self consentFeatures];
 | 
					            [self consentFeatures];
 | 
				
			||||||
        } );
 | 
					        } );
 | 
				
			||||||
@@ -244,7 +240,7 @@
 | 
				
			|||||||
                                                (id)[error localizedDescription]?: error )
 | 
					                                                (id)[error localizedDescription]?: error )
 | 
				
			||||||
                                                                                preferredStyle:UIAlertControllerStyleAlert];
 | 
					                                                                                preferredStyle:UIAlertControllerStyleAlert];
 | 
				
			||||||
                        [alert addAction:[UIAlertAction actionWithTitle:@"Continue" style:UIAlertActionStyleCancel handler:nil]];
 | 
					                        [alert addAction:[UIAlertAction actionWithTitle:@"Continue" style:UIAlertActionStyleCancel handler:nil]];
 | 
				
			||||||
                        [self.navigationController presentViewController:alert animated:YES completion:nil];
 | 
					                        [self.window.rootViewController presentViewController:alert animated:YES completion:nil];
 | 
				
			||||||
                    } );
 | 
					                    } );
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@@ -256,7 +252,7 @@
 | 
				
			|||||||
                                        @"Master Password couldn't understand the import file."
 | 
					                                        @"Master Password couldn't understand the import file."
 | 
				
			||||||
                                                                                preferredStyle:UIAlertControllerStyleAlert];
 | 
					                                                                                preferredStyle:UIAlertControllerStyleAlert];
 | 
				
			||||||
                        [alert addAction:[UIAlertAction actionWithTitle:@"Continue" style:UIAlertActionStyleCancel handler:nil]];
 | 
					                        [alert addAction:[UIAlertAction actionWithTitle:@"Continue" style:UIAlertActionStyleCancel handler:nil]];
 | 
				
			||||||
                        [self.navigationController presentViewController:alert animated:YES completion:nil];
 | 
					                        [self.window.rootViewController presentViewController:alert animated:YES completion:nil];
 | 
				
			||||||
                    } );
 | 
					                    } );
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@@ -296,8 +292,7 @@
 | 
				
			|||||||
            [self consentFeatures];
 | 
					            [self consentFeatures];
 | 
				
			||||||
        }]];
 | 
					        }]];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [(self.navigationController.presentedViewController?: (UIViewController *)self.navigationController)
 | 
					        [self.window.rootViewController presentViewController:alert animated:YES completion:nil];
 | 
				
			||||||
                presentViewController:alert animated:YES completion:nil];
 | 
					 | 
				
			||||||
    } );
 | 
					    } );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return YES;
 | 
					    return YES;
 | 
				
			||||||
@@ -342,8 +337,7 @@
 | 
				
			|||||||
                [MPiOSConfig get].notificationsDecided = @(YES);
 | 
					                [MPiOSConfig get].notificationsDecided = @(YES);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }]];
 | 
					        }]];
 | 
				
			||||||
        [(self.navigationController.presentedViewController?: (UIViewController *)self.navigationController)
 | 
					        [self.window.rootViewController presentViewController:alert animated:YES completion:nil];
 | 
				
			||||||
                presentViewController:alert animated:YES completion:nil];
 | 
					 | 
				
			||||||
    } );
 | 
					    } );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -372,7 +366,7 @@
 | 
				
			|||||||
                [alert addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
 | 
					                [alert addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
 | 
				
			||||||
                    setResult( nil );
 | 
					                    setResult( nil );
 | 
				
			||||||
                }]];
 | 
					                }]];
 | 
				
			||||||
                [self.navigationController presentViewController:alert animated:YES completion:nil];
 | 
					                [self.window.rootViewController presentViewController:alert animated:YES completion:nil];
 | 
				
			||||||
            } );
 | 
					            } );
 | 
				
			||||||
        } );
 | 
					        } );
 | 
				
			||||||
    } askUserPassword:^NSString *(NSString *userName) {
 | 
					    } askUserPassword:^NSString *(NSString *userName) {
 | 
				
			||||||
@@ -390,7 +384,7 @@
 | 
				
			|||||||
                [alert addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
 | 
					                [alert addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
 | 
				
			||||||
                    setResult( nil );
 | 
					                    setResult( nil );
 | 
				
			||||||
                }]];
 | 
					                }]];
 | 
				
			||||||
                [self.navigationController presentViewController:alert animated:YES completion:nil];
 | 
					                [self.window.rootViewController presentViewController:alert animated:YES completion:nil];
 | 
				
			||||||
            } );
 | 
					            } );
 | 
				
			||||||
        } );
 | 
					        } );
 | 
				
			||||||
    }          result:^(NSError *error) {
 | 
					    }          result:^(NSError *error) {
 | 
				
			||||||
@@ -401,7 +395,7 @@
 | 
				
			|||||||
                UIAlertController *controller = [UIAlertController alertControllerWithTitle:@"Error" message:[error localizedDescription]
 | 
					                UIAlertController *controller = [UIAlertController alertControllerWithTitle:@"Error" message:[error localizedDescription]
 | 
				
			||||||
                                                                             preferredStyle:UIAlertControllerStyleAlert];
 | 
					                                                                             preferredStyle:UIAlertControllerStyleAlert];
 | 
				
			||||||
                [controller addAction:[UIAlertAction actionWithTitle:@"Continue" style:UIAlertActionStyleCancel handler:nil]];
 | 
					                [controller addAction:[UIAlertAction actionWithTitle:@"Continue" style:UIAlertActionStyleCancel handler:nil]];
 | 
				
			||||||
                [self.navigationController presentViewController:controller animated:YES completion:nil];
 | 
					                [self.window.rootViewController presentViewController:controller animated:YES completion:nil];
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        } );
 | 
					        } );
 | 
				
			||||||
    }];
 | 
					    }];
 | 
				
			||||||
@@ -411,8 +405,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    inf( @"Will foreground" );
 | 
					    inf( @"Will foreground" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [super applicationWillEnterForeground:application];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [self.hangDetector start];
 | 
					    [self.hangDetector start];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -435,20 +427,16 @@
 | 
				
			|||||||
                            [UIPasteboard generalPasteboard].string = @"";
 | 
					                            [UIPasteboard generalPasteboard].string = @"";
 | 
				
			||||||
                        }]];
 | 
					                        }]];
 | 
				
			||||||
                [alert addAction:[UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:nil]];
 | 
					                [alert addAction:[UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:nil]];
 | 
				
			||||||
                [self.navigationController presentViewController:alert animated:YES completion:nil];
 | 
					                [self.window.rootViewController presentViewController:alert animated:YES completion:nil];
 | 
				
			||||||
            } );
 | 
					            } );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        mpw_marshal_file_free( &importFile );
 | 
					        mpw_marshal_file_free( &importFile );
 | 
				
			||||||
    } );
 | 
					    } );
 | 
				
			||||||
 | 
					 | 
				
			||||||
    [super applicationDidBecomeActive:application];
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
 | 
					- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    inf( @"Received memory warning." );
 | 
					    inf( @"Received memory warning." );
 | 
				
			||||||
 | 
					 | 
				
			||||||
    [super applicationDidReceiveMemoryWarning:application];
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- (void)applicationDidEnterBackground:(UIApplication *)application {
 | 
					- (void)applicationDidEnterBackground:(UIApplication *)application {
 | 
				
			||||||
@@ -461,8 +449,6 @@
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [self.hangDetector stop];
 | 
					    [self.hangDetector stop];
 | 
				
			||||||
 | 
					 | 
				
			||||||
    [super applicationDidEnterBackground:application];
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#pragma mark - Behavior
 | 
					#pragma mark - Behavior
 | 
				
			||||||
@@ -479,7 +465,7 @@
 | 
				
			|||||||
        else if ([url.host isEqualToString:@"show-url"]) {
 | 
					        else if ([url.host isEqualToString:@"show-url"]) {
 | 
				
			||||||
            for (NSURLQueryItem *item in [NSURLComponents componentsWithString:[url absoluteString]].queryItems)
 | 
					            for (NSURLQueryItem *item in [NSURLComponents componentsWithString:[url absoluteString]].queryItems)
 | 
				
			||||||
                if ([item.name isEqualToString:@"url"]) {
 | 
					                if ([item.name isEqualToString:@"url"]) {
 | 
				
			||||||
                    [[MPiOSAppDelegate get].navigationController performSegueWithIdentifier:@"web" sender:[NSURL URLWithString:item.value]];
 | 
					                    [self.window.rootViewController performSegueWithIdentifier:@"web" sender:[NSURL URLWithString:item.value]];
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -512,7 +498,7 @@
 | 
				
			|||||||
                        @"help@masterpassword.app"
 | 
					                        @"help@masterpassword.app"
 | 
				
			||||||
                                                                preferredStyle:UIAlertControllerStyleAlert];
 | 
					                                                                preferredStyle:UIAlertControllerStyleAlert];
 | 
				
			||||||
        [alert addAction:[UIAlertAction actionWithTitle:@"Okay" style:UIAlertActionStyleCancel handler:nil]];
 | 
					        [alert addAction:[UIAlertAction actionWithTitle:@"Okay" style:UIAlertActionStyleCancel handler:nil]];
 | 
				
			||||||
        [self.navigationController presentViewController:alert animated:YES completion:nil];
 | 
					        [self.window.rootViewController presentViewController:alert animated:YES completion:nil];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else if (logs) {
 | 
					    else if (logs) {
 | 
				
			||||||
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Feedback" message:
 | 
					        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Feedback" message:
 | 
				
			||||||
@@ -526,7 +512,7 @@
 | 
				
			|||||||
        [alert addAction:[UIAlertAction actionWithTitle:@"No Logs" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
 | 
					        [alert addAction:[UIAlertAction actionWithTitle:@"No Logs" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
 | 
				
			||||||
            [self openFeedbackWithLogs:NO forVC:viewController];
 | 
					            [self openFeedbackWithLogs:NO forVC:viewController];
 | 
				
			||||||
        }]];
 | 
					        }]];
 | 
				
			||||||
        [self.navigationController presentViewController:alert animated:YES completion:nil];
 | 
					        [self.window.rootViewController presentViewController:alert animated:YES completion:nil];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        [self openFeedbackWithLogs:NO forVC:viewController];
 | 
					        [self openFeedbackWithLogs:NO forVC:viewController];
 | 
				
			||||||
@@ -580,7 +566,7 @@
 | 
				
			|||||||
                [self deleteAndResetStore];
 | 
					                [self deleteAndResetStore];
 | 
				
			||||||
            }]];
 | 
					            }]];
 | 
				
			||||||
            [alert addAction:[UIAlertAction actionWithTitle:@"Ignore" style:UIAlertActionStyleCancel handler:nil]];
 | 
					            [alert addAction:[UIAlertAction actionWithTitle:@"Ignore" style:UIAlertActionStyleCancel handler:nil]];
 | 
				
			||||||
            [self.navigationController presentViewController:alert animated:YES completion:nil];
 | 
					            [self.window.rootViewController presentViewController:alert animated:YES completion:nil];
 | 
				
			||||||
        } );
 | 
					        } );
 | 
				
			||||||
    } );
 | 
					    } );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -605,10 +591,10 @@
 | 
				
			|||||||
            [self showExportRevealPasswords:YES forVC:viewController];
 | 
					            [self showExportRevealPasswords:YES forVC:viewController];
 | 
				
			||||||
        }]];
 | 
					        }]];
 | 
				
			||||||
        [sheet addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil]];
 | 
					        [sheet addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil]];
 | 
				
			||||||
        [self.navigationController presentViewController:sheet animated:YES completion:nil];
 | 
					        [self.window.rootViewController presentViewController:sheet animated:YES completion:nil];
 | 
				
			||||||
    }]];
 | 
					    }]];
 | 
				
			||||||
    [alert addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil]];
 | 
					    [alert addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil]];
 | 
				
			||||||
    [self.navigationController presentViewController:alert animated:YES completion:nil];
 | 
					    [self.window.rootViewController presentViewController:alert animated:YES completion:nil];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- (void)showExportRevealPasswords:(BOOL)revealPasswords forVC:(UIViewController *)viewController {
 | 
					- (void)showExportRevealPasswords:(BOOL)revealPasswords forVC:(UIViewController *)viewController {
 | 
				
			||||||
@@ -619,7 +605,7 @@
 | 
				
			|||||||
                        @"Close Master Password, go into Settings and add a Mail account."
 | 
					                        @"Close Master Password, go into Settings and add a Mail account."
 | 
				
			||||||
                                                                preferredStyle:UIAlertControllerStyleAlert];
 | 
					                                                                preferredStyle:UIAlertControllerStyleAlert];
 | 
				
			||||||
        [alert addAction:[UIAlertAction actionWithTitle:@"Okay" style:UIAlertActionStyleCancel handler:nil]];
 | 
					        [alert addAction:[UIAlertAction actionWithTitle:@"Okay" style:UIAlertActionStyleCancel handler:nil]];
 | 
				
			||||||
        [self.navigationController presentViewController:alert animated:YES completion:nil];
 | 
					        [self.window.rootViewController presentViewController:alert animated:YES completion:nil];
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -644,7 +630,7 @@
 | 
				
			|||||||
                                                                    handler:^(UIAlertAction *action) {
 | 
					                                                                    handler:^(UIAlertAction *action) {
 | 
				
			||||||
                                                                        setResult( nil );
 | 
					                                                                        setResult( nil );
 | 
				
			||||||
                                                                    }]];
 | 
					                                                                    }]];
 | 
				
			||||||
                            [self.navigationController presentViewController:alert animated:YES completion:nil];
 | 
					                            [self.window.rootViewController presentViewController:alert animated:YES completion:nil];
 | 
				
			||||||
                        } );
 | 
					                        } );
 | 
				
			||||||
                    } );
 | 
					                    } );
 | 
				
			||||||
                }                               error:&error];
 | 
					                }                               error:&error];
 | 
				
			||||||
@@ -655,7 +641,7 @@
 | 
				
			|||||||
                UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Export Error" message:[error localizedDescription]
 | 
					                UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Export Error" message:[error localizedDescription]
 | 
				
			||||||
                                                                        preferredStyle:UIAlertControllerStyleAlert];
 | 
					                                                                        preferredStyle:UIAlertControllerStyleAlert];
 | 
				
			||||||
                [alert addAction:[UIAlertAction actionWithTitle:@"Okay" style:UIAlertActionStyleCancel handler:nil]];
 | 
					                [alert addAction:[UIAlertAction actionWithTitle:@"Okay" style:UIAlertActionStyleCancel handler:nil]];
 | 
				
			||||||
                [self.navigationController presentViewController:alert animated:YES completion:nil];
 | 
					                [self.window.rootViewController presentViewController:alert animated:YES completion:nil];
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (!exportedUser)
 | 
					            if (!exportedUser)
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
@@ -711,7 +697,7 @@
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }]];
 | 
					            }]];
 | 
				
			||||||
            [alert addAction:[UIAlertAction actionWithTitle:@"Continue" style:UIAlertActionStyleCancel handler:nil]];
 | 
					            [alert addAction:[UIAlertAction actionWithTitle:@"Continue" style:UIAlertActionStyleCancel handler:nil]];
 | 
				
			||||||
            [self.navigationController presentViewController:alert animated:YES completion:nil];
 | 
					            [self.window.rootViewController presentViewController:alert animated:YES completion:nil];
 | 
				
			||||||
        } );
 | 
					        } );
 | 
				
			||||||
    }];
 | 
					    }];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -735,7 +721,7 @@
 | 
				
			|||||||
                            ^(UIAlertAction *action) { [self migrateFor:user_]; }]];
 | 
					                            ^(UIAlertAction *action) { [self migrateFor:user_]; }]];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                PearlMainQueue( ^{
 | 
					                PearlMainQueue( ^{
 | 
				
			||||||
                    [self.navigationController presentViewController:usersSheet animated:YES completion:nil];
 | 
					                    [self.window.rootViewController presentViewController:usersSheet animated:YES completion:nil];
 | 
				
			||||||
                } );
 | 
					                } );
 | 
				
			||||||
            }];
 | 
					            }];
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
@@ -757,7 +743,7 @@
 | 
				
			|||||||
                                        ^(UIAlertAction *action) { setResult( alert.textFields.firstObject.text ); }]];
 | 
					                                        ^(UIAlertAction *action) { setResult( alert.textFields.firstObject.text ); }]];
 | 
				
			||||||
                                [alert addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:
 | 
					                                [alert addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:
 | 
				
			||||||
                                        ^(UIAlertAction *action) { setResult( nil ); }]];
 | 
					                                        ^(UIAlertAction *action) { setResult( nil ); }]];
 | 
				
			||||||
                                [self.navigationController presentViewController:alert animated:YES completion:nil];
 | 
					                                [self.window.rootViewController presentViewController:alert animated:YES completion:nil];
 | 
				
			||||||
                            } );
 | 
					                            } );
 | 
				
			||||||
                        } );
 | 
					                        } );
 | 
				
			||||||
                    } error:&error];
 | 
					                    } error:&error];
 | 
				
			||||||
@@ -769,7 +755,7 @@
 | 
				
			|||||||
                                                                                   message:[error localizedDescription]
 | 
					                                                                                   message:[error localizedDescription]
 | 
				
			||||||
                                                                            preferredStyle:UIAlertControllerStyleAlert];
 | 
					                                                                            preferredStyle:UIAlertControllerStyleAlert];
 | 
				
			||||||
                    [alert addAction:[UIAlertAction actionWithTitle:@"Okay" style:UIAlertActionStyleCancel handler:nil]];
 | 
					                    [alert addAction:[UIAlertAction actionWithTitle:@"Okay" style:UIAlertActionStyleCancel handler:nil]];
 | 
				
			||||||
                    [self.navigationController presentViewController:alert animated:YES completion:nil];
 | 
					                    [self.window.rootViewController presentViewController:alert animated:YES completion:nil];
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                if (!exportedUser)
 | 
					                if (!exportedUser)
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
@@ -784,7 +770,7 @@
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    else if (self.voltoViewController)
 | 
					    else if (self.voltoViewController)
 | 
				
			||||||
        [self.navigationController presentViewController:self.voltoViewController animated:YES completion:nil];
 | 
					        [self.window.rootViewController presentViewController:self.voltoViewController animated:YES completion:nil];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- (void)changeMasterPasswordFor:(MPUserEntity *)user saveInContext:(NSManagedObjectContext *)moc didResetBlock:(void ( ^ )(void))didReset {
 | 
					- (void)changeMasterPasswordFor:(MPUserEntity *)user saveInContext:(NSManagedObjectContext *)moc didResetBlock:(void ( ^ )(void))didReset {
 | 
				
			||||||
@@ -808,7 +794,7 @@
 | 
				
			|||||||
                didReset();
 | 
					                didReset();
 | 
				
			||||||
        }]];
 | 
					        }]];
 | 
				
			||||||
        [alert addAction:[UIAlertAction actionWithTitle:@"Abort" style:UIAlertActionStyleCancel handler:nil]];
 | 
					        [alert addAction:[UIAlertAction actionWithTitle:@"Abort" style:UIAlertActionStyleCancel handler:nil]];
 | 
				
			||||||
        [self.navigationController presentViewController:alert animated:YES completion:nil];
 | 
					        [self.window.rootViewController presentViewController:alert animated:YES completion:nil];
 | 
				
			||||||
    } );
 | 
					    } );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16096" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="Q1S-vU-GGO">
 | 
					<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16097" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="Q1S-vU-GGO">
 | 
				
			||||||
    <device id="retina6_1" orientation="portrait" appearance="light"/>
 | 
					    <device id="retina6_1" orientation="portrait" appearance="light"/>
 | 
				
			||||||
    <dependencies>
 | 
					    <dependencies>
 | 
				
			||||||
        <deployment identifier="iOS"/>
 | 
					        <deployment identifier="iOS"/>
 | 
				
			||||||
@@ -97,10 +97,10 @@
 | 
				
			|||||||
                                                            </constraints>
 | 
					                                                            </constraints>
 | 
				
			||||||
                                                        </imageView>
 | 
					                                                        </imageView>
 | 
				
			||||||
                                                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="0Sa-Vg-EEI" userLabel="Name Backdrop">
 | 
					                                                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="0Sa-Vg-EEI" userLabel="Name Backdrop">
 | 
				
			||||||
                                                            <rect key="frame" x="43.5" y="263" width="128.5" height="16"/>
 | 
					                                                            <rect key="frame" x="43.5" y="263" width="128" height="16"/>
 | 
				
			||||||
                                                            <subviews>
 | 
					                                                            <subviews>
 | 
				
			||||||
                                                                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalCompressionResistancePriority="1000" text="Maarten Billemont" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="cLT-s0-4SQ" userLabel="Name Field">
 | 
					                                                                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalCompressionResistancePriority="1000" text="Maarten Billemont" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="cLT-s0-4SQ" userLabel="Name Field">
 | 
				
			||||||
                                                                    <rect key="frame" x="5" y="0.0" width="118.5" height="16"/>
 | 
					                                                                    <rect key="frame" x="5" y="0.0" width="118" height="16"/>
 | 
				
			||||||
                                                                    <fontDescription key="fontDescription" name="Exo2.0-ExtraBold" family="Exo 2.0" pointSize="13"/>
 | 
					                                                                    <fontDescription key="fontDescription" name="Exo2.0-ExtraBold" family="Exo 2.0" pointSize="13"/>
 | 
				
			||||||
                                                                    <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
 | 
					                                                                    <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
 | 
				
			||||||
                                                                    <nil key="highlightedColor"/>
 | 
					                                                                    <nil key="highlightedColor"/>
 | 
				
			||||||
@@ -288,14 +288,14 @@
 | 
				
			|||||||
                                                </connections>
 | 
					                                                </connections>
 | 
				
			||||||
                                            </button>
 | 
					                                            </button>
 | 
				
			||||||
                                            <view userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="069-Pu-yXe" userLabel="Thanks Tip">
 | 
					                                            <view userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="069-Pu-yXe" userLabel="Thanks Tip">
 | 
				
			||||||
                                                <rect key="frame" x="91" y="0.0" width="232.5" height="60"/>
 | 
					                                                <rect key="frame" x="90.5" y="0.0" width="233" height="60"/>
 | 
				
			||||||
                                                <subviews>
 | 
					                                                <subviews>
 | 
				
			||||||
                                                    <imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" translatesAutoresizingMaskIntoConstraints="NO" id="Z8P-ZK-aS0">
 | 
					                                                    <imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" translatesAutoresizingMaskIntoConstraints="NO" id="Z8P-ZK-aS0">
 | 
				
			||||||
                                                        <rect key="frame" x="0.0" y="0.0" width="232.5" height="60"/>
 | 
					                                                        <rect key="frame" x="0.0" y="0.0" width="233" height="60"/>
 | 
				
			||||||
                                                        <rect key="contentStretch" x="0.15000000000000002" y="0.0" width="0.69999999999999973" height="1"/>
 | 
					                                                        <rect key="contentStretch" x="0.15000000000000002" y="0.0" width="0.69999999999999973" height="1"/>
 | 
				
			||||||
                                                    </imageView>
 | 
					                                                    </imageView>
 | 
				
			||||||
                                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Why is Master Password free?" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="BLV-3x-Q0z">
 | 
					                                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Why is Master Password free?" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="BLV-3x-Q0z">
 | 
				
			||||||
                                                        <rect key="frame" x="20" y="11.5" width="192.5" height="17"/>
 | 
					                                                        <rect key="frame" x="20" y="11.5" width="193" height="17"/>
 | 
				
			||||||
                                                        <fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="14"/>
 | 
					                                                        <fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="14"/>
 | 
				
			||||||
                                                        <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
 | 
					                                                        <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
 | 
				
			||||||
                                                        <nil key="highlightedColor"/>
 | 
					                                                        <nil key="highlightedColor"/>
 | 
				
			||||||
@@ -2240,7 +2240,7 @@ Suspendisse potenti. Etiam ut nisi id augue tempor ultrices et sit amet sapien.
 | 
				
			|||||||
                                <dataDetectorType key="dataDetectorTypes" link="YES"/>
 | 
					                                <dataDetectorType key="dataDetectorTypes" link="YES"/>
 | 
				
			||||||
                            </textView>
 | 
					                            </textView>
 | 
				
			||||||
                            <toolbar contentMode="scaleToFill" barStyle="black" translatesAutoresizingMaskIntoConstraints="NO" id="WmH-JB-jp2">
 | 
					                            <toolbar contentMode="scaleToFill" barStyle="black" translatesAutoresizingMaskIntoConstraints="NO" id="WmH-JB-jp2">
 | 
				
			||||||
                                <rect key="frame" x="0.0" y="764" width="414" height="49"/>
 | 
					                                <rect key="frame" x="0.0" y="769" width="414" height="44"/>
 | 
				
			||||||
                                <items>
 | 
					                                <items>
 | 
				
			||||||
                                    <barButtonItem systemItem="compose" id="BSV-3i-01h">
 | 
					                                    <barButtonItem systemItem="compose" id="BSV-3i-01h">
 | 
				
			||||||
                                        <connections>
 | 
					                                        <connections>
 | 
				
			||||||
@@ -2255,7 +2255,7 @@ Suspendisse potenti. Etiam ut nisi id augue tempor ultrices et sit amet sapien.
 | 
				
			|||||||
                                    <barButtonItem systemItem="flexibleSpace" id="Lp4-ss-KxI"/>
 | 
					                                    <barButtonItem systemItem="flexibleSpace" id="Lp4-ss-KxI"/>
 | 
				
			||||||
                                    <barButtonItem style="plain" id="aMS-HH-mnE">
 | 
					                                    <barButtonItem style="plain" id="aMS-HH-mnE">
 | 
				
			||||||
                                        <segmentedControl key="customView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="0" id="lxp-wx-uCy">
 | 
					                                        <segmentedControl key="customView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="0" id="lxp-wx-uCy">
 | 
				
			||||||
                                            <rect key="frame" x="267" y="11" width="127" height="32"/>
 | 
					                                            <rect key="frame" x="267" y="6" width="127" height="32"/>
 | 
				
			||||||
                                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
 | 
					                                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
 | 
				
			||||||
                                            <segments>
 | 
					                                            <segments>
 | 
				
			||||||
                                                <segment title="Normal"/>
 | 
					                                                <segment title="Normal"/>
 | 
				
			||||||
@@ -2755,7 +2755,7 @@ Invested: 3.7 work hours</string>
 | 
				
			|||||||
                                            <rect key="frame" x="188.5" y="20" width="37" height="37"/>
 | 
					                                            <rect key="frame" x="188.5" y="20" width="37" height="37"/>
 | 
				
			||||||
                                        </activityIndicatorView>
 | 
					                                        </activityIndicatorView>
 | 
				
			||||||
                                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="751" verticalCompressionResistancePriority="751" text="Loading products..." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="12" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="NPg-it-juF">
 | 
					                                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="751" verticalCompressionResistancePriority="751" text="Loading products..." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="12" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="NPg-it-juF">
 | 
				
			||||||
                                            <rect key="frame" x="134.5" y="97" width="145.5" height="25"/>
 | 
					                                            <rect key="frame" x="134" y="97" width="146" height="25"/>
 | 
				
			||||||
                                            <fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="17"/>
 | 
					                                            <fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="17"/>
 | 
				
			||||||
                                            <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
 | 
					                                            <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
 | 
				
			||||||
                                            <nil key="highlightedColor"/>
 | 
					                                            <nil key="highlightedColor"/>
 | 
				
			||||||
@@ -3271,7 +3271,7 @@ Ut in geometria, prima si dederis, danda sunt omnia. Nonne igitur tibi videntur,
 | 
				
			|||||||
        </scene>
 | 
					        </scene>
 | 
				
			||||||
    </scenes>
 | 
					    </scenes>
 | 
				
			||||||
    <inferredMetricsTieBreakers>
 | 
					    <inferredMetricsTieBreakers>
 | 
				
			||||||
        <segue reference="k2G-nL-x3l"/>
 | 
					        <segue reference="Ql4-wf-T8u"/>
 | 
				
			||||||
        <segue reference="gtb-zE-u9H"/>
 | 
					        <segue reference="gtb-zE-u9H"/>
 | 
				
			||||||
    </inferredMetricsTieBreakers>
 | 
					    </inferredMetricsTieBreakers>
 | 
				
			||||||
    <color key="tintColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
 | 
					    <color key="tintColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user