From e0dd778bb3d16717c72abb5e3aef17feb2ac606b Mon Sep 17 00:00:00 2001 From: Nico Verbruggen Date: Sat, 22 Jan 2022 20:50:17 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=8C=20Add=20debounce=20to=20site=20sea?= =?UTF-8?q?rch=20(#82)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PHP Monitor.xcodeproj/project.pbxproj | 4 ++-- phpmon/Domain/SiteList/SiteListVC.swift | 6 +++++- phpmon/Domain/SiteList/SiteListWC.swift | 8 +++++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/PHP Monitor.xcodeproj/project.pbxproj b/PHP Monitor.xcodeproj/project.pbxproj index 058f62b..96961a9 100644 --- a/PHP Monitor.xcodeproj/project.pbxproj +++ b/PHP Monitor.xcodeproj/project.pbxproj @@ -1157,7 +1157,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 11.0; - MARKETING_VERSION = "5.0-wip"; + MARKETING_VERSION = "5.0-dev"; PRODUCT_BUNDLE_IDENTIFIER = com.nicoverbruggen.phpmon; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -1182,7 +1182,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 11.0; - MARKETING_VERSION = "5.0-wip"; + MARKETING_VERSION = "5.0-dev"; PRODUCT_BUNDLE_IDENTIFIER = com.nicoverbruggen.phpmon; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/phpmon/Domain/SiteList/SiteListVC.swift b/phpmon/Domain/SiteList/SiteListVC.swift index d416fd7..d2dc655 100644 --- a/phpmon/Domain/SiteList/SiteListVC.swift +++ b/phpmon/Domain/SiteList/SiteListVC.swift @@ -172,13 +172,17 @@ class SiteListVC: NSViewController, NSTableViewDelegate, NSTableViewDataSource { if searchString.isEmpty { sites = Valet.shared.sites - tableView.reloadData() + + DispatchQueue.main.async { + self.tableView.reloadData() + } return } sites = Valet.shared.sites.filter({ site in return site.name.lowercased().contains(searchString) }) + DispatchQueue.main.async { self.tableView.reloadData() } diff --git a/phpmon/Domain/SiteList/SiteListWC.swift b/phpmon/Domain/SiteList/SiteListWC.swift index d652dad..9f032c9 100644 --- a/phpmon/Domain/SiteList/SiteListWC.swift +++ b/phpmon/Domain/SiteList/SiteListWC.swift @@ -34,12 +34,18 @@ class SiteListWC: PMWindowController, NSSearchFieldDelegate, NSToolbarDelegate { return self.contentViewController as! SiteListVC } + var searchTimer: Timer? + func controlTextDidChange(_ notification: Notification) { guard let searchField = notification.object as? NSSearchField else { 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