Merge branch 'mkirk/faster-contact-search'

pull/1/head
Michael Kirk 6 years ago
commit d87fc27e78

@ -278,6 +278,8 @@ NS_ASSUME_NONNULL_BEGIN
{
[super viewDidLoad];
[self.contactsViewHelper warmNonSignalContactsCacheAsync];
self.title = NSLocalizedString(@"MESSAGE_COMPOSEVIEW_TITLE", @"");
}

@ -1,5 +1,5 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
//
NS_ASSUME_NONNULL_BEGIN
@ -70,6 +70,7 @@ NS_ASSUME_NONNULL_BEGIN
- (NSArray<SignalAccount *> *)signalAccountsMatchingSearchString:(NSString *)searchText;
- (void)warmNonSignalContactsCacheAsync;
- (NSArray<Contact *> *)nonSignalContactsMatchingSearchString:(NSString *)searchText;
- (void)presentContactViewControllerForRecipientId:(NSString *)recipientId

@ -263,8 +263,37 @@ NS_ASSUME_NONNULL_BEGIN
}]];
}
- (void)warmNonSignalContactsCacheAsync
{
OWSAssertIsOnMainThread();
if (self.nonSignalContacts != nil) {
return;
}
NSMutableSet<Contact *> *nonSignalContactSet = [NSMutableSet new];
__block NSArray<Contact *> *nonSignalContacts;
[OWSPrimaryStorage.dbReadConnection
asyncReadWithBlock:^(YapDatabaseReadTransaction *transaction) {
for (Contact *contact in self.contactsManager.allContactsMap.allValues) {
NSArray<SignalRecipient *> *signalRecipients = [contact signalRecipientsWithTransaction:transaction];
if (signalRecipients.count < 1) {
[nonSignalContactSet addObject:contact];
}
}
nonSignalContacts = [nonSignalContactSet.allObjects
sortedArrayUsingComparator:^NSComparisonResult(Contact *_Nonnull left, Contact *_Nonnull right) {
return [left.fullName compare:right.fullName];
}];
}
completionBlock:^{
self.nonSignalContacts = nonSignalContacts;
}];
}
- (nullable NSArray<Contact *> *)nonSignalContacts
{
OWSAssertIsOnMainThread();
if (!_nonSignalContacts) {
NSMutableSet<Contact *> *nonSignalContacts = [NSMutableSet new];
[OWSPrimaryStorage.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {

Loading…
Cancel
Save