@@ -134,9 +134,26 @@ class FileProviderData: NSObject {
134134
135135 // MARK: - DOWNLOAD
136136
137- func downloadComplete( metadata: tableMetadata , task: URLSessionTask , etag: String ? , error: NKError ) async {
138- let ocId = metadata. ocId
137+ func downloadComplete( fileName: String ,
138+ serverUrl: String ,
139+ etag: String ? ,
140+ date: Date ? ,
141+ dateLastModified: Date ? ,
142+ length: Int64 ,
143+ task: URLSessionTask ,
144+ error: NKError ) async {
139145 let taskIdentifier = task. taskIdentifier
146+ let metadata = await self . database. getMetadataAsync ( predicate: NSPredicate ( format: " serverUrl == %@ AND fileName == %@ " , serverUrl, fileName) )
147+
148+ guard let metadata else {
149+ downloadPendingCompletionHandlers [ taskIdentifier] ? ( nil )
150+ downloadPendingCompletionHandlers. removeValue ( forKey: taskIdentifier)
151+
152+ await signalEnumerator ( ocId: " " , type: . update)
153+ return
154+ }
155+
156+ let ocId = metadata. ocId
140157
141158 await self . database. setMetadataSessionAsync ( ocId: ocId,
142159 session: " " ,
@@ -151,7 +168,11 @@ class FileProviderData: NSObject {
151168 }
152169 }
153170
154- downloadPendingCompletionHandlers [ taskIdentifier] ? ( nil )
171+ if let completion = downloadPendingCompletionHandlers [ taskIdentifier] {
172+ await MainActor . run {
173+ completion ( nil )
174+ }
175+ }
155176 downloadPendingCompletionHandlers. removeValue ( forKey: taskIdentifier)
156177
157178 await signalEnumerator ( ocId: ocId, type: . update)
@@ -167,8 +188,7 @@ class FileProviderData: NSObject {
167188 size: Int64 ,
168189 task: URLSessionTask ,
169190 error: NKError ) async {
170- guard let url = task. currentRequest? . url,
171- let metadata = await self . database. getMetadataAsync ( from: url, sessionTaskIdentifier: task. taskIdentifier) else {
191+ guard let metadata = await self . database. getMetadataAsync ( predicate: NSPredicate ( format: " serverUrl == %@ AND fileName == %@ " , serverUrl, fileName) ) else {
172192 let predicate = NSPredicate ( format: " fileName == %@ AND serverUrl == %@ " , fileName, serverUrl)
173193 await self . database. deleteMetadataAsync ( predicate: predicate)
174194
0 commit comments