fix a deadlock issue

pull/555/head
Ryan Zhao 3 years ago
parent 10abbb0552
commit 3a626ed80a

@ -11,6 +11,9 @@ public protocol GlobalSearchViewDelegate: AnyObject {
@objc
public class GlobalSearchViewController: UITableViewController {
@objc
public static let minimumSearchTextLength: Int = 2
@objc
public weak var delegate: GlobalSearchViewDelegate?
@ -106,16 +109,13 @@ public class GlobalSearchViewController: UITableViewController {
private func updateSearchResults(searchText rawSearchText: String) {
let searchText = rawSearchText.stripped
guard searchText.count > 0 else {
guard searchText.count >= GlobalSearchViewController.minimumSearchTextLength else {
searchResultSet = HomeScreenSearchResultSet.empty
lastSearchText = nil
reloadTableData()
return
}
guard lastSearchText != searchText else {
// Ignoring redundant search.
return
}
guard lastSearchText != searchText else { return }
lastSearchText = searchText
@ -125,17 +125,7 @@ public class GlobalSearchViewController: UITableViewController {
searchResults = strongSelf.searcher.searchForHomeScreen(searchText: searchText, transaction: transaction)
}, completionBlock: { [weak self] in
AssertIsOnMainThread()
guard let self = self else { return }
guard let results = searchResults else {
owsFailDebug("searchResults was unexpectedly nil")
return
}
guard self.lastSearchText == searchText else {
// Discard results from stale search.
return
}
guard let self = self, let results = searchResults, self.lastSearchText == searchText else { return }
self.searchResultSet = results
self.reloadTableData()
})

@ -37,7 +37,7 @@ extension HomeVC: UISearchBarDelegate, GlobalSearchViewDelegate {
func updateSearchResultsVisibility() {
guard let searchText = searchBar.text?.ows_stripped() else { return }
searchResultsController.searchText = searchText
let isSearching = searchText.count > 0
let isSearching = searchText.count >= GlobalSearchViewController.minimumSearchTextLength
searchResultsController.view.isHidden = !isSearching
tableView.isScrollEnabled = !isSearching
}

@ -69,6 +69,13 @@ NSString *const TSContactThreadPrefix = @"c";
return [contact displayNameFor:SNContactContextRegular] ?: sessionID;
}
- (NSString *)nameWithTransaction:(YapDatabaseReadTransaction *)transaction
{
NSString *sessionID = self.contactSessionID;
SNContact *contact = [LKStorage.shared getContactWithSessionID:sessionID using:transaction];
return [contact displayNameFor:SNContactContextRegular] ?: sessionID;
}
+ (NSString *)threadIDFromContactSessionID:(NSString *)contactSessionID {
return [TSContactThreadPrefix stringByAppendingString:contactSessionID];
}

@ -192,6 +192,11 @@ NSString *const TSGroupThread_NotificationKey_UniqueId = @"TSGroupThread_Notific
return self.groupModel.groupName ?: self.class.defaultGroupName;
}
- (NSString *)nameWithTransaction:(YapDatabaseReadTransaction *)transaction
{
return [self name];
}
+ (NSString *)defaultGroupName
{
return @"Group";

@ -38,6 +38,8 @@ BOOL IsNoteToSelfEnabled(void);
*/
- (NSString *)name;
- (NSString *)nameWithTransaction:(YapDatabaseReadTransaction *)transaction;
/**
* @returns recipientId for each recipient in the thread
*/

@ -148,6 +148,11 @@ BOOL IsNoteToSelfEnabled(void)
return nil;
}
- (NSString *)nameWithTransaction:(YapDatabaseReadTransaction *)transaction
{
return nil;
}
- (NSArray<NSString *> *)recipientIdentifiers
{
return @[];

@ -30,7 +30,7 @@ public class ThreadViewModel: NSObject {
self.threadRecord = thread
self.isGroupThread = thread.isGroupThread()
self.name = thread.name()
self.name = thread.name(with: transaction)
self.isMuted = thread.isMuted
self.isPinned = thread.isPinned
self.lastMessageText = thread.lastMessageText(transaction: transaction)

Loading…
Cancel
Save