mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			126 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C
		
	
		
		
			
		
	
	
			126 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C
		
	
| 
								 
											5 years ago
										 
									 | 
							
								#import <UIKit/UIKit.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NS_ASSUME_NONNULL_BEGIN
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								static inline BOOL OWSIsDebugBuild()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								#ifdef DEBUG
							 | 
						||
| 
								 | 
							
								    return YES;
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								    return NO;
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 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;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef void (^BackgroundTaskExpirationHandler)(void);
							 | 
						||
| 
								 | 
							
								typedef void (^AppActiveBlock)(void);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NSString *NSStringForUIApplicationState(UIApplicationState value);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@class OWSAES256Key;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@protocol SSKKeychainStorage;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@protocol AppContext <NSObject>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@property (nonatomic, readonly) BOOL isMainApp;
							 | 
						||
| 
								 | 
							
								@property (nonatomic, readonly) BOOL isMainAppAndActive;
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								/// Whether the app was woken up by a silent push notification. This is important for determining whether attachments should be downloaded or not.
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								@property (nonatomic) BOOL wasWokenUpByPushNotification;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 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;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Unlike UIApplication.applicationState, this is thread-safe.
							 | 
						||
| 
								 | 
							
								// It contains the "last known" application state.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// Because it is updated in response to "will/did-style" events, it is
							 | 
						||
| 
								 | 
							
								// conservative and skews toward less-active and not-foreground:
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// * It doesn't report "is active" until the app is active
							 | 
						||
| 
								 | 
							
								//   and reports "inactive" as soon as it _will become_ inactive.
							 | 
						||
| 
								 | 
							
								// * It doesn't report "is foreground (but inactive)" until the app is
							 | 
						||
| 
								 | 
							
								//   foreground & inactive and reports "background" as soon as it _will
							 | 
						||
| 
								 | 
							
								//   enter_ background.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// This conservatism is useful, since we want to err on the side of
							 | 
						||
| 
								 | 
							
								// caution when, for example, we do work that should only be done
							 | 
						||
| 
								 | 
							
								// when the app is foreground and active.
							 | 
						||
| 
								 | 
							
								@property (atomic, readonly) UIApplicationState reportedApplicationState;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// A convenience accessor for reportedApplicationState.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// This method is thread-safe.
							 | 
						||
| 
								 | 
							
								- (BOOL)isInBackground;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// A convenience accessor for reportedApplicationState.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// This method is thread-safe.
							 | 
						||
| 
								 | 
							
								- (BOOL)isAppForegroundAndActive;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Should start a background task if isMainApp is YES.
							 | 
						||
| 
								 | 
							
								// Should just return UIBackgroundTaskInvalid if isMainApp is NO.
							 | 
						||
| 
								 | 
							
								- (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:
							 | 
						||
| 
								 | 
							
								    (BackgroundTaskExpirationHandler)expirationHandler;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 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;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (void)setStatusBarHidden:(BOOL)isHidden animated:(BOOL)isAnimated;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@property (nonatomic, readonly) CGFloat statusBarHeight;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 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 be a NOOP if isMainApp is NO.
							 | 
						||
| 
								 | 
							
								- (void)setNetworkActivityIndicatorVisible:(BOOL)value;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (void)runNowOrWhenMainAppIsActive:(AppActiveBlock)block;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@property (atomic, readonly) NSDate *appLaunchTime;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (id<SSKKeychainStorage>)keychainStorage;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (NSString *)appDocumentDirectoryPath;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (NSString *)appSharedDataDirectoryPath;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (NSUserDefaults *)appUserDefaults;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								id<AppContext> CurrentAppContext(void);
							 | 
						||
| 
								 | 
							
								void SetCurrentAppContext(id<AppContext> appContext);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void ExitShareExtension(void);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef DEBUG
							 | 
						||
| 
								 | 
							
								void ClearCurrentAppContextForTests(void);
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NS_ASSUME_NONNULL_END
							 |