Skip to content

Commit 778fd28

Browse files
committed
Merge branch 'feature/beta-channel-update' into develop
2 parents 22f0b92 + 4581689 commit 778fd28

4 files changed

Lines changed: 28 additions & 2 deletions

File tree

Core/Package.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,7 @@ let package = Package(
289289
name: "UpdateChecker",
290290
dependencies: [
291291
"Sparkle",
292+
.product(name: "Preferences", package: "Tool"),
292293
.product(name: "Logger", package: "Tool"),
293294
]
294295
),

Core/Sources/HostApp/GeneralView.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,8 @@ struct GeneralSettingsView: View {
238238
var hideCircularWidget
239239
@AppStorage(\.showHideWidgetShortcutGlobally)
240240
var showHideWidgetShortcutGlobally
241+
@AppStorage(\.installBetaBuilds)
242+
var installBetaBuilds
241243
}
242244

243245
@StateObject var settings = Settings()
@@ -255,6 +257,10 @@ struct GeneralSettingsView: View {
255257
)) {
256258
Text("Automatically Check for Update")
257259
}
260+
261+
Toggle(isOn: $settings.installBetaBuilds) {
262+
Text("Install beta builds")
263+
}
258264

259265
Picker(selection: $settings.suggestionWidgetPositionMode) {
260266
ForEach(SuggestionWidgetPositionMode.allCases, id: \.rawValue) {

Core/Sources/UpdateChecker/UpdateChecker.swift

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
import Sparkle
21
import Logger
2+
import Preferences
3+
import Sparkle
34

45
public final class UpdateChecker {
56
let updater: SPUUpdater
67
let hostBundleFound: Bool
8+
let delegate = UpdaterDelegate()
79

810
public init(hostBundle: Bundle?) {
911
if hostBundle == nil {
@@ -16,7 +18,7 @@ public final class UpdateChecker {
1618
hostBundle: hostBundle ?? Bundle.main,
1719
applicationBundle: Bundle.main,
1820
userDriver: SPUStandardUserDriver(hostBundle: hostBundle ?? Bundle.main, delegate: nil),
19-
delegate: nil
21+
delegate: delegate
2022
)
2123
do {
2224
try updater.start()
@@ -35,3 +37,13 @@ public final class UpdateChecker {
3537
}
3638
}
3739

40+
class UpdaterDelegate: NSObject, SPUUpdaterDelegate {
41+
func allowedChannels(for updater: SPUUpdater) -> Set<String> {
42+
if UserDefaults.shared.value(for: \.installBetaBuilds) {
43+
Set(["beta"])
44+
} else {
45+
[]
46+
}
47+
}
48+
}
49+

Tool/Sources/Preferences/Keys.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,13 @@ public struct UserDefaultPreferenceKeys {
9393
defaultValue: false,
9494
key: "ShowHideWidgetShortcutGlobally"
9595
)
96+
97+
// MARK: Update Channel
98+
99+
public let installBetaBuilds = PreferenceKey(
100+
defaultValue: false,
101+
key: "InstallBetaBuilds"
102+
)
96103
}
97104

98105
// MARK: - OpenAI Account Settings

0 commit comments

Comments
 (0)