3 Copyright (C) 2024 Rubén Beltrán del Río
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see https://map.tranquil.systems.
20 struct UpdateCommands: Commands {
21 let updaterController: SPUStandardUpdaterController
23 var body: some Commands {
24 CommandGroup(after: .appInfo) {
25 CheckForUpdatesView(updater: updaterController.updater)
30 struct CheckForUpdatesView: View {
31 @ObservedObject private var checkForUpdatesViewModel: CheckForUpdatesViewModel
32 private let updater: SPUUpdater
34 init(updater: SPUUpdater) {
35 self.updater = updater
37 // Create our view model for our CheckForUpdatesView
38 self.checkForUpdatesViewModel = CheckForUpdatesViewModel(updater: updater)
42 Button("Check for Updates…", action: updater.checkForUpdates)
43 .disabled(!checkForUpdatesViewModel.canCheckForUpdates)
47 final class CheckForUpdatesViewModel: ObservableObject {
48 @Published var canCheckForUpdates = false
50 init(updater: SPUUpdater) {
51 updater.publisher(for: \.canCheckForUpdates)
52 .assign(to: &$canCheckForUpdates)