From 09f7a9df4e456b4261a0cd4851450237d07fc213 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Tue, 30 May 2017 13:03:56 -0400 Subject: [PATCH 1/2] Add incoming and outgoing message database views. // FREEBIE --- src/Storage/TSDatabaseView.h | 4 ++++ src/Storage/TSDatabaseView.m | 32 ++++++++++++++++++++++++++++++++ src/Storage/TSStorageManager.m | 2 ++ 3 files changed, 38 insertions(+) diff --git a/src/Storage/TSDatabaseView.h b/src/Storage/TSDatabaseView.h index f8f5268bc..e6645a460 100644 --- a/src/Storage/TSDatabaseView.h +++ b/src/Storage/TSDatabaseView.h @@ -14,6 +14,8 @@ extern NSString *TSSecondaryDevicesGroup; extern NSString *TSThreadDatabaseViewExtensionName; extern NSString *TSMessageDatabaseViewExtensionName; +extern NSString *TSThreadIncomingMessageDatabaseViewExtensionName; +extern NSString *TSThreadOutgoingMessageDatabaseViewExtensionName; extern NSString *TSUnreadDatabaseViewExtensionName; extern NSString *TSUnseenDatabaseViewExtensionName; extern NSString *TSDynamicMessagesDatabaseViewExtensionName; @@ -22,6 +24,8 @@ extern NSString *TSSecondaryDevicesDatabaseViewExtensionName; + (BOOL)registerThreadDatabaseView; + (BOOL)registerThreadInteractionsDatabaseView; ++ (BOOL)registerThreadIncomingMessagesDatabaseView; ++ (BOOL)registerThreadOutgoingMessagesDatabaseView; // Instances of OWSReadTracking for wasRead is NO and shouldAffectUnreadCounts is YES. // diff --git a/src/Storage/TSDatabaseView.m b/src/Storage/TSDatabaseView.m index 875b11c5f..43e6fd065 100644 --- a/src/Storage/TSDatabaseView.m +++ b/src/Storage/TSDatabaseView.m @@ -20,6 +20,8 @@ NSString *TSSecondaryDevicesGroup = @"TSSecondaryDevicesGroup"; NSString *TSThreadDatabaseViewExtensionName = @"TSThreadDatabaseViewExtensionName"; NSString *TSMessageDatabaseViewExtensionName = @"TSMessageDatabaseViewExtensionName"; +NSString *TSThreadIncomingMessageDatabaseViewExtensionName = @"TSThreadOutgoingMessageDatabaseViewExtensionName"; +NSString *TSThreadOutgoingMessageDatabaseViewExtensionName = @"TSThreadOutgoingMessageDatabaseViewExtensionName"; NSString *TSUnreadDatabaseViewExtensionName = @"TSUnreadDatabaseViewExtensionName"; NSString *TSUnseenDatabaseViewExtensionName = @"TSUnseenDatabaseViewExtensionName"; NSString *TSDynamicMessagesDatabaseViewExtensionName = @"TSDynamicMessagesDatabaseViewExtensionName"; @@ -145,6 +147,36 @@ NSString *TSSecondaryDevicesDatabaseViewExtensionName = @"TSSecondaryDevicesData version:@"1"]; } ++ (BOOL)registerThreadIncomingMessagesDatabaseView +{ + YapDatabaseViewGrouping *viewGrouping = [YapDatabaseViewGrouping withObjectBlock:^NSString *( + YapDatabaseReadTransaction *transaction, NSString *collection, NSString *key, id object) { + if ([object isKindOfClass:[TSIncomingMessage class]]) { + return ((TSIncomingMessage *)object).uniqueThreadId; + } + return nil; + }]; + + return [self registerMessageDatabaseViewWithName:TSThreadIncomingMessageDatabaseViewExtensionName + viewGrouping:viewGrouping + version:@"1"]; +} + ++ (BOOL)registerThreadOutgoingMessagesDatabaseView +{ + YapDatabaseViewGrouping *viewGrouping = [YapDatabaseViewGrouping withObjectBlock:^NSString *( + YapDatabaseReadTransaction *transaction, NSString *collection, NSString *key, id object) { + if ([object isKindOfClass:[TSOutgoingMessage class]]) { + return ((TSOutgoingMessage *)object).uniqueThreadId; + } + return nil; + }]; + + return [self registerMessageDatabaseViewWithName:TSThreadOutgoingMessageDatabaseViewExtensionName + viewGrouping:viewGrouping + version:@"1"]; +} + + (BOOL)registerThreadDatabaseView { YapDatabaseView *threadView = [[TSStorageManager sharedManager].database registeredExtension:TSThreadDatabaseViewExtensionName]; diff --git a/src/Storage/TSStorageManager.m b/src/Storage/TSStorageManager.m index 0a2e4a21b..5191e8187 100644 --- a/src/Storage/TSStorageManager.m +++ b/src/Storage/TSStorageManager.m @@ -198,6 +198,8 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass"; // Register extensions which are essential for rendering threads synchronously [TSDatabaseView registerThreadDatabaseView]; [TSDatabaseView registerThreadInteractionsDatabaseView]; + [TSDatabaseView registerThreadIncomingMessagesDatabaseView]; + [TSDatabaseView registerThreadOutgoingMessagesDatabaseView]; [TSDatabaseView registerUnreadDatabaseView]; [TSDatabaseView registerUnseenDatabaseView]; [TSDatabaseView registerDynamicMessagesDatabaseView]; From 32d97bc6c7a0e56f00eac7dab11351974f69d42b Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 31 May 2017 10:02:04 -0400 Subject: [PATCH 2/2] Respond to CR. // FREEBIE --- src/Contacts/TSThread.m | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/Contacts/TSThread.m b/src/Contacts/TSThread.m index 3dc7af0fa..9f6cf7553 100644 --- a/src/Contacts/TSThread.m +++ b/src/Contacts/TSThread.m @@ -225,16 +225,6 @@ NS_ASSUME_NONNULL_BEGIN return [messages copy]; } -- (NSArray > *)unreadMessages -{ - __block NSArray > *messages; - [self.dbConnection readWithBlock:^(YapDatabaseReadTransaction *_Nonnull transaction) { - messages = [self unreadMessagesWithTransaction:transaction]; - }]; - - return messages; -} - - (void)markAllAsReadWithTransaction:(YapDatabaseReadWriteTransaction *)transaction { for (id message in [self unseenMessagesWithTransaction:transaction]) {