Don’t show app upgrade nag unless we are at rest in home view or registration view.

// FREEBIE
pull/1/head
Matthew Chen 7 years ago
parent 944cd7beef
commit b400c0a327

@ -9,8 +9,20 @@ extension UIApplication {
var frontmostViewController: UIViewController? {
let window = UIApplication.shared.keyWindow
var viewController = window!.rootViewController
while viewController?.presentedViewController != nil {
viewController = viewController?.presentedViewController
while true {
if let nextViewController = viewController?.presentedViewController {
viewController = nextViewController
} else if viewController is UINavigationController {
let navigationController = viewController as? UINavigationController
if let nextViewController = navigationController?.topViewController {
viewController = nextViewController
} else {
break
}
} else {
break
}
}
return viewController

@ -3,6 +3,8 @@
//
#import "AppUpdateNag.h"
#import "RegistrationViewController.h"
#import "Signal-Swift.h"
#import <ATAppUpdater/ATAppUpdater.h>
#import <SignalServiceKit/TSStorageManager.h>
@ -55,6 +57,17 @@ NSString *const TSStorageManagerAppUpgradeNagDate = @"TSStorageManagerAppUpgrade
- (void)showAppUpgradeNagIfNecessary
{
// Only show nag if we are "at rest" in the home view or registration view without any
// alerts or dialogs showing.
UIViewController *frontmostViewController =
[UIApplication sharedApplication].frontmostViewController;
OWSAssert(frontmostViewController);
BOOL canPresent = ([frontmostViewController isKindOfClass:[SignalsViewController class]] ||
[frontmostViewController isKindOfClass:[RegistrationViewController class]]);
if (!canPresent) {
return;
}
NSDate *lastNagDate = [[TSStorageManager sharedManager] dateForKey:TSStorageManagerAppUpgradeNagDate
inCollection:TSStorageManagerAppUpgradeNagCollection];
const NSTimeInterval kMinute = 60.f;

Loading…
Cancel
Save