From d37e86ce2c0b807d6f9516e938fe1babff7d5f3c Mon Sep 17 00:00:00 2001 From: Nico Verbruggen Date: Sun, 5 Dec 2021 04:29:05 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=8C=20Fix=20busy=20status=20and=20fix?= =?UTF-8?q?=20notifications=20when=20app=20is=20active?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phpmon/AppDelegate.swift | 7 ++- phpmon/Domain/Core/Base.lproj/Main.storyboard | 20 ++++--- phpmon/Domain/SiteList/SiteListVC.swift | 54 ++++++++++++------- 3 files changed, 52 insertions(+), 29 deletions(-) diff --git a/phpmon/AppDelegate.swift b/phpmon/AppDelegate.swift index 5a33909..e78f753 100644 --- a/phpmon/AppDelegate.swift +++ b/phpmon/AppDelegate.swift @@ -9,7 +9,7 @@ import Cocoa import UserNotifications @NSApplicationMain -class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDelegate { +class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDelegate { // MARK: - Variables @@ -70,9 +70,14 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele */ func applicationDidFinishLaunching(_ aNotification: Notification) { LocalNotification.askForPermission() + UNUserNotificationCenter.current().delegate = self self.menu.startup() } + func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { + completionHandler([.banner]) + } + // MARK: - Menu Interactions @IBAction func reloadSiteListPressed(_ sender: Any) { diff --git a/phpmon/Domain/Core/Base.lproj/Main.storyboard b/phpmon/Domain/Core/Base.lproj/Main.storyboard index e76f007..04fcab6 100644 --- a/phpmon/Domain/Core/Base.lproj/Main.storyboard +++ b/phpmon/Domain/Core/Base.lproj/Main.storyboard @@ -586,17 +586,17 @@ Gw - + - + - + - + @@ -732,15 +732,19 @@ Gw - - + + + + + + - + @@ -752,7 +756,7 @@ Gw - + diff --git a/phpmon/Domain/SiteList/SiteListVC.swift b/phpmon/Domain/SiteList/SiteListVC.swift index d02ddaa..40c01a6 100644 --- a/phpmon/Domain/SiteList/SiteListVC.swift +++ b/phpmon/Domain/SiteList/SiteListVC.swift @@ -73,8 +73,8 @@ class SiteListVC: NSViewController, NSTableViewDelegate, NSTableViewDataSource { func reloadSites() { // Start spinner and reset view (no items) self.progressIndicator.startAnimation(nil) - self.sites = [] - self.tableView.reloadData() + self.tableView.alphaValue = 0.3 + self.tableView.isEnabled = false DispatchQueue.global(qos: .userInitiated).async { [unowned self] in // Reload site information @@ -86,6 +86,8 @@ class SiteListVC: NSViewController, NSTableViewDelegate, NSTableViewDataSource { // Stop spinner self.progressIndicator.stopAnimation(nil) + self.tableView.alphaValue = 1.0 + self.tableView.isEnabled = true // Re-apply any existing search self.searchedFor(text: lastSearchedFor) @@ -193,26 +195,38 @@ class SiteListVC: NSViewController, NSTableViewDelegate, NSTableViewDataSource { let previous = site.secured let action = site.secured ? "unsecure" : "secure" - let command = "cd \(site.absolutePath!) && sudo \(Paths.valet) \(action) && exit;" - let _ = Shell.pipe(command, requiresPath: true) + self.progressIndicator.startAnimation(nil) + self.tableView.alphaValue = 0.3 + self.tableView.isEnabled = false - site.determineSecured(Valet.shared.config.tld) - - if site.secured == previous { - Alert.notify( - message: "SSL status not changed", - info: "Something went wrong. Try running the command in your terminal manually: `\(command)`") - } else { - let newState = site.secured ? "secured" : "unsecured" - LocalNotification.send( - title: "SSL status changed", - subtitle: "The domain '\(site.name!).\(Valet.shared.config.tld)' is now \(newState)." - ) + DispatchQueue.global(qos: .userInitiated).async { [unowned self] in + let command = "cd \(site.absolutePath!) && sudo \(Paths.valet) \(action) && exit;" + let _ = Shell.pipe(command, requiresPath: true) + + site.determineSecured(Valet.shared.config.tld) + + DispatchQueue.main.async { [self] in + if site.secured == previous { + Alert.notify( + message: "SSL status not changed", + info: "Something went wrong. Try running the command in your terminal manually: `\(command)`") + } else { + let newState = site.secured ? "secured" : "unsecured" + LocalNotification.send( + title: "SSL status changed", + subtitle: "The domain '\(site.name!).\(Valet.shared.config.tld)' is now \(newState)." + ) + } + + progressIndicator.stopAnimation(nil) + self.tableView.alphaValue = 1 + self.tableView.isEnabled = true + + tableView.reloadData(forRowIndexes: [rowToReload], columnIndexes: [0]) + tableView.deselectRow(rowToReload) + tableView.selectRowIndexes([rowToReload], byExtendingSelection: true) + } } - - tableView.reloadData(forRowIndexes: [rowToReload], columnIndexes: [0]) - tableView.deselectRow(rowToReload) - tableView.selectRowIndexes([rowToReload], byExtendingSelection: true) } // MARK: Open with IDE / Editor