mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
823006a892
Removed an unused notification Refactored the PrivacySettingsViewController Refactored the ScreenLock code to Swift Fixed an issue where the match dark/light setting wasn't getting applied on launch Update the modal styling for the various settings modals
125 lines
4 KiB
Objective-C
Executable file
125 lines
4 KiB
Objective-C
Executable file
#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;
|
|
@property (nonatomic, readonly) BOOL isShareExtension;
|
|
/// Whether the app was woken up by a silent push notification. This is important for determining whether attachments should be downloaded or not.
|
|
@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;
|
|
|
|
- (NSString *)appDocumentDirectoryPath;
|
|
|
|
- (NSString *)appSharedDataDirectoryPath;
|
|
|
|
- (NSUserDefaults *)appUserDefaults;
|
|
|
|
@end
|
|
|
|
id<AppContext> CurrentAppContext(void);
|
|
BOOL HasAppContext(void);
|
|
void SetCurrentAppContext(id<AppContext> appContext);
|
|
|
|
void ExitShareExtension(void);
|
|
|
|
#ifdef DEBUG
|
|
void ClearCurrentAppContextForTests(void);
|
|
#endif
|
|
|
|
NS_ASSUME_NONNULL_END
|