session-ios/SignalServiceKit/src/Util/AppContext.h

83 lines
2.8 KiB
C
Raw Normal View History

2017-11-29 17:01:30 +01:00
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
2017-11-29 17:01:30 +01:00
//
2017-11-30 16:10:30 +01:00
NS_ASSUME_NONNULL_BEGIN
// These are fired whenever the corresponding "main app" or "app extension"
// notification is fired.
//
// 1. This saves you the work of observing both.
// 2. This allows us to ensure that any critical work (e.g. re-opening
// databases) has been done before app re-enters foreground, etc.
extern NSString *const OWSApplicationDidEnterBackgroundNotification;
extern NSString *const OWSApplicationWillEnterForegroundNotification;
extern NSString *const OWSApplicationWillResignActiveNotification;
extern NSString *const OWSApplicationDidBecomeActiveNotification;
2017-11-29 17:01:30 +01:00
typedef void (^BackgroundTaskExpirationHandler)(void);
2018-04-19 17:45:13 +02:00
NSString *NSStringForUIApplicationState(UIApplicationState value);
@class OWSAES256Key;
2017-11-29 17:01:30 +01:00
@protocol AppContext <NSObject>
@property (nonatomic, readonly) BOOL isMainApp;
@property (nonatomic, readonly) BOOL isMainAppAndActive;
// Whether the user is using a right-to-left language like Arabic
@property (nonatomic, readonly) BOOL isRTL;
@property (nonatomic, readonly) BOOL isRunningTests;
@property (atomic, nullable) UIWindow *mainWindow;
2017-11-29 17:01:30 +01:00
// Should only be called if isMainApp is YES.
//
// Wherever possible, use isMainAppAndActive or isInBackground instead.
// This should only be used by debugging/logging code.
- (UIApplicationState)mainApplicationState;
// Similar to UIApplicationStateBackground, but works in SAE.
- (BOOL)isInBackground;
// Should start a background task if isMainApp is YES.
// Should just return UIBackgroundTaskInvalid if isMainApp is NO.
2017-11-29 17:01:30 +01:00
- (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:
(BackgroundTaskExpirationHandler)expirationHandler;
2017-12-04 22:09:26 +01:00
// Should be a NOOP if isMainApp is NO.
- (void)endBackgroundTask:(UIBackgroundTaskIdentifier)backgroundTaskIdentifier;
// Should be a NOOP if isMainApp is NO.
- (void)ensureSleepBlocking:(BOOL)shouldBeBlocking blockingObjects:(NSArray<id> *)blockingObjects;
// Should only be called if isMainApp is YES.
- (void)setMainAppBadgeNumber:(NSInteger)value;
2017-11-29 17:01:30 +01:00
- (void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle;
- (void)setStatusBarHidden:(BOOL)isHidden animated:(BOOL)isAnimated;
// Returns the VC that should be used to present alerts, modals, etc.
- (nullable UIViewController *)frontmostViewController;
// Returns nil if isMainApp is NO
@property (nullable, nonatomic, readonly) UIAlertAction *openSystemSettingsAction;
// Should only be called if isMainApp is YES,
// but should only be necessary to call if isMainApp is YES.
- (void)doMultiDeviceUpdateWithProfileKey:(OWSAES256Key *)profileKey;
2017-12-04 22:09:26 +01:00
// Should be a NOOP if isMainApp is NO.
- (void)setNetworkActivityIndicatorVisible:(BOOL)value;
2017-11-29 17:01:30 +01:00
@end
id<AppContext> CurrentAppContext(void);
2017-11-29 17:01:30 +01:00
void SetCurrentAppContext(id<AppContext> appContext);
2017-11-30 16:10:30 +01:00
2018-02-15 00:06:20 +01:00
void ExitShareExtension(void);
2017-11-30 16:10:30 +01:00
NS_ASSUME_NONNULL_END