From 78510ea3fe027c48615cc6fd5821e11dd5ceb8db Mon Sep 17 00:00:00 2001 From: Nico Verbruggen Date: Mon, 3 Jan 2022 16:09:49 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=8C=20Even=20more=20cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phpmon/Domain/Menu/MainMenu.swift | 4 ++-- phpmon/Domain/Preferences/Preferences.swift | 14 +++++++++++--- .../Preferences/Views/CheckboxPreferenceView.swift | 2 +- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/phpmon/Domain/Menu/MainMenu.swift b/phpmon/Domain/Menu/MainMenu.swift index f7f4dd9..6abfa62 100644 --- a/phpmon/Domain/Menu/MainMenu.swift +++ b/phpmon/Domain/Menu/MainMenu.swift @@ -307,7 +307,7 @@ class MainMenu: NSObject, NSWindowDelegate, NSMenuDelegate { waitAndExecute { sender.phpExtension?.toggle() - if Preferences.isTrue(.autoServiceRestartAfterExtensionToggle) { + if Preferences.isEnabled(.autoServiceRestartAfterExtensionToggle) { Actions.restartPhpFpm() } } @@ -472,7 +472,7 @@ class MainMenu: NSObject, NSWindowDelegate, NSMenuDelegate { } // Run composer updates - if Preferences.isTrue(.autoComposerGlobalUpdateAfterSwitch) { + if Preferences.isEnabled(.autoComposerGlobalUpdateAfterSwitch) { self.updateGlobalDependencies(notify: false, completion: { _ in sendLocalNotification() }) } else { sendLocalNotification() diff --git a/phpmon/Domain/Preferences/Preferences.swift b/phpmon/Domain/Preferences/Preferences.swift index 9b2e9bd..efe9ab9 100644 --- a/phpmon/Domain/Preferences/Preferences.swift +++ b/phpmon/Domain/Preferences/Preferences.swift @@ -66,13 +66,21 @@ class Preferences { return Self.shared.cachedPreferences } - static func isTrue(_ preference: PreferenceName) -> Bool { - return Preferences.preferences[preference] as! Bool == true + /** + Determine whether a particular preference is enabled. + - Important: Requires the preference to have a corresponding boolean value, or a fatal error will be thrown. + */ + static func isEnabled(_ preference: PreferenceName) -> Bool { + if let bool = Preferences.preferences[preference] as? Bool { + return bool == true + } else { + fatalError("\(preference) is not a valid boolean preference!") + } } // MARK: - Internal Functionality - static func cache() -> [PreferenceName: Any] { + private static func cache() -> [PreferenceName: Any] { return [ // Part 1: Always Booleans .shouldDisplayDynamicIcon: UserDefaults.standard.bool(forKey: PreferenceName.shouldDisplayDynamicIcon.rawValue) as Any, diff --git a/phpmon/Domain/Preferences/Views/CheckboxPreferenceView.swift b/phpmon/Domain/Preferences/Views/CheckboxPreferenceView.swift index 941aef5..7040cb6 100644 --- a/phpmon/Domain/Preferences/Views/CheckboxPreferenceView.swift +++ b/phpmon/Domain/Preferences/Views/CheckboxPreferenceView.swift @@ -21,7 +21,7 @@ class CheckboxPreferenceView: NSView, XibLoadable { var preference: PreferenceName! { didSet { - self.buttonCheckbox.state = Preferences.isTrue(self.preference) ? .on : .off + self.buttonCheckbox.state = Preferences.isEnabled(self.preference) ? .on : .off } }