diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist index 29bc1d583..877f051df 100644 --- a/Signal/Signal-Info.plist +++ b/Signal/Signal-Info.plist @@ -38,7 +38,7 @@ CFBundleVersion - 2.26.0.24 + 2.26.0.25 ITSAppUsesNonExemptEncryption LOGS_EMAIL diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m index 5bf920cb8..dc8fbc9c5 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m @@ -442,12 +442,11 @@ typedef enum : NSUInteger { // Cache the cell media for ~24 cells. self.cellMediaCache.countLimit = 24; - [self.uiDatabaseConnection beginLongLivedReadTransaction]; - // We need to update the "unread indicator" _before_ we determine the initial range // size, since it depends on where the unread indicator is placed. self.lastRangeLength = 0; [self ensureDynamicInteractions]; + [[OWSPrimaryStorage sharedManager] updateUIDatabaseConnectionToLatest]; if (thread.uniqueId.length > 0) { self.messageMappings = [[YapDatabaseViewMappings alloc] initWithGroups:@[ thread.uniqueId ] diff --git a/SignalServiceKit/src/Storage/OWSPrimaryStorage.h b/SignalServiceKit/src/Storage/OWSPrimaryStorage.h index 702cbf7cb..7d56683ab 100644 --- a/SignalServiceKit/src/Storage/OWSPrimaryStorage.h +++ b/SignalServiceKit/src/Storage/OWSPrimaryStorage.h @@ -22,6 +22,8 @@ extern NSString *const OWSUIDatabaseConnectionNotificationsKey; @property (nonatomic, readonly) YapDatabaseConnection *dbReadConnection; @property (nonatomic, readonly) YapDatabaseConnection *dbReadWriteConnection; +- (void)updateUIDatabaseConnectionToLatest; + + (YapDatabaseConnection *)dbReadConnection; + (YapDatabaseConnection *)dbReadWriteConnection; diff --git a/SignalServiceKit/src/Storage/OWSPrimaryStorage.m b/SignalServiceKit/src/Storage/OWSPrimaryStorage.m index 967789040..d3f43d360 100644 --- a/SignalServiceKit/src/Storage/OWSPrimaryStorage.m +++ b/SignalServiceKit/src/Storage/OWSPrimaryStorage.m @@ -170,10 +170,15 @@ void VerifyRegistrationsForPrimaryStorage(OWSStorage *storage) OWSAssertIsOnMainThread(); DDLogVerbose(@"%@ %s", self.logTag, __PRETTY_FUNCTION__); - + [self updateUIDatabaseConnectionToLatest]; +} + +- (void)updateUIDatabaseConnectionToLatest +{ + // Notify observers we're about to update the database connection [[NSNotificationCenter defaultCenter] postNotificationName:OWSUIDatabaseConnectionWillUpdateNotification object:self.dbNotificationObject]; - + // Move uiDatabaseConnection to the latest commit. // Do so atomically, and fetch all the notifications for each commit we jump. NSArray *notifications = [self.uiDatabaseConnection beginLongLivedReadTransaction]; @@ -184,7 +189,7 @@ void VerifyRegistrationsForPrimaryStorage(OWSStorage *storage) object:self.dbNotificationObject userInfo:userInfo]; } - + - (YapDatabaseConnection *)uiDatabaseConnection { OWSAssertIsOnMainThread(); diff --git a/SignalShareExtension/Info.plist b/SignalShareExtension/Info.plist index 92d5ec66e..677293301 100644 --- a/SignalShareExtension/Info.plist +++ b/SignalShareExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 2.26.0 CFBundleVersion - 2.26.0.24 + 2.26.0.25 ITSAppUsesNonExemptEncryption NSAppTransportSecurity