From 348c89871e051ff392d528aa6f1527d455848fb5 Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 31 Mar 2024 01:44:34 +0800 Subject: [PATCH 1/2] Fix broken DockProgress Bar Update DockProgress and adopt the new Concurrency Model --- Xcodes.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/swiftpm/Package.resolved | 4 ++-- Xcodes/Backend/AppState+Install.swift | 23 +++++++++++-------- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/Xcodes.xcodeproj/project.pbxproj b/Xcodes.xcodeproj/project.pbxproj index adcdd55c..4c4462e2 100644 --- a/Xcodes.xcodeproj/project.pbxproj +++ b/Xcodes.xcodeproj/project.pbxproj @@ -1529,7 +1529,7 @@ repositoryURL = "https://github.com/sindresorhus/DockProgress"; requirement = { kind = upToNextMinorVersion; - minimumVersion = 3.2.0; + minimumVersion = 4.3.1; }; }; E84E4F552B335094003F3959 /* XCRemoteSwiftPackageReference "swift-collections" */ = { diff --git a/Xcodes.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Xcodes.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 220940ed..1dbb8fe2 100644 --- a/Xcodes.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Xcodes.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -33,8 +33,8 @@ "repositoryURL": "https://github.com/sindresorhus/DockProgress", "state": { "branch": null, - "revision": "7100b68571e2dafe3a06ad5905b80fc3b0107b4b", - "version": "3.2.0" + "revision": "d4f23b5a8f5ca0fac393eb7ba78c2fe3e32e52da", + "version": "4.3.1" } }, { diff --git a/Xcodes/Backend/AppState+Install.swift b/Xcodes/Backend/AppState+Install.swift index 325f314f..a6969f7d 100644 --- a/Xcodes/Backend/AppState+Install.swift +++ b/Xcodes/Backend/AppState+Install.swift @@ -473,19 +473,24 @@ extension AppState { // MARK: - Dock Progress Tracking private func setupDockProgress() { - DockProgress.progressInstance = nil - DockProgress.style = .bar - - let progress = Progress(totalUnitCount: AppState.totalProgressUnits) - progress.kind = .file - progress.fileOperationKind = .downloading - overallProgress = progress + Task { @MainActor in + DockProgress.progressInstance = nil + DockProgress.style = .bar + + let progress = Progress(totalUnitCount: AppState.totalProgressUnits) + progress.kind = .file + progress.fileOperationKind = .downloading + overallProgress = progress + + DockProgress.progressInstance = overallProgress + } - DockProgress.progressInstance = overallProgress } func resetDockProgressTracking() { - DockProgress.progress = 1 // Only way to completely remove overlay with DockProgress is setting progress to complete + Task { @MainActor in + DockProgress.progress = 1 // Only way to completely remove overlay with DockProgress is setting progress to complete + } } // MARK: - From 33dc6347f2eb1fa573e9395450bdc040021eefa6 Mon Sep 17 00:00:00 2001 From: Matt Kiazyk Date: Fri, 24 May 2024 20:23:03 -0500 Subject: [PATCH 2/2] after last step reset dock progress --- Xcodes/Backend/AppState+Install.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Xcodes/Backend/AppState+Install.swift b/Xcodes/Backend/AppState+Install.swift index a6969f7d..d9d294ef 100644 --- a/Xcodes/Backend/AppState+Install.swift +++ b/Xcodes/Backend/AppState+Install.swift @@ -227,6 +227,7 @@ extension AppState { self.error = error self.presentedAlert = .generic(title: localizeString("Alert.InstallArchive.Error.Title"), message: error.legibleLocalizedDescription) } + resetDockProgressTracking() }) .catch { _ in Just(installedXcode)