import Foundation final class ThumbnailsModel: ObservableObject { @Published var unloadable = Set() func insertUnloadable(_ url: URL) { unloadable.insert(url) } func isUnloadable(_ url: URL!) -> Bool { guard !url.isNil else { return true } return unloadable.contains(url) } func best(_ video: Video) -> URL? { let qualities = [Thumbnail.Quality.maxresdefault, .medium, .default] for quality in qualities { let url = video.thumbnailURL(quality: quality) if !isUnloadable(url) { return url } } return nil } }