diff --git a/SignalServiceKit/src/Messages/OWSMessageHandler.m b/SignalServiceKit/src/Messages/OWSMessageHandler.m index 69fe9a900..95e0f9c21 100644 --- a/SignalServiceKit/src/Messages/OWSMessageHandler.m +++ b/SignalServiceKit/src/Messages/OWSMessageHandler.m @@ -117,6 +117,8 @@ NSString *envelopeAddress(OWSSignalServiceProtosEnvelope *envelope) [description appendString:@"GroupRequest"]; } else if (syncMessage.request.type == OWSSignalServiceProtosSyncMessageRequestTypeBlocked) { [description appendString:@"BlockedRequest"]; + } else if (syncMessage.request.type == OWSSignalServiceProtosSyncMessageRequestTypeConfiguration) { + [description appendString:@"ConfigurationRequest"]; } else { // Shouldn't happen OWSFail(@"Unknown sync message request type"); diff --git a/SignalServiceKit/src/Messages/OWSMessageManager.m b/SignalServiceKit/src/Messages/OWSMessageManager.m index 6b7192213..a44d800b6 100644 --- a/SignalServiceKit/src/Messages/OWSMessageManager.m +++ b/SignalServiceKit/src/Messages/OWSMessageManager.m @@ -605,7 +605,8 @@ NS_ASSUME_NONNULL_BEGIN // TODO DDLogWarn(@"%@ Received unsupported request for block list", self.tag); } else if (syncMessage.request.type == OWSSignalServiceProtosSyncMessageRequestTypeConfiguration) { - BOOL areReadReceiptsEnabled = [[OWSReadReceiptManager sharedManager] areReadReceiptsEnabled]; + BOOL areReadReceiptsEnabled = + [[OWSReadReceiptManager sharedManager] areReadReceiptsEnabledWithTransaction:transaction]; OWSSyncConfigurationMessage *syncConfigurationMessage = [[OWSSyncConfigurationMessage alloc] initWithReadReceiptsEnabled:areReadReceiptsEnabled]; [self.messageSender sendMessage:syncConfigurationMessage diff --git a/SignalServiceKit/src/Messages/OWSReadReceiptManager.h b/SignalServiceKit/src/Messages/OWSReadReceiptManager.h index 45bc80291..0201cb0cb 100644 --- a/SignalServiceKit/src/Messages/OWSReadReceiptManager.h +++ b/SignalServiceKit/src/Messages/OWSReadReceiptManager.h @@ -9,6 +9,7 @@ NS_ASSUME_NONNULL_BEGIN @class TSOutgoingMessage; @class TSThread; @class YapDatabaseReadWriteTransaction; +@class YapDatabaseReadTransaction; extern NSString *const kIncomingMessageMarkedAsReadNotification; @@ -74,6 +75,7 @@ extern NSString *const kIncomingMessageMarkedAsReadNotification; - (void)prepareCachedValues; - (BOOL)areReadReceiptsEnabled; +- (BOOL)areReadReceiptsEnabledWithTransaction:(YapDatabaseReadTransaction *)transaction; - (void)setAreReadReceiptsEnabled:(BOOL)value; @end diff --git a/SignalServiceKit/src/Messages/OWSReadReceiptManager.m b/SignalServiceKit/src/Messages/OWSReadReceiptManager.m index a98665d81..bc782c934 100644 --- a/SignalServiceKit/src/Messages/OWSReadReceiptManager.m +++ b/SignalServiceKit/src/Messages/OWSReadReceiptManager.m @@ -560,8 +560,22 @@ NSString *const OWSReadReceiptManagerAreReadReceiptsEnabled = @"areReadReceiptsE // We don't need to worry about races around this cached value. if (!self.areReadReceiptsEnabledCached) { // Default to NO. - self.areReadReceiptsEnabledCached = @([self.dbConnection boolForKey:OWSReadReceiptManagerAreReadReceiptsEnabled - inCollection:OWSReadReceiptManagerCollection]); + self.areReadReceiptsEnabledCached = + @([self.dbConnection boolForKey:OWSReadReceiptManagerAreReadReceiptsEnabled + inCollection:OWSReadReceiptManagerAreReadReceiptsEnabled]); + } + + return [self.areReadReceiptsEnabledCached boolValue]; +} + +- (BOOL)areReadReceiptsEnabledWithTransaction:(YapDatabaseReadTransaction *)transaction +{ + if (!self.areReadReceiptsEnabledCached) { + [self.dbConnection readWithBlock:^(YapDatabaseReadTransaction *_Nonnull transaction) { + // Default to NO. + self.areReadReceiptsEnabledCached = [transaction objectForKey:OWSReadReceiptManagerAreReadReceiptsEnabled + inCollection:OWSReadReceiptManagerAreReadReceiptsEnabled]; + }]; } return [self.areReadReceiptsEnabledCached boolValue];