From 5ddb85b6ccac09603b379bb31a58b7a7a5447afc Mon Sep 17 00:00:00 2001 From: dtsbourg Date: Fri, 5 Dec 2014 11:34:45 +0100 Subject: [PATCH] Modal presentation of the setup view. - Memory efficiency. - Fixes issue where segues were never unwinded. - Fixes issues on first launch where initiating a call would show the login screen again. - Addresses issue where the signup code would not have been added properly after clicking link in SMS. Reviewed by: @FredericJacobs --- Signal.xcodeproj/project.pbxproj | 7 +- Signal/src/AppDelegate.m | 11 +-- Signal/src/Storyboard/Storyboard.storyboard | 82 +++++++++++-------- Signal/src/environment/Environment.h | 2 + Signal/src/environment/Environment.m | 4 + .../CodeVerificationViewController.m | 4 +- .../view controllers/InitialViewController.m | 14 +++- .../RegistrationViewController.m | 6 ++ .../view controllers/SignalTabBarController.h | 13 +++ .../view controllers/SignalTabBarController.m | 34 ++++++++ 10 files changed, 130 insertions(+), 47 deletions(-) create mode 100644 Signal/src/view controllers/SignalTabBarController.h create mode 100644 Signal/src/view controllers/SignalTabBarController.m diff --git a/Signal.xcodeproj/project.pbxproj b/Signal.xcodeproj/project.pbxproj index 20335af09..51001f545 100644 --- a/Signal.xcodeproj/project.pbxproj +++ b/Signal.xcodeproj/project.pbxproj @@ -474,6 +474,7 @@ E1CD329618BCFF9900B1A496 /* SoundInstance.m in Sources */ = {isa = PBXBuildFile; fileRef = E1CD329518BCFF9900B1A496 /* SoundInstance.m */; }; F995AC2FFD6D4442B012604A /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8313AE91B4954215858A5662 /* libPods.a */; }; FC15B7BF1A1F80F200F59801 /* defaultConctact_light@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FC15B7BE1A1F80F200F59801 /* defaultConctact_light@2x.png */; }; + FC18803C1A31D94D0044CE86 /* SignalTabBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = FC18803B1A31D94D0044CE86 /* SignalTabBarController.m */; }; FC1F90C01A22342B004F8253 /* group_photo@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FC1F90BF1A22342B004F8253 /* group_photo@2x.png */; }; FC1F90C61A223991004F8253 /* settings_tab@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FC1F90C41A223991004F8253 /* settings_tab@2x.png */; }; FC1F90C71A223991004F8253 /* signals_tab@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FC1F90C51A223991004F8253 /* signals_tab@2x.png */; }; @@ -1133,6 +1134,8 @@ E1CD329418BCFF9900B1A496 /* SoundInstance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SoundInstance.h; sourceTree = ""; }; E1CD329518BCFF9900B1A496 /* SoundInstance.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SoundInstance.m; sourceTree = ""; }; FC15B7BE1A1F80F200F59801 /* defaultConctact_light@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "defaultConctact_light@2x.png"; sourceTree = ""; }; + FC18803A1A31D94D0044CE86 /* SignalTabBarController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SignalTabBarController.h; path = "view controllers/SignalTabBarController.h"; sourceTree = ""; }; + FC18803B1A31D94D0044CE86 /* SignalTabBarController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SignalTabBarController.m; path = "view controllers/SignalTabBarController.m"; sourceTree = ""; }; FC1F90BF1A22342B004F8253 /* group_photo@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "group_photo@2x.png"; sourceTree = ""; }; FC1F90C41A223991004F8253 /* settings_tab@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "settings_tab@2x.png"; sourceTree = ""; }; FC1F90C51A223991004F8253 /* signals_tab@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "signals_tab@2x.png"; sourceTree = ""; }; @@ -1303,6 +1306,8 @@ 76EB03C118170B33006006FC /* src */ = { isa = PBXGroup; children = ( + FC18803A1A31D94D0044CE86 /* SignalTabBarController.h */, + FC18803B1A31D94D0044CE86 /* SignalTabBarController.m */, FCAC963419FEF4E20046DFC5 /* Storyboard.storyboard */, 76EB03C218170B33006006FC /* AppDelegate.h */, 76EB03C318170B33006006FC /* AppDelegate.m */, @@ -2693,7 +2698,6 @@ ORGANIZATIONNAME = "Open Whisper Systems"; TargetAttributes = { D221A088169C9E5E00537ABF = { - DevelopmentTeam = U68MSDN6DR; SystemCapabilities = { com.apple.DataProtection = { enabled = 1; @@ -3098,6 +3102,7 @@ B6B0968F1A1D25ED008BFAA6 /* TSYapDatabaseObject.m in Sources */, E197B61118BBEC1A00F073E5 /* AudioProcessor.m in Sources */, FCAC964019FEF99A0046DFC5 /* InboxTableViewCell.m in Sources */, + FC18803C1A31D94D0044CE86 /* SignalTabBarController.m in Sources */, 76EB05EA18170B33006006FC /* CallProgress.m in Sources */, FCFA64B41A24F3880007FB87 /* UIColor+OWS.m in Sources */, 76EB05C218170B33006006FC /* DhPacketSharedSecretHashes.m in Sources */, diff --git a/Signal/src/AppDelegate.m b/Signal/src/AppDelegate.m index 70a92420d..00e4e5d41 100644 --- a/Signal/src/AppDelegate.m +++ b/Signal/src/AppDelegate.m @@ -104,14 +104,7 @@ } UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:[NSBundle mainBundle]]; - - UIViewController *viewController; - - if (![TSAccountManager isRegistered]) { - viewController = [storyboard instantiateViewControllerWithIdentifier:@"RegisterInitialViewController"]; - } else{ - viewController = [storyboard instantiateViewControllerWithIdentifier:@"UserInitialViewController"]; - } + UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"UserInitialViewController"]; self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.rootViewController = viewController; @@ -163,7 +156,7 @@ -(BOOL) application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation { if ([url.scheme isEqualToString:@"sgnl"]) { if ([url.host hasPrefix:@"verify"] && ![TSAccountManager isRegistered]) { - UIViewController *controller = self.window.rootViewController.presentedViewController.presentedViewController; + UIViewController *controller = [[Environment getCurrent].signUpFlowNavigationController.childViewControllers lastObject]; if ([controller isKindOfClass:[CodeVerificationViewController class]]) { CodeVerificationViewController *cvvc = (CodeVerificationViewController*)controller; NSString *verificationCode = [url.path substringFromIndex:1]; diff --git a/Signal/src/Storyboard/Storyboard.storyboard b/Signal/src/Storyboard/Storyboard.storyboard index bb96f864f..83a7c8e1b 100755 --- a/Signal/src/Storyboard/Storyboard.storyboard +++ b/Signal/src/Storyboard/Storyboard.storyboard @@ -1,7 +1,7 @@ - + - + @@ -15,7 +15,7 @@ - + @@ -103,7 +103,7 @@ - + @@ -114,7 +114,7 @@ - + @@ -125,7 +125,7 @@ - + @@ -535,7 +535,7 @@ Lorem ipsum : Quick explanation of Fingerprints - + @@ -819,10 +819,12 @@ Lorem ipsum : Quick explanation of Fingerprints + + - + @@ -1024,7 +1026,7 @@ Lorem ipsum : Quick explanation of Fingerprints - + @@ -1156,6 +1158,7 @@ Lorem ipsum : Quick explanation of Fingerprints + @@ -1166,8 +1169,9 @@ Lorem ipsum : Quick explanation of Fingerprints + - + @@ -1287,7 +1291,7 @@ Lorem ipsum : Quick explanation of Fingerprints - +