mirror of
https://github.com/nicoverbruggen/phpmon.git
synced 2025-08-10 13:00:07 +02:00
✨ Switch PHP version in the background
This commit is contained in:
@@ -24,7 +24,6 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
|||||||
self.availablePhpVersions = Services.detectPhpVersions()
|
self.availablePhpVersions = Services.detectPhpVersions()
|
||||||
self.setStatusBarImage(version: "???")
|
self.setStatusBarImage(version: "???")
|
||||||
self.updatePhpVersionInStatusBar()
|
self.updatePhpVersionInStatusBar()
|
||||||
print(self.availablePhpVersions)
|
|
||||||
// Schedule a request to fetch the PHP version every 15 seconds
|
// Schedule a request to fetch the PHP version every 15 seconds
|
||||||
Timer.scheduledTimer(timeInterval: 15, target: self, selector: #selector(updatePhpVersionInStatusBar), userInfo: nil, repeats: true)
|
Timer.scheduledTimer(timeInterval: 15, target: self, selector: #selector(updatePhpVersionInStatusBar), userInfo: nil, repeats: true)
|
||||||
}
|
}
|
||||||
@@ -34,7 +33,6 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
|||||||
let image = ImageGenerator.generateImageForStatusBar(width: 32.0, text: version)
|
let image = ImageGenerator.generateImageForStatusBar(width: 32.0, text: version)
|
||||||
image.isTemplate = true
|
image.isTemplate = true
|
||||||
button.image = image
|
button.image = image
|
||||||
button.action = #selector(updatePhpVersionInStatusBar)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,7 +42,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
|||||||
|
|
||||||
@objc func updatePhpVersionInStatusBar() {
|
@objc func updatePhpVersionInStatusBar() {
|
||||||
self.version = PhpVersionExtractor()
|
self.version = PhpVersionExtractor()
|
||||||
self.setStatusBarImage(version: self.version!.short)
|
self.setStatusBarImage(version: self.busy ? "🏗" : self.version!.short)
|
||||||
self.updateMenu()
|
self.updateMenu()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,10 +78,20 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
|||||||
@objc func switchToPhpVersion(sender: AnyObject) {
|
@objc func switchToPhpVersion(sender: AnyObject) {
|
||||||
let index = sender.tag!
|
let index = sender.tag!
|
||||||
let version = self.availablePhpVersions[index]
|
let version = self.availablePhpVersions[index]
|
||||||
print("User wishes to switch to: \(version)")
|
|
||||||
self.busy = true
|
self.busy = true
|
||||||
Services.switchToPhpVersion(version: version, availableVersions: self.availablePhpVersions)
|
self.updatePhpVersionInStatusBar()
|
||||||
self.busy = false
|
self.updateMenu()
|
||||||
|
DispatchQueue.global(qos: .userInitiated).async { [unowned self] in
|
||||||
|
// Switch the PHP version
|
||||||
|
Services.switchToPhpVersion(version: version, availableVersions: self.availablePhpVersions)
|
||||||
|
// Mark as no longer busy
|
||||||
|
self.busy = false
|
||||||
|
// Perform UI updates on main thread
|
||||||
|
DispatchQueue.main.async {
|
||||||
|
self.updatePhpVersionInStatusBar()
|
||||||
|
self.updateMenu()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user