diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist
index a0614c797..6987d4d10 100644
--- a/Signal/Signal-Info.plist
+++ b/Signal/Signal-Info.plist
@@ -21,7 +21,7 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 2.3.2
+ 2.3.3
CFBundleSignature
????
CFBundleURLTypes
@@ -38,7 +38,7 @@
CFBundleVersion
- 2.3.2.1
+ 2.3.3.0
ITSAppUsesNonExemptEncryption
LOGS_EMAIL
diff --git a/Signal/src/contact/ContactsManager.h b/Signal/src/contact/ContactsManager.h
index 87f489e2b..b877297e3 100644
--- a/Signal/src/contact/ContactsManager.h
+++ b/Signal/src/contact/ContactsManager.h
@@ -21,18 +21,7 @@
typedef void (^ABAccessRequestCompletionBlock)(BOOL hasAccess);
typedef void (^ABReloadRequestCompletionBlock)(NSArray *contacts);
-@interface ContactsManager : NSObject {
- @private
- TOCFuture *futureAddressBook;
- @private
- ObservableValueController *observableContactsController;
- @private
- TOCCancelTokenSource *life;
- @private
- NSDictionary *latestContactsById;
- @private
- NSDictionary *latestWhisperUsersById;
-}
+@interface ContactsManager : NSObject
@property CNContactStore *contactStore;
diff --git a/Signal/src/contact/ContactsManager.m b/Signal/src/contact/ContactsManager.m
index 7b17bb007..af1b957b9 100644
--- a/Signal/src/contact/ContactsManager.m
+++ b/Signal/src/contact/ContactsManager.m
@@ -7,20 +7,28 @@
typedef BOOL (^ContactSearchBlock)(id, NSUInteger, BOOL *);
-@interface ContactsManager () {
- id addressBookReference;
-}
+@interface ContactsManager ()
+
+@property id addressBookReference;
+@property TOCFuture *futureAddressBook;
+@property ObservableValueController *observableContactsController;
+@property TOCCancelTokenSource *life;
+@property(atomic, copy) NSDictionary *latestContactsById;
@end
@implementation ContactsManager
+- (void)dealloc {
+ [_life cancel];
+}
+
- (id)init {
self = [super init];
if (self) {
- life = [TOCCancelTokenSource new];
- observableContactsController = [ObservableValueController observableValueControllerWithInitialValue:nil];
- latestContactsById = @{};
+ _life = [TOCCancelTokenSource new];
+ _observableContactsController = [ObservableValueController observableValueControllerWithInitialValue:nil];
+ _latestContactsById = @{};
}
return self;
}
@@ -39,20 +47,16 @@ typedef BOOL (^ContactSearchBlock)(id, NSUInteger, BOOL *);
[self setupAddressBook];
- [observableContactsController watchLatestValueOnArbitraryThread:^(NSArray *latestContacts) {
+ [self.observableContactsController watchLatestValueOnArbitraryThread:^(NSArray *latestContacts) {
@synchronized(self) {
[self setupLatestContacts:latestContacts];
}
}
- untilCancelled:life.token];
-}
-
-- (void)dealloc {
- [life cancel];
+ untilCancelled:_life.token];
}
- (void)verifyABPermission {
- if (!addressBookReference) {
+ if (!self.addressBookReference) {
[self setupAddressBook];
}
}
@@ -73,7 +77,7 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in
- (void)setupAddressBook {
dispatch_async(ADDRESSBOOK_QUEUE, ^{
[[ContactsManager asyncGetAddressBook] thenDo:^(id addressBook) {
- addressBookReference = addressBook;
+ self.addressBookReference = addressBook;
ABAddressBookRef cfAddressBook = (__bridge ABAddressBookRef)addressBook;
ABAddressBookRegisterExternalChangeCallback(cfAddressBook, onAddressBookChanged, (__bridge void *)self);
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
@@ -106,12 +110,12 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in
[ContactsManager blockingContactDialog];
}
});
- [observableContactsController updateValue:[self getContactsFromAddressBook:addressBookRef]];
+ [self.observableContactsController updateValue:[self getContactsFromAddressBook:addressBookRef]];
}
- (void)setupLatestContacts:(NSArray *)contacts {
if (contacts) {
- latestContactsById = [ContactsManager keyContactsById:contacts];
+ self.latestContactsById = [ContactsManager keyContactsById:contacts];
}
}
@@ -174,16 +178,10 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in
}
}
-- (void)setupLatestRedPhoneUsers:(NSArray *)users {
- if (users) {
- latestWhisperUsersById = [ContactsManager keyContactsById:users];
- }
-}
-
#pragma mark - Observables
- (ObservableValue *)getObservableContacts {
- return observableContactsController;
+ return self.observableContactsController;
}
#pragma mark - Address Book utils
@@ -251,7 +249,7 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in
}
- (NSArray *)latestContactsWithSearchString:(NSString *)searchString {
- return [latestContactsById.allValues filter:^int(Contact *contact) {
+ return [self.latestContactsById.allValues filter:^int(Contact *contact) {
return searchString.length == 0 || [ContactsManager name:contact.fullName matchesQuery:searchString];
}];
}
@@ -395,17 +393,11 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in
}];
}
-- (Contact *)latestContactWithRecordId:(ABRecordID)recordId {
- @synchronized(self) {
- return latestContactsById[@(recordId)];
- }
-}
-
- (NSArray *)allContacts {
NSMutableArray *allContacts = [NSMutableArray array];
- for (NSString *key in latestContactsById.allKeys) {
- Contact *contact = [latestContactsById objectForKey:key];
+ for (NSString *key in self.latestContactsById.allKeys) {
+ Contact *contact = [self.latestContactsById objectForKey:key];
if ([contact isKindOfClass:[Contact class]]) {
[allContacts addObject:contact];
@@ -445,18 +437,6 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in
return [searchString rangeOfString:queryString options:searchOpts].location != NSNotFound;
}
-- (NSArray *)contactsForContactIds:(NSArray *)contactIds {
- NSMutableArray *contacts = [NSMutableArray array];
- for (NSNumber *favouriteId in contactIds) {
- Contact *contact = [self latestContactWithRecordId:favouriteId.intValue];
-
- if (contact) {
- [contacts addObject:contact];
- }
- }
- return [contacts copy];
-}
-
#pragma mark - Whisper User Management
- (NSArray *)getSignalUsersFromContactsArray:(NSArray *)contacts {