Merge pull request #768 from stonerl/improved-image-loading

Video Thumbnails: retry 3 times fetching from URL
This commit is contained in:
Arkadiusz Fal 2024-08-31 12:47:31 +02:00 committed by GitHub
commit 663c37e3d2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -5,10 +5,27 @@ final class ThumbnailsModel: ObservableObject {
static var shared = ThumbnailsModel() static var shared = ThumbnailsModel()
@Published var unloadable = Set<URL>() @Published var unloadable = Set<URL>()
private var retryCounts = [URL: Int]()
private let maxRetries = 3
private let retryDelay: TimeInterval = 1.0
func insertUnloadable(_ url: URL) { func insertUnloadable(_ url: URL) {
DispatchQueue.main.async { let retries = (retryCounts[url] ?? 0) + 1
self.unloadable.insert(url)
if retries >= maxRetries {
DispatchQueue.main.async {
self.unloadable.insert(url)
self.retryCounts.removeValue(forKey: url)
}
} else {
DispatchQueue.main.async {
self.retryCounts[url] = retries
}
DispatchQueue.global().asyncAfter(deadline: .now() + retryDelay) {
DispatchQueue.main.async {
self.retryCounts[url] = retries
}
}
} }
} }