From b39d6d58dabd16aaeebd225e50386f4a2a24b96f Mon Sep 17 00:00:00 2001 From: Brandon Evans Date: Tue, 19 Jan 2021 20:45:32 -0700 Subject: [PATCH] Add Toggle for prerelease appcast --- .../Preferences/UpdatesPreferencePane.swift | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/Xcodes/Frontend/Preferences/UpdatesPreferencePane.swift b/Xcodes/Frontend/Preferences/UpdatesPreferencePane.swift index 1047cd0..d5e830f 100644 --- a/Xcodes/Frontend/Preferences/UpdatesPreferencePane.swift +++ b/Xcodes/Frontend/Preferences/UpdatesPreferencePane.swift @@ -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 {