Rework isStorageReady.
This commit is contained in:
parent
0923ad6c39
commit
b09da45672
@ -1231,7 +1231,7 @@ static NSTimeInterval launchStartedAt;
|
||||
if (!self.areVersionMigrationsComplete) {
|
||||
return;
|
||||
}
|
||||
if (![OWSStorage isStorageReady]) {
|
||||
if (![self.storageCoordinator isStorageReady]) {
|
||||
return;
|
||||
}
|
||||
if ([AppReadiness isAppReady]) {
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
#import "Signal-Swift.h"
|
||||
#import <PromiseKit/AnyPromise.h>
|
||||
#import <SignalCoreKit/Randomness.h>
|
||||
#import <SignalServiceKit/StorageCoordinator.h>
|
||||
#import <YapDatabase/YapDatabaseCryptoUtils.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@ -46,6 +47,15 @@ NSString *const kOWSBackup_KeychainService = @"kOWSBackup_KeychainService";
|
||||
|
||||
@implementation OWSBackupJob
|
||||
|
||||
#pragma mark - Dependencies
|
||||
|
||||
- (StorageCoordinator *)storageCoordinator
|
||||
{
|
||||
return SSKEnvironment.shared.storageCoordinator;
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
|
||||
- (instancetype)initWithDelegate:(id<OWSBackupJobDelegate>)delegate recipientId:(NSString *)recipientId
|
||||
{
|
||||
self = [super init];
|
||||
@ -55,7 +65,7 @@ NSString *const kOWSBackup_KeychainService = @"kOWSBackup_KeychainService";
|
||||
}
|
||||
|
||||
OWSAssertDebug(recipientId.length > 0);
|
||||
OWSAssertDebug([OWSStorage isStorageReady]);
|
||||
OWSAssertDebug([self.storageCoordinator isStorageReady]);
|
||||
|
||||
self.delegate = delegate;
|
||||
self.recipientId = recipientId;
|
||||
|
||||
@ -102,7 +102,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
OWSSounds *sounds = [OWSSounds new];
|
||||
id<OWSProximityMonitoringManager> proximityMonitoringManager = [OWSProximityMonitoringManagerImpl new];
|
||||
OWSWindowManager *windowManager = [[OWSWindowManager alloc] initDefault];
|
||||
|
||||
|
||||
[Environment setShared:[[Environment alloc] initWithAudioSession:audioSession
|
||||
preferences:preferences
|
||||
proximityMonitoringManager:proximityMonitoringManager
|
||||
@ -167,7 +167,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
migrationCompletion();
|
||||
|
||||
[StorageCoordinator postStorageIsReadyNotification];
|
||||
[storageCoordinator storageSetupDidComplete];
|
||||
|
||||
OWSAssertDebug(backgroundTask);
|
||||
backgroundTask = nil;
|
||||
|
||||
@ -112,6 +112,10 @@ extension YDBToGRDBMigration {
|
||||
return SSKEnvironment.shared.primaryStorage
|
||||
}
|
||||
|
||||
private var storageCoordinator: StorageCoordinator {
|
||||
return SSKEnvironment.shared.storageCoordinator
|
||||
}
|
||||
|
||||
// MARK: -
|
||||
|
||||
func run() throws {
|
||||
@ -176,8 +180,6 @@ extension YDBToGRDBMigration {
|
||||
}
|
||||
|
||||
func migrate(migratorGroups: [GRDBMigratorGroup]) throws {
|
||||
assert(OWSStorage.isStorageReady())
|
||||
|
||||
Logger.info("")
|
||||
|
||||
// We can't nest ydbTransactions in GRDB and vice-versa
|
||||
|
||||
@ -14,6 +14,10 @@ public class OWSScreenLock: NSObject {
|
||||
return SDSDatabaseStorage.shared
|
||||
}
|
||||
|
||||
private var storageCoordinator: StorageCoordinator {
|
||||
return SSKEnvironment.shared.storageCoordinator
|
||||
}
|
||||
|
||||
// MARK: -
|
||||
|
||||
public enum OWSScreenLockOutcome {
|
||||
@ -63,7 +67,7 @@ public class OWSScreenLock: NSObject {
|
||||
public func isScreenLockEnabled() -> Bool {
|
||||
AssertIsOnMainThread()
|
||||
|
||||
if !OWSStorage.isStorageReady() {
|
||||
if !storageCoordinator.isStorageReady {
|
||||
owsFailDebug("accessed screen lock state before storage is ready.")
|
||||
return false
|
||||
}
|
||||
@ -78,7 +82,7 @@ public class OWSScreenLock: NSObject {
|
||||
@objc
|
||||
public func setIsScreenLockEnabled(_ value: Bool) {
|
||||
AssertIsOnMainThread()
|
||||
assert(OWSStorage.isStorageReady())
|
||||
assert(storageCoordinator.isStorageReady)
|
||||
|
||||
databaseStorage.write { transaction in
|
||||
self.keyValueStore.setBool(value,
|
||||
@ -93,7 +97,7 @@ public class OWSScreenLock: NSObject {
|
||||
public func screenLockTimeout() -> TimeInterval {
|
||||
AssertIsOnMainThread()
|
||||
|
||||
if !OWSStorage.isStorageReady() {
|
||||
if !storageCoordinator.isStorageReady {
|
||||
owsFailDebug("accessed screen lock state before storage is ready.")
|
||||
return 0
|
||||
}
|
||||
@ -108,7 +112,7 @@ public class OWSScreenLock: NSObject {
|
||||
@objc
|
||||
public func setScreenLockTimeout(_ value: TimeInterval) {
|
||||
AssertIsOnMainThread()
|
||||
assert(OWSStorage.isStorageReady())
|
||||
assert(storageCoordinator.isStorageReady)
|
||||
|
||||
databaseStorage.write { transaction in
|
||||
self.keyValueStore.setDouble(value,
|
||||
|
||||
@ -27,6 +27,8 @@ NSString *NSStringFromStorageCoordinatorState(StorageCoordinatorState value);
|
||||
|
||||
@property (atomic, readonly) BOOL isMigrating;
|
||||
|
||||
@property (atomic, readonly) BOOL isStorageReady;
|
||||
|
||||
- (instancetype)init;
|
||||
|
||||
// These methods should only be called by the migration itself.
|
||||
@ -43,7 +45,7 @@ NSString *NSStringFromStorageCoordinatorState(StorageCoordinatorState value);
|
||||
- (void)useYDBForTests;
|
||||
#endif
|
||||
|
||||
+ (void)postStorageIsReadyNotification;
|
||||
- (void)storageSetupDidComplete;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@ -35,6 +35,8 @@ NSString *NSStringFromStorageCoordinatorState(StorageCoordinatorState value)
|
||||
|
||||
@property (atomic) StorageCoordinatorState state;
|
||||
|
||||
@property (atomic) BOOL isStorageSetupComplete;
|
||||
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
@ -191,7 +193,14 @@ NSString *NSStringFromStorageCoordinatorState(StorageCoordinatorState value)
|
||||
[OWSStorage deleteDBKeys];
|
||||
}
|
||||
|
||||
+ (void)postStorageIsReadyNotification
|
||||
- (void)storageSetupDidComplete
|
||||
{
|
||||
self.isStorageSetupComplete = YES;
|
||||
|
||||
[self postStorageIsReadyNotification];
|
||||
}
|
||||
|
||||
- (void)postStorageIsReadyNotification
|
||||
{
|
||||
OWSLogInfo(@"");
|
||||
|
||||
@ -203,6 +212,21 @@ NSString *NSStringFromStorageCoordinatorState(StorageCoordinatorState value)
|
||||
});
|
||||
}
|
||||
|
||||
- (BOOL)isStorageReady
|
||||
{
|
||||
switch (self.state) {
|
||||
case StorageCoordinatorStateYDB:
|
||||
case StorageCoordinatorStateYDBTests:
|
||||
return [OWSStorage isStorageReady] && self.isStorageSetupComplete;
|
||||
case StorageCoordinatorStateBeforeYDBToGRDBMigration:
|
||||
case StorageCoordinatorStateDuringYDBToGRDBMigration:
|
||||
return NO;
|
||||
case StorageCoordinatorStateGRDB:
|
||||
case StorageCoordinatorStateGRDBTests:
|
||||
return self.isStorageSetupComplete;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@ -26,6 +26,7 @@
|
||||
#import "StorageCoordinator.h"
|
||||
#import "TSAccountManager.h"
|
||||
#import "TSSocketManager.h"
|
||||
#import <SignalServiceKit/OWSBackgroundTask.h>
|
||||
#import <SignalServiceKit/ProfileManagerProtocol.h>
|
||||
#import <SignalServiceKit/SignalServiceKit-Swift.h>
|
||||
|
||||
@ -57,6 +58,9 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
- (instancetype)init
|
||||
{
|
||||
// Ensure that OWSBackgroundTaskManager is created now.
|
||||
[OWSBackgroundTaskManager sharedManager];
|
||||
|
||||
StorageCoordinator *storageCoordinator = [StorageCoordinator new];
|
||||
SDSDatabaseStorage *databaseStorage = storageCoordinator.databaseStorage;
|
||||
// Unlike AppSetup, we always load YDB in the tests.
|
||||
@ -136,6 +140,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
self.callMessageHandler = [OWSFakeCallMessageHandler new];
|
||||
self.notificationsManager = [NoopNotificationsManager new];
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
@ -144,6 +149,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
if (self.databaseStorage.canLoadYdb) {
|
||||
__block dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
|
||||
[OWSStorage registerExtensionsWithCompletionBlock:^() {
|
||||
[self.storageCoordinator storageSetupDidComplete];
|
||||
|
||||
dispatch_semaphore_signal(semaphore);
|
||||
}];
|
||||
|
||||
|
||||
@ -30,6 +30,10 @@ public class ShareViewController: UIViewController, ShareViewDelegate, SAEFailed
|
||||
return SSKEnvironment.shared.syncManager
|
||||
}
|
||||
|
||||
private var storageCoordinator: StorageCoordinator {
|
||||
return SSKEnvironment.shared.storageCoordinator
|
||||
}
|
||||
|
||||
// MARK: -
|
||||
|
||||
enum ShareViewControllerError: Error {
|
||||
@ -257,7 +261,7 @@ public class ShareViewController: UIViewController, ShareViewDelegate, SAEFailed
|
||||
guard areVersionMigrationsComplete else {
|
||||
return
|
||||
}
|
||||
guard OWSStorage.isStorageReady() else {
|
||||
guard storageCoordinator.isStorageReady else {
|
||||
return
|
||||
}
|
||||
guard !AppReadiness.isAppReady() else {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user