mirror of
https://github.com/divkit/divkit.git
synced 2026-05-07 20:02:32 +00:00
Add default assets image provider
909f6dec196e2b5db8f7c38a66efe555511d3f35
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user