CR: Avoid potential transaction nesting

also clean up description method

// FREEBIE
pull/1/head
Michael Kirk 8 years ago
parent 5d62741a3c
commit 2125dbe72c

@ -117,6 +117,8 @@ NSString *envelopeAddress(OWSSignalServiceProtosEnvelope *envelope)
[description appendString:@"GroupRequest"]; [description appendString:@"GroupRequest"];
} else if (syncMessage.request.type == OWSSignalServiceProtosSyncMessageRequestTypeBlocked) { } else if (syncMessage.request.type == OWSSignalServiceProtosSyncMessageRequestTypeBlocked) {
[description appendString:@"BlockedRequest"]; [description appendString:@"BlockedRequest"];
} else if (syncMessage.request.type == OWSSignalServiceProtosSyncMessageRequestTypeConfiguration) {
[description appendString:@"ConfigurationRequest"];
} else { } else {
// Shouldn't happen // Shouldn't happen
OWSFail(@"Unknown sync message request type"); OWSFail(@"Unknown sync message request type");

@ -605,7 +605,8 @@ NS_ASSUME_NONNULL_BEGIN
// TODO // TODO
DDLogWarn(@"%@ Received unsupported request for block list", self.tag); DDLogWarn(@"%@ Received unsupported request for block list", self.tag);
} else if (syncMessage.request.type == OWSSignalServiceProtosSyncMessageRequestTypeConfiguration) { } else if (syncMessage.request.type == OWSSignalServiceProtosSyncMessageRequestTypeConfiguration) {
BOOL areReadReceiptsEnabled = [[OWSReadReceiptManager sharedManager] areReadReceiptsEnabled]; BOOL areReadReceiptsEnabled =
[[OWSReadReceiptManager sharedManager] areReadReceiptsEnabledWithTransaction:transaction];
OWSSyncConfigurationMessage *syncConfigurationMessage = OWSSyncConfigurationMessage *syncConfigurationMessage =
[[OWSSyncConfigurationMessage alloc] initWithReadReceiptsEnabled:areReadReceiptsEnabled]; [[OWSSyncConfigurationMessage alloc] initWithReadReceiptsEnabled:areReadReceiptsEnabled];
[self.messageSender sendMessage:syncConfigurationMessage [self.messageSender sendMessage:syncConfigurationMessage

@ -9,6 +9,7 @@ NS_ASSUME_NONNULL_BEGIN
@class TSOutgoingMessage; @class TSOutgoingMessage;
@class TSThread; @class TSThread;
@class YapDatabaseReadWriteTransaction; @class YapDatabaseReadWriteTransaction;
@class YapDatabaseReadTransaction;
extern NSString *const kIncomingMessageMarkedAsReadNotification; extern NSString *const kIncomingMessageMarkedAsReadNotification;
@ -74,6 +75,7 @@ extern NSString *const kIncomingMessageMarkedAsReadNotification;
- (void)prepareCachedValues; - (void)prepareCachedValues;
- (BOOL)areReadReceiptsEnabled; - (BOOL)areReadReceiptsEnabled;
- (BOOL)areReadReceiptsEnabledWithTransaction:(YapDatabaseReadTransaction *)transaction;
- (void)setAreReadReceiptsEnabled:(BOOL)value; - (void)setAreReadReceiptsEnabled:(BOOL)value;
@end @end

@ -560,8 +560,22 @@ NSString *const OWSReadReceiptManagerAreReadReceiptsEnabled = @"areReadReceiptsE
// We don't need to worry about races around this cached value. // We don't need to worry about races around this cached value.
if (!self.areReadReceiptsEnabledCached) { if (!self.areReadReceiptsEnabledCached) {
// Default to NO. // Default to NO.
self.areReadReceiptsEnabledCached = @([self.dbConnection boolForKey:OWSReadReceiptManagerAreReadReceiptsEnabled self.areReadReceiptsEnabledCached =
inCollection:OWSReadReceiptManagerCollection]); @([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]; return [self.areReadReceiptsEnabledCached boolValue];

Loading…
Cancel
Save