mirror of
https://github.com/nicoverbruggen/phpmon.git
synced 2025-08-07 03:50:08 +02:00
✨ Extension manager responds to PHP change
This commit is contained in:
@ -86,7 +86,14 @@ class PhpEnvironments {
|
||||
var cachedPhpInstallations: [String: PhpInstallation] = [:]
|
||||
|
||||
/** Information about the currently linked PHP installation. */
|
||||
var currentInstall: ActivePhpInstallation?
|
||||
var currentInstall: ActivePhpInstallation? {
|
||||
didSet {
|
||||
// Let the PHP extension manager, if it exists, know the version changed
|
||||
if let version = currentInstall?.version.short {
|
||||
App.shared.phpExtensionManagerWindowController?.view?.manager.phpVersion = version
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
The version that the `php` formula via Brew is aliased to on the current system.
|
||||
|
@ -9,8 +9,19 @@
|
||||
import Foundation
|
||||
|
||||
class BrewExtensionsObservable: ObservableObject {
|
||||
@Published var phpVersion: String {
|
||||
didSet {
|
||||
self.loadExtensionData(for: phpVersion)
|
||||
}
|
||||
}
|
||||
|
||||
@Published var extensions: [BrewPhpExtension] = []
|
||||
|
||||
init(phpVersion: String) {
|
||||
self.phpVersion = phpVersion
|
||||
self.loadExtensionData(for: phpVersion)
|
||||
}
|
||||
|
||||
public func loadExtensionData(for version: String) {
|
||||
let tapFormulae = BrewTapFormulae.from(tap: "shivammathur/homebrew-extensions")
|
||||
|
||||
|
@ -70,7 +70,7 @@ extension PhpExtensionManagerView {
|
||||
}
|
||||
}
|
||||
|
||||
self.manager.loadExtensionData(for: self.phpVersion)
|
||||
self.manager.loadExtensionData(for: self.manager.phpVersion)
|
||||
self.status.busy = false
|
||||
} catch let error {
|
||||
let error = error as! BrewCommandError
|
||||
|
@ -10,22 +10,16 @@ import Foundation
|
||||
import SwiftUI
|
||||
|
||||
struct PhpExtensionManagerView: View {
|
||||
@ObservedObject var manager = BrewExtensionsObservable()
|
||||
@ObservedObject var manager: BrewExtensionsObservable
|
||||
@ObservedObject var status: BusyStatus
|
||||
@State var searchText: String
|
||||
@State var phpVersion: String {
|
||||
didSet {
|
||||
self.manager.loadExtensionData(for: self.phpVersion)
|
||||
}
|
||||
}
|
||||
|
||||
init() {
|
||||
self.searchText = ""
|
||||
self.status = BusyStatus.busy()
|
||||
self.phpVersion = PhpEnvironments.shared.currentInstall!.version.short
|
||||
self.manager.loadExtensionData(for: self.phpVersion)
|
||||
let version = PhpEnvironments.shared.currentInstall!.version.short
|
||||
self.manager = BrewExtensionsObservable(phpVersion: version)
|
||||
self.status.busy = false
|
||||
#warning("PHP extension manager does not react to PHP version changes!")
|
||||
}
|
||||
|
||||
var filteredExtensions: [BrewPhpExtension] {
|
||||
|
Reference in New Issue
Block a user