Files
divkit/client/ios/DivKit/Extensions/DivImage/DivGifImageExtensions.swift
T
booster 0437c1b288 Reuse support for ImageWithPreviewHolder
commit_hash:f603d586e6e302309188f3db5d468b45ae8cf332
2025-12-12 21:41:10 +03:00

42 lines
1.4 KiB
Swift

import Foundation
import LayoutKit
import VGSL
extension DivGifImage: DivBlockModeling, DivImageProtocol {
public func makeBlock(context: DivBlockModelingContext) throws -> Block {
let context = modifiedContextParentPath(context)
return try applyBaseProperties(
to: { try makeBaseBlock(context: context) },
context: context,
actionsHolder: self,
customAccessibilityParams: CustomAccessibilityParams(defaultTraits: .image)
)
}
private func makeBaseBlock(context: DivBlockModelingContext) throws -> Block {
let expressionResolver = context.expressionResolver
let placeholder = resolvePlaceholder(expressionResolver)
var imageHolder = context.imageHolderFactory.make(
resolveGifUrl(expressionResolver),
placeholder
)
if !(imageHolder is ImageWithPreviewHolder),
let previewUrl = resolvePreviewUrl(expressionResolver) {
let previewHolder = context.imageHolderFactory.make(previewUrl, placeholder)
imageHolder = ImageWithPreviewHolder(mainHolder: imageHolder, previewHolder: previewHolder)
}
let widthTrait = resolveContentWidthTrait(context)
let height = resolveHeight(context)
return AnimatableImageBlock(
imageHolder: imageHolder,
widthTrait: widthTrait,
height: height,
contentMode: resolveContentMode(context),
path: context.path
)
}
}