Add Toggle for prerelease appcast

This commit is contained in:
Brandon Evans 2021-01-19 20:45:32 -07:00
parent f3a3961e0e
commit b39d6d58da
No known key found for this signature in database
GPG key ID: D58A4B8DB64F8E93

View file

@ -18,6 +18,11 @@ struct UpdatesPreferencePane: View {
"Automatically check for updates",
isOn: $updater.automaticallyChecksForUpdates
)
Toggle(
"Include prerelease versions",
isOn: $updater.includePrereleaseVersions
)
Button("Check Now") {
SUUpdater.shared()?.checkForUpdates(nil)
@ -54,7 +59,17 @@ class ObservableUpdater: ObservableObject {
private var automaticallyChecksForUpdatesObservation: NSKeyValueObservation?
@Published var lastUpdateCheckDate: Date?
private var lastUpdateCheckDateObservation: NSKeyValueObservation?
@Published var includePrereleaseVersions = false {
didSet {
UserDefaults.standard.setValue(includePrereleaseVersions, forKey: "includePrereleaseVersions")
if includePrereleaseVersions {
SUUpdater.shared()?.feedURL = .prereleaseAppcast
} else {
SUUpdater.shared()?.feedURL = .appcast
}
}
}
init() {
automaticallyChecksForUpdatesObservation = SUUpdater.shared()?.observe(
@ -72,9 +87,15 @@ class ObservableUpdater: ObservableObject {
self.lastUpdateCheckDate = updater.lastUpdateCheckDate
}
)
includePrereleaseVersions = UserDefaults.standard.bool(forKey: "includePrereleaseVersions")
}
}
extension URL {
static let appcast = URL(string: "https://robotsandpencils.github.io/XcodesApp/appcast.xml")!
static let prereleaseAppcast = URL(string: "https://robotsandpencils.github.io/XcodesApp/appcast_pre.xml")!
}
struct UpdatesPreferencePane_Previews: PreviewProvider {
static var previews: some View {
Group {