From d01ec57f0e50ca33f8775bf5d71017327895c85b Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 3 Jan 2018 16:19:27 -0500 Subject: [PATCH] Fix storage reset. --- SignalServiceKit/src/Storage/OWSStorage.m | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) 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];