From cd9e1fb5748dec047eafbd383d16a7539b5fe0ff Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Mon, 1 May 2017 12:44:58 -0400 Subject: [PATCH] Add SignalAccount class. // FREEBIE --- src/Contacts/Contact.h | 3 +++ src/Contacts/Contact.m | 16 ++++++++++++++++ src/Contacts/PhoneNumber.h | 2 ++ src/Contacts/PhoneNumber.m | 5 +++++ src/TSConstants.h | 13 ++++++------- 5 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/Contacts/Contact.h b/src/Contacts/Contact.h index 54a3e2df9..68383d71a 100644 --- a/src/Contacts/Contact.h +++ b/src/Contacts/Contact.h @@ -28,6 +28,7 @@ typedef NS_ENUM(NSUInteger, OWSPhoneNumberType) { @class CNContact; @class PhoneNumber; @class UIImage; +@class SignalRecipient; @interface Contact : NSObject @@ -47,6 +48,8 @@ typedef NS_ENUM(NSUInteger, OWSPhoneNumberType) { #endif // TARGET_OS_IOS - (BOOL)isSignalContact; +- (NSArray *)signalRecipients; +// TODO: Remove this method. - (NSArray *)textSecureIdentifiers; #if TARGET_OS_IOS diff --git a/src/Contacts/Contact.m b/src/Contacts/Contact.m index 432a03798..ec94a72f3 100644 --- a/src/Contacts/Contact.m +++ b/src/Contacts/Contact.m @@ -202,6 +202,22 @@ NS_ASSUME_NONNULL_BEGIN return [identifiers count] > 0; } +- (NSArray *)signalRecipients +{ + __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]; + } + } + }]; + return [result copy]; +} + - (NSArray *)textSecureIdentifiers { __block NSMutableArray *identifiers = [NSMutableArray array]; diff --git a/src/Contacts/PhoneNumber.h b/src/Contacts/PhoneNumber.h index e0b08c1f7..14fffd5e1 100644 --- a/src/Contacts/PhoneNumber.h +++ b/src/Contacts/PhoneNumber.h @@ -50,4 +50,6 @@ - (BOOL)isValid; - (BOOL)resolvesInternationallyTo:(PhoneNumber *)otherPhoneNumber; +- (NSComparisonResult)compare:(PhoneNumber *)other; + @end diff --git a/src/Contacts/PhoneNumber.m b/src/Contacts/PhoneNumber.m index bd264bde9..c9eea1f88 100644 --- a/src/Contacts/PhoneNumber.m +++ b/src/Contacts/PhoneNumber.m @@ -257,4 +257,9 @@ static NSString *const RPDefaultsKeyPhoneNumberCanonical = @"RPDefaultsKeyPhoneN return self; } +- (NSComparisonResult)compare:(PhoneNumber *)other +{ + return [self.toE164 compare:other.toE164]; +} + @end diff --git a/src/TSConstants.h b/src/TSConstants.h index 9cefac65d..33669234d 100644 --- a/src/TSConstants.h +++ b/src/TSConstants.h @@ -1,6 +1,5 @@ -// -// Copyright (c) 2017 Open Whisper Systems. All rights reserved. -// +// Created by Frederic Jacobs on 28/10/14. +// Copyright (c) 2014 Open Whisper Systems. All rights reserved. #import @class TSNumberVerifier; @@ -22,11 +21,11 @@ typedef enum { kSMSVerification, kPhoneNumberVerification } VerificationTranspor #define textSecureHTTPTimeOut 10 -//#define textSecureWebSocketAPI @"wss://textsecure-service.whispersystems.org/v1/websocket/" -//#define textSecureServerURL @"https://textsecure-service.whispersystems.org/" +#define textSecureWebSocketAPI @"wss://textsecure-service.whispersystems.org/v1/websocket/" +#define textSecureServerURL @"https://textsecure-service.whispersystems.org/" -#define textSecureWebSocketAPI @"wss://textsecure-service-staging.whispersystems.org/v1/websocket/" -#define textSecureServerURL @"https://textsecure-service-staging.whispersystems.org/" +//#define textSecureWebSocketAPI @"wss://textsecure-service-staging.whispersystems.org/v1/websocket/" +//#define textSecureServerURL @"https://textsecure-service-staging.whispersystems.org/" #define textSecureGeneralAPI @"v1" #define textSecureAccountsAPI @"v1/accounts"