Add default assets image provider

909f6dec196e2b5db8f7c38a66efe555511d3f35
This commit is contained in:
ventywing
2024-03-19 18:46:04 +03:00
parent ecfa554881
commit 5d0e153679
2 changed files with 31 additions and 5 deletions
@@ -23,6 +23,12 @@ extension DivImageHolderFactory {
cachedImageHolders: cachedImageHolders
)
}
public func withAssets() -> DivImageHolderFactory {
AssetsImageProvider(
imageHolderFactory: self
)
}
}
extension ImageHolderFactory: DivImageHolderFactory {}
@@ -77,3 +83,21 @@ private final class CachedImageHolderFactory: DivImageHolderFactory {
return cachedImageHolder ?? imageHolderFactory.make(url, placeholder)
}
}
private struct AssetsImageProvider: DivImageHolderFactory {
private let imageHolderFactory: DivImageHolderFactory
init(
imageHolderFactory: DivImageHolderFactory
) {
self.imageHolderFactory = imageHolderFactory
}
func make(_ url: URL?, _ placeholder: ImagePlaceholder?) -> ImageHolder {
var localImage: ImageHolder?
if url?.scheme == "divkit-asset", let name = url?.host {
localImage = Image(named: "divkit/\(name)")
}
return localImage ?? imageHolderFactory.make(url, placeholder)
}
}
+7 -5
View File
@@ -137,11 +137,13 @@ public final class DivKitComponents {
let requestPerformer = requestPerformer ?? URLRequestPerformer(urlTransform: nil)
self.imageHolderFactory = imageHolderFactory
?? DefaultImageHolderFactory(
requestPerformer: requestPerformer,
imageLoadingOptimizationEnabled: flagsInfo.imageLoadingOptimizationEnabled
)
self.imageHolderFactory = (
imageHolderFactory
?? DefaultImageHolderFactory(
requestPerformer: requestPerformer,
imageLoadingOptimizationEnabled: flagsInfo.imageLoadingOptimizationEnabled
)
).withAssets()
self.patchProvider = patchProvider
?? DivPatchDownloader(requestPerformer: requestPerformer)