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]; [super viewDidLoad];
[self.contactsViewHelper warmNonSignalContactsCacheAsync];
self.title = NSLocalizedString(@"MESSAGE_COMPOSEVIEW_TITLE", @""); 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 NS_ASSUME_NONNULL_BEGIN
@ -70,6 +70,7 @@ NS_ASSUME_NONNULL_BEGIN
- (NSArray<SignalAccount *> *)signalAccountsMatchingSearchString:(NSString *)searchText; - (NSArray<SignalAccount *> *)signalAccountsMatchingSearchString:(NSString *)searchText;
- (void)warmNonSignalContactsCacheAsync;
- (NSArray<Contact *> *)nonSignalContactsMatchingSearchString:(NSString *)searchText; - (NSArray<Contact *> *)nonSignalContactsMatchingSearchString:(NSString *)searchText;
- (void)presentContactViewControllerForRecipientId:(NSString *)recipientId - (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 - (nullable NSArray<Contact *> *)nonSignalContacts
{ {
OWSAssertIsOnMainThread();
if (!_nonSignalContacts) { if (!_nonSignalContacts) {
NSMutableSet<Contact *> *nonSignalContacts = [NSMutableSet new]; NSMutableSet<Contact *> *nonSignalContacts = [NSMutableSet new];
[OWSPrimaryStorage.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) { [OWSPrimaryStorage.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {

Loading…
Cancel
Save