Hide empty conversations in home view.

// FREEBIE
pull/1/head
Matthew Chen 8 years ago
parent 6dff283de4
commit 103a7fab36

@ -1 +1 @@
Subproject commit fc8eebb92367031f60ea337c897551cc54baa4b2 Subproject commit c9f5152a2ed8516c3f23364105135c048f901553

@ -528,9 +528,6 @@ typedef enum : NSUInteger {
// We need to update the dynamic interactions before we do any layout. // We need to update the dynamic interactions before we do any layout.
[self ensureDynamicInteractions]; [self ensureDynamicInteractions];
// Triggering modified notification renders "call notification" when leaving full screen call view
[self.thread touch];
[self ensureBannerState]; [self ensureBannerState];
[super viewWillAppear:animated]; [super viewWillAppear:animated];

@ -25,7 +25,8 @@ extern NSString *const TSSecondaryDevicesDatabaseViewExtensionName;
+ (BOOL)hasPendingViewRegistrations; + (BOOL)hasPendingViewRegistrations;
+ (void)registerThreadDatabaseView; // This method must be called _AFTER_ registerThreadInteractionsDatabaseView.
+ (void)asyncRegisterThreadDatabaseView;
+ (void)registerThreadInteractionsDatabaseView; + (void)registerThreadInteractionsDatabaseView;
+ (void)asyncRegisterThreadOutgoingMessagesDatabaseView; + (void)asyncRegisterThreadOutgoingMessagesDatabaseView;

@ -82,6 +82,7 @@ NSString *const TSSecondaryDevicesDatabaseViewExtensionName = @"TSSecondaryDevic
YapDatabaseView *existingView = [[TSStorageManager sharedManager].database registeredExtension:viewName]; YapDatabaseView *existingView = [[TSStorageManager sharedManager].database registeredExtension:viewName];
if (existingView) { if (existingView) {
OWSFail(@"Registered database view twice: %@", viewName);
return; return;
} }
@ -206,29 +207,37 @@ NSString *const TSSecondaryDevicesDatabaseViewExtensionName = @"TSSecondaryDevic
async:YES]; async:YES];
} }
+ (void)registerThreadDatabaseView + (void)asyncRegisterThreadDatabaseView
{ {
YapDatabaseView *threadView = YapDatabaseView *threadView =
[[TSStorageManager sharedManager].database registeredExtension:TSThreadDatabaseViewExtensionName]; [[TSStorageManager sharedManager].database registeredExtension:TSThreadDatabaseViewExtensionName];
if (threadView) { if (threadView) {
OWSFail(@"Registered database view twice: %@", TSThreadDatabaseViewExtensionName);
return; return;
} }
YapDatabaseViewGrouping *viewGrouping = [YapDatabaseViewGrouping YapDatabaseViewGrouping *viewGrouping = [YapDatabaseViewGrouping withObjectBlock:^NSString *(
withObjectBlock:^NSString *( YapDatabaseReadTransaction *transaction, NSString *collection, NSString *key, id object) {
YapDatabaseReadTransaction *transaction, NSString *collection, NSString *key, id object) { if (![object isKindOfClass:[TSThread class]]) {
if ([object isKindOfClass:[TSThread class]]) { return nil;
TSThread *thread = (TSThread *)object; }
if (thread.archivalDate) {
return ([self threadShouldBeInInbox:thread]) ? TSInboxGroup : TSArchiveGroup; TSThread *thread = (TSThread *)object;
} else if (thread.archivalDate) {
return TSArchiveGroup; YapDatabaseViewTransaction *viewTransaction = [transaction ext:TSMessageDatabaseViewExtensionName];
} else { NSUInteger threadMessageCount = [viewTransaction numberOfItemsInGroup:thread.uniqueId];
return TSInboxGroup; if (threadMessageCount < 1) {
} return nil;
} }
return nil;
}]; if (thread.archivalDate) {
return ([self threadShouldBeInInbox:thread]) ? TSInboxGroup : TSArchiveGroup;
} else if (thread.archivalDate) {
return TSArchiveGroup;
} else {
return TSInboxGroup;
}
}];
YapDatabaseViewSorting *viewSorting = [self threadSorting]; YapDatabaseViewSorting *viewSorting = [self threadSorting];
@ -238,10 +247,17 @@ NSString *const TSSecondaryDevicesDatabaseViewExtensionName = @"TSSecondaryDevic
[[YapWhitelistBlacklist alloc] initWithWhitelist:[NSSet setWithObject:[TSThread collection]]]; [[YapWhitelistBlacklist alloc] initWithWhitelist:[NSSet setWithObject:[TSThread collection]]];
YapDatabaseView *databaseView = YapDatabaseView *databaseView =
[[YapDatabaseView alloc] initWithGrouping:viewGrouping sorting:viewSorting versionTag:@"1" options:options]; [[YapDatabaseView alloc] initWithGrouping:viewGrouping sorting:viewSorting versionTag:@"2" options:options];
[[TSStorageManager sharedManager].database registerExtension:databaseView [[TSStorageManager sharedManager].database
withName:TSThreadDatabaseViewExtensionName]; asyncRegisterExtension:databaseView
withName:TSThreadDatabaseViewExtensionName
completionBlock:^(BOOL ready) {
OWSCAssert(ready);
DDLogInfo(
@"%@ asyncRegisterExtension: %@ -> %d", self.tag, TSThreadDatabaseViewExtensionName, ready);
}];
} }
/** /**

@ -192,7 +192,6 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass";
- (void)setupDatabaseWithSafeBlockingMigrations:(void (^_Nonnull)())safeBlockingMigrationsBlock - (void)setupDatabaseWithSafeBlockingMigrations:(void (^_Nonnull)())safeBlockingMigrationsBlock
{ {
// Synchronously register extensions which are essential for views. // Synchronously register extensions which are essential for views.
[TSDatabaseView registerThreadDatabaseView];
[TSDatabaseView registerThreadInteractionsDatabaseView]; [TSDatabaseView registerThreadInteractionsDatabaseView];
[TSDatabaseView registerUnreadDatabaseView]; [TSDatabaseView registerUnreadDatabaseView];
[self.database registerExtension:[TSDatabaseSecondaryIndexes registerTimeStampIndex] withName:@"idx"]; [self.database registerExtension:[TSDatabaseSecondaryIndexes registerTimeStampIndex] withName:@"idx"];
@ -210,6 +209,7 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass";
// //
// All sync registrations must be done before all async registrations, // All sync registrations must be done before all async registrations,
// or the sync registrations will block on the async registrations. // or the sync registrations will block on the async registrations.
[TSDatabaseView asyncRegisterThreadDatabaseView];
[TSDatabaseView asyncRegisterUnseenDatabaseView]; [TSDatabaseView asyncRegisterUnseenDatabaseView];
[TSDatabaseView asyncRegisterThreadOutgoingMessagesDatabaseView]; [TSDatabaseView asyncRegisterThreadOutgoingMessagesDatabaseView];
[TSDatabaseView asyncRegisterThreadSpecialMessagesDatabaseView]; [TSDatabaseView asyncRegisterThreadSpecialMessagesDatabaseView];

Loading…
Cancel
Save