diff options
| author | Mitchell Hashimoto <m@mitchellh.com> | 2025-10-09 08:51:26 -0700 |
|---|---|---|
| committer | Mitchell Hashimoto <m@mitchellh.com> | 2025-10-09 08:51:33 -0700 |
| commit | bbf875216f1d771daeb4fcc28a1a8c19fe67b43e (patch) | |
| tree | d484aac76690c9ea83193f7894288afd069e3b06 /macos | |
| parent | a2fbaec6136b6c58f21565c81475386dec55bb5c (diff) | |
macos: fix driver for retry to trigger update check again
Diffstat (limited to 'macos')
| -rw-r--r-- | macos/Sources/Features/Update/UpdateDriver.swift | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/macos/Sources/Features/Update/UpdateDriver.swift b/macos/Sources/Features/Update/UpdateDriver.swift index 70f9341a6..5ff29ef75 100644 --- a/macos/Sources/Features/Update/UpdateDriver.swift +++ b/macos/Sources/Features/Update/UpdateDriver.swift @@ -10,7 +10,8 @@ class UpdateDriver: NSObject, SPUUserDriver { super.init() } - func show(_ request: SPUUpdatePermissionRequest, reply: @escaping @Sendable (SUUpdatePermissionResponse) -> Void) { + func show(_ request: SPUUpdatePermissionRequest, + reply: @escaping @Sendable (SUUpdatePermissionResponse) -> Void) { viewModel.state = .permissionRequest(.init(request: request, reply: reply)) } @@ -18,7 +19,9 @@ class UpdateDriver: NSObject, SPUUserDriver { viewModel.state = .checking(.init(cancel: cancellation)) } - func showUpdateFound(with appcastItem: SUAppcastItem, state: SPUUserUpdateState, reply: @escaping @Sendable (SPUUserUpdateChoice) -> Void) { + func showUpdateFound(with appcastItem: SUAppcastItem, + state: SPUUserUpdateState, + reply: @escaping @Sendable (SPUUserUpdateChoice) -> Void) { viewModel.state = .updateAvailable(.init(appcastItem: appcastItem, reply: reply)) } @@ -31,20 +34,22 @@ class UpdateDriver: NSObject, SPUUserDriver { // We don't do anything with release notes. See `showUpdateReleaseNotes` } - func showUpdateNotFoundWithError(_ error: any Error, acknowledgement: @escaping () -> Void) { + func showUpdateNotFoundWithError(_ error: any Error, + acknowledgement: @escaping () -> Void) { viewModel.state = .notFound - // TODO: Do we need to acknowledge? + acknowledgement() } - func showUpdaterError(_ error: any Error, acknowledgement: @escaping () -> Void) { + func showUpdaterError(_ error: any Error, + acknowledgement: @escaping () -> Void) { viewModel.state = .error(.init( error: error, - retry: { - guard let delegate = NSApp.delegate as? AppDelegate else { - return + retry: { [weak viewModel] in + viewModel?.state = .idle + DispatchQueue.main.async { + guard let delegate = NSApp.delegate as? AppDelegate else { return } + delegate.checkForUpdates(self) } - - // TODO fill this in }, dismiss: { [weak viewModel] in viewModel?.state = .idle |
