@@ -46,27 +46,19 @@ final class RestoreImageDownload {
4646
4747 fileprivate func progressDone( error: Error ? ) {
4848 FileModel . cleanUpTemporaryFiles ( )
49- delegate? . progress ( 100 , progressString: " Done " )
49+ delegate? . progress ( 100 , progressString: " Restore image download finished. " )
5050 delegate? . done ( error: error)
5151 }
5252
5353 fileprivate func download( restoreImage: VZMacOSRestoreImage ) {
5454 Logger . shared. log ( level: . default, " downloading restore image for \( restoreImage. operatingSystemVersionString) " )
5555
56- var targetURL : URL ? = nil
57- if let filesDirectoryString = UserDefaults . standard. restoreImagesDirectory ?? UserDefaults . standard. vmFilesDirectory {
58- targetURL = createRestoreImageURL ( directoryString: filesDirectoryString)
59-
60- // grant access for the restore images path
61- guard Bookmark . startRestoreImagesDirectoryAccess ( ) else {
62- Logger . shared. warning ( " Could not start accessing bookmark \( filesDirectoryString) " )
63- return
64- }
65- }
66-
56+ let restoreImagesDirectoryURL = URL . startAccessingRestoreImagesDirectory ( )
57+ let restoreImagesURL = URL . createFilename ( baseURL: restoreImagesDirectoryURL, name: " RestoreImage " , suffix: " ipsw " )
58+
6759 let downloadTask = URLSession . shared. downloadTask ( with: restoreImage. url) { tempURL, response, error in
6860 self . downloading = false
69- self . downloadFinished ( tempURL: tempURL, restoreImageURL: targetURL , error: error)
61+ self . downloadFinished ( tempURL: tempURL, restoreImageURL: restoreImagesURL , error: error)
7062 }
7163 observation = downloadTask. progress. observe ( \. fractionCompleted) { _, _ in }
7264 downloadTask. resume ( )
@@ -109,7 +101,6 @@ final class RestoreImageDownload {
109101 }
110102 Logger . shared. log ( level: . default, " download finished " )
111103
112- let moveError = RestoreError ( localizedDescription: " Failed to prepare downloaded restore image " )
113104 if let tempURL, let restoreImageURL {
114105 Logger . shared. log ( level: . debug, " moving restore image: \( tempURL) to \( restoreImageURL) " )
115106 delegate? . progress ( 99 , progressString: " Preparing file. Please wait... " )
@@ -119,29 +110,11 @@ final class RestoreImageDownload {
119110 Logger . shared. log ( level: . default, " moved restore image to \( restoreImageURL) " )
120111 progressDone ( error: nil )
121112 } catch {
122- Logger . shared. log ( level: . error, " failed to prepare restore image: \( error. localizedDescription) " )
123- progressDone ( error: moveError)
113+ progressDone ( error: RestoreError ( localizedDescription: " Failed to prepare downloaded restore image: \( error. localizedDescription) " ) )
124114 }
125115 } else {
126- Logger . shared. log ( level: . error, " failed to prepare downloaded restore image " )
127- progressDone ( error: moveError)
128- }
129- }
130-
131- fileprivate func createRestoreImageURL( directoryString: String ) -> URL {
132- // try to find a filename that does not exist
133- var url = URL ( fileURLWithPath: directoryString)
134- var exists = true
135- var i = 1
136- while exists {
137- url = URL . nextURL ( for: url, index: i, baseName: " RestoreImage " )
138- if FileManager . default. fileExists ( atPath: url. path) {
139- i += 1
140- } else {
141- exists = false
142- }
116+ progressDone ( error: RestoreError ( localizedDescription: " Failed to prepare downloaded restore image: invalid destination " ) )
143117 }
144- return url
145118 }
146119}
147120
0 commit comments