Continue TSStorageManager refactor.
This commit is contained in:
parent
b496a1095b
commit
85686d3144
|
@ -219,8 +219,6 @@ static NSString *const kURLHostVerifyPrefix = @"verify";
|
|||
[TSStorageManager migrateToSharedData];
|
||||
[OWSProfileManager migrateToSharedData];
|
||||
[TSAttachmentStream migrateToSharedData];
|
||||
|
||||
[OWSPreferences setIsReadyForAppExtensions:YES];
|
||||
}
|
||||
|
||||
- (void)startupLogging
|
||||
|
@ -764,6 +762,10 @@ static NSString *const kURLHostVerifyPrefix = @"verify";
|
|||
|
||||
[OWSProfileManager.sharedManager fetchLocalUsersProfile];
|
||||
[[OWSReadReceiptManager sharedManager] prepareCachedValues];
|
||||
|
||||
// Disable the SAE until the main app has successfully completed launch process
|
||||
// at least once in the post-SAE world.
|
||||
[OWSPreferences setIsReadyForAppExtensions];
|
||||
}
|
||||
|
||||
- (void)registrationStateDidChange
|
||||
|
|
|
@ -71,7 +71,7 @@
|
|||
#ifdef DEBUG
|
||||
__block NSUInteger threadCount;
|
||||
__block NSUInteger messageCount;
|
||||
[TSStorageManager.sharedManager.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
|
||||
[TSStorageManager.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
|
||||
threadCount = [[transaction ext:TSThreadDatabaseViewExtensionName] numberOfItemsInAllGroups];
|
||||
messageCount = [[transaction ext:TSMessageDatabaseViewExtensionName] numberOfItemsInAllGroups];
|
||||
}];
|
||||
|
|
|
@ -694,8 +694,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
NSMutableArray<TSInteraction *> *result = [NSMutableArray new];
|
||||
|
||||
[[TSStorageManager sharedManager].dbReadWriteConnection readWriteWithBlock:^(
|
||||
YapDatabaseReadWriteTransaction *transaction) {
|
||||
[TSStorageManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
|
||||
if ([thread isKindOfClass:[TSContactThread class]]) {
|
||||
TSContactThread *contactThread = (TSContactThread *)thread;
|
||||
|
@ -836,12 +835,11 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
OWSAssert(thread);
|
||||
|
||||
NSArray<TSInteraction *> *messages = [self unsavedSystemMessagesInThread:thread];
|
||||
[[TSStorageManager sharedManager].dbReadWriteConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
for (TSInteraction *message in messages) {
|
||||
[message saveWithTransaction:transaction];
|
||||
}
|
||||
}];
|
||||
[TSStorageManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
for (TSInteraction *message in messages) {
|
||||
[message saveWithTransaction:transaction];
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
+ (void)createSystemMessageInThread:(TSThread *)thread
|
||||
|
@ -850,10 +848,9 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
NSArray<TSInteraction *> *messages = [self unsavedSystemMessagesInThread:thread];
|
||||
TSInteraction *message = messages[(NSUInteger)arc4random_uniform((uint32_t)messages.count)];
|
||||
[[TSStorageManager sharedManager].dbReadWriteConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
[message saveWithTransaction:transaction];
|
||||
}];
|
||||
[TSStorageManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
[message saveWithTransaction:transaction];
|
||||
}];
|
||||
}
|
||||
|
||||
+ (void)sendTextAndSystemMessages:(int)counter thread:(TSThread *)thread
|
||||
|
@ -912,8 +909,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
+ (void)createFakeUnreadMessages:(int)counter thread:(TSThread *)thread
|
||||
{
|
||||
[TSStorageManager.sharedManager.dbReadWriteConnection readWriteWithBlock:^(
|
||||
YapDatabaseReadWriteTransaction *transaction) {
|
||||
[TSStorageManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
for (int i = 0; i < counter; i++) {
|
||||
NSString *randomText = [self randomText];
|
||||
TSIncomingMessage *message = [[TSIncomingMessage alloc] initWithTimestamp:[NSDate ows_millisecondTimeStamp]
|
||||
|
@ -947,10 +943,9 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
+ (void)sendFakeMessages:(NSUInteger)counter thread:(TSThread *)thread
|
||||
{
|
||||
[TSStorageManager.sharedManager.dbReadWriteConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
[self sendFakeMessages:counter thread:thread transaction:transaction];
|
||||
}];
|
||||
[TSStorageManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
[self sendFakeMessages:counter thread:thread transaction:transaction];
|
||||
}];
|
||||
}
|
||||
|
||||
+ (void)sendFakeMessages:(NSUInteger)counter
|
||||
|
@ -1045,8 +1040,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
return;
|
||||
}
|
||||
|
||||
[TSStorageManager.sharedManager.dbReadWriteConnection readWriteWithBlock:^(
|
||||
YapDatabaseReadWriteTransaction *transaction) {
|
||||
[TSStorageManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
TSOutgoingMessage *message = [[TSOutgoingMessage alloc] initWithTimestamp:[NSDate ows_millisecondTimeStamp]
|
||||
inThread:thread
|
||||
isVoiceMessage:NO
|
||||
|
@ -1114,7 +1108,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
[[TSGroupModel alloc] initWithTitle:groupName memberIds:recipientIds image:nil groupId:groupId];
|
||||
|
||||
__block TSGroupThread *thread;
|
||||
[[TSStorageManager sharedManager].dbReadWriteConnection
|
||||
[TSStorageManager.dbReadWriteConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
|
||||
thread = [TSGroupThread getOrCreateThreadWithGroupModel:groupModel transaction:transaction];
|
||||
}];
|
||||
|
@ -1258,14 +1252,13 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
[self resurrectNewOutgoingMessages2:messageCount thread:thread transaction:transaction];
|
||||
},
|
||||
];
|
||||
[TSStorageManager.sharedManager.dbReadWriteConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
int actionCount = 1 + (int)arc4random_uniform(3);
|
||||
for (int actionIdx = 0; actionIdx < actionCount; actionIdx++) {
|
||||
ActionBlock actionBlock = actionBlocks[(NSUInteger)arc4random_uniform((uint32_t)actionBlocks.count)];
|
||||
actionBlock(transaction);
|
||||
}
|
||||
}];
|
||||
[TSStorageManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
int actionCount = 1 + (int)arc4random_uniform(3);
|
||||
for (int actionIdx = 0; actionIdx < actionCount; actionIdx++) {
|
||||
ActionBlock actionBlock = actionBlocks[(NSUInteger)arc4random_uniform((uint32_t)actionBlocks.count)];
|
||||
actionBlock(transaction);
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
+ (void)deleteRandomMessages:(NSUInteger)count
|
||||
|
@ -1414,15 +1407,14 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
DDLogInfo(@"%@ resurrectNewOutgoingMessages1.2: %zd", self.logTag, count);
|
||||
[TSStorageManager.sharedManager.dbReadWriteConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
for (TSOutgoingMessage *message in messages) {
|
||||
[message removeWithTransaction:transaction];
|
||||
}
|
||||
for (TSOutgoingMessage *message in messages) {
|
||||
[message saveWithTransaction:transaction];
|
||||
}
|
||||
}];
|
||||
[TSStorageManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
for (TSOutgoingMessage *message in messages) {
|
||||
[message removeWithTransaction:transaction];
|
||||
}
|
||||
for (TSOutgoingMessage *message in messages) {
|
||||
[message saveWithTransaction:transaction];
|
||||
}
|
||||
}];
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -1455,20 +1447,18 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
DDLogInfo(@"%@ resurrectNewOutgoingMessages2.2: %zd", self.logTag, count);
|
||||
[TSStorageManager.sharedManager.dbReadWriteConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
for (TSOutgoingMessage *message in messages) {
|
||||
[message removeWithTransaction:transaction];
|
||||
}
|
||||
}];
|
||||
[TSStorageManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
for (TSOutgoingMessage *message in messages) {
|
||||
[message removeWithTransaction:transaction];
|
||||
}
|
||||
}];
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
DDLogInfo(@"%@ resurrectNewOutgoingMessages2.3: %zd", self.logTag, count);
|
||||
[TSStorageManager.sharedManager.dbReadWriteConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
for (TSOutgoingMessage *message in messages) {
|
||||
[message saveWithTransaction:transaction];
|
||||
}
|
||||
}];
|
||||
[TSStorageManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
for (TSOutgoingMessage *message in messages) {
|
||||
[message saveWithTransaction:transaction];
|
||||
}
|
||||
}];
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
|
@ -118,7 +118,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
+ (void)clearHasDismissedOffers
|
||||
{
|
||||
[TSStorageManager.sharedManager.dbReadWriteConnection
|
||||
[TSStorageManager.dbReadWriteConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
|
||||
NSMutableArray<TSContactThread *> *contactThreads = [NSMutableArray new];
|
||||
[transaction
|
||||
|
|
|
@ -475,15 +475,15 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
+ (void)hallucinateTwinGroup:(TSGroupThread *)groupThread
|
||||
{
|
||||
__block TSGroupThread *thread;
|
||||
[[TSStorageManager sharedManager].dbReadWriteConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
|
||||
TSGroupModel *groupModel =
|
||||
[[TSGroupModel alloc] initWithTitle:[groupThread.groupModel.groupName stringByAppendingString:@" Copy"]
|
||||
memberIds:[groupThread.groupModel.groupMemberIds mutableCopy]
|
||||
image:groupThread.groupModel.groupImage
|
||||
groupId:[SecurityUtils generateRandomBytes:16]];
|
||||
thread = [TSGroupThread getOrCreateThreadWithGroupModel:groupModel transaction:transaction];
|
||||
}];
|
||||
[TSStorageManager.dbReadWriteConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
|
||||
TSGroupModel *groupModel =
|
||||
[[TSGroupModel alloc] initWithTitle:[groupThread.groupModel.groupName stringByAppendingString:@" Copy"]
|
||||
memberIds:[groupThread.groupModel.groupMemberIds mutableCopy]
|
||||
image:groupThread.groupModel.groupImage
|
||||
groupId:[SecurityUtils generateRandomBytes:16]];
|
||||
thread = [TSGroupThread getOrCreateThreadWithGroupModel:groupModel transaction:transaction];
|
||||
}];
|
||||
OWSAssert(thread);
|
||||
|
||||
[SignalApp.sharedApp presentConversationForThread:thread];
|
||||
|
|
|
@ -446,7 +446,7 @@ const NSUInteger kNewGroupViewControllerAvatarWidth = 68;
|
|||
TSGroupModel *model = [self makeGroup];
|
||||
|
||||
__block TSGroupThread *thread;
|
||||
[[TSStorageManager sharedManager].dbReadWriteConnection
|
||||
[TSStorageManager.dbReadWriteConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
|
||||
thread = [TSGroupThread getOrCreateThreadWithGroupModel:model transaction:transaction];
|
||||
}];
|
||||
|
|
|
@ -172,7 +172,7 @@
|
|||
|
||||
DispatchMainThreadSafe(^{
|
||||
__block TSThread *thread = nil;
|
||||
[[TSStorageManager sharedManager].dbReadWriteConnection
|
||||
[TSStorageManager.dbReadWriteConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
|
||||
thread = [TSContactThread getOrCreateThreadWithContactId:recipientId transaction:transaction];
|
||||
}];
|
||||
|
|
|
@ -269,7 +269,7 @@ NSString *const Signal_Message_MarkAsRead_Identifier = @"Signal_Message_MarkAsRe
|
|||
NSString *threadId = userInfo[Signal_Thread_UserInfo_Key];
|
||||
|
||||
TSThread *thread = [TSThread fetchObjectWithUniqueID:threadId];
|
||||
[[TSStorageManager sharedManager].dbReadWriteConnection
|
||||
[TSStorageManager.dbReadWriteConnection
|
||||
asyncReadWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
|
||||
// TODO: I suspect we only want to mark the message in
|
||||
// question as read.
|
||||
|
|
|
@ -263,7 +263,7 @@
|
|||
|
||||
DispatchMainThreadSafe(^{
|
||||
__block TSThread *thread = nil;
|
||||
[[TSStorageManager sharedManager].dbReadWriteConnection
|
||||
[TSStorageManager.dbReadWriteConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
|
||||
thread = [TSContactThread getOrCreateThreadWithContactId:recipientId transaction:transaction];
|
||||
}];
|
||||
|
@ -283,7 +283,7 @@
|
|||
|
||||
DispatchMainThreadSafe(^{
|
||||
__block TSThread *thread = nil;
|
||||
[[TSStorageManager sharedManager].dbReadWriteConnection
|
||||
[TSStorageManager.dbReadWriteConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
|
||||
thread = [[transaction ext:TSThreadDatabaseViewExtensionName] firstObjectInGroup:[TSThread collection]];
|
||||
}];
|
||||
|
|
|
@ -244,7 +244,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
{
|
||||
if (!_nonSignalContacts) {
|
||||
NSMutableSet<Contact *> *nonSignalContacts = [NSMutableSet new];
|
||||
[[TSStorageManager sharedManager].dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
|
||||
[TSStorageManager.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
|
||||
for (Contact *contact in self.contactsManager.allContactsMap.allValues) {
|
||||
NSArray<SignalRecipient *> *signalRecipients = [contact signalRecipientsWithTransaction:transaction];
|
||||
if (signalRecipients.count < 1) {
|
||||
|
|
|
@ -229,10 +229,9 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
}
|
||||
|
||||
__block TSThread *thread = nil;
|
||||
[[TSStorageManager sharedManager].dbReadWriteConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
thread = [TSContactThread getOrCreateThreadWithContactId:signalAccount.recipientId transaction:transaction];
|
||||
}];
|
||||
[TSStorageManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
thread = [TSContactThread getOrCreateThreadWithContactId:signalAccount.recipientId transaction:transaction];
|
||||
}];
|
||||
OWSAssert(thread);
|
||||
|
||||
[self.selectThreadViewDelegate threadWasSelected:thread];
|
||||
|
|
|
@ -180,7 +180,7 @@
|
|||
NSError *deleteError;
|
||||
if ([fm removeItemAtPath:bloomFilterPath error:&deleteError]) {
|
||||
DDLogInfo(@"Successfully removed bloom filter cache.");
|
||||
[[TSStorageManager sharedManager].dbReadWriteConnection
|
||||
[TSStorageManager.dbReadWriteConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
|
||||
[transaction removeAllObjectsInCollection:@"TSRecipient"];
|
||||
}];
|
||||
|
|
|
@ -28,7 +28,7 @@ extern NSString *const OWSPreferencesKeyEnableDebugLog;
|
|||
#pragma mark - Specific Preferences
|
||||
|
||||
+ (BOOL)isReadyForAppExtensions;
|
||||
+ (void)setIsReadyForAppExtensions:(BOOL)value;
|
||||
+ (void)setIsReadyForAppExtensions;
|
||||
|
||||
// TSAccountManager is the source of truth; this is less reliable
|
||||
// and should only be used in edge cases where the database is not
|
||||
|
|
|
@ -23,7 +23,7 @@ NSString *const OWSPreferencesKeyCallKitPrivacyEnabled = @"CallKitPrivacyEnabled
|
|||
NSString *const OWSPreferencesKeyCallsHideIPAddress = @"CallsHideIPAddress";
|
||||
NSString *const OWSPreferencesKeyHasDeclinedNoContactsView = @"hasDeclinedNoContactsView";
|
||||
NSString *const OWSPreferencesKeyIOSUpgradeNagVersion = @"iOSUpgradeNagVersion";
|
||||
NSString *const OWSPreferencesKey_IsReadyForAppExtensions = @"isReadyForAppExtensions";
|
||||
NSString *const OWSPreferencesKey_IsReadyForAppExtensions = @"isReadyForAppExtensions2";
|
||||
NSString *const OWSPreferencesKey_IsRegistered = @"OWSPreferencesKey_IsRegistered";
|
||||
|
||||
@implementation OWSPreferences
|
||||
|
@ -75,9 +75,9 @@ NSString *const OWSPreferencesKey_IsRegistered = @"OWSPreferencesKey_IsRegistere
|
|||
}
|
||||
}
|
||||
|
||||
+ (void)setIsReadyForAppExtensions:(BOOL)value
|
||||
+ (void)setIsReadyForAppExtensions
|
||||
{
|
||||
[NSUserDefaults.appUserDefaults setObject:@(value) forKey:OWSPreferencesKey_IsReadyForAppExtensions];
|
||||
[NSUserDefaults.appUserDefaults setObject:@(YES) forKey:OWSPreferencesKey_IsReadyForAppExtensions];
|
||||
[NSUserDefaults.appUserDefaults synchronize];
|
||||
}
|
||||
|
||||
|
|
|
@ -268,7 +268,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
- (NSArray<NSString *> *)textSecureIdentifiers {
|
||||
__block NSMutableArray *identifiers = [NSMutableArray array];
|
||||
|
||||
[[TSStorageManager sharedManager].dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
|
||||
[TSStorageManager.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
|
||||
for (PhoneNumber *number in self.parsedPhoneNumbers) {
|
||||
if ([SignalRecipient recipientWithTextSecureIdentifier:number.toE164 withTransaction:transaction]) {
|
||||
[identifiers addObject:number.toE164];
|
||||
|
|
|
@ -122,11 +122,10 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
}
|
||||
|
||||
NSMutableSet *recipientIds = [NSMutableSet set];
|
||||
[[TSStorageManager sharedManager].dbReadConnection
|
||||
readWithBlock:^(YapDatabaseReadTransaction *_Nonnull transaction) {
|
||||
NSArray *allRecipientKeys = [transaction allKeysInCollection:[SignalRecipient collection]];
|
||||
[recipientIds addObjectsFromArray:allRecipientKeys];
|
||||
}];
|
||||
[TSStorageManager.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *_Nonnull transaction) {
|
||||
NSArray *allRecipientKeys = [transaction allKeysInCollection:[SignalRecipient collection]];
|
||||
[recipientIds addObjectsFromArray:allRecipientKeys];
|
||||
}];
|
||||
|
||||
NSMutableSet<NSString *> *allContacts = [[abPhoneNumbers setByAddingObjectsFromSet:recipientIds] mutableCopy];
|
||||
|
||||
|
@ -135,7 +134,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
[recipientIds minusSet:matchedIds];
|
||||
|
||||
// Cleaning up unregistered identifiers
|
||||
[[TSStorageManager sharedManager].dbReadWriteConnection
|
||||
[TSStorageManager.dbReadWriteConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
for (NSString *identifier in recipientIds) {
|
||||
SignalRecipient *recipient =
|
||||
|
@ -185,7 +184,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
}
|
||||
|
||||
// Insert or update contact attributes
|
||||
[[TSStorageManager sharedManager].dbReadWriteConnection
|
||||
[TSStorageManager.dbReadWriteConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
for (NSString *identifier in attributesForIdentifier) {
|
||||
SignalRecipient *recipient = [SignalRecipient recipientWithTextSecureIdentifier:identifier
|
||||
|
|
|
@ -246,7 +246,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
- (TSInteraction *) lastInteraction {
|
||||
__block TSInteraction *last;
|
||||
[TSStorageManager.sharedManager.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
|
||||
[TSStorageManager.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
|
||||
last = [[transaction ext:TSMessageDatabaseViewExtensionName] lastObjectInGroup:self.uniqueId];
|
||||
}];
|
||||
return last;
|
||||
|
@ -255,7 +255,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
- (TSInteraction *)lastInteractionForInbox
|
||||
{
|
||||
__block TSInteraction *last = nil;
|
||||
[TSStorageManager.sharedManager.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
|
||||
[TSStorageManager.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
|
||||
[[transaction ext:TSMessageDatabaseViewExtensionName]
|
||||
enumerateRowsInGroup:self.uniqueId
|
||||
withOptions:NSEnumerationReverse
|
||||
|
|
|
@ -20,16 +20,14 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
// TODO: Deprecate?
|
||||
- (nullable YapDatabaseConnection *)newDatabaseConnection;
|
||||
|
||||
// TODO: Deprecate.
|
||||
@property (nullable, nonatomic, readonly) YapDatabaseConnection *dbReadConnection;
|
||||
@property (nullable, nonatomic, readonly) YapDatabaseConnection *dbReadWriteConnection;
|
||||
|
||||
- (BOOL)registerExtension:(YapDatabaseExtension *)extension withName:(NSString *)extensionName;
|
||||
- (void)asyncRegisterExtension:(YapDatabaseExtension *)extension
|
||||
withName:(NSString *)extensionName
|
||||
completionBlock:(nullable void (^)(BOOL ready))completionBlock;
|
||||
- (nullable id)registeredExtension:(NSString *)extensionName;
|
||||
|
||||
- (void)resetStorage;
|
||||
|
||||
#pragma mark - Password
|
||||
|
||||
/**
|
||||
|
|
|
@ -243,27 +243,27 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass";
|
|||
{
|
||||
self = [super init];
|
||||
|
||||
if (![self tryToLoadDatabase]) {
|
||||
// Failing to load the database is catastrophic.
|
||||
//
|
||||
// The best we can try to do is to discard the current database
|
||||
// and behave like a clean install.
|
||||
OWSProdCritical([OWSAnalyticsEvents storageErrorCouldNotLoadDatabase]);
|
||||
|
||||
// Try to reset app by deleting database.
|
||||
// Disabled resetting storage until we have better data on why this happens.
|
||||
// [self resetAllStorage];
|
||||
|
||||
if (self) {
|
||||
if (![self tryToLoadDatabase]) {
|
||||
OWSProdCritical([OWSAnalyticsEvents storageErrorCouldNotLoadDatabaseSecondAttempt]);
|
||||
// Failing to load the database is catastrophic.
|
||||
//
|
||||
// The best we can try to do is to discard the current database
|
||||
// and behave like a clean install.
|
||||
OWSProdCritical([OWSAnalyticsEvents storageErrorCouldNotLoadDatabase]);
|
||||
|
||||
// Sleep to give analytics events time to be delivered.
|
||||
[NSThread sleepForTimeInterval:15.0f];
|
||||
// Try to reset app by deleting database.
|
||||
// Disabled resetting storage until we have better data on why this happens.
|
||||
// [self resetAllStorage];
|
||||
|
||||
[NSException raise:OWSStorageExceptionName_NoDatabase format:@"Failed to initialize database."];
|
||||
if (![self tryToLoadDatabase]) {
|
||||
OWSProdCritical([OWSAnalyticsEvents storageErrorCouldNotLoadDatabaseSecondAttempt]);
|
||||
|
||||
// Sleep to give analytics events time to be delivered.
|
||||
[NSThread sleepForTimeInterval:15.0f];
|
||||
|
||||
[NSException raise:OWSStorageExceptionName_NoDatabase format:@"Failed to initialize database."];
|
||||
}
|
||||
}
|
||||
|
||||
OWSSingletonAssert();
|
||||
}
|
||||
|
||||
return self;
|
||||
|
@ -302,8 +302,6 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass";
|
|||
}
|
||||
|
||||
_database = database;
|
||||
_dbReadConnection = self.newDatabaseConnection;
|
||||
_dbReadWriteConnection = self.newDatabaseConnection;
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
@ -369,9 +367,6 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass";
|
|||
{
|
||||
self.database = nil;
|
||||
|
||||
_dbReadConnection = nil;
|
||||
_dbReadWriteConnection = nil;
|
||||
|
||||
[self deleteDatabaseFile];
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
*/
|
||||
- (void)setupDatabaseWithSafeBlockingMigrations:(void (^_Nonnull)(void))safeBlockingMigrationsBlock;
|
||||
|
||||
// TODO: Deprecate.
|
||||
- (YapDatabaseConnection *)dbReadConnection;
|
||||
- (YapDatabaseConnection *)dbReadWriteConnection;
|
||||
+ (YapDatabaseConnection *)dbReadConnection;
|
||||
+ (YapDatabaseConnection *)dbReadWriteConnection;
|
||||
|
||||
|
|
|
@ -28,6 +28,15 @@ NSString *const TSStorageManagerExceptionName_CouldNotCreateDatabaseDirectory
|
|||
|
||||
#pragma mark -
|
||||
|
||||
@interface TSStorageManager ()
|
||||
|
||||
@property (nonatomic, readonly) YapDatabaseConnection *dbReadConnection;
|
||||
@property (nonatomic, readonly) YapDatabaseConnection *dbReadWriteConnection;
|
||||
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
|
||||
@implementation TSStorageManager
|
||||
|
||||
+ (instancetype)sharedManager {
|
||||
|
@ -43,6 +52,28 @@ NSString *const TSStorageManagerExceptionName_CouldNotCreateDatabaseDirectory
|
|||
return sharedManager;
|
||||
}
|
||||
|
||||
- (instancetype)initStorage
|
||||
{
|
||||
self = [super initStorage];
|
||||
|
||||
if (self) {
|
||||
_dbReadConnection = self.newDatabaseConnection;
|
||||
_dbReadWriteConnection = self.newDatabaseConnection;
|
||||
|
||||
OWSSingletonAssert();
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)resetStorage
|
||||
{
|
||||
_dbReadConnection = nil;
|
||||
_dbReadWriteConnection = nil;
|
||||
|
||||
[super resetStorage];
|
||||
}
|
||||
|
||||
- (void)setupDatabaseWithSafeBlockingMigrations:(void (^_Nonnull)(void))safeBlockingMigrationsBlock
|
||||
{
|
||||
// Synchronously register extensions which are essential for views.
|
||||
|
@ -193,12 +224,12 @@ NSString *const TSStorageManagerExceptionName_CouldNotCreateDatabaseDirectory
|
|||
|
||||
+ (YapDatabaseConnection *)dbReadConnection
|
||||
{
|
||||
return TSStorageManager.sharedManager.dbReadConnection;
|
||||
return TSStorageManager.dbReadConnection;
|
||||
}
|
||||
|
||||
+ (YapDatabaseConnection *)dbReadWriteConnection
|
||||
{
|
||||
return TSStorageManager.sharedManager.dbReadWriteConnection;
|
||||
return TSStorageManager.dbReadWriteConnection;
|
||||
}
|
||||
|
||||
- (void)deleteDatabaseFile
|
||||
|
|
Loading…
Reference in New Issue