Files
divkit/client/ios/DivKitSVG/SVGImageHolderFactory.swift
T
denlvovich 14d6d9e0ca URL cache is enabled in the playground
commit_hash:cf9e38068d4c26dd71f8e72960a9edf56192d5fe
2025-12-15 02:09:17 +03:00

46 lines
1.2 KiB
Swift

import DivKit
import Foundation
import VGSL
public final class SVGImageHolderFactory: DivImageHolderFactory {
private let requester: URLResourceRequesting
private let imageProcessingQueue: OperationQueueType
private let svgDecoder = SVGDecoder()
public init(
requester: URLResourceRequesting,
imageProcessingQueue: OperationQueueType? = nil
) {
self.requester = requester
self.imageProcessingQueue = imageProcessingQueue ?? OperationQueue(
name: "tech.divkit.svg-image-processing",
qos: .userInitiated
)
}
public convenience init(
requestPerformer: URLRequestPerforming,
imageProcessingQueue: OperationQueueType? = nil
) {
self.init(
requester: NetworkURLResourceRequester(performer: requestPerformer),
imageProcessingQueue: imageProcessingQueue
)
}
public func make(_ url: URL?, _ placeholder: ImagePlaceholder?) -> ImageHolder {
guard let url else {
return placeholder?.toImageHolder() ?? NilImageHolder()
}
return RemoteImageHolder(
url: url,
placeholder: placeholder,
requester: requester,
imageProcessingQueue: imageProcessingQueue,
imageDecoder: { [weak self] in
self?.svgDecoder.decode(data: $0)
}
)
}
}