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

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

@ -69,6 +69,13 @@ NSString *const TSContactThreadPrefix = @"c";
return [contact displayNameFor:SNContactContextRegular] ?: sessionID; 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 { + (NSString *)threadIDFromContactSessionID:(NSString *)contactSessionID {
return [TSContactThreadPrefix stringByAppendingString:contactSessionID]; return [TSContactThreadPrefix stringByAppendingString:contactSessionID];
} }

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

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

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

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

Loading…
Cancel
Save