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