Streamline SignalRecipient.
This commit is contained in:
parent
05a4222b2d
commit
b6489c6948
|
@ -15,14 +15,10 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
+ (instancetype)selfRecipient;
|
||||
|
||||
+ (SignalRecipient *)ensureRecipientExistsWithRegisteredRecipientId:(NSString *)recipientId
|
||||
transaction:(YapDatabaseReadWriteTransaction *)transaction;
|
||||
|
||||
+ (SignalRecipient *)ensureRecipientExistsWithRecipientId:(NSString *)recipientId
|
||||
transaction:(YapDatabaseReadWriteTransaction *)transaction;
|
||||
|
||||
+ (nullable instancetype)registeredRecipientForRecipientId:(NSString *)recipientId
|
||||
transaction:(YapDatabaseReadTransaction *)transaction;
|
||||
+ (instancetype)getOrCreatedUnsavedRecipientForRecipientId:(NSString *)recipientId
|
||||
transaction:(YapDatabaseReadTransaction *)transaction;
|
||||
|
||||
- (void)addDevices:(NSSet *)set;
|
||||
- (void)removeDevices:(NSSet *)set;
|
||||
|
|
|
@ -31,32 +31,19 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
[super removeWithTransaction:transaction];
|
||||
}
|
||||
|
||||
+ (SignalRecipient *)ensureRecipientExistsWithRegisteredRecipientId:(NSString *)recipientId
|
||||
transaction:(YapDatabaseReadWriteTransaction *)transaction
|
||||
+ (instancetype)getOrCreatedUnsavedRecipientForRecipientId:(NSString *)recipientId
|
||||
transaction:(YapDatabaseReadTransaction *)transaction
|
||||
{
|
||||
SignalRecipient *recipient = [self ensureRecipientExistsWithRecipientId:recipientId transaction:transaction];
|
||||
if (recipient.mayBeUnregistered) {
|
||||
recipient.mayBeUnregistered = NO;
|
||||
[recipient saveWithTransaction:transaction];
|
||||
OWSAssert(transaction);
|
||||
OWSAssert(recipientId.length > 0);
|
||||
|
||||
SignalRecipient *_Nullable recipient = [self registeredRecipientForRecipientId:recipientId transaction:transaction];
|
||||
if (!recipient) {
|
||||
recipient = [[self alloc] initWithTextSecureIdentifier:recipientId];
|
||||
}
|
||||
return recipient;
|
||||
}
|
||||
|
||||
+ (SignalRecipient *)ensureRecipientExistsWithRecipientId:(NSString *)recipientId
|
||||
transaction:(YapDatabaseReadWriteTransaction *)transaction
|
||||
{
|
||||
SignalRecipient *_Nullable recipient = [self recipientForRecipientId:recipientId transaction:transaction];
|
||||
if (recipient) {
|
||||
return recipient;
|
||||
}
|
||||
|
||||
DDLogDebug(@"%@ creating recipient: %@", self.logTag, recipientId);
|
||||
|
||||
recipient = [[self alloc] initWithTextSecureIdentifier:recipientId];
|
||||
[recipient saveWithTransaction:transaction];
|
||||
return recipient;
|
||||
}
|
||||
|
||||
- (instancetype)initWithTextSecureIdentifier:(NSString *)textSecureIdentifier
|
||||
{
|
||||
self = [super initWithUniqueId:textSecureIdentifier];
|
||||
|
|
|
@ -39,9 +39,6 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
[thread saveWithTransaction:transaction];
|
||||
}
|
||||
|
||||
// TODO: Do we need to _eagerly_ ensure a SignalRecipient instance exists?
|
||||
[SignalRecipient ensureRecipientExistsWithRecipientId:contactId transaction:transaction];
|
||||
|
||||
return thread;
|
||||
}
|
||||
|
||||
|
|
|
@ -454,8 +454,8 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
|
|||
NSMutableArray<SignalRecipient *> *recipients = [NSMutableArray new];
|
||||
[self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
for (NSString *recipientId in recipientIds) {
|
||||
SignalRecipient *recipient =
|
||||
[SignalRecipient ensureRecipientExistsWithRecipientId:recipientId transaction:transaction];
|
||||
SignalRecipient *recipient = [SignalRecipient getOrCreatedUnsavedRecipientForRecipientId:recipientId
|
||||
transaction:transaction];
|
||||
[recipients addObject:recipient];
|
||||
}
|
||||
}];
|
||||
|
@ -555,11 +555,10 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
|
|||
return;
|
||||
}
|
||||
|
||||
__block SignalRecipient *recipient;
|
||||
[self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
recipient =
|
||||
[SignalRecipient ensureRecipientExistsWithRecipientId:recipientContactId transaction:transaction];
|
||||
}];
|
||||
NSArray<SignalRecipient *> *recipients =
|
||||
[self signalRecipientsForRecipientIds:@[recipientContactId] message:message];
|
||||
OWSAssert(recipients.count == 1);
|
||||
SignalRecipient *recipient = recipients.firstObject;
|
||||
|
||||
if (!recipient) {
|
||||
NSError *error = OWSErrorMakeFailedToSendOutgoingMessageError();
|
||||
|
|
Loading…
Reference in New Issue