diff --git a/Exemple/OpenSourceControllerDemo.xcodeproj/project.xcworkspace/xcuserdata/florian.gabach.xcuserdatad/UserInterfaceState.xcuserstate b/Exemple/OpenSourceControllerDemo.xcodeproj/project.xcworkspace/xcuserdata/florian.gabach.xcuserdatad/UserInterfaceState.xcuserstate index 86767e7..23986b3 100644 Binary files a/Exemple/OpenSourceControllerDemo.xcodeproj/project.xcworkspace/xcuserdata/florian.gabach.xcuserdatad/UserInterfaceState.xcuserstate and b/Exemple/OpenSourceControllerDemo.xcodeproj/project.xcworkspace/xcuserdata/florian.gabach.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/Sources/Model/LicenceDownloader.swift b/Sources/Model/LicenceDownloader.swift index 30495d4..d83c9d9 100644 --- a/Sources/Model/LicenceDownloader.swift +++ b/Sources/Model/LicenceDownloader.swift @@ -16,22 +16,20 @@ class LicenceDownloader: NSObject { class func downloadLicences(licences: [LicenceFile], config: OpenSourceControllerConfig, completion: @escaping () -> Void) { - // Number of licences - let licenceCount = licences.count - - // Already licence downloaded - var alreadyDownloaded = 0 + let licenceGroupe = DispatchGroup() // Download licence's detail for every lience for licence in licences { + licenceGroupe.enter() + licence.downloadLicenceDetail(config: config, completion: { () in - alreadyDownloaded += 1 - - // If this is the last licence, perfom completion - if licenceCount == alreadyDownloaded { - completion() - } + licenceGroupe.leave() }) } + + // When everything is downloaded + licenceGroupe.notify(queue: .main) { + completion() + } } }