Files
divkit/client/ios/DivKitExtensions/ExtensionHandlers/GestureExtensionHandler.swift
T
feldspar d58ed61064 Updated ShineExtension with on_cycle_actions support
commit_hash:b66893660e9a04cbc958a27778a932d6b9740aa7
2024-11-27 18:50:40 +03:00

46 lines
1.3 KiB
Swift

import DivKit
import LayoutKit
public final class GestureExtensionHandler: DivExtensionHandler {
public let id = "gesture"
public init() {}
public func applyAfterBaseProperties(
to block: Block,
div: DivBase,
context: DivBlockModelingContext
) -> Block {
guard let params = GestureExtensionParams(params: getExtensionParams(div)) else {
return block
}
return GestureBlock(
child: block,
upActions: params.upActions?.uiActions(context: context),
downActions: params.downActions?.uiActions(context: context),
leftActions: params.leftActions?.uiActions(context: context),
rightActions: params.rightActions?.uiActions(context: context)
)
}
}
private struct GestureExtensionParams {
let upActions: [DivAction]?
let downActions: [DivAction]?
let leftActions: [DivAction]?
let rightActions: [DivAction]?
init?(params: [String: Any]) {
self.upActions = params.makeDivActions(for: "swipe_up")
self.downActions = params.makeDivActions(for: "swipe_down")
self.leftActions = params.makeDivActions(for: "swipe_left")
self.rightActions = params.makeDivActions(for: "swipe_right")
if upActions == nil, downActions == nil, leftActions == nil, rightActions == nil {
DivKitLogger.warning("No actions provided for gesture")
return nil
}
}
}