diff --git a/SignalServiceKit/src/Storage/OWSStorage.m b/SignalServiceKit/src/Storage/OWSStorage.m index 683406e88..bbd4935cf 100644 --- a/SignalServiceKit/src/Storage/OWSStorage.m +++ b/SignalServiceKit/src/Storage/OWSStorage.m @@ -1,5 +1,5 @@ // -// Copyright (c) 2017 Open Whisper Systems. All rights reserved. +// Copyright (c) 2018 Open Whisper Systems. All rights reserved. // #import "OWSStorage.h" @@ -23,6 +23,7 @@ NSString *const OWSStorageExceptionName_DatabasePasswordInaccessibleWhileBackgro NSString *const OWSStorageExceptionName_DatabasePasswordUnwritable = @"OWSStorageExceptionName_DatabasePasswordUnwritable"; NSString *const OWSStorageExceptionName_NoDatabase = @"OWSStorageExceptionName_NoDatabase"; +NSString *const OWSResetStorageNotification = @"OWSResetStorageNotification"; static NSString *keychainService = @"TSKeyChainService"; static NSString *keychainDBPassAccount = @"TSDatabasePass"; @@ -270,11 +271,21 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass"; [NSException raise:OWSStorageExceptionName_NoDatabase format:@"Failed to initialize database."]; } } + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(resetStorage) + name:OWSResetStorageNotification + object:nil]; } return self; } +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + - (BOOL)areAsyncRegistrationsComplete { OWS_ABSTRACT_METHOD(); @@ -450,9 +461,7 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass"; + (void)resetAllStorage { - for (OWSStorage *storage in self.allStorages) { - [storage resetStorage]; - } + [[NSNotificationCenter defaultCenter] postNotificationName:OWSResetStorageNotification object:nil]; // This might be redundant but in the spirit of thoroughness... [self deleteDatabaseFiles];