diff --git a/External/iOS/Crashlytics.framework/submit b/External/iOS/Crashlytics.framework/submit index 6c092c73..6141e814 100755 Binary files a/External/iOS/Crashlytics.framework/submit and b/External/iOS/Crashlytics.framework/submit differ diff --git a/External/Reveal.framework/Headers b/External/iOS/Reveal.framework/Headers similarity index 100% rename from External/Reveal.framework/Headers rename to External/iOS/Reveal.framework/Headers diff --git a/External/Reveal.framework/Reveal b/External/iOS/Reveal.framework/Reveal similarity index 100% rename from External/Reveal.framework/Reveal rename to External/iOS/Reveal.framework/Reveal diff --git a/External/Reveal.framework/Versions/A/Headers/IBARevealLoader.h b/External/iOS/Reveal.framework/Versions/A/Headers/IBARevealLoader.h similarity index 100% rename from External/Reveal.framework/Versions/A/Headers/IBARevealLoader.h rename to External/iOS/Reveal.framework/Versions/A/Headers/IBARevealLoader.h diff --git a/External/Reveal.framework/Versions/A/Headers/IBARevealLogger.h b/External/iOS/Reveal.framework/Versions/A/Headers/IBARevealLogger.h similarity index 100% rename from External/Reveal.framework/Versions/A/Headers/IBARevealLogger.h rename to External/iOS/Reveal.framework/Versions/A/Headers/IBARevealLogger.h diff --git a/External/Reveal.framework/Versions/A/Headers/Reveal.h b/External/iOS/Reveal.framework/Versions/A/Headers/Reveal.h similarity index 100% rename from External/Reveal.framework/Versions/A/Headers/Reveal.h rename to External/iOS/Reveal.framework/Versions/A/Headers/Reveal.h diff --git a/External/Reveal.framework/Versions/A/Reveal b/External/iOS/Reveal.framework/Versions/A/Reveal similarity index 100% rename from External/Reveal.framework/Versions/A/Reveal rename to External/iOS/Reveal.framework/Versions/A/Reveal diff --git a/External/Reveal.framework/Versions/Current b/External/iOS/Reveal.framework/Versions/Current similarity index 100% rename from External/Reveal.framework/Versions/Current rename to External/iOS/Reveal.framework/Versions/Current diff --git a/MasterPassword/ObjC/MPConfig.h b/MasterPassword/ObjC/MPConfig.h index dee9d553..c5f10643 100644 --- a/MasterPassword/ObjC/MPConfig.h +++ b/MasterPassword/ObjC/MPConfig.h @@ -14,7 +14,6 @@ @property(nonatomic, retain) NSNumber *rememberLogin; @property(nonatomic, retain) NSNumber *hidePasswords; -@property(nonatomic, retain) NSNumber *iCloudDecided; @property(nonatomic, retain) NSNumber *checkInconsistency; @property(nonatomic, strong) NSNumber *siteAttacker; diff --git a/MasterPassword/ObjC/MPConfig.m b/MasterPassword/ObjC/MPConfig.m index 4ecb16a1..3d3be2f2 100644 --- a/MasterPassword/ObjC/MPConfig.m +++ b/MasterPassword/ObjC/MPConfig.m @@ -10,7 +10,7 @@ @implementation MPConfig -@dynamic sendInfo, rememberLogin, iCloudDecided, checkInconsistency, hidePasswords, siteAttacker; +@dynamic sendInfo, rememberLogin, checkInconsistency, hidePasswords, siteAttacker; - (id)init { @@ -23,7 +23,6 @@ NSStringFromSelector( @selector( sendInfo ) ) : @NO, NSStringFromSelector( @selector( rememberLogin ) ) : @NO, NSStringFromSelector( @selector( hidePasswords ) ) : @NO, - NSStringFromSelector( @selector( iCloudDecided ) ) : @NO, NSStringFromSelector( @selector( checkInconsistency ) ) : @NO, NSStringFromSelector( @selector( siteAttacker ) ) : @(MPAttacker1), }]; diff --git a/MasterPassword/ObjC/iOS/MPSetupViewController.h b/MasterPassword/ObjC/iOS/MPSetupViewController.h index 43c7fbeb..a479229a 100644 --- a/MasterPassword/ObjC/iOS/MPSetupViewController.h +++ b/MasterPassword/ObjC/iOS/MPSetupViewController.h @@ -20,7 +20,6 @@ @interface MPSetupViewController : UIViewController -@property(weak, nonatomic) IBOutlet UISwitch *cloudSwitch; @property(weak, nonatomic) IBOutlet UISwitch *rememberLoginSwitch; - (IBAction)close:(UIBarButtonItem *)sender; diff --git a/MasterPassword/ObjC/iOS/MPSetupViewController.m b/MasterPassword/ObjC/iOS/MPSetupViewController.m index 9d4f6abf..381b4f13 100644 --- a/MasterPassword/ObjC/iOS/MPSetupViewController.m +++ b/MasterPassword/ObjC/iOS/MPSetupViewController.m @@ -26,10 +26,6 @@ [super viewDidAppear:animated]; - self.cloudSwitch.enabled = [[MPAppDelegate_Shared get].storeManager cloudAvailable]; - - if (self.cloudSwitch && [[MPiOSConfig get].iCloudDecided boolValue]) - self.cloudSwitch.on = [[MPiOSConfig get].iCloudEnabled boolValue]; if (self.rememberLoginSwitch) self.rememberLoginSwitch.on = [[MPiOSConfig get].rememberLogin boolValue]; } @@ -38,10 +34,6 @@ [super viewWillDisappear:animated]; - if (self.cloudSwitch) { - [MPiOSConfig get].iCloudDecided = @YES; - [MPiOSConfig get].iCloudEnabled = @(self.cloudSwitch.on); - } if (self.rememberLoginSwitch) [MPiOSConfig get].rememberLogin = @(self.rememberLoginSwitch.on); } diff --git a/MasterPassword/ObjC/iOS/MPiOSAppDelegate.m b/MasterPassword/ObjC/iOS/MPiOSAppDelegate.m index cc838aa3..2476bd00 100644 --- a/MasterPassword/ObjC/iOS/MPiOSAppDelegate.m +++ b/MasterPassword/ObjC/iOS/MPiOSAppDelegate.m @@ -72,16 +72,16 @@ @try { [[NSNotificationCenter defaultCenter] addObserverForName:MPCheckConfigNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) { - [self updateConfigKey:note.object]; - }]; + [self updateConfigKey:note.object]; + }]; [[NSNotificationCenter defaultCenter] addObserverForName:kIASKAppSettingChanged object:nil queue:nil usingBlock: ^(NSNotification *note) { - [[NSNotificationCenter defaultCenter] postNotificationName:MPCheckConfigNotification object:note.object]; - }]; + [[NSNotificationCenter defaultCenter] postNotificationName:MPCheckConfigNotification object:note.object]; + }]; [[NSNotificationCenter defaultCenter] addObserverForName:NSUserDefaultsDidChangeNotification object:nil queue:nil usingBlock: ^(NSNotification *note) { - [[NSNotificationCenter defaultCenter] postNotificationName:MPCheckConfigNotification object:nil]; - }]; + [[NSNotificationCenter defaultCenter] postNotificationName:MPCheckConfigNotification object:nil]; + }]; #ifdef ADHOC [PearlAlert showAlertWithTitle:@"Welcome, tester!" message: @@ -109,26 +109,26 @@ [[NSNotificationCenter defaultCenter] addObserverForName:MPFoundInconsistenciesNotification object:nil queue:nil usingBlock: ^(NSNotification *note) { - switch ((MPFixableResult)[note.userInfo[MPInconsistenciesFixResultUserKey] unsignedIntegerValue]) { + switch ((MPFixableResult)[note.userInfo[MPInconsistenciesFixResultUserKey] unsignedIntegerValue]) { - case MPFixableResultNoProblems: - break; - case MPFixableResultProblemsFixed: - [PearlAlert showAlertWithTitle:@"Inconsistencies Fixed" message: - @"Some inconsistencies were detected in your sites.\n" - @"All issues were fixed." - viewStyle:UIAlertViewStyleDefault initAlert:nil - tappedButtonBlock:nil cancelTitle:[PearlStrings get].commonButtonOkay otherTitles:nil]; - break; - case MPFixableResultProblemsNotFixed: - [PearlAlert showAlertWithTitle:@"Inconsistencies Found" message: - @"Some inconsistencies were detected in your sites.\n" - @"Not all issues could be fixed. Try signing in to each user or checking the logs." - viewStyle:UIAlertViewStyleDefault initAlert:nil - tappedButtonBlock:nil cancelTitle:[PearlStrings get].commonButtonOkay otherTitles:nil]; - break; - } - }]; + case MPFixableResultNoProblems: + break; + case MPFixableResultProblemsFixed: + [PearlAlert showAlertWithTitle:@"Inconsistencies Fixed" message: + @"Some inconsistencies were detected in your sites.\n" + @"All issues were fixed." + viewStyle:UIAlertViewStyleDefault initAlert:nil + tappedButtonBlock:nil cancelTitle:[PearlStrings get].commonButtonOkay otherTitles:nil]; + break; + case MPFixableResultProblemsNotFixed: + [PearlAlert showAlertWithTitle:@"Inconsistencies Found" message: + @"Some inconsistencies were detected in your sites.\n" + @"Not all issues could be fixed. Try signing in to each user or checking the logs." + viewStyle:UIAlertViewStyleDefault initAlert:nil + tappedButtonBlock:nil cancelTitle:[PearlStrings get].commonButtonOkay otherTitles:nil]; + break; + } + }]; PearlMainQueue( ^{ if ([[MPiOSConfig get].showSetup boolValue]) @@ -186,16 +186,16 @@ @"Enter that master password to unlock the exported data.", userName ) viewStyle:UIAlertViewStyleSecureTextInput initAlert:nil tappedButtonBlock:^(UIAlertView *alert_, NSInteger buttonIndex_) { - @try { - if (buttonIndex_ == [alert_ cancelButtonIndex]) - return; + @try { + if (buttonIndex_ == [alert_ cancelButtonIndex]) + return; - masterPassword = [alert_ textFieldAtIndex:0].text; - } - @finally { - dispatch_group_leave( importPasswordGroup ); - } - } + masterPassword = [alert_ textFieldAtIndex:0].text; + } + @finally { + dispatch_group_leave( importPasswordGroup ); + } + } cancelTitle:[PearlStrings get].commonButtonCancel otherTitles:@"Unlock Import", nil]; } ); dispatch_group_wait( importPasswordGroup, DISPATCH_TIME_FOREVER ); @@ -209,19 +209,19 @@ dispatch_async( dispatch_get_main_queue(), ^{ [PearlAlert showAlertWithTitle:strf( @"Master Password for\n%@", userName ) message:strf( @"Imports %lu sites, overwriting %lu.", - (unsigned long)importCount, (unsigned long)deleteCount ) + (unsigned long)importCount, (unsigned long)deleteCount ) viewStyle:UIAlertViewStyleSecureTextInput initAlert:nil tappedButtonBlock:^(UIAlertView *alert_, NSInteger buttonIndex_) { - @try { - if (buttonIndex_ == [alert_ cancelButtonIndex]) - return; + @try { + if (buttonIndex_ == [alert_ cancelButtonIndex]) + return; - masterPassword = [alert_ textFieldAtIndex:0].text; - } - @finally { - dispatch_group_leave( userPasswordGroup ); - } - } + masterPassword = [alert_ textFieldAtIndex:0].text; + } + @finally { + dispatch_group_leave( userPasswordGroup ); + } + } cancelTitle:[PearlStrings get].commonButtonCancel otherTitles:@"Import", nil]; } ); dispatch_group_wait( userPasswordGroup, DISPATCH_TIME_FOREVER ); @@ -303,8 +303,8 @@ @"and then include log files in your message." viewStyle:UIAlertViewStyleDefault initAlert:nil tappedButtonBlock:^(UIAlertView *alert_, NSInteger buttonIndex_) { - [self openFeedbackWithLogs:(buttonIndex_ == [alert_ firstOtherButtonIndex]) forVC:viewController]; - } cancelTitle:nil otherTitles:@"Include Logs", @"No Logs", nil]; + [self openFeedbackWithLogs:(buttonIndex_ == [alert_ firstOtherButtonIndex]) forVC:viewController]; + } cancelTitle:nil otherTitles:@"Include Logs", @"No Logs", nil]; else [self openFeedbackWithLogs:NO forVC:viewController]; } @@ -318,14 +318,14 @@ [[[PearlEMail alloc] initForEMailTo:@"Master Password Development " subject:strf( @"Feedback for Master Password [%@]", - [[PearlKeyChain deviceIdentifier] stringByDeletingMatchesOf:@"-.*"] ) + [[PearlKeyChain deviceIdentifier] stringByDeletingMatchesOf:@"-.*"] ) body:strf( @"\n\n\n" - @"--\n" - @"%@" - @"Master Password %@, build %@", - userName? ([userName stringByAppendingString:@"\n"]): @"", - [PearlInfoPlist get].CFBundleShortVersionString, - [PearlInfoPlist get].CFBundleVersion ) + @"--\n" + @"%@" + @"Master Password %@, build %@", + userName? ([userName stringByAppendingString:@"\n"]): @"", + [PearlInfoPlist get].CFBundleShortVersionString, + [PearlInfoPlist get].CFBundleVersion ) attachments:(logs ? [[PearlEMailAttachment alloc] @@ -351,24 +351,25 @@ @"restore your list of sites." viewStyle:UIAlertViewStyleDefault initAlert:nil tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) { - if (buttonIndex != [alert cancelButtonIndex]) - [PearlAlert showAlertWithTitle:@"Show Passwords?" - message:@"Would you like to make all your passwords " - @"visible in the export file?\n\n" - @"A safe export will include all sites " - @"but make their passwords invisible.\n" - @"It is great as a backup and remains " - @"safe when fallen in the wrong hands." - viewStyle:UIAlertViewStyleDefault initAlert:nil - tappedButtonBlock:^(UIAlertView *alert_, NSInteger buttonIndex_) { - if (buttonIndex_ == [alert_ firstOtherButtonIndex] + 0) - // Safe Export - [self showExportRevealPasswords:NO forVC:viewController]; - if (buttonIndex_ == [alert_ firstOtherButtonIndex] + 1) - // Show Passwords - [self showExportRevealPasswords:YES forVC:viewController]; - } cancelTitle:[PearlStrings get].commonButtonCancel otherTitles:@"Safe Export", @"Show Passwords", nil]; - } cancelTitle:@"Cancel" otherTitles:@"Export Sites", nil]; + if (buttonIndex != [alert cancelButtonIndex]) + [PearlAlert showAlertWithTitle:@"Show Passwords?" + message:@"Would you like to make all your passwords " + @"visible in the export file?\n\n" + @"A safe export will include all sites " + @"but make their passwords invisible.\n" + @"It is great as a backup and remains " + @"safe when fallen in the wrong hands." + viewStyle:UIAlertViewStyleDefault initAlert:nil + tappedButtonBlock:^(UIAlertView *alert_, NSInteger buttonIndex_) { + if (buttonIndex_ == [alert_ firstOtherButtonIndex] + 0) + // Safe Export + [self showExportRevealPasswords:NO forVC:viewController]; + if (buttonIndex_ == [alert_ firstOtherButtonIndex] + 1) + // Show Passwords + [self showExportRevealPasswords:YES forVC:viewController]; + } cancelTitle:[PearlStrings get].commonButtonCancel otherTitles:@"Safe Export", @"Show Passwords", + nil]; + } cancelTitle:@"Cancel" otherTitles:@"Export Sites", nil]; } - (void)showExportRevealPasswords:(BOOL)revealPasswords forVC:(UIViewController *)viewController { @@ -389,18 +390,18 @@ if (revealPasswords) message = strf( @"Export of Master Password sites with passwords included.\n\n" - @"REMINDER: Make sure nobody else sees this file! Passwords are visible!\n\n\n" - @"--\n" - @"%@\n" - @"Master Password %@, build %@", + @"REMINDER: Make sure nobody else sees this file! Passwords are visible!\n\n\n" + @"--\n" + @"%@\n" + @"Master Password %@, build %@", [self activeUserForMainThread].name, [PearlInfoPlist get].CFBundleShortVersionString, [PearlInfoPlist get].CFBundleVersion ); else message = strf( @"Backup of Master Password sites.\n\n\n" - @"--\n" - @"%@\n" - @"Master Password %@, build %@", + @"--\n" + @"%@\n" + @"Master Password %@, build %@", [self activeUserForMainThread].name, [PearlInfoPlist get].CFBundleShortVersionString, [PearlInfoPlist get].CFBundleVersion ); @@ -425,22 +426,22 @@ @"Changing the master password back to the old one will cause your passwords to revert as well." viewStyle:UIAlertViewStyleDefault initAlert:nil tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) { - if (buttonIndex == [alert cancelButtonIndex]) - return; + if (buttonIndex == [alert cancelButtonIndex]) + return; - [moc performBlockAndWait:^{ - inf( @"Unsetting master password for: %@.", user.userID ); - user.keyID = nil; - [self forgetSavedKeyFor:user]; - [moc saveToStore]; - }]; + [moc performBlockAndWait:^{ + inf( @"Unsetting master password for: %@.", user.userID ); + user.keyID = nil; + [self forgetSavedKeyFor:user]; + [moc saveToStore]; + }]; - [self signOutAnimated:YES]; - if (didReset) - didReset(); + [self signOutAnimated:YES]; + if (didReset) + didReset(); - MPCheckpoint( MPCheckpointChangeMP, nil ); - } + MPCheckpoint( MPCheckpointChangeMP, nil ); + } cancelTitle:[PearlStrings get].commonButtonAbort otherTitles:[PearlStrings get].commonButtonContinue, nil]; } @@ -482,11 +483,11 @@ @"or overwrite them with your current sites." viewStyle:UIAlertViewStyleDefault initAlert:nil tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) { - if (buttonIndex == [alert cancelButtonIndex]) - setConfirmationAnswer( NO ); - if (buttonIndex == [alert firstOtherButtonIndex]) - setConfirmationAnswer( YES ); - } + if (buttonIndex == [alert cancelButtonIndex]) + setConfirmationAnswer( NO ); + if (buttonIndex == [alert firstOtherButtonIndex]) + setConfirmationAnswer( YES ); + } cancelTitle:@"Use Old" otherTitles:@"Overwrite", nil]; }]; else @@ -512,11 +513,11 @@ @"or overwrite them with your current iCloud sites." viewStyle:UIAlertViewStyleDefault initAlert:nil tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) { - if (buttonIndex == [alert cancelButtonIndex]) - setConfirmationAnswer( NO ); - if (buttonIndex == [alert firstOtherButtonIndex]) - setConfirmationAnswer( YES ); - } + if (buttonIndex == [alert cancelButtonIndex]) + setConfirmationAnswer( NO ); + if (buttonIndex == [alert firstOtherButtonIndex]) + setConfirmationAnswer( YES ); + } cancelTitle:@"Use Old" otherTitles:@"Overwrite", nil]; }]; } @@ -547,7 +548,6 @@ MPCheckpoint( MPCheckpointConfig, @{ @"rememberLogin" : @([[MPConfig get].rememberLogin boolValue]), @"iCloudEnabled" : @([[MPiOSConfig get].iCloudEnabled boolValue]), - @"iCloudDecided" : @([[MPConfig get].iCloudDecided boolValue]), @"sendInfo" : @([[MPiOSConfig get].sendInfo boolValue]), @"helpHidden" : @([[MPiOSConfig get].helpHidden boolValue]), @"showQuickStart" : @([[MPiOSConfig get].showSetup boolValue]), @@ -583,6 +583,23 @@ [self.fixCloudContentAlert cancelAlertAnimated:YES]; [self.storeLoadingOverlay cancelOverlayAnimated:YES]; [self.handleCloudDisabledAlert cancelAlertAnimated:YES]; + + if (isCloudStore) + [PearlAlert showAlertWithTitle:@"iCloud Support Deprecated" message: + @"Master Password is moving away from iCloud due to limited platform support and reliability issues. " + @"\n\nMaster Password's generated passwords do not require syncing. " + @"Your sites will always have the same passwords on all your devices, even without iCloud. " + @"\n\niCloud continues to work for now but will be deactivated in a future update. " + @"Disable iCloud now to copy your iCloud sites to your device and avoid having to recreate them " + @"when iCloud becomes discontinued." + viewStyle:UIAlertViewStyleDefault initAlert:nil + tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) { + if (buttonIndex == [alert cancelButtonIndex]) + return; + + [[self storeManager] migrateCloudToLocal]; + } + cancelTitle:@"Ignore For Now" otherTitles:@"Disable iCloud", nil]; } - (void)ubiquityStoreManager:(UbiquityStoreManager *)manager failedLoadingStoreWithCause:(UbiquityStoreErrorCause)cause context:(id)context @@ -607,17 +624,17 @@ if (!self.handleCloudDisabledAlert) self.handleCloudDisabledAlert = [PearlAlert showAlertWithTitle:@"iCloud Login" message: - @"You haven't added an iCloud account to your device yet.\n" - @"To add one, go into Apple's Settings -> iCloud." + @"You haven't added an iCloud account to your device yet.\n" + @"To add one, go into Apple's Settings -> iCloud." viewStyle:UIAlertViewStyleDefault initAlert:nil tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) { - if (buttonIndex == alert.firstOtherButtonIndex) { - [MPiOSConfig get].iCloudEnabled = @NO; - return; - } + if (buttonIndex == alert.firstOtherButtonIndex) { + [MPiOSConfig get].iCloudEnabled = @NO; + return; + } - [self.storeManager reloadStore]; - } cancelTitle:@"Try Again" otherTitles:@"Disable iCloud", nil]; + [self.storeManager reloadStore]; + } cancelTitle:@"Try Again" otherTitles:@"Disable iCloud", nil]; return YES; } @@ -631,27 +648,27 @@ message:@"Waiting for your other device to auto‑correct the problem..." viewStyle:UIAlertViewStyleDefault initAlert:nil tappedButtonBlock: ^(UIAlertView *alert, NSInteger buttonIndex) { - if (buttonIndex == [alert firstOtherButtonIndex]) - wSelf.fixCloudContentAlert = [PearlAlert showAlertWithTitle:@"Fix iCloud Now" message: - @"This problem can be auto‑corrected by opening the app on another device where you recently made changes.\n" - @"You can fix the problem from this device anyway, but recent changes from another device might get lost.\n\n" - @"You can also turn iCloud off for now." - viewStyle:UIAlertViewStyleDefault - initAlert:nil tappedButtonBlock: - ^(UIAlertView *alert_, NSInteger buttonIndex_) { - if (buttonIndex_ == alert_.cancelButtonIndex) - [wSelf showCloudContentAlert]; - if (buttonIndex_ == [alert_ firstOtherButtonIndex]) - [wSelf.storeManager rebuildCloudContentFromCloudStoreOrLocalStore:YES]; - if (buttonIndex_ == [alert_ firstOtherButtonIndex] + 1) - [MPiOSConfig get].iCloudEnabled = @NO; - } - cancelTitle:[PearlStrings get].commonButtonBack - otherTitles:@"Fix Anyway", - @"Turn Off", nil]; - if (buttonIndex == [alert firstOtherButtonIndex] + 1) - [MPiOSConfig get].iCloudEnabled = @NO; - } cancelTitle:nil otherTitles:@"Fix Now", @"Turn Off", nil]; + if (buttonIndex == [alert firstOtherButtonIndex]) + wSelf.fixCloudContentAlert = [PearlAlert showAlertWithTitle:@"Fix iCloud Now" message: + @"This problem can be auto‑corrected by opening the app on another device where you recently made changes.\n" + @"You can fix the problem from this device anyway, but recent changes from another device might get lost.\n\n" + @"You can also turn iCloud off for now." + viewStyle:UIAlertViewStyleDefault + initAlert:nil tappedButtonBlock: + ^(UIAlertView *alert_, NSInteger buttonIndex_) { + if (buttonIndex_ == alert_.cancelButtonIndex) + [wSelf showCloudContentAlert]; + if (buttonIndex_ == [alert_ firstOtherButtonIndex]) + [wSelf.storeManager rebuildCloudContentFromCloudStoreOrLocalStore:YES]; + if (buttonIndex_ == [alert_ firstOtherButtonIndex] + 1) + [MPiOSConfig get].iCloudEnabled = @NO; + } + cancelTitle:[PearlStrings get].commonButtonBack + otherTitles:@"Fix Anyway", + @"Turn Off", nil]; + if (buttonIndex == [alert firstOtherButtonIndex] + 1) + [MPiOSConfig get].iCloudEnabled = @NO; + } cancelTitle:nil otherTitles:@"Fix Now", @"Turn Off", nil]; } #pragma mark - Crashlytics diff --git a/MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj b/MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj index ed89819e..996ccf7b 100644 --- a/MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj +++ b/MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj @@ -107,7 +107,6 @@ DA3509FE15F101A500C14A8E /* PearlQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = DA3509FC15F101A500C14A8E /* PearlQueue.h */; }; DA3509FF15F101A500C14A8E /* PearlQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = DA3509FD15F101A500C14A8E /* PearlQueue.m */; }; DA38D6A318CCB5BF009AEB3E /* Storyboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DA38D6A218CCB5BF009AEB3E /* Storyboard.storyboard */; }; - DA3B844E190FC5DF00246EEA /* Crashlytics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA3B844D190FC5DF00246EEA /* Crashlytics.framework */; }; DA4425CC1557BED40052177D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; }; DA44260A1557D9E40052177D /* libUbiquityStoreManager.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA4425CB1557BED40052177D /* libUbiquityStoreManager.a */; }; DA4522441902355C008F650A /* icon_book.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD370C1711E29500CF925C /* icon_book.png */; }; @@ -118,6 +117,8 @@ DA45224A190628A1008F650A /* icon_wrench@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD386B1711E29700CF925C /* icon_wrench@2x.png */; }; DA45224B190628B2008F650A /* icon_gear.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD37821711E29500CF925C /* icon_gear.png */; }; DA45224C190628B2008F650A /* icon_gear@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD37831711E29500CF925C /* icon_gear@2x.png */; }; + DA48856019A5A82E000C2D79 /* Crashlytics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAA141191922FED80032B392 /* Crashlytics.framework */; }; + DA48856119A5AC1E000C2D79 /* libopensslcrypto-ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAE8E65119867AB500416A0F /* libopensslcrypto-ios.a */; }; DA4DA1D91564471A00F6F596 /* libjrswizzle.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC6326C148680650075AEA5 /* libjrswizzle.a */; }; DA4DA1DA1564471F00F6F596 /* libuicolor-utilities.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC6325D1486805C0075AEA5 /* libuicolor-utilities.a */; }; DA5A09DF171A70E4005284AB /* play.png in Resources */ = {isa = PBXBuildFile; fileRef = DA5A09DD171A70E4005284AB /* play.png */; }; @@ -271,7 +272,6 @@ DACA29BF1705E2DE002C6C22 /* UIColor+HSV.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA29BB1705E2DE002C6C22 /* UIColor+HSV.m */; }; DAD312C21552A22700A3F9ED /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = DAD312C01552A20800A3F9ED /* libsqlite3.dylib */; }; DAE1EF2217E942DE00BC0086 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DAE1EF2417E942DE00BC0086 /* Localizable.strings */; }; - DAE8E65219867AB500416A0F /* libopensslcrypto-ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAE8E65119867AB500416A0F /* libopensslcrypto-ios.a */; }; DAEBC45314F6364500987BF6 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAEBC45214F6364500987BF6 /* QuartzCore.framework */; }; DAEC85B518E3DD9A007FC0DF /* UIView+Touches.m in Sources */ = {isa = PBXBuildFile; fileRef = DAEC85B118E3DD9A007FC0DF /* UIView+Touches.m */; }; DAEC85B618E3DD9A007FC0DF /* PearlUINavigationBar.m in Sources */ = {isa = PBXBuildFile; fileRef = DAEC85B218E3DD9A007FC0DF /* PearlUINavigationBar.m */; }; @@ -1349,6 +1349,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + DA48856119A5AC1E000C2D79 /* libopensslcrypto-ios.a in Frameworks */, DAFC5691172C582A00CB5CC5 /* libInAppSettingsKit.a in Frameworks */, DA6701E016406BB400B61001 /* AdSupport.framework in Frameworks */, DA6701DE16406B7300B61001 /* Social.framework in Frameworks */, @@ -1358,17 +1359,16 @@ DABB981615100B4000B05417 /* SystemConfiguration.framework in Frameworks */, DA672D3014F9413D004A189C /* libPearl.a in Frameworks */, DA672D2F14F92C6B004A189C /* libz.dylib in Frameworks */, - DAE8E65219867AB500416A0F /* libopensslcrypto-ios.a in Frameworks */, DAEBC45314F6364500987BF6 /* QuartzCore.framework in Frameworks */, DA95D5F214DF0B2C008D1B94 /* MessageUI.framework in Frameworks */, DA04E33E14B1E70400ECA4F3 /* MobileCoreServices.framework in Frameworks */, + DA48856019A5A82E000C2D79 /* Crashlytics.framework in Frameworks */, DAC632891486D9690075AEA5 /* Security.framework in Frameworks */, DA5BFA49147E415C00F98B1E /* UIKit.framework in Frameworks */, DA5BFA4B147E415C00F98B1E /* Foundation.framework in Frameworks */, DA5BFA4D147E415C00F98B1E /* CoreGraphics.framework in Frameworks */, DA5BFA4F147E415C00F98B1E /* CoreData.framework in Frameworks */, 93D399433EA75E50656040CB /* Twitter.framework in Frameworks */, - DA3B844E190FC5DF00246EEA /* Crashlytics.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3449,10 +3449,6 @@ GCC_WARN_UNUSED_VALUE = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 6.0; - LIBRARY_SEARCH_PATHS = ( - "$(inherit)", - "\"$(SRCROOT)/../../../External\"/**", - ); ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "${TARGET_NAME}"; @@ -3532,10 +3528,6 @@ GCC_WARN_UNUSED_VALUE = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 6.0; - LIBRARY_SEARCH_PATHS = ( - "$(inherit)", - "\"$(SRCROOT)/../../../External\"/**", - ); OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "${TARGET_NAME}"; RUN_CLANG_STATIC_ANALYZER = YES; @@ -3556,12 +3548,13 @@ CODE_SIGN_ENTITLEMENTS = MasterPassword.entitlements; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", - /Users/lhunath/Documents/workspace/lyndir/MasterPassword/External/iOS, + "\"$(SRCROOT)/../../../External/iOS\"", ); GCC_PREFIX_HEADER = "MasterPassword-Prefix.pch"; INFOPLIST_FILE = "MasterPassword-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; LIBRARY_SEARCH_PATHS = ( + "\"$(SRCROOT)/../../../External/Pearl/Pearl-Crypto/lib\"", "$(inherited)", "/Users/lhunath/Documents/workspace/lyndir/MasterPassword/External/Pearl/Pearl-Crypto/lib", ); @@ -3588,12 +3581,13 @@ EXCLUDED_SOURCE_FILE_NAMES = libDCIntrospect.a; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", - /Users/lhunath/Documents/workspace/lyndir/MasterPassword/External/iOS, + "\"$(SRCROOT)/../../../External/iOS\"", ); GCC_PREFIX_HEADER = "MasterPassword-Prefix.pch"; INFOPLIST_FILE = "MasterPassword-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; LIBRARY_SEARCH_PATHS = ( + "\"$(SRCROOT)/../../../External/Pearl/Pearl-Crypto/lib\"", "$(inherited)", "/Users/lhunath/Documents/workspace/lyndir/MasterPassword/External/Pearl/Pearl-Crypto/lib", ); @@ -3674,10 +3668,6 @@ GCC_WARN_UNUSED_VALUE = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 6.0; - LIBRARY_SEARCH_PATHS = ( - "$(inherit)", - "\"$(SRCROOT)/../../../External\"/**", - ); OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "${TARGET_NAME}"; RUN_CLANG_STATIC_ANALYZER = YES; @@ -3700,12 +3690,13 @@ EXCLUDED_SOURCE_FILE_NAMES = libDCIntrospect.a; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", - /Users/lhunath/Documents/workspace/lyndir/MasterPassword/External/iOS, + "\"$(SRCROOT)/../../../External/iOS\"", ); GCC_PREFIX_HEADER = "MasterPassword-Prefix.pch"; INFOPLIST_FILE = "MasterPassword-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; LIBRARY_SEARCH_PATHS = ( + "\"$(SRCROOT)/../../../External/Pearl/Pearl-Crypto/lib\"", "$(inherited)", "/Users/lhunath/Documents/workspace/lyndir/MasterPassword/External/Pearl/Pearl-Crypto/lib", ); @@ -3723,7 +3714,10 @@ CLANG_ENABLE_OBJC_ARC = YES; DSTROOT = /tmp/Pearl.dst; GCC_PREFIX_HEADER = "../Pearl/Pearl-Prefix.pch"; - OTHER_LDFLAGS = "-ObjC"; + LIBRARY_SEARCH_PATHS = ( + "\"$(SRCROOT)/../../../External/Pearl/Pearl-Crypto/lib\"", + "$(inherited)", + ); PRODUCT_NAME = "$(TARGET_NAME)"; PUBLIC_HEADERS_FOLDER_PATH = "../../BuildProductsPath/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/include"; SKIP_INSTALL = YES; @@ -3808,7 +3802,10 @@ CLANG_ENABLE_OBJC_ARC = YES; DSTROOT = /tmp/Pearl.dst; GCC_PREFIX_HEADER = "../Pearl/Pearl-Prefix.pch"; - OTHER_LDFLAGS = "-ObjC"; + LIBRARY_SEARCH_PATHS = ( + "\"$(SRCROOT)/../../../External/Pearl/Pearl-Crypto/lib\"", + "$(inherited)", + ); PRODUCT_NAME = "$(TARGET_NAME)"; PUBLIC_HEADERS_FOLDER_PATH = include; SKIP_INSTALL = YES; @@ -3821,7 +3818,10 @@ CLANG_ENABLE_OBJC_ARC = YES; DSTROOT = /tmp/Pearl.dst; GCC_PREFIX_HEADER = "../Pearl/Pearl-Prefix.pch"; - OTHER_LDFLAGS = "-ObjC"; + LIBRARY_SEARCH_PATHS = ( + "\"$(SRCROOT)/../../../External/Pearl/Pearl-Crypto/lib\"", + "$(inherited)", + ); PRODUCT_NAME = "$(TARGET_NAME)"; PUBLIC_HEADERS_FOLDER_PATH = "../../BuildProductsPath/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/include"; SKIP_INSTALL = YES; diff --git a/MasterPassword/ObjC/iOS/Storyboard.storyboard b/MasterPassword/ObjC/iOS/Storyboard.storyboard index 49a9efe0..2007bfe4 100644 --- a/MasterPassword/ObjC/iOS/Storyboard.storyboard +++ b/MasterPassword/ObjC/iOS/Storyboard.storyboard @@ -2108,130 +2108,13 @@ CgoKCgoKCgoKCgoKCg - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2324,7 +2207,7 @@ However, it means that anyone who finds your device unlocked can do the same. - + @@ -2505,7 +2388,7 @@ See - + @@ -2529,7 +2412,6 @@ See - @@ -2557,6 +2439,6 @@ See - +