-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
Copy pathExpandableRow.swift
48 lines (42 loc) · 1.63 KB
/
ExpandableRow.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import KsApi
import Prelude
public struct ExpandableRow {
public let isExpanded: Bool
public let params: DiscoveryParams
public let selectableRows: [SelectableRow]
public enum lens {
public static let isExpanded = Lens<ExpandableRow, Bool>(
view: { $0.isExpanded },
set: { ExpandableRow(isExpanded: $0, params: $1.params, selectableRows: $1.selectableRows) }
)
public static let params = Lens<ExpandableRow, DiscoveryParams>(
view: { $0.params },
set: { ExpandableRow(isExpanded: $1.isExpanded, params: $0, selectableRows: $1.selectableRows) }
)
public static let selectableRows = Lens<ExpandableRow, [SelectableRow]>(
view: { $0.selectableRows },
set: { ExpandableRow(isExpanded: $1.isExpanded, params: $1.params, selectableRows: $0) }
)
}
// swiftlint:enable type_name
}
public extension Lens where Whole == ExpandableRow, Part == DiscoveryParams {
public var social: Lens<ExpandableRow, Bool?> {
return ExpandableRow.lens.params..DiscoveryParams.lens.social
}
public var staffPicks: Lens<ExpandableRow, Bool?> {
return ExpandableRow.lens.params..DiscoveryParams.lens.staffPicks
}
public var starred: Lens<ExpandableRow, Bool?> {
return ExpandableRow.lens.params..DiscoveryParams.lens.starred
}
public var category: Lens<ExpandableRow, KsApi.Category?> {
return ExpandableRow.lens.params..DiscoveryParams.lens.category
}
}
extension ExpandableRow: Equatable {}
public func == (lhs: ExpandableRow, rhs: ExpandableRow) -> Bool {
return lhs.isExpanded == rhs.isExpanded &&
lhs.params == rhs.params &&
lhs.selectableRows == rhs.selectableRows
}