From 4971121391cffe24a56f110af516932fe58cc612 Mon Sep 17 00:00:00 2001 From: Nindi Gill Date: Fri, 1 Jul 2022 20:36:49 +1000 Subject: [PATCH] Prevent downloads from looping --- Mist/Helpers/DownloadManager.swift | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Mist/Helpers/DownloadManager.swift b/Mist/Helpers/DownloadManager.swift index 00acd86..2623c3e 100644 --- a/Mist/Helpers/DownloadManager.swift +++ b/Mist/Helpers/DownloadManager.swift @@ -26,12 +26,14 @@ class DownloadManager: NSObject, ObservableObject { var mistError: MistError? var urlError: URLError? var retries: Int = 0 + var completed: Bool = false let completionHandler: (URL?, URLResponse?, Error?) -> Void = { url, _, error in if let error: URLError = error as? URLError { guard error.code != .cancelled else { mistError = .userCancelled + completed = true semaphore.signal() return } @@ -43,12 +45,14 @@ class DownloadManager: NSObject, ObservableObject { if let error: Error = error { mistError = MistError.generalError(error.localizedDescription) + completed = true semaphore.signal() return } guard let url: URL = url else { mistError = MistError.invalidDestinationURL + completed = true semaphore.signal() return } @@ -63,10 +67,11 @@ class DownloadManager: NSObject, ObservableObject { mistError = MistError.generalError(error.localizedDescription) } + completed = true semaphore.signal() } - while mistError == nil { + while !completed { guard retries < retriesMaximum else { throw MistError.maximumRetriesReached