Respond to CR.

pull/1/head
Matthew Chen 7 years ago
parent c830f880aa
commit ace07ac62a

@ -1323,7 +1323,7 @@ NS_ASSUME_NONNULL_BEGIN
}]; }];
} }
+ (NSString *)invalidRecipientId + (NSString *)unregisteredRecipientId
{ {
// We ensure that the phone number is invalid by appending too many digits. // We ensure that the phone number is invalid by appending too many digits.
NSMutableString *recipientId = [@"+1" mutableCopy]; NSMutableString *recipientId = [@"+1" mutableCopy];
@ -1335,19 +1335,19 @@ NS_ASSUME_NONNULL_BEGIN
+ (void)createInvalidContactThread + (void)createInvalidContactThread
{ {
NSString *recipientId = [self invalidRecipientId]; NSString *recipientId = [self unregisteredRecipientId];
TSContactThread *thread = [TSContactThread getOrCreateThreadWithContactId:recipientId]; TSContactThread *thread = [TSContactThread getOrCreateThreadWithContactId:recipientId];
[SignalApp.sharedApp presentConversationForThread:thread]; [SignalApp.sharedApp presentConversationForThread:thread];
} }
+ (void)createInvalidGroupThread + (void)createInvalidGroupThread
{ {
NSString *invalidRecipientId = [self invalidRecipientId]; NSString *unregisteredRecipientId = [self unregisteredRecipientId];
NSString *validRecipientId = @"+19174054216"; NSString *validRecipientId = @"+19174054216";
NSString *groupName = @"Partially invalid group"; NSString *groupName = @"Partially invalid group";
NSMutableArray<NSString *> *recipientIds = [@[ NSMutableArray<NSString *> *recipientIds = [@[
invalidRecipientId, unregisteredRecipientId,
validRecipientId, validRecipientId,
[TSAccountManager localNumber], [TSAccountManager localNumber],
] mutableCopy]; ] mutableCopy];

@ -24,8 +24,8 @@ NS_ASSUME_NONNULL_BEGIN
+ (nullable instancetype)registeredRecipientForRecipientId:(NSString *)recipientId + (nullable instancetype)registeredRecipientForRecipientId:(NSString *)recipientId
transaction:(YapDatabaseReadTransaction *)transaction; transaction:(YapDatabaseReadTransaction *)transaction;
+ (instancetype)getOrCreatedUnsavedRecipientForRecipientId:(NSString *)recipientId + (instancetype)getOrBuildUnsavedRecipientForRecipientId:(NSString *)recipientId
transaction:(YapDatabaseReadTransaction *)transaction; transaction:(YapDatabaseReadTransaction *)transaction;
- (void)addDevicesToRegisteredRecipient:(NSSet *)devices - (void)addDevicesToRegisteredRecipient:(NSSet *)devices
transaction:(YapDatabaseReadWriteTransaction *)transaction; transaction:(YapDatabaseReadWriteTransaction *)transaction;

@ -18,8 +18,8 @@ NS_ASSUME_NONNULL_BEGIN
@implementation SignalRecipient @implementation SignalRecipient
+ (instancetype)getOrCreatedUnsavedRecipientForRecipientId:(NSString *)recipientId + (instancetype)getOrBuildUnsavedRecipientForRecipientId:(NSString *)recipientId
transaction:(YapDatabaseReadTransaction *)transaction transaction:(YapDatabaseReadTransaction *)transaction
{ {
OWSAssert(transaction); OWSAssert(transaction);
OWSAssert(recipientId.length > 0); OWSAssert(recipientId.length > 0);
@ -125,9 +125,7 @@ NS_ASSUME_NONNULL_BEGIN
return; return;
} }
NSMutableOrderedSet *updatedDevices = (self.devices NSMutableOrderedSet *updatedDevices = [self.devices mutableCopy];
? [self.devices mutableCopy]
: [NSMutableOrderedSet new]);
[updatedDevices unionSet:devices]; [updatedDevices unionSet:devices];
self.devices = [updatedDevices copy]; self.devices = [updatedDevices copy];
} }
@ -135,10 +133,8 @@ NS_ASSUME_NONNULL_BEGIN
- (void)removeDevices:(NSSet *)devices - (void)removeDevices:(NSSet *)devices
{ {
OWSAssert(devices.count > 0); OWSAssert(devices.count > 0);
NSMutableOrderedSet *updatedDevices = (self.devices NSMutableOrderedSet *updatedDevices = [self.devices mutableCopy];
? [self.devices mutableCopy]
: [NSMutableOrderedSet new]);
[updatedDevices minusSet:devices]; [updatedDevices minusSet:devices];
self.devices = [updatedDevices copy]; self.devices = [updatedDevices copy];
} }
@ -152,7 +148,7 @@ NS_ASSUME_NONNULL_BEGIN
SignalRecipient *latest = [SignalRecipient markAccountAsRegistered:self.recipientId transaction:transaction]; SignalRecipient *latest = [SignalRecipient markAccountAsRegistered:self.recipientId transaction:transaction];
[latest addDevices:devices]; [latest addDevices:devices];
[latest saveWithTransaction:transaction]; [latest saveWithTransaction_internal:transaction];
} }
- (void)removeDevicesFromRegisteredRecipient:(NSSet *)devices transaction:(YapDatabaseReadWriteTransaction *)transaction - (void)removeDevicesFromRegisteredRecipient:(NSSet *)devices transaction:(YapDatabaseReadWriteTransaction *)transaction
@ -164,7 +160,7 @@ NS_ASSUME_NONNULL_BEGIN
SignalRecipient *latest = [SignalRecipient markAccountAsRegistered:self.recipientId transaction:transaction]; SignalRecipient *latest = [SignalRecipient markAccountAsRegistered:self.recipientId transaction:transaction];
[latest removeDevices:devices]; [latest removeDevices:devices];
[latest saveWithTransaction:transaction]; [latest saveWithTransaction_internal:transaction];
} }
- (NSString *)recipientId - (NSString *)recipientId
@ -178,6 +174,13 @@ NS_ASSUME_NONNULL_BEGIN
} }
- (void)saveWithTransaction:(YapDatabaseReadWriteTransaction *)transaction - (void)saveWithTransaction:(YapDatabaseReadWriteTransaction *)transaction
{
OWSProdLogAndFail(@"%@ Don't call saveWithTransaction from outside this class.", self.logTag);
[self saveWithTransaction_internal:transaction];
}
- (void)saveWithTransaction_internal:(YapDatabaseReadWriteTransaction *)transaction
{ {
[super saveWithTransaction:transaction]; [super saveWithTransaction:transaction];
@ -201,7 +204,7 @@ NS_ASSUME_NONNULL_BEGIN
DDLogDebug(@"%@ creating recipient: %@", self.logTag, recipientId); DDLogDebug(@"%@ creating recipient: %@", self.logTag, recipientId);
instance = [[self alloc] initWithTextSecureIdentifier:recipientId]; instance = [[self alloc] initWithTextSecureIdentifier:recipientId];
[instance saveWithTransaction:transaction]; [instance saveWithTransaction_internal:transaction];
} }
return instance; return instance;
} }
@ -221,7 +224,7 @@ NS_ASSUME_NONNULL_BEGIN
(unsigned int)deviceId); (unsigned int)deviceId);
[recipient addDevices:[NSSet setWithObject:@(deviceId)]]; [recipient addDevices:[NSSet setWithObject:@(deviceId)]];
[recipient saveWithTransaction:transaction]; [recipient saveWithTransaction_internal:transaction];
} }
} }

@ -454,8 +454,8 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
NSMutableArray<SignalRecipient *> *recipients = [NSMutableArray new]; NSMutableArray<SignalRecipient *> *recipients = [NSMutableArray new];
[self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
for (NSString *recipientId in recipientIds) { for (NSString *recipientId in recipientIds) {
SignalRecipient *recipient = [SignalRecipient getOrCreatedUnsavedRecipientForRecipientId:recipientId SignalRecipient *recipient =
transaction:transaction]; [SignalRecipient getOrBuildUnsavedRecipientForRecipientId:recipientId transaction:transaction];
[recipients addObject:recipient]; [recipients addObject:recipient];
} }
}]; }];
@ -895,7 +895,6 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
// This emulates the completion logic of an actual successful save (see below). // This emulates the completion logic of an actual successful save (see below).
[self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
[message updateWithSkippedRecipient:localNumber transaction:transaction]; [message updateWithSkippedRecipient:localNumber transaction:transaction];
[recipient saveWithTransaction:transaction];
}]; }];
successHandler(); successHandler();
}); });
@ -1013,7 +1012,6 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
dispatch_async([OWSDispatch sendingQueue], ^{ dispatch_async([OWSDispatch sendingQueue], ^{
[self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
[recipient saveWithTransaction:transaction];
[message updateWithSentRecipient:recipient.uniqueId transaction:transaction]; [message updateWithSentRecipient:recipient.uniqueId transaction:transaction];
// If we've just delivered a message to a user, we know they // If we've just delivered a message to a user, we know they

Loading…
Cancel
Save