Merge branch 'charlesmchen/sessionDatabaseRevert_'

pull/1/head
Matthew Chen 7 years ago
commit 49fc302294

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import <Availability.h> #import <Availability.h>
@ -15,7 +15,7 @@
static const NSUInteger ddLogLevel = DDLogLevelInfo; static const NSUInteger ddLogLevel = DDLogLevelInfo;
#endif #endif
#import <SignalServiceKit/Asserts.h> #import <SignalServiceKit/OWSAsserts.h>
#import <SignalServiceKit/Constraints.h> #import <SignalServiceKit/Constraints.h>
#import <SignalServiceKit/OWSAnalytics.h> #import <SignalServiceKit/OWSAnalytics.h>
#import <SignalServiceKit/OWSDispatch.h> #import <SignalServiceKit/OWSDispatch.h>

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
@ -58,7 +58,6 @@
#import <SignalMessaging/UIView+OWS.h> #import <SignalMessaging/UIView+OWS.h>
#import <SignalMessaging/UIViewController+OWS.h> #import <SignalMessaging/UIViewController+OWS.h>
#import <SignalServiceKit/AppVersion.h> #import <SignalServiceKit/AppVersion.h>
#import <SignalServiceKit/Asserts.h>
#import <SignalServiceKit/Contact.h> #import <SignalServiceKit/Contact.h>
#import <SignalServiceKit/ContactsUpdater.h> #import <SignalServiceKit/ContactsUpdater.h>
#import <SignalServiceKit/Cryptography.h> #import <SignalServiceKit/Cryptography.h>
@ -72,6 +71,7 @@
#import <SignalServiceKit/OWSAcknowledgeMessageDeliveryRequest.h> #import <SignalServiceKit/OWSAcknowledgeMessageDeliveryRequest.h>
#import <SignalServiceKit/OWSAnalytics.h> #import <SignalServiceKit/OWSAnalytics.h>
#import <SignalServiceKit/OWSAnalyticsEvents.h> #import <SignalServiceKit/OWSAnalyticsEvents.h>
#import <SignalServiceKit/OWSAsserts.h>
#import <SignalServiceKit/OWSAttachmentsProcessor.h> #import <SignalServiceKit/OWSAttachmentsProcessor.h>
#import <SignalServiceKit/OWSBackgroundTask.h> #import <SignalServiceKit/OWSBackgroundTask.h>
#import <SignalServiceKit/OWSCallAnswerMessage.h> #import <SignalServiceKit/OWSCallAnswerMessage.h>

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "AboutTableViewController.h" #import "AboutTableViewController.h"
@ -75,11 +75,14 @@
threadCount = [[transaction ext:TSThreadDatabaseViewExtensionName] numberOfItemsInAllGroups]; threadCount = [[transaction ext:TSThreadDatabaseViewExtensionName] numberOfItemsInAllGroups];
messageCount = [[transaction ext:TSMessageDatabaseViewExtensionName] numberOfItemsInAllGroups]; messageCount = [[transaction ext:TSMessageDatabaseViewExtensionName] numberOfItemsInAllGroups];
}]; }];
unsigned long long databaseFileSize = [TSStorageManager.sharedManager databaseFileSize];
OWSTableSection *debugSection = [OWSTableSection new]; OWSTableSection *debugSection = [OWSTableSection new];
debugSection.headerTitle = @"Debug"; debugSection.headerTitle = @"Debug";
[debugSection addItem:[OWSTableItem labelItemWithText:[NSString stringWithFormat:@"Threads: %zd", threadCount]]]; [debugSection addItem:[OWSTableItem labelItemWithText:[NSString stringWithFormat:@"Threads: %zd", threadCount]]];
[debugSection addItem:[OWSTableItem labelItemWithText:[NSString stringWithFormat:@"Messages: %zd", messageCount]]]; [debugSection addItem:[OWSTableItem labelItemWithText:[NSString stringWithFormat:@"Messages: %zd", messageCount]]];
[debugSection
addItem:[OWSTableItem labelItemWithText:[NSString stringWithFormat:@"Database size: %llu", databaseFileSize]]];
[contents addSection:debugSection]; [contents addSection:debugSection];
OWSPreferences *preferences = [Environment preferences]; OWSPreferences *preferences = [Environment preferences];

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
import Foundation import Foundation
@ -146,7 +146,7 @@ class CallViewController: OWSViewController, CallObserver, CallServiceObserver {
func observeNotifications() { func observeNotifications() {
NotificationCenter.default.addObserver(self, NotificationCenter.default.addObserver(self,
selector:#selector(didBecomeActive), selector:#selector(didBecomeActive),
name:NSNotification.Name.UIApplicationDidBecomeActive, name:NSNotification.Name.OWSApplicationDidBecomeActive,
object:nil) object:nil)
NotificationCenter.default.addObserver(forName: CallAudioServiceSessionChanged, object: nil, queue: nil) { [weak self] _ in NotificationCenter.default.addObserver(forName: CallAudioServiceSessionChanged, object: nil, queue: nil) { [weak self] _ in

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "ConversationViewController.h" #import "ConversationViewController.h"
@ -302,19 +302,19 @@ typedef NS_ENUM(NSInteger, MessagesRangeSizeMode) {
object:nil]; object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationWillEnterForeground:) selector:@selector(applicationWillEnterForeground:)
name:UIApplicationWillEnterForegroundNotification name:OWSApplicationWillEnterForegroundNotification
object:nil]; object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidEnterBackground:) selector:@selector(applicationDidEnterBackground:)
name:UIApplicationDidEnterBackgroundNotification name:OWSApplicationDidEnterBackgroundNotification
object:nil]; object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationWillResignActive:) selector:@selector(applicationWillResignActive:)
name:UIApplicationWillResignActiveNotification name:OWSApplicationWillResignActiveNotification
object:nil]; object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(cancelReadTimer) selector:@selector(cancelReadTimer)
name:UIApplicationDidEnterBackgroundNotification name:OWSApplicationDidEnterBackgroundNotification
object:nil]; object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(otherUsersProfileDidChange:) selector:@selector(otherUsersProfileDidChange:)

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
import Foundation import Foundation
@ -127,7 +127,7 @@ class GifPickerViewController: OWSViewController, UISearchBarDelegate, UICollect
object: nil) object: nil)
NotificationCenter.default.addObserver(self, NotificationCenter.default.addObserver(self,
selector: #selector(didBecomeActive), selector: #selector(didBecomeActive),
name: NSNotification.Name.UIApplicationDidBecomeActive, name: NSNotification.Name.OWSApplicationDidBecomeActive,
object: nil) object: nil)
} }

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "HomeViewController.h" #import "HomeViewController.h"
@ -124,15 +124,15 @@ typedef NS_ENUM(NSInteger, CellState) { kArchiveState, kInboxState };
object:nil]; object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationWillEnterForeground:) selector:@selector(applicationWillEnterForeground:)
name:UIApplicationWillEnterForegroundNotification name:OWSApplicationWillEnterForegroundNotification
object:nil]; object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidEnterBackground:) selector:@selector(applicationDidEnterBackground:)
name:UIApplicationDidEnterBackgroundNotification name:OWSApplicationDidEnterBackgroundNotification
object:nil]; object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidBecomeActive:) selector:@selector(applicationDidBecomeActive:)
name:UIApplicationDidBecomeActiveNotification name:OWSApplicationDidBecomeActiveNotification
object:nil]; object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(yapDatabaseModified:) selector:@selector(yapDatabaseModified:)

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
import Foundation import Foundation
@ -230,11 +230,11 @@ protocol CallServiceObserver: class {
NotificationCenter.default.addObserver(self, NotificationCenter.default.addObserver(self,
selector: #selector(didEnterBackground), selector: #selector(didEnterBackground),
name: NSNotification.Name.UIApplicationDidEnterBackground, name: NSNotification.Name.OWSApplicationDidEnterBackground,
object: nil) object: nil)
NotificationCenter.default.addObserver(self, NotificationCenter.default.addObserver(self,
selector: #selector(didBecomeActive), selector: #selector(didBecomeActive),
name: NSNotification.Name.UIApplicationDidBecomeActive, name: NSNotification.Name.OWSApplicationDidBecomeActive,
object: nil) object: nil)
} }

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
import Foundation import Foundation
@ -848,7 +848,7 @@ extension URLSessionTask {
} }
// Don't back up Giphy downloads. // Don't back up Giphy downloads.
OWSFileSystem.protectFolder(atPath:dirPath) OWSFileSystem.protectFileOrFolder(atPath:dirPath)
} catch let error as NSError { } catch let error as NSError {
owsFail("\(GiphyAsset.TAG) ensureTempFolder failed: \(dirPath), \(error)") owsFail("\(GiphyAsset.TAG) ensureTempFolder failed: \(dirPath), \(error)")
gifFolderPath = tempDirPath gifFolderPath = tempDirPath

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "MainAppContext.h" #import "MainAppContext.h"
@ -53,28 +53,46 @@ NS_ASSUME_NONNULL_BEGIN
- (void)applicationWillEnterForeground:(NSNotification *)notification - (void)applicationWillEnterForeground:(NSNotification *)notification
{ {
AssertIsOnMainThread();
DDLogInfo(@"%@ %s", self.logTag, __PRETTY_FUNCTION__); DDLogInfo(@"%@ %s", self.logTag, __PRETTY_FUNCTION__);
[NSNotificationCenter.defaultCenter postNotificationName:OWSApplicationWillEnterForegroundNotification object:nil];
} }
- (void)applicationDidEnterBackground:(NSNotification *)notification - (void)applicationDidEnterBackground:(NSNotification *)notification
{ {
AssertIsOnMainThread();
DDLogInfo(@"%@ %s", self.logTag, __PRETTY_FUNCTION__); DDLogInfo(@"%@ %s", self.logTag, __PRETTY_FUNCTION__);
[DDLog flushLog]; [DDLog flushLog];
[NSNotificationCenter.defaultCenter postNotificationName:OWSApplicationDidEnterBackgroundNotification object:nil];
} }
- (void)applicationWillResignActive:(NSNotification *)notification - (void)applicationWillResignActive:(NSNotification *)notification
{ {
AssertIsOnMainThread();
DDLogInfo(@"%@ %s", self.logTag, __PRETTY_FUNCTION__); DDLogInfo(@"%@ %s", self.logTag, __PRETTY_FUNCTION__);
[DDLog flushLog]; [DDLog flushLog];
[NSNotificationCenter.defaultCenter postNotificationName:OWSApplicationWillResignActiveNotification object:nil];
} }
- (void)applicationDidBecomeActive:(NSNotification *)notification - (void)applicationDidBecomeActive:(NSNotification *)notification
{ {
AssertIsOnMainThread();
DDLogInfo(@"%@ %s", self.logTag, __PRETTY_FUNCTION__); DDLogInfo(@"%@ %s", self.logTag, __PRETTY_FUNCTION__);
[NSNotificationCenter.defaultCenter postNotificationName:OWSApplicationDidBecomeActiveNotification object:nil];
} }
- (void)applicationWillTerminate:(NSNotification *)notification - (void)applicationWillTerminate:(NSNotification *)notification
{ {
AssertIsOnMainThread();
DDLogInfo(@"%@ %s", self.logTag, __PRETTY_FUNCTION__); DDLogInfo(@"%@ %s", self.logTag, __PRETTY_FUNCTION__);
[DDLog flushLog]; [DDLog flushLog];
} }

@ -492,8 +492,8 @@ open class MarqueeLabel: UILabel, CAAnimationDelegate {
NotificationCenter.default.addObserver(self, selector: #selector(MarqueeLabel.labelizeForController(_:)), name: NSNotification.Name(rawValue: MarqueeKeys.Labelize.rawValue), object: nil) NotificationCenter.default.addObserver(self, selector: #selector(MarqueeLabel.labelizeForController(_:)), name: NSNotification.Name(rawValue: MarqueeKeys.Labelize.rawValue), object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(MarqueeLabel.animateForController(_:)), name: NSNotification.Name(rawValue: MarqueeKeys.Animate.rawValue), object: nil) NotificationCenter.default.addObserver(self, selector: #selector(MarqueeLabel.animateForController(_:)), name: NSNotification.Name(rawValue: MarqueeKeys.Animate.rawValue), object: nil)
// UIApplication state notifications // UIApplication state notifications
NotificationCenter.default.addObserver(self, selector: #selector(MarqueeLabel.restartLabel), name: NSNotification.Name.UIApplicationDidBecomeActive, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(MarqueeLabel.restartLabel), name: NSNotification.Name.OWSApplicationDidBecomeActive, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(MarqueeLabel.shutdownLabel), name: NSNotification.Name.UIApplicationDidEnterBackground, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(MarqueeLabel.shutdownLabel), name: NSNotification.Name.OWSApplicationDidEnterBackground, object: nil)
} }
override open func awakeFromNib() { override open func awakeFromNib() {

@ -656,7 +656,7 @@
"FINGERPRINT_SCAN_VERIFY_BUTTON" = "Mark as Verified"; "FINGERPRINT_SCAN_VERIFY_BUTTON" = "Mark as Verified";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"FINGERPRINT_SHRED_KEYMATERIAL_BUTTON" = "Reset this session."; "FINGERPRINT_SHRED_KEYMATERIAL_BUTTON" = "Reset this session";
/* Accessibilty label for finishing new group */ /* Accessibilty label for finishing new group */
"FINISH_GROUP_CREATION_LABEL" = "Finish creating group"; "FINISH_GROUP_CREATION_LABEL" = "Finish creating group";

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import <Availability.h> #import <Availability.h>
@ -15,7 +15,7 @@
static const NSUInteger ddLogLevel = DDLogLevelInfo; static const NSUInteger ddLogLevel = DDLogLevelInfo;
#endif #endif
#import <SignalServiceKit/Asserts.h> #import <SignalServiceKit/OWSAsserts.h>
#import <SignalServiceKit/Constraints.h> #import <SignalServiceKit/Constraints.h>
#import <SignalServiceKit/OWSAnalytics.h> #import <SignalServiceKit/OWSAnalytics.h>
#import <SignalServiceKit/OWSDispatch.h> #import <SignalServiceKit/OWSDispatch.h>

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "ThreadViewHelper.h" #import "ThreadViewHelper.h"
@ -57,11 +57,11 @@ NS_ASSUME_NONNULL_BEGIN
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationWillEnterForeground:) selector:@selector(applicationWillEnterForeground:)
name:UIApplicationWillEnterForegroundNotification name:OWSApplicationWillEnterForegroundNotification
object:nil]; object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidEnterBackground:) selector:@selector(applicationDidEnterBackground:)
name:UIApplicationDidEnterBackgroundNotification name:OWSApplicationDidEnterBackgroundNotification
object:nil]; object:nil];
self.shouldObserveDBModifications self.shouldObserveDBModifications

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "OWSAudioAttachmentPlayer.h" #import "OWSAudioAttachmentPlayer.h"
@ -48,7 +48,7 @@ NS_ASSUME_NONNULL_BEGIN
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidEnterBackground:) selector:@selector(applicationDidEnterBackground:)
name:UIApplicationDidEnterBackgroundNotification name:OWSApplicationDidEnterBackgroundNotification
object:nil]; object:nil];
return self; return self;

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
import Foundation import Foundation
@ -57,7 +57,7 @@ class ContactsFrameworkContactStoreAdaptee: ContactStoreAdaptee {
self.changeHandler = changeHandler self.changeHandler = changeHandler
self.lastSortOrder = CNContactsUserDefaults.shared().sortOrder self.lastSortOrder = CNContactsUserDefaults.shared().sortOrder
NotificationCenter.default.addObserver(self, selector: #selector(runChangeHandler), name: .CNContactStoreDidChange, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(runChangeHandler), name: .CNContactStoreDidChange, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(didBecomeActive), name: .UIApplicationDidBecomeActive, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(didBecomeActive), name: .OWSApplicationDidBecomeActive, object: nil)
} }
@objc @objc

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "AppSetup.h" #import "AppSetup.h"
@ -7,6 +7,7 @@
#import "Release.h" #import "Release.h"
#import "VersionMigrations.h" #import "VersionMigrations.h"
#import <AxolotlKit/SessionCipher.h> #import <AxolotlKit/SessionCipher.h>
#import <SignalMessaging/OWSDatabaseMigration.h>
#import <SignalMessaging/OWSProfileManager.h> #import <SignalMessaging/OWSProfileManager.h>
#import <SignalMessaging/SignalMessaging-Swift.h> #import <SignalMessaging/SignalMessaging-Swift.h>
#import <SignalServiceKit/OWSStorage.h> #import <SignalServiceKit/OWSStorage.h>
@ -40,6 +41,10 @@ NS_ASSUME_NONNULL_BEGIN
profileManager:OWSProfileManager.sharedManager]; profileManager:OWSProfileManager.sharedManager];
[TextSecureKitEnv setSharedEnv:sharedEnv]; [TextSecureKitEnv setSharedEnv:sharedEnv];
// Register renamed classes.
[NSKeyedUnarchiver setClass:[OWSUserProfile class] forClassName:[OWSUserProfile collection]];
[NSKeyedUnarchiver setClass:[OWSDatabaseMigration class] forClassName:[OWSDatabaseMigration collection]];
[OWSStorage setupWithSafeBlockingMigrations:^{ [OWSStorage setupWithSafeBlockingMigrations:^{
[VersionMigrations runSafeBlockingMigrations]; [VersionMigrations runSafeBlockingMigrations];
}]; }];

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "OWSProfileManager.h" #import "OWSProfileManager.h"
@ -124,7 +124,7 @@ const NSUInteger kOWSProfileManager_MaxAvatarDiameter = 640;
{ {
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidBecomeActive:) selector:@selector(applicationDidBecomeActive:)
name:UIApplicationDidBecomeActiveNotification name:OWSApplicationDidBecomeActiveNotification
object:nil]; object:nil];
} }
@ -1128,8 +1128,8 @@ const NSUInteger kOWSProfileManager_MaxAvatarDiameter = 640;
profileAvatarsDirPath = OWSProfileManager.sharedDataProfileAvatarsDirPath; profileAvatarsDirPath = OWSProfileManager.sharedDataProfileAvatarsDirPath;
[OWSFileSystem ensureDirectoryExists:profileAvatarsDirPath]; [OWSFileSystem ensureDirectoryExists:profileAvatarsDirPath];
[OWSFileSystem protectFolderAtPath:profileAvatarsDirPath]; [OWSFileSystem protectFileOrFolderAtPath:profileAvatarsDirPath];
}); });
return profileAvatarsDirPath; return profileAvatarsDirPath;
} }

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "OWSUserProfile.h" #import "OWSUserProfile.h"
@ -112,7 +112,7 @@ NSString *const kLocalProfileUniqueId = @"kLocalProfileUniqueId";
__block BOOL didChange = YES; __block BOOL didChange = YES;
[dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { [dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
NSString *collection = [[self class] collection]; NSString *collection = [[self class] collection];
OWSUserProfile *latestInstance = [transaction objectForKey:self.uniqueId inCollection:collection]; OWSUserProfile *_Nullable latestInstance = [transaction objectForKey:self.uniqueId inCollection:collection];
if (latestInstance) { if (latestInstance) {
changeBlock(latestInstance); changeBlock(latestInstance);

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "DebugLogger.h" #import "DebugLogger.h"
@ -35,7 +35,7 @@
{ {
NSString *dirPath = [[OWSFileSystem cachesDirectoryPath] stringByAppendingPathComponent:@"Logs"]; NSString *dirPath = [[OWSFileSystem cachesDirectoryPath] stringByAppendingPathComponent:@"Logs"];
[OWSFileSystem ensureDirectoryExists:dirPath]; [OWSFileSystem ensureDirectoryExists:dirPath];
[OWSFileSystem protectFolderAtPath:dirPath]; [OWSFileSystem protectFileOrFolderAtPath:dirPath];
return dirPath; return dirPath;
} }
@ -44,7 +44,7 @@
NSString *dirPath = NSString *dirPath =
[[OWSFileSystem appSharedDataDirectoryPath] stringByAppendingPathComponent:@"ShareExtensionLogs"]; [[OWSFileSystem appSharedDataDirectoryPath] stringByAppendingPathComponent:@"ShareExtensionLogs"];
[OWSFileSystem ensureDirectoryExists:dirPath]; [OWSFileSystem ensureDirectoryExists:dirPath];
[OWSFileSystem protectFolderAtPath:dirPath]; [OWSFileSystem protectFileOrFolderAtPath:dirPath];
return dirPath; return dirPath;
} }

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
import Foundation import Foundation
@ -42,7 +42,7 @@ public class DeviceSleepManager: NSObject {
NotificationCenter.default.addObserver(self, NotificationCenter.default.addObserver(self,
selector:#selector(didEnterBackground), selector:#selector(didEnterBackground),
name:NSNotification.Name.UIApplicationDidEnterBackground, name:NSNotification.Name.OWSApplicationDidEnterBackground,
object:nil) object:nil)
} }

@ -1,8 +1,9 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "OWSPreferences.h" #import "OWSPreferences.h"
#import <SignalServiceKit/AppContext.h>
#import <SignalServiceKit/NSUserDefaults+OWS.h> #import <SignalServiceKit/NSUserDefaults+OWS.h>
#import <SignalServiceKit/TSStorageHeaders.h> #import <SignalServiceKit/TSStorageHeaders.h>
#import <SignalServiceKit/YapDatabaseConnection+OWS.h> #import <SignalServiceKit/YapDatabaseConnection+OWS.h>
@ -24,7 +25,7 @@ NSString *const OWSPreferencesKeyCallKitPrivacyEnabled = @"CallKitPrivacyEnabled
NSString *const OWSPreferencesKeyCallsHideIPAddress = @"CallsHideIPAddress"; NSString *const OWSPreferencesKeyCallsHideIPAddress = @"CallsHideIPAddress";
NSString *const OWSPreferencesKeyHasDeclinedNoContactsView = @"hasDeclinedNoContactsView"; NSString *const OWSPreferencesKeyHasDeclinedNoContactsView = @"hasDeclinedNoContactsView";
NSString *const OWSPreferencesKeyIOSUpgradeNagVersion = @"iOSUpgradeNagVersion"; NSString *const OWSPreferencesKeyIOSUpgradeNagVersion = @"iOSUpgradeNagVersion";
NSString *const OWSPreferencesKey_IsReadyForAppExtensions = @"isReadyForAppExtensions2"; NSString *const OWSPreferencesKey_IsReadyForAppExtensions = @"isReadyForAppExtensions_5";
NSString *const OWSPreferencesKey_IsRegistered = @"OWSPreferencesKey_IsRegistered"; NSString *const OWSPreferencesKey_IsRegistered = @"OWSPreferencesKey_IsRegistered";
@implementation OWSPreferences @implementation OWSPreferences
@ -78,6 +79,8 @@ NSString *const OWSPreferencesKey_IsRegistered = @"OWSPreferencesKey_IsRegistere
+ (void)setIsReadyForAppExtensions + (void)setIsReadyForAppExtensions
{ {
OWSAssert(CurrentAppContext().isMainApp);
[NSUserDefaults.appUserDefaults setObject:@(YES) forKey:OWSPreferencesKey_IsReadyForAppExtensions]; [NSUserDefaults.appUserDefaults setObject:@(YES) forKey:OWSPreferencesKey_IsReadyForAppExtensions];
[NSUserDefaults.appUserDefaults synchronize]; [NSUserDefaults.appUserDefaults synchronize];
} }
@ -95,6 +98,8 @@ NSString *const OWSPreferencesKey_IsRegistered = @"OWSPreferencesKey_IsRegistere
+ (void)setIsRegistered:(BOOL)value + (void)setIsRegistered:(BOOL)value
{ {
OWSAssert(CurrentAppContext().isMainApp);
[NSUserDefaults.appUserDefaults setObject:@(value) forKey:OWSPreferencesKey_IsRegistered]; [NSUserDefaults.appUserDefaults setObject:@(value) forKey:OWSPreferencesKey_IsRegistered];
[NSUserDefaults.appUserDefaults synchronize]; [NSUserDefaults.appUserDefaults synchronize];
} }
@ -143,6 +148,8 @@ NSString *const OWSPreferencesKey_IsRegistered = @"OWSPreferencesKey_IsRegistere
+ (void)setIsLoggingEnabled:(BOOL)flag + (void)setIsLoggingEnabled:(BOOL)flag
{ {
OWSAssert(CurrentAppContext().isMainApp);
// Logging preferences are stored in UserDefaults instead of the database, so that we can (optionally) start // Logging preferences are stored in UserDefaults instead of the database, so that we can (optionally) start
// logging before the database is initialized. This is important because sometimes there are problems *with* the // logging before the database is initialized. This is important because sometimes there are problems *with* the
// database initialization, and without logging it would be hard to track down. // database initialization, and without logging it would be hard to track down.

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "TSPreKeyManager.h" #import "TSPreKeyManager.h"
@ -91,9 +91,10 @@ static const NSTimeInterval kSignedPreKeyUpdateFailureMaxFailureDuration = 10 *
+ (void)checkPreKeysIfNecessary + (void)checkPreKeysIfNecessary
{ {
if (CurrentAppContext().isMainApp) { if (!CurrentAppContext().isMainApp) {
OWSAssert(CurrentAppContext().isMainAppAndActive); return;
} }
OWSAssert(CurrentAppContext().isMainAppAndActive);
// Update the prekey check timestamp. // Update the prekey check timestamp.
dispatch_async(TSPreKeyManager.prekeyQueue, ^{ dispatch_async(TSPreKeyManager.prekeyQueue, ^{
@ -214,6 +215,10 @@ static const NSTimeInterval kSignedPreKeyUpdateFailureMaxFailureDuration = 10 *
+ (void)checkPreKeys + (void)checkPreKeys
{ {
if (!CurrentAppContext().isMainApp) {
return;
}
// Optimistically mark the prekeys as checked. This // Optimistically mark the prekeys as checked. This
// de-bounces prekey checks. // de-bounces prekey checks.
// //

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "TSAttachmentStream.h" #import "TSAttachmentStream.h"
@ -205,7 +205,7 @@ NS_ASSUME_NONNULL_BEGIN
[OWSFileSystem ensureDirectoryExists:attachmentsFolder]; [OWSFileSystem ensureDirectoryExists:attachmentsFolder];
[OWSFileSystem protectFolderAtPath:attachmentsFolder]; [OWSFileSystem protectFileOrFolderAtPath:attachmentsFolder];
}); });
return attachmentsFolder; return attachmentsFolder;
} }

@ -1,8 +1,9 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "OWSBlockingManager.h" #import "OWSBlockingManager.h"
#import "AppContext.h"
#import "NSNotificationCenter+OWS.h" #import "NSNotificationCenter+OWS.h"
#import "OWSBlockedPhoneNumbersMessage.h" #import "OWSBlockedPhoneNumbersMessage.h"
#import "OWSMessageSender.h" #import "OWSMessageSender.h"
@ -86,7 +87,7 @@ NSString *const kOWSBlockingManager_SyncedBlockedPhoneNumbersKey = @"kOWSBlockin
{ {
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidBecomeActive:) selector:@selector(applicationDidBecomeActive:)
name:UIApplicationDidBecomeActiveNotification name:OWSApplicationDidBecomeActiveNotification
object:nil]; object:nil];
} }

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "OWSDisappearingMessagesJob.h" #import "OWSDisappearingMessagesJob.h"
@ -57,11 +57,11 @@ NS_ASSUME_NONNULL_BEGIN
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidBecomeActive:) selector:@selector(applicationDidBecomeActive:)
name:UIApplicationDidBecomeActiveNotification name:OWSApplicationDidBecomeActiveNotification
object:nil]; object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationWillResignActive:) selector:@selector(applicationWillResignActive:)
name:UIApplicationWillResignActiveNotification name:OWSApplicationWillResignActiveNotification
object:nil]; object:nil];
return self; return self;

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "OWSFailedAttachmentDownloadsJob.h" #import "OWSFailedAttachmentDownloadsJob.h"
@ -82,7 +82,6 @@ static NSString *const OWSFailedAttachmentDownloadsJobAttachmentStateIndex = @"i
[self enumerateAttemptingOutAttachmentsWithBlock:^(TSAttachmentPointer *attachment) { [self enumerateAttemptingOutAttachmentsWithBlock:^(TSAttachmentPointer *attachment) {
// sanity check // sanity check
if (attachment.state != TSAttachmentPointerStateFailed) { if (attachment.state != TSAttachmentPointerStateFailed) {
DDLogDebug(@"%@ marking attachment as failed", self.logTag);
attachment.state = TSAttachmentPointerStateFailed; attachment.state = TSAttachmentPointerStateFailed;
[attachment saveWithTransaction:transaction]; [attachment saveWithTransaction:transaction];
count++; count++;

@ -1,11 +1,14 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "TSNetworkManager.h" #import "TSNetworkManager.h"
#import "AppContext.h"
#import "NSURLSessionDataTask+StatusCode.h" #import "NSURLSessionDataTask+StatusCode.h"
#import "OWSSignalService.h" #import "OWSSignalService.h"
#import "TSAccountManager.h" #import "TSAccountManager.h"
#import "TSRecipientPrekeyRequest.h"
#import "TSSubmitMessageRequest.h"
#import "TSVerifyCodeRequest.h" #import "TSVerifyCodeRequest.h"
#import <AFNetworking/AFNetworking.h> #import <AFNetworking/AFNetworking.h>
@ -56,6 +59,15 @@ typedef void (^failureBlock)(NSURLSessionDataTask *task, NSError *error);
failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failureBlock failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failureBlock
{ {
DDLogInfo(@"%@ Making request: %@", self.logTag, request); DDLogInfo(@"%@ Making request: %@", self.logTag, request);
if (!CurrentAppContext().isMainApp) {
if (![request isKindOfClass:[TSRecipientPrekeyRequest class]]
&& ![request isKindOfClass:[TSSubmitMessageRequest class]]
&& ![request isKindOfClass:[TSContactsIntersectionRequest class]]
&& ![request isKindOfClass:[TSAllocAttachmentRequest class]]) {
// The SAE should only make requests directly related to message sending.
OWSFail(@"%@ Making request: %@", self.logTag, request);
}
}
void (^failure)(NSURLSessionDataTask *task, NSError *error) = void (^failure)(NSURLSessionDataTask *task, NSError *error) =
[TSNetworkManager errorPrettifyingForFailureBlock:failureBlock]; [TSNetworkManager errorPrettifyingForFailureBlock:failureBlock];

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "TSSocketManager.h" #import "TSSocketManager.h"
@ -125,11 +125,11 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidBecomeActive:) selector:@selector(applicationDidBecomeActive:)
name:UIApplicationDidBecomeActiveNotification name:OWSApplicationDidBecomeActiveNotification
object:nil]; object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationWillResignActive:) selector:@selector(applicationWillResignActive:)
name:UIApplicationWillResignActiveNotification name:OWSApplicationWillResignActiveNotification
object:nil]; object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(registrationStateDidChange:) selector:@selector(registrationStateDidChange:)

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "OWSRecipientIdentity.h" #import "OWSRecipientIdentity.h"
@ -103,6 +103,37 @@ OWSSignalServiceProtosVerifiedState OWSVerificationStateToProtoState(OWSVerifica
}]; }];
} }
- (void)saveWithTransaction:(YapDatabaseReadWriteTransaction *)transaction
{
OWSAssert(transaction.connection == [OWSRecipientIdentity dbReadWriteConnection]);
[super saveWithTransaction:transaction];
}
- (void)removeWithTransaction:(YapDatabaseReadWriteTransaction *)transaction
{
OWSAssert(transaction.connection == [OWSRecipientIdentity dbReadWriteConnection]);
[super removeWithTransaction:transaction];
}
- (void)touchWithTransaction:(YapDatabaseReadWriteTransaction *)transaction
{
OWSAssert(transaction.connection == [OWSRecipientIdentity dbReadWriteConnection]);
[super touchWithTransaction:transaction];
}
+ (nullable instancetype)fetchObjectWithUniqueID:(NSString *)uniqueID
transaction:(YapDatabaseReadTransaction *)transaction
{
OWSAssert(transaction.connection == [OWSRecipientIdentity dbReadConnection]);
return [super fetchObjectWithUniqueID:uniqueID transaction:transaction];
}
#pragma mark - Database Connections
+ (YapDatabaseConnection *)dbReadConnection + (YapDatabaseConnection *)dbReadConnection
{ {
return self.dbReadWriteConnection; return self.dbReadWriteConnection;
@ -128,33 +159,14 @@ OWSSignalServiceProtosVerifiedState OWSVerificationStateToProtoState(OWSVerifica
return sharedDBConnection; return sharedDBConnection;
} }
- (void)saveWithTransaction:(YapDatabaseReadWriteTransaction *)transaction - (YapDatabaseConnection *)dbReadConnection
{
OWSAssert(transaction.connection == [OWSRecipientIdentity dbReadWriteConnection]);
[super saveWithTransaction:transaction];
}
- (void)removeWithTransaction:(YapDatabaseReadWriteTransaction *)transaction
{
OWSAssert(transaction.connection == [OWSRecipientIdentity dbReadWriteConnection]);
[super removeWithTransaction:transaction];
}
- (void)touchWithTransaction:(YapDatabaseReadWriteTransaction *)transaction
{ {
OWSAssert(transaction.connection == [OWSRecipientIdentity dbReadWriteConnection]); return OWSRecipientIdentity.dbReadConnection;
[super touchWithTransaction:transaction];
} }
+ (nullable instancetype)fetchObjectWithUniqueID:(NSString *)uniqueID - (YapDatabaseConnection *)dbReadWriteConnection
transaction:(YapDatabaseReadTransaction *)transaction
{ {
OWSAssert(transaction.connection == [OWSRecipientIdentity dbReadConnection]); return OWSRecipientIdentity.dbReadWriteConnection;
return [super fetchObjectWithUniqueID:uniqueID transaction:transaction];
} }
#pragma mark - debug #pragma mark - debug

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import <YapDatabase/YapDatabaseConnection.h> #import <YapDatabase/YapDatabaseConnection.h>
@ -40,6 +40,8 @@ extern NSString *const StorageIsReadyNotification;
completionBlock:(nullable void (^)(BOOL ready))completionBlock; completionBlock:(nullable void (^)(BOOL ready))completionBlock;
- (nullable id)registeredExtension:(NSString *)extensionName; - (nullable id)registeredExtension:(NSString *)extensionName;
- (unsigned long long)databaseFileSize;
#pragma mark - Password #pragma mark - Password
/** /**

@ -596,6 +596,20 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass";
[SAMKeychain deletePasswordForService:keychainService account:keychainDBPassAccount]; [SAMKeychain deletePasswordForService:keychainService account:keychainDBPassAccount];
} }
- (unsigned long long)databaseFileSize
{
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *_Nullable error;
unsigned long long fileSize =
[[fileManager attributesOfItemAtPath:self.databaseFilePath error:&error][NSFileSize] unsignedLongLongValue];
if (error) {
DDLogError(@"%@ Couldn't fetch database file size: %@", self.logTag, error);
} else {
DDLogInfo(@"%@ Database file size: %llu", self.logTag, fileSize);
}
return fileSize;
}
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "TSStorageManager.h" #import "TSStorageManager.h"
@ -127,12 +127,12 @@ NSString *const TSStorageManagerExceptionName_CouldNotCreateDatabaseDirectory
{ {
// The old database location was in the Document directory, // The old database location was in the Document directory,
// so protect the database files individually. // so protect the database files individually.
[OWSFileSystem protectFolderAtPath:self.legacyDatabaseFilePath]; [OWSFileSystem protectFileOrFolderAtPath:self.legacyDatabaseFilePath];
[OWSFileSystem protectFolderAtPath:self.legacyDatabaseFilePath_SHM]; [OWSFileSystem protectFileOrFolderAtPath:self.legacyDatabaseFilePath_SHM];
[OWSFileSystem protectFolderAtPath:self.legacyDatabaseFilePath_WAL]; [OWSFileSystem protectFileOrFolderAtPath:self.legacyDatabaseFilePath_WAL];
// Protect the entire new database directory. // Protect the entire new database directory.
[OWSFileSystem protectFolderAtPath:self.sharedDataDatabaseDirPath]; [OWSFileSystem protectFileOrFolderAtPath:self.sharedDataDatabaseDirPath];
} }
- (BOOL)userSetPassword { - (BOOL)userSetPassword {

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
@ -11,11 +11,10 @@ static const NSUInteger ddLogLevel = DDLogLevelAll;
#else #else
static const NSUInteger ddLogLevel = DDLogLevelInfo; static const NSUInteger ddLogLevel = DDLogLevelInfo;
#endif #endif
#import "Asserts.h"
#import "Constraints.h" #import "Constraints.h"
#import "NSObject+OWS.h" #import "NSObject+OWS.h"
#import "OWSAnalytics.h" #import "OWSAnalytics.h"
#import "OWSAsserts.h"
#import "OWSDispatch.h" #import "OWSDispatch.h"
#import "iOSVersions.h" #import "iOSVersions.h"

@ -1,9 +1,20 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
NS_ASSUME_NONNULL_BEGIN 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;
typedef void (^BackgroundTaskExpirationHandler)(void); typedef void (^BackgroundTaskExpirationHandler)(void);
@class OWSAES256Key; @class OWSAES256Key;

@ -1,11 +1,16 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "AppContext.h" #import "AppContext.h"
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
NSString *const OWSApplicationDidEnterBackgroundNotification = @"OWSApplicationDidEnterBackgroundNotification";
NSString *const OWSApplicationWillEnterForegroundNotification = @"OWSApplicationWillEnterForegroundNotification";
NSString *const OWSApplicationWillResignActiveNotification = @"OWSApplicationWillResignActiveNotification";
NSString *const OWSApplicationDidBecomeActiveNotification = @"OWSApplicationDidBecomeActiveNotification";
static id<AppContext> currentAppContext = nil; static id<AppContext> currentAppContext = nil;
id<AppContext> CurrentAppContext(void) id<AppContext> CurrentAppContext(void)

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "AppVersion.h" #import "AppVersion.h"
@ -32,6 +32,7 @@ NSString *const kNSUserDefaults_LastCompletedLaunchAppVersion = @"kNSUserDefault
return instance; return instance;
} }
// TODO: Modify these NSUserDefaults keys for SAE.
- (void)configure { - (void)configure {
self.currentAppVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; self.currentAppVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];

@ -1,7 +1,8 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "AppContext.h"
#import "NSUserDefaults+OWS.h" #import "NSUserDefaults+OWS.h"
#import "TSConstants.h" #import "TSConstants.h"
@ -34,6 +35,8 @@ NS_ASSUME_NONNULL_BEGIN
- (void)removeAll - (void)removeAll
{ {
OWSAssert(CurrentAppContext().isMainApp);
NSDictionary<NSString *, id> *dictionary = self.dictionaryRepresentation; NSDictionary<NSString *, id> *dictionary = self.dictionaryRepresentation;
for (NSString *key in dictionary) { for (NSString *key in dictionary) {
[self removeObjectForKey:key]; [self removeObjectForKey:key];

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "OWSAnalytics.h" #import "OWSAnalytics.h"
@ -101,7 +101,7 @@ NSString *NSStringForOWSAnalyticsSeverity(OWSAnalyticsSeverity severity)
object:nil]; object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidBecomeActive) selector:@selector(applicationDidBecomeActive)
name:UIApplicationDidBecomeActiveNotification name:OWSApplicationDidBecomeActiveNotification
object:nil]; object:nil];
} }

@ -2,6 +2,8 @@
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2017 Open Whisper Systems. All rights reserved.
// //
NS_ASSUME_NONNULL_BEGIN
#ifndef OWSAssert #ifndef OWSAssert
#ifdef DEBUG #ifdef DEBUG
@ -115,3 +117,11 @@
#define OWSSingletonAssert() #define OWSSingletonAssert()
#endif #endif
// This macro is intended for use in Objective-C.
#define OWSAssertIsOnMainThread() OWSCAssert([NSThread isMainThread])
// This function is intended for use in Swift.
void AssertIsOnMainThread(void);
NS_ASSUME_NONNULL_END

@ -0,0 +1,14 @@
//
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
#import "OWSAsserts.h"
NS_ASSUME_NONNULL_BEGIN
void AssertIsOnMainThread()
{
OWSCAssert([NSThread isMainThread]);
}
NS_ASSUME_NONNULL_END

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "OWSBackgroundTask.h" #import "OWSBackgroundTask.h"
@ -134,8 +134,6 @@
// Make a local copy of this state, since this method is called by `dealloc`. // Make a local copy of this state, since this method is called by `dealloc`.
UIBackgroundTaskIdentifier backgroundTaskId; UIBackgroundTaskIdentifier backgroundTaskId;
BackgroundTaskCompletionBlock _Nullable completionBlock; BackgroundTaskCompletionBlock _Nullable completionBlock;
NSString *logTag = self.logTag;
NSString *label = self.label;
@synchronized(self) @synchronized(self)
{ {
@ -151,13 +149,14 @@
// endBackgroundTask must be called on the main thread. // endBackgroundTask must be called on the main thread.
DispatchMainThreadSafe(^{ DispatchMainThreadSafe(^{
DDLogVerbose(@"%@ %@ background task completed.", logTag, label);
if (completionBlock) { if (completionBlock) {
completionBlock(BackgroundTaskState_Success); completionBlock(BackgroundTaskState_Success);
} }
[CurrentAppContext() endBackgroundTask:backgroundTaskId]; if (backgroundTaskId != UIBackgroundTaskInvalid) {
[CurrentAppContext() endBackgroundTask:backgroundTaskId];
}
}); });
} }

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@ -24,10 +24,4 @@ NS_ASSUME_NONNULL_BEGIN
@end @end
// This macro is intended for use in Objective-C.
#define OWSAssertIsOnMainThread() OWSCAssert([NSThread isMainThread])
// This function is intended for use in Swift.
void AssertIsOnMainThread(void);
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "OWSDispatch.h" #import "OWSDispatch.h"
@ -40,8 +40,4 @@ NS_ASSUME_NONNULL_BEGIN
@end @end
void AssertIsOnMainThread() {
OWSCAssert([NSThread isMainThread]);
}
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@ -8,7 +8,7 @@ NS_ASSUME_NONNULL_BEGIN
- (instancetype)init NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE;
+ (void)protectFolderAtPath:(NSString *)path; + (void)protectFileOrFolderAtPath:(NSString *)path;
+ (NSString *)appDocumentDirectoryPath; + (NSString *)appDocumentDirectoryPath;
@ -25,6 +25,8 @@ NS_ASSUME_NONNULL_BEGIN
+ (void)deleteFile:(NSString *)filePath; + (void)deleteFile:(NSString *)filePath;
+ (void)deleteFileIfExists:(NSString *)filePath;
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "OWSFileSystem.h" #import "OWSFileSystem.h"
@ -9,7 +9,7 @@ NS_ASSUME_NONNULL_BEGIN
@implementation OWSFileSystem @implementation OWSFileSystem
+ (void)protectFolderAtPath:(NSString *)path + (void)protectFileOrFolderAtPath:(NSString *)path
{ {
if (![NSFileManager.defaultManager fileExistsAtPath:path]) { if (![NSFileManager.defaultManager fileExistsAtPath:path]) {
return; return;
@ -124,6 +124,13 @@ NS_ASSUME_NONNULL_BEGIN
} }
} }
+ (void)deleteFileIfExists:(NSString *)filePath
{
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
[self deleteFile:filePath];
}
}
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
@ -21,7 +21,7 @@
#import <SignalMessaging/VersionMigrations.h> #import <SignalMessaging/VersionMigrations.h>
#import <SignalServiceKit/AppContext.h> #import <SignalServiceKit/AppContext.h>
#import <SignalServiceKit/AppVersion.h> #import <SignalServiceKit/AppVersion.h>
#import <SignalServiceKit/Asserts.h>
#import <SignalServiceKit/NSObject+OWS.h> #import <SignalServiceKit/NSObject+OWS.h>
#import <SignalServiceKit/OWSAsserts.h>
#import <SignalServiceKit/OWSMessageSender.h> #import <SignalServiceKit/OWSMessageSender.h>
#import <SignalServiceKit/TSAccountManager.h> #import <SignalServiceKit/TSAccountManager.h>

@ -1,5 +1,5 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import <Availability.h> #import <Availability.h>
@ -15,7 +15,7 @@
static const NSUInteger ddLogLevel = DDLogLevelInfo; static const NSUInteger ddLogLevel = DDLogLevelInfo;
#endif #endif
#import <SignalServiceKit/Asserts.h> #import <SignalServiceKit/OWSAsserts.h>
#import <SignalServiceKit/Constraints.h> #import <SignalServiceKit/Constraints.h>
#import <SignalServiceKit/OWSAnalytics.h> #import <SignalServiceKit/OWSAnalytics.h>
#import <SignalServiceKit/OWSDispatch.h> #import <SignalServiceKit/OWSDispatch.h>

@ -1,9 +1,10 @@
// //
// Copyright (c) 2017 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "ShareAppExtensionContext.h" #import "ShareAppExtensionContext.h"
#import <SignalMessaging/UIViewController+OWS.h> #import <SignalMessaging/UIViewController+OWS.h>
#import <SignalServiceKit/OWSStorage.h>
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@ -58,24 +59,40 @@ NS_ASSUME_NONNULL_BEGIN
- (void)extensionHostDidBecomeActive:(NSNotification *)notification - (void)extensionHostDidBecomeActive:(NSNotification *)notification
{ {
OWSAssertIsOnMainThread();
DDLogInfo(@"%@ %s", self.logTag, __PRETTY_FUNCTION__); DDLogInfo(@"%@ %s", self.logTag, __PRETTY_FUNCTION__);
[NSNotificationCenter.defaultCenter postNotificationName:OWSApplicationDidBecomeActiveNotification object:nil];
} }
- (void)extensionHostWillResignActive:(NSNotification *)notification - (void)extensionHostWillResignActive:(NSNotification *)notification
{ {
OWSAssertIsOnMainThread();
DDLogInfo(@"%@ %s", self.logTag, __PRETTY_FUNCTION__); DDLogInfo(@"%@ %s", self.logTag, __PRETTY_FUNCTION__);
[DDLog flushLog]; [DDLog flushLog];
[NSNotificationCenter.defaultCenter postNotificationName:OWSApplicationWillResignActiveNotification object:nil];
} }
- (void)extensionHostDidEnterBackground:(NSNotification *)notification - (void)extensionHostDidEnterBackground:(NSNotification *)notification
{ {
OWSAssertIsOnMainThread();
DDLogInfo(@"%@ %s", self.logTag, __PRETTY_FUNCTION__); DDLogInfo(@"%@ %s", self.logTag, __PRETTY_FUNCTION__);
[DDLog flushLog]; [DDLog flushLog];
[NSNotificationCenter.defaultCenter postNotificationName:OWSApplicationDidEnterBackgroundNotification object:nil];
} }
- (void)extensionHostWillEnterForeground:(NSNotification *)notification - (void)extensionHostWillEnterForeground:(NSNotification *)notification
{ {
OWSAssertIsOnMainThread();
DDLogInfo(@"%@ %s", self.logTag, __PRETTY_FUNCTION__); DDLogInfo(@"%@ %s", self.logTag, __PRETTY_FUNCTION__);
[NSNotificationCenter.defaultCenter postNotificationName:OWSApplicationWillEnterForegroundNotification object:nil];
} }
#pragma mark - #pragma mark -

Loading…
Cancel
Save