@@ -5,6 +5,7 @@ import AppleAPI
55import Version
66import LegibleError
77import os. log
8+ import DockProgress
89
910/// Downloads and installs Xcodes
1011extension AppState {
@@ -151,6 +152,7 @@ extension AppState {
151152 cookies
152153 )
153154 progressChanged ( progress)
155+ updateDockIcon ( withProgress: progress)
154156 return publisher
155157 . map { _ in destination. url }
156158 . eraseToAnyPublisher ( )
@@ -160,11 +162,12 @@ extension AppState {
160162 let resumeDataPath = Path . xcodesApplicationSupport/ " Xcode- \( availableXcode. version) .resumedata "
161163 let persistedResumeData = Current . files. contents ( atPath: resumeDataPath. string)
162164
163- return attemptResumableTask ( maximumRetryCount: 3 ) { resumeData -> AnyPublisher < URL , Error > in
165+ return attemptResumableTask ( maximumRetryCount: 3 ) { [ weak self ] resumeData -> AnyPublisher < URL , Error > in
164166 let ( progress, publisher) = Current . network. downloadTask ( with: availableXcode. url,
165167 to: destination. url,
166168 resumingWith: resumeData ?? persistedResumeData)
167169 progressChanged ( progress)
170+ self ? . updateDockIcon ( withProgress: progress)
168171 return publisher
169172 . map { $0. saveLocation }
170173 . eraseToAnyPublisher ( )
@@ -174,6 +177,11 @@ extension AppState {
174177 } )
175178 . eraseToAnyPublisher ( )
176179 }
180+
181+ private func updateDockIcon( withProgress progress: Progress ) {
182+ DockProgress . style = . bar
183+ DockProgress . progressInstance = progress
184+ }
177185
178186 public func installArchivedXcode( _ availableXcode: AvailableXcode , at archiveURL: URL ) -> AnyPublisher < InstalledXcode , Error > {
179187 do {
0 commit comments