Merge branch 'charlesmchen/hideEmptyConversations'

pull/1/head
Matthew Chen 8 years ago
commit 2bd113f140

@ -171,6 +171,9 @@ static NSString *const kURLHostVerifyPrefix = @"verify";
NSString *lastLaunchedAppVersion = AppVersion.instance.lastAppVersion; NSString *lastLaunchedAppVersion = AppVersion.instance.lastAppVersion;
NSString *lastCompletedLaunchAppVersion = AppVersion.instance.lastCompletedLaunchAppVersion; NSString *lastCompletedLaunchAppVersion = AppVersion.instance.lastCompletedLaunchAppVersion;
// Every time we change a database view in such a way that might cause a delay on launch,
// we need to bump this constant.
//
// We added a number of database views in v2.13.0. // We added a number of database views in v2.13.0.
NSString *kLastVersionWithDatabaseViewChange = @"2.13.0"; NSString *kLastVersionWithDatabaseViewChange = @"2.13.0";
BOOL mayNeedUpgrade = ([TSAccountManager isRegistered] && lastLaunchedAppVersion BOOL mayNeedUpgrade = ([TSAccountManager isRegistered] && lastLaunchedAppVersion

@ -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];

@ -114,6 +114,13 @@ NS_ASSUME_NONNULL_BEGIN
[fetchedThread updateWithLastMessage:self transaction:transaction]; [fetchedThread updateWithLastMessage:self transaction:transaction];
} }
- (void)removeWithTransaction:(YapDatabaseReadWriteTransaction *)transaction
{
[super removeWithTransaction:transaction];
[self touchThreadWithTransaction:transaction];
}
- (BOOL)isDynamicInteraction - (BOOL)isDynamicInteraction
{ {
return NO; return NO;

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

@ -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;
} }
@ -211,14 +212,25 @@ NSString *const TSSecondaryDevicesDatabaseViewExtensionName = @"TSSecondaryDevic
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; TSThread *thread = (TSThread *)object;
YapDatabaseViewTransaction *viewTransaction = [transaction ext:TSMessageDatabaseViewExtensionName];
OWSAssert(viewTransaction);
NSUInteger threadMessageCount = [viewTransaction numberOfItemsInGroup:thread.uniqueId];
if (threadMessageCount < 1) {
return nil;
}
if (thread.archivalDate) { if (thread.archivalDate) {
return ([self threadShouldBeInInbox:thread]) ? TSInboxGroup : TSArchiveGroup; return ([self threadShouldBeInInbox:thread]) ? TSInboxGroup : TSArchiveGroup;
} else if (thread.archivalDate) { } else if (thread.archivalDate) {
@ -226,8 +238,6 @@ NSString *const TSSecondaryDevicesDatabaseViewExtensionName = @"TSSecondaryDevic
} else { } else {
return TSInboxGroup; return TSInboxGroup;
} }
}
return nil;
}]; }];
YapDatabaseViewSorting *viewSorting = [self threadSorting]; YapDatabaseViewSorting *viewSorting = [self threadSorting];
@ -238,7 +248,7 @@ 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 registerExtension:databaseView
withName:TSThreadDatabaseViewExtensionName]; withName:TSThreadDatabaseViewExtensionName];

@ -192,8 +192,8 @@ 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 registerThreadDatabaseView];
[TSDatabaseView registerUnreadDatabaseView]; [TSDatabaseView registerUnreadDatabaseView];
[self.database registerExtension:[TSDatabaseSecondaryIndexes registerTimeStampIndex] withName:@"idx"]; [self.database registerExtension:[TSDatabaseSecondaryIndexes registerTimeStampIndex] withName:@"idx"];
[OWSMessageReceiver syncRegisterDatabaseExtension:self.database]; [OWSMessageReceiver syncRegisterDatabaseExtension:self.database];

Loading…
Cancel
Save