Files
divkit/client/ios/DivKit/Actions/TooltipActionHandler.swift
T
pkurchatov 5c76ff7fa1 Removed DivActionURLHandler.UpdateCardAction/ShowTooltipAction
commit_hash:28a69390e7c8a13296422e73987b98ccb8aa11a8
2025-01-23 15:24:30 +03:00

46 lines
1.2 KiB
Swift

import LayoutKit
final class TooltipActionHandler {
private let performer: TooltipActionPerformer?
private let showTooltipAction: DivActionHandler.ShowTooltipAction?
init(
performer: TooltipActionPerformer?,
showTooltip: DivActionHandler.ShowTooltipAction?
) {
self.performer = performer
self.showTooltipAction = showTooltip
}
func handle(_ action: DivActionShowTooltip, context: DivActionHandlingContext) {
guard let cardId = action.resolveId(context.expressionResolver),
let multiple = action.resolveMultiple(context.expressionResolver) else {
return
}
showTooltip(TooltipInfo(id: cardId, showsOnStart: false, multiple: multiple))
}
func handle(_ action: DivActionHideTooltip, context: DivActionHandlingContext) {
guard let id = action.resolveId(context.expressionResolver) else {
return
}
hideTooltip(id: id)
}
func showTooltip(_ info: TooltipInfo) {
if let showTooltipAction {
showTooltipAction(info)
} else {
performer?.showTooltip(info: info)
}
}
func hideTooltip(id: String) {
if showTooltipAction == nil {
performer?.hideTooltip(id: id)
}
}
}