let directoryMetadatas = dbManager.directoryMetadatas(account: ncAccount.ncKitAccount)
var allMetadatas: [NextcloudItemMetadataTable] = []
+ var serverError: NKError?
let dispatchGroup = DispatchGroup() // TODO: Maybe own thread?
for directoryMetadata in directoryMetadatas {
FileProviderEnumerator.readServerUrl(directoryMetadata.serverUrl, ncAccount: ncAccount, ncKit: ncKit) { metadatas, _, _, _, readError in
guard readError == nil else {
NSLog("Finishing enumeration of working set directory %@ with error %@", directoryMetadata.serverUrl, readError!.localizedDescription)
+
+ let nkError = NKError(error: readError!)
+ if nkError.isUnauthenticatedError || nkError.isCouldntConnectError {
+ // If it is a critical error then stop, if not then continue
+ serverError = nkError
+ }
+
dispatchGroup.leave()
return
}
}
dispatchGroup.wait()
+
+ guard serverError == nil else {
+ observer.finishEnumeratingWithError(serverError!.error)
+ return
+ }
}
FileProviderEnumerator.completeEnumerationObserver(observer, ncKit: self.ncKit, numPage: 1, itemMetadatas: allMetadatas)