From 5058eb837ea2e33a486a460b16f5a797241d4c76 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Mon, 1 May 2017 14:10:03 -0400 Subject: [PATCH] Add SignalAccount class. // FREEBIE --- src/Contacts/Contact.h | 3 ++- src/Contacts/Contact.m | 17 ++++++++--------- src/Contacts/SignalRecipient.h | 4 ++++ src/Contacts/SignalRecipient.m | 10 ++++++++++ 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/Contacts/Contact.h b/src/Contacts/Contact.h index 68383d71a..6ab69dbab 100644 --- a/src/Contacts/Contact.h +++ b/src/Contacts/Contact.h @@ -29,6 +29,7 @@ typedef NS_ENUM(NSUInteger, OWSPhoneNumberType) { @class PhoneNumber; @class UIImage; @class SignalRecipient; +@class YapDatabaseReadTransaction; @interface Contact : NSObject @@ -48,7 +49,7 @@ typedef NS_ENUM(NSUInteger, OWSPhoneNumberType) { #endif // TARGET_OS_IOS - (BOOL)isSignalContact; -- (NSArray *)signalRecipients; +- (NSArray *)signalRecipientsWithTransaction:(YapDatabaseReadTransaction *)transaction; // TODO: Remove this method. - (NSArray *)textSecureIdentifiers; diff --git a/src/Contacts/Contact.m b/src/Contacts/Contact.m index ec94a72f3..cfb3479a7 100644 --- a/src/Contacts/Contact.m +++ b/src/Contacts/Contact.m @@ -202,19 +202,18 @@ NS_ASSUME_NONNULL_BEGIN return [identifiers count] > 0; } -- (NSArray *)signalRecipients +- (NSArray *)signalRecipientsWithTransaction:(YapDatabaseReadTransaction *)transaction { __block NSMutableArray *result = [NSMutableArray array]; - [[TSStorageManager sharedManager].dbConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) { - for (PhoneNumber *number in [self.parsedPhoneNumbers sortedArrayUsingSelector:@selector(compare:)]) { - SignalRecipient *signalRecipient = - [SignalRecipient recipientWithTextSecureIdentifier:number.toE164 withTransaction:transaction]; - if (signalRecipient) { - [result addObject:signalRecipient]; - } + for (PhoneNumber *number in [self.parsedPhoneNumbers sortedArrayUsingSelector:@selector(compare:)]) { + SignalRecipient *signalRecipient = + [SignalRecipient recipientWithTextSecureIdentifier:number.toE164 withTransaction:transaction]; + if (signalRecipient) { + [result addObject:signalRecipient]; } - }]; + } + return [result copy]; } diff --git a/src/Contacts/SignalRecipient.h b/src/Contacts/SignalRecipient.h index cf636fb05..39b3bd44f 100644 --- a/src/Contacts/SignalRecipient.h +++ b/src/Contacts/SignalRecipient.h @@ -27,6 +27,10 @@ NS_ASSUME_NONNULL_BEGIN // This property indicates support for both WebRTC audio and video calls. - (BOOL)supportsWebRTC; +- (NSString *)recipientId; + +- (NSComparisonResult)compare:(SignalRecipient *)other; + @end NS_ASSUME_NONNULL_END diff --git a/src/Contacts/SignalRecipient.m b/src/Contacts/SignalRecipient.m index c05974cdd..683b7e868 100644 --- a/src/Contacts/SignalRecipient.m +++ b/src/Contacts/SignalRecipient.m @@ -83,6 +83,16 @@ NS_ASSUME_NONNULL_BEGIN return YES; } +- (NSString *)recipientId +{ + return self.uniqueId; +} + +- (NSComparisonResult)compare:(SignalRecipient *)other +{ + return [self.recipientId compare:other.recipientId]; +} + @end NS_ASSUME_NONNULL_END