Respond to CR.

pull/1/head
Matthew Chen 7 years ago
parent 3c50269dbf
commit 2db4c96a1c

@ -13,7 +13,7 @@ class ConversationSearchViewController: UITableViewController {
SwiftAssertIsOnMainThread(#function) SwiftAssertIsOnMainThread(#function)
// Use a slight delay to debounce updates. // Use a slight delay to debounce updates.
refreshSearchResults(delay: 0.25) refreshSearchResults()
} }
} }
@ -64,7 +64,7 @@ class ConversationSearchViewController: UITableViewController {
@objc internal func yapDatabaseModified(notification: NSNotification) { @objc internal func yapDatabaseModified(notification: NSNotification) {
SwiftAssertIsOnMainThread(#function) SwiftAssertIsOnMainThread(#function)
refreshSearchResults(delay: 1.0) refreshSearchResults()
} }
// MARK: UITableViewDelegate // MARK: UITableViewDelegate
@ -257,16 +257,26 @@ class ConversationSearchViewController: UITableViewController {
var refreshTimer: Timer? var refreshTimer: Timer?
private func refreshSearchResults(delay: TimeInterval) { private func refreshSearchResults() {
SwiftAssertIsOnMainThread(#function) SwiftAssertIsOnMainThread(#function)
guard !searchResultSet.isEmpty else {
// To avoid incorrectly showing the "no results" state,
// always search immediately if the current result set is empty.
refreshTimer?.invalidate()
refreshTimer = nil
updateSearchResults(searchText: searchText)
return
}
if refreshTimer != nil { if refreshTimer != nil {
// Don't start a new refresh timer if there's already one active. // Don't start a new refresh timer if there's already one active.
return return
} }
refreshTimer?.invalidate() refreshTimer?.invalidate()
refreshTimer = WeakTimer.scheduledTimer(timeInterval: delay, target: self, userInfo: nil, repeats: false) { [weak self] _ in refreshTimer = WeakTimer.scheduledTimer(timeInterval: 0.1, target: self, userInfo: nil, repeats: false) { [weak self] _ in
guard let strongSelf = self else { guard let strongSelf = self else {
return return
} }

Loading…
Cancel
Save