1
0
mirror of https://github.com/nicoverbruggen/phpmon.git synced 2025-08-08 04:20:07 +02:00

👌 Add debounce to site search (#82)

This commit is contained in:
2022-01-22 20:50:17 +01:00
parent c3f8a53ac3
commit e0dd778bb3
3 changed files with 14 additions and 4 deletions

View File

@ -1157,7 +1157,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 11.0; MACOSX_DEPLOYMENT_TARGET = 11.0;
MARKETING_VERSION = "5.0-wip"; MARKETING_VERSION = "5.0-dev";
PRODUCT_BUNDLE_IDENTIFIER = com.nicoverbruggen.phpmon; PRODUCT_BUNDLE_IDENTIFIER = com.nicoverbruggen.phpmon;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
@ -1182,7 +1182,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 11.0; MACOSX_DEPLOYMENT_TARGET = 11.0;
MARKETING_VERSION = "5.0-wip"; MARKETING_VERSION = "5.0-dev";
PRODUCT_BUNDLE_IDENTIFIER = com.nicoverbruggen.phpmon; PRODUCT_BUNDLE_IDENTIFIER = com.nicoverbruggen.phpmon;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";

View File

@ -172,13 +172,17 @@ class SiteListVC: NSViewController, NSTableViewDelegate, NSTableViewDataSource {
if searchString.isEmpty { if searchString.isEmpty {
sites = Valet.shared.sites sites = Valet.shared.sites
tableView.reloadData()
DispatchQueue.main.async {
self.tableView.reloadData()
}
return return
} }
sites = Valet.shared.sites.filter({ site in sites = Valet.shared.sites.filter({ site in
return site.name.lowercased().contains(searchString) return site.name.lowercased().contains(searchString)
}) })
DispatchQueue.main.async { DispatchQueue.main.async {
self.tableView.reloadData() self.tableView.reloadData()
} }

View File

@ -34,12 +34,18 @@ class SiteListWC: PMWindowController, NSSearchFieldDelegate, NSToolbarDelegate {
return self.contentViewController as! SiteListVC return self.contentViewController as! SiteListVC
} }
var searchTimer: Timer?
func controlTextDidChange(_ notification: Notification) { func controlTextDidChange(_ notification: Notification) {
guard let searchField = notification.object as? NSSearchField else { guard let searchField = notification.object as? NSSearchField else {
return return
} }
contentVC.searchedFor(text: searchField.stringValue) self.searchTimer?.invalidate()
searchTimer = Timer.scheduledTimer(withTimeInterval: 0.3, repeats: false, block: { _ in
self.contentVC.searchedFor(text: searchField.stringValue)
})
} }
// MARK: - Reload functionality // MARK: - Reload functionality