Migrate environment to SignalMessaging.

This commit is contained in:
Matthew Chen 2017-12-01 17:22:40 -05:00
parent 6d87df88aa
commit a16058e477
8 changed files with 62 additions and 43 deletions

View File

@ -38,7 +38,6 @@
34480B641FD0A98800BC14EF /* UIView+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = 34480B601FD0A98800BC14EF /* UIView+OWS.m */; };
34480B671FD0AA9400BC14EF /* UIFont+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = 34480B651FD0AA9400BC14EF /* UIFont+OWS.m */; };
34480B681FD0AA9400BC14EF /* UIFont+OWS.h in Headers */ = {isa = PBXBuildFile; fileRef = 34480B661FD0AA9400BC14EF /* UIFont+OWS.h */; };
344F2F671E57A932000D9322 /* UIViewController+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = 344F2F661E57A932000D9322 /* UIViewController+OWS.m */; };
34533F181EA8D2070006114F /* OWSAudioAttachmentPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 34533F171EA8D2070006114F /* OWSAudioAttachmentPlayer.m */; };
3461284B1FD0B94000532771 /* SAELoadViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3461284A1FD0B93F00532771 /* SAELoadViewController.swift */; };
346129321FD1A26100532771 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 346129051FD1A25B00532771 /* Localizable.strings */; };
@ -89,6 +88,8 @@
346129CD1FD2072E00532771 /* UIImage+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = 346129C61FD2072D00532771 /* UIImage+OWS.m */; };
346129D01FD207F300532771 /* OWSAlerts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 346129CF1FD207F200532771 /* OWSAlerts.swift */; };
346129D21FD2085A00532771 /* CommonStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 346129D11FD2085A00532771 /* CommonStrings.swift */; };
346129D51FD20ADC00532771 /* UIViewController+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = 346129D31FD20ADB00532771 /* UIViewController+OWS.m */; };
346129D61FD20ADC00532771 /* UIViewController+OWS.h in Headers */ = {isa = PBXBuildFile; fileRef = 346129D41FD20ADC00532771 /* UIViewController+OWS.h */; settings = {ATTRIBUTES = (Public, ); }; };
346B66311F4E29B200E5122F /* CropScaleImageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 346B66301F4E29B200E5122F /* CropScaleImageViewController.swift */; };
3471B1DA1EB7C63600F6AEC8 /* NewNonContactConversationViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3471B1D91EB7C63600F6AEC8 /* NewNonContactConversationViewController.m */; };
3472229F1EB22FFE00E53955 /* AddToGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3472229E1EB22FFE00E53955 /* AddToGroupViewController.m */; };
@ -522,8 +523,6 @@
34480B651FD0AA9400BC14EF /* UIFont+OWS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIFont+OWS.m"; sourceTree = "<group>"; };
34480B661FD0AA9400BC14EF /* UIFont+OWS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIFont+OWS.h"; sourceTree = "<group>"; };
34491FC11FB0F78500B3E5A3 /* my */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = my; path = translations/my.lproj/Localizable.strings; sourceTree = "<group>"; };
344F2F651E57A932000D9322 /* UIViewController+OWS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIViewController+OWS.h"; path = "util/UIViewController+OWS.h"; sourceTree = "<group>"; };
344F2F661E57A932000D9322 /* UIViewController+OWS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+OWS.m"; path = "util/UIViewController+OWS.m"; sourceTree = "<group>"; };
34533F161EA8D2070006114F /* OWSAudioAttachmentPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSAudioAttachmentPlayer.h; sourceTree = "<group>"; };
34533F171EA8D2070006114F /* OWSAudioAttachmentPlayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSAudioAttachmentPlayer.m; sourceTree = "<group>"; };
3461284A1FD0B93F00532771 /* SAELoadViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SAELoadViewController.swift; sourceTree = "<group>"; };
@ -626,6 +625,8 @@
346129C61FD2072D00532771 /* UIImage+OWS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+OWS.m"; sourceTree = "<group>"; };
346129CF1FD207F200532771 /* OWSAlerts.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OWSAlerts.swift; sourceTree = "<group>"; };
346129D11FD2085A00532771 /* CommonStrings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommonStrings.swift; sourceTree = "<group>"; };
346129D31FD20ADB00532771 /* UIViewController+OWS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIViewController+OWS.m"; sourceTree = "<group>"; };
346129D41FD20ADC00532771 /* UIViewController+OWS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIViewController+OWS.h"; sourceTree = "<group>"; };
346B66301F4E29B200E5122F /* CropScaleImageViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CropScaleImageViewController.swift; sourceTree = "<group>"; };
3471B1D81EB7C63600F6AEC8 /* NewNonContactConversationViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NewNonContactConversationViewController.h; sourceTree = "<group>"; };
3471B1D91EB7C63600F6AEC8 /* NewNonContactConversationViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NewNonContactConversationViewController.m; sourceTree = "<group>"; };
@ -1189,6 +1190,8 @@
346129C61FD2072D00532771 /* UIImage+OWS.m */,
34480B5F1FD0A98800BC14EF /* UIView+OWS.h */,
34480B601FD0A98800BC14EF /* UIView+OWS.m */,
346129D41FD20ADC00532771 /* UIViewController+OWS.h */,
346129D31FD20ADB00532771 /* UIViewController+OWS.m */,
);
path = categories;
sourceTree = "<group>";
@ -2071,8 +2074,6 @@
45C0DC1A1E68FE9000E04C47 /* UIApplication+OWS.swift */,
45BB93371E688E14001E3939 /* UIDevice+featureSupport.swift */,
45C0DC1D1E69011F00E04C47 /* UIStoryboard+OWS.swift */,
344F2F651E57A932000D9322 /* UIViewController+OWS.h */,
344F2F661E57A932000D9322 /* UIViewController+OWS.m */,
EF764C331DB67CC5000D9A87 /* UIViewController+Permissions.h */,
EF764C341DB67CC5000D9A87 /* UIViewController+Permissions.m */,
);
@ -2094,6 +2095,7 @@
346129CA1FD2072E00532771 /* UIImage+OWS.h in Headers */,
346129711FD1D74C00532771 /* SignalKeyingStorage.h in Headers */,
346129C71FD2072E00532771 /* NSString+OWS.h in Headers */,
346129D61FD20ADC00532771 /* UIViewController+OWS.h in Headers */,
3461296F1FD1D74C00532771 /* Release.h in Headers */,
34480B571FD0A7A400BC14EF /* OWSScrubbingLogFormatter.h in Headers */,
346129951FD1E30000532771 /* OWSDatabaseMigration.h in Headers */,
@ -2752,6 +2754,7 @@
346129B61FD1F7E800532771 /* ProfileFetcherJob.swift in Sources */,
346129A01FD1EFE200532771 /* CryptoTools.m in Sources */,
3461295B1FD1D74C00532771 /* Environment.m in Sources */,
346129D51FD20ADC00532771 /* UIViewController+OWS.m in Sources */,
346129C91FD2072E00532771 /* NSString+OWS.m in Sources */,
346129CB1FD2072E00532771 /* Promise+retainUntilComplete.swift in Sources */,
346129A61FD1F09100532771 /* OWSContactsManager.m in Sources */,
@ -2784,7 +2787,6 @@
341F2C0F1F2B8AE700D07D6B /* DebugUIMisc.m in Sources */,
34E3EF0D1EFC235B007F6822 /* DebugUIDiskUsage.m in Sources */,
34D1F0871F8678AA0066283D /* ConversationViewItem.m in Sources */,
344F2F671E57A932000D9322 /* UIViewController+OWS.m in Sources */,
B6DA6B071B8A2F9A00CA6F98 /* AppStoreRating.m in Sources */,
451A13B11E13DED2000A50FD /* CallNotificationsAdapter.swift in Sources */,
450DF2091E0DD2C6003D14BE /* UserNotificationsAdaptee.swift in Sources */,

View File

@ -17,27 +17,7 @@ extension UIApplication {
internal func findFrontmostViewController(ignoringAlerts: Bool) -> UIViewController? {
let window = UIApplication.shared.keyWindow
var viewController = window!.rootViewController
while true {
if let nextViewController = viewController?.presentedViewController {
if ignoringAlerts {
if nextViewController as? UIAlertController != nil {
break
}
}
viewController = nextViewController
} else if let navigationController = viewController as? UINavigationController {
if let nextViewController = navigationController.topViewController {
viewController = nextViewController
} else {
break
}
} else {
break
}
}
return viewController
return viewController.findFrontmostViewController(ignoringAlerts:ignoringAlerts)
}
func openSystemSettings() {

View File

@ -8,6 +8,7 @@
#import "OWS103EnableVideoCalling.h"
#import "OWS104CreateRecipientIdentities.h"
#import "OWS105AttachmentFilePaths.h"
#import "Signal-Swift.h"
NS_ASSUME_NONNULL_BEGIN
@ -62,9 +63,14 @@ NS_ASSUME_NONNULL_BEGIN
];
}
- (UIViewController *)frontmostViewController
- (nullable UIViewController *)frontmostViewController
{
return UIApplication.sharedApplication.frontmostViewController;
return UIApplication.sharedApplication.frontmostViewControllerIgnoringAlerts;
}
- (void)openSystemSettings
{
[UIApplication.sharedApplication openSystemSettings];
}
@end

View File

@ -8,11 +8,13 @@ NS_ASSUME_NONNULL_BEGIN
@interface UIViewController (OWS)
- (UIViewController *)findFrontmostViewController:(BOOL)ignoringAlerts;
/**
* Takes up a bit less space than the default system back button
* used in the MessagesViewController to help left-align the title view.
*
* **note** Using this breaks the interactive pop gesture (swipe back) unless you set/unset the
* **note** Using this breaks the interactive pop gesture (swipe back) unless you set/unset the
* interactivePopGesture.delegate to self/nil on viewWillAppear/Disappear
*/
- (UIBarButtonItem *)createOWSBackButton;

View File

@ -9,6 +9,33 @@ NS_ASSUME_NONNULL_BEGIN
@implementation UIViewController (OWS)
- (UIViewController *)findFrontmostViewController:(BOOL)ignoringAlerts
{
UIViewController *viewController = self;
while (YES) {
UIViewController *_Nullable nextViewController = viewController.presentedViewController;
if (nextViewController) {
if (ignoringAlerts) {
if ([nextViewController isKindOfClass:[UIAlertController class]]) {
break;
}
}
viewController = nextViewController;
} else if ([viewController isKindOfClass:[UINavigationController class]]) {
UINavigationController *navigationController = (UINavigationController *)viewController;
if (navigationController.topViewController) {
viewController = navigationController.topViewController;
} else {
break;
}
} else {
break;
}
}
return viewController;
}
- (UIBarButtonItem *)createOWSBackButton
{
return [self createOWSBackButtonWithTarget:self selector:@selector(backButtonPressed:)];
@ -77,7 +104,8 @@ NS_ASSUME_NONNULL_BEGIN
#pragma mark - Event Handling
- (void)backButtonPressed:(id)sender {
- (void)backButtonPressed:(id)sender
{
[self.navigationController popViewControllerAnimated:YES];
}

View File

@ -15,11 +15,11 @@ import Foundation
let dismissAction = UIAlertAction(title: CommonStrings.dismissButton, style: .cancel)
let settingsString = NSLocalizedString("OPEN_SETTINGS_BUTTON", comment: "Button text which opens the settings app")
let settingsAction = UIAlertAction(title: settingsString, style: .default) { _ in
UIApplication.shared.openSystemSettings()
CurrentAppContext().openSystemSettings()
}
alertController.addAction(dismissAction)
alertController.addAction(settingsAction)
UIApplication.shared.frontmostViewController?.present(alertController, animated: true, completion: nil)
CurrentAppContext().frontmostViewController()?.present(alertController, animated: true, completion: nil)
}
public class func showAlert(withTitle title: String) {
@ -37,7 +37,7 @@ import Foundation
let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: actionTitle, style: .default, handler: nil))
UIApplication.shared.frontmostViewController?.present(alert, animated: true, completion: nil)
CurrentAppContext().frontmostViewController()?.present(alert, animated: true, completion: nil)
}
public class func showConfirmationAlert(withTitle title: String, message: String? = nil, proceedTitle: String? = nil, proceedAction: @escaping (UIAlertAction) -> Void) {
@ -49,7 +49,7 @@ import Foundation
let actionTitle = proceedTitle ?? NSLocalizedString("OK", comment: "")
alert.addAction(UIAlertAction(title: actionTitle, style: .default, handler: proceedAction))
UIApplication.shared.frontmostViewController?.present(alert, animated: true, completion: nil)
CurrentAppContext().frontmostViewController()?.present(alert, animated: true, completion: nil)
}
public class var cancelAction: UIAlertAction {

View File

@ -33,7 +33,10 @@ typedef void (^BackgroundTaskExpirationHandler)(void);
- (NSArray<OWSDatabaseMigration *> *)allMigrations;
// Returns the VC that should be used to present alerts, modals, etc.
- (UIViewController *)frontmostViewController;
- (nullable UIViewController *)frontmostViewController;
// Should only be called if isMainApp is YES.
- (void)openSystemSettings;
@end

View File

@ -3,6 +3,7 @@
//
#import "ShareAppExtensionContext.h"
#import <SignalMessaging/UIViewController+OWS.h>
NS_ASSUME_NONNULL_BEGIN
@ -79,19 +80,16 @@ NS_ASSUME_NONNULL_BEGIN
return @[];
}
- (UIViewController *)frontmostViewController
- (nullable UIViewController *)frontmostViewController
{
OWSAssert(self.rootViewController);
return self.rootViewController;
return [self.rootViewController findFrontmostViewController:YES];
}
- (void)setRootViewController:(UIViewController *)viewController
- (void)openSystemSettings
{
OWSAssert(!self.rootViewController);
OWSAssert(viewController);
self.rootViewController = viewController;
OWSFail(@"%@ called %s.", self.logTag, __PRETTY_FUNCTION__);
}
@end