From bf07a8401e74ad32b25bdec1ab7ab2fc35ba3bf8 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 14 Jun 2017 09:50:36 -0400 Subject: [PATCH] Remove an unnecessary database view. // FREEBIE. --- src/Contacts/TSThread.m | 18 ++++++++++++++++-- src/Storage/TSDatabaseView.h | 2 -- src/Storage/TSDatabaseView.m | 22 ---------------------- src/Storage/TSStorageManager.m | 3 +-- 4 files changed, 17 insertions(+), 28 deletions(-) diff --git a/src/Contacts/TSThread.m b/src/Contacts/TSThread.m index 643dfd203..c0610d294 100644 --- a/src/Contacts/TSThread.m +++ b/src/Contacts/TSThread.m @@ -245,9 +245,23 @@ NS_ASSUME_NONNULL_BEGIN - (TSInteraction *)lastInteractionForInbox { - __block TSInteraction *last; + __block TSInteraction *last = nil; [TSStorageManager.sharedManager.dbConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) { - last = [[transaction ext:TSThreadInboxMessagesDatabaseViewExtensionName] lastObjectInGroup:self.uniqueId]; + [[transaction ext:TSMessageDatabaseViewExtensionName] + enumerateRowsInGroup:self.uniqueId + withOptions:NSEnumerationReverse + usingBlock:^( + NSString *collection, NSString *key, id object, id metadata, NSUInteger index, BOOL *stop) { + + OWSAssert([object isKindOfClass:[TSInteraction class]]); + + TSInteraction *interaction = (TSInteraction *)object; + + if ([TSThread shouldInteractionAppearInInbox:interaction]) { + last = interaction; + *stop = YES; + } + }]; }]; return last; } diff --git a/src/Storage/TSDatabaseView.h b/src/Storage/TSDatabaseView.h index c561e1c32..e6645a460 100644 --- a/src/Storage/TSDatabaseView.h +++ b/src/Storage/TSDatabaseView.h @@ -14,7 +14,6 @@ extern NSString *TSSecondaryDevicesGroup; extern NSString *TSThreadDatabaseViewExtensionName; extern NSString *TSMessageDatabaseViewExtensionName; -extern NSString *TSThreadInboxMessagesDatabaseViewExtensionName; extern NSString *TSThreadIncomingMessageDatabaseViewExtensionName; extern NSString *TSThreadOutgoingMessageDatabaseViewExtensionName; extern NSString *TSUnreadDatabaseViewExtensionName; @@ -25,7 +24,6 @@ extern NSString *TSSecondaryDevicesDatabaseViewExtensionName; + (BOOL)registerThreadDatabaseView; + (BOOL)registerThreadInteractionsDatabaseView; -+ (BOOL)registerThreadInboxMessageDatabaseView; + (BOOL)registerThreadIncomingMessagesDatabaseView; + (BOOL)registerThreadOutgoingMessagesDatabaseView; diff --git a/src/Storage/TSDatabaseView.m b/src/Storage/TSDatabaseView.m index c5b0141c1..43e6fd065 100644 --- a/src/Storage/TSDatabaseView.m +++ b/src/Storage/TSDatabaseView.m @@ -20,7 +20,6 @@ NSString *TSSecondaryDevicesGroup = @"TSSecondaryDevicesGroup"; NSString *TSThreadDatabaseViewExtensionName = @"TSThreadDatabaseViewExtensionName"; NSString *TSMessageDatabaseViewExtensionName = @"TSMessageDatabaseViewExtensionName"; -NSString *TSThreadInboxMessagesDatabaseViewExtensionName = @"TSThreadInboxMessagesDatabaseViewExtensionName"; NSString *TSThreadIncomingMessageDatabaseViewExtensionName = @"TSThreadOutgoingMessageDatabaseViewExtensionName"; NSString *TSThreadOutgoingMessageDatabaseViewExtensionName = @"TSThreadOutgoingMessageDatabaseViewExtensionName"; NSString *TSUnreadDatabaseViewExtensionName = @"TSUnreadDatabaseViewExtensionName"; @@ -148,27 +147,6 @@ NSString *TSSecondaryDevicesDatabaseViewExtensionName = @"TSSecondaryDevicesData version:@"1"]; } -+ (BOOL)registerThreadInboxMessageDatabaseView -{ - YapDatabaseViewGrouping *viewGrouping = [YapDatabaseViewGrouping withObjectBlock:^NSString *( - YapDatabaseReadTransaction *transaction, NSString *collection, NSString *key, id object) { - if ([object isKindOfClass:[TSInteraction class]]) { - TSInteraction *interaction = (TSInteraction *)object; - if (![TSThread shouldInteractionAppearInInbox:interaction]) { - return nil; - } - return interaction.uniqueThreadId; - } else { - OWSAssert(0); - } - return nil; - }]; - - return [self registerMessageDatabaseViewWithName:TSThreadInboxMessagesDatabaseViewExtensionName - viewGrouping:viewGrouping - version:@"1"]; -} - + (BOOL)registerThreadIncomingMessagesDatabaseView { YapDatabaseViewGrouping *viewGrouping = [YapDatabaseViewGrouping withObjectBlock:^NSString *( diff --git a/src/Storage/TSStorageManager.m b/src/Storage/TSStorageManager.m index 01c3e55b1..5d0cd5ef7 100644 --- a/src/Storage/TSStorageManager.m +++ b/src/Storage/TSStorageManager.m @@ -193,10 +193,9 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass"; - (void)setupDatabase { - // Register extensions which are essential for rendering threads synchronously + // Synchronously register extensions which are essential for views. [TSDatabaseView registerThreadDatabaseView]; [TSDatabaseView registerThreadInteractionsDatabaseView]; - [TSDatabaseView registerThreadInboxMessageDatabaseView]; [TSDatabaseView registerThreadIncomingMessagesDatabaseView]; [TSDatabaseView registerThreadOutgoingMessagesDatabaseView]; [TSDatabaseView registerUnreadDatabaseView];