Removed UserInterfaceAction.Payload.composite

54067c87d18632f8ab4aa065020b8759c6b39957
This commit is contained in:
pkurchatov
2024-04-25 11:19:19 +03:00
parent f4d2b2347f
commit ce162e6bf6
3 changed files with 4 additions and 63 deletions
+1 -1
View File
@@ -205,7 +205,7 @@ extension DivView: ElementStateObserver {
extension DivView: UIActionEventPerforming {
public func perform(uiActionEvent event: UIActionEvent, from sender: AnyObject) {
switch event.payload {
case .composite, .empty, .url:
case .empty, .url:
break
case let .menu(menu):
nearestViewController?.showMenu(menu, actionPerformer: self)
@@ -9,7 +9,6 @@ public struct UserInterfaceAction: Equatable, Codable {
case empty // means just analytics logging
case url(URL)
case menu(Menu)
indirect case composite(Payload, Payload)
case divAction(params: DivActionParams)
}
@@ -97,27 +96,6 @@ public struct UserInterfaceAction: Equatable, Codable {
)
}
public init(
payloads: [Payload],
path: UIElementPath,
accessibilityElement: AccessibilityElement? = nil
) {
let payload: Payload = payloads.reduce(.empty) {
if $0 == .empty {
return $1
} else if $1 == .empty {
return $0
}
return .composite($0, $1)
}
self.init(
payload: payload,
path: path,
accessibilityElement: accessibilityElement
)
}
public init(path: UIElementPath, accessibilityElement: AccessibilityElement? = nil) {
self.init(payload: .empty, path: path, accessibilityElement: accessibilityElement)
}
@@ -129,7 +107,6 @@ extension UserInterfaceAction.Payload: Codable {
case url
case menu
case divAction
case composite
}
private enum CodingKeys: String, CodingKey {
@@ -138,8 +115,6 @@ extension UserInterfaceAction.Payload: Codable {
case menu
case json
case cardId
case firstPayload
case secondPayload
case divActionSource
}
@@ -151,8 +126,6 @@ extension UserInterfaceAction.Payload: Codable {
.url
case .menu:
.menu
case .composite:
.composite
case .divAction:
.divAction
}
@@ -177,10 +150,6 @@ extension UserInterfaceAction.Payload: Codable {
case .menu?:
let menu = try container.decode(Menu.self, forKey: .menu)
self = .menu(menu)
case .composite?:
let first = try container.decode(type(of: self).self, forKey: .firstPayload)
let second = try container.decode(type(of: self).self, forKey: .secondPayload)
self = .composite(first, second)
case .divAction?:
let source = try container.decodeIfPresent(String.self, forKey: .divActionSource)
let params = try UserInterfaceAction.DivActionParams(
@@ -206,9 +175,6 @@ extension UserInterfaceAction.Payload: Codable {
try container.encode(url, forKey: .url)
case let .menu(menu):
try container.encode(menu, forKey: .menu)
case let .composite(first, second):
try container.encode(first, forKey: .firstPayload)
try container.encode(second, forKey: .secondPayload)
case let .divAction(params):
try container.encode(params.action, forKey: .json)
try container.encode(params.cardId, forKey: .cardId)
@@ -229,13 +195,6 @@ extension UserInterfaceAction.Payload: CustomDebugStringConvertible {
"Menu: \(value)"
case let .divAction(params):
"DivAction: \(params.action)"
case let .composite(lhs, rhs):
"""
Composite [
\(lhs.debugDescription.indented())
\(rhs.debugDescription.indented())
]
"""
}
}
}
@@ -273,14 +232,6 @@ extension UserInterfaceAction.Payload {
return value
case let .divAction(params):
return params.source == .visibility ? nil : params.url
case let .composite(lhs, rhs):
let lhsURL = lhs.url
let rhsURL = rhs.url
assert(
lhsURL == nil || rhsURL == nil,
"Multiple URLs in payload are not supported"
)
return lhsURL ?? rhsURL
case .empty, .menu:
return nil
}
@@ -295,8 +246,6 @@ extension UserInterfaceAction.Payload {
throw Error.notAnURL
}
return [url]
case let .composite(lPayload, rPayload):
return try lPayload.getComposedURLs() + rPayload.getComposedURLs()
case .empty:
return []
case .menu:
@@ -64,14 +64,14 @@ extension [UIActionEvent] {
}
extension UIActionEvent {
public func removingURLPayload() -> UIActionEvent? {
fileprivate func removingURLPayload() -> UIActionEvent? {
guard let uiAction = uiAction.removingURLPayload() else { return nil }
return UIActionEvent(uiAction: uiAction, originalSender: originalSender)
}
}
extension UserInterfaceAction {
public func removingURLPayload() -> UserInterfaceAction? {
fileprivate func removingURLPayload() -> UserInterfaceAction? {
guard let payload = payload.removingURLPayload() else { return nil }
return UserInterfaceAction(
payload: payload,
@@ -82,20 +82,12 @@ extension UserInterfaceAction {
}
extension UserInterfaceAction.Payload {
public func removingURLPayload() -> UserInterfaceAction.Payload? {
fileprivate func removingURLPayload() -> UserInterfaceAction.Payload? {
switch self {
case .url:
return nil
case .divAction:
return nil
case let .composite(lhs, rhs):
guard let leftPayload = lhs.removingURLPayload() else {
return rhs.removingURLPayload()
}
guard let rightPayload = rhs.removingURLPayload() else {
return leftPayload
}
return .composite(leftPayload, rightPayload)
case .empty, .menu:
return self
}