Newer
Older
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
import Combine
public struct ReportingStatus {
public var isOptional: () -> Bool
public var isEnabled: () -> Bool
public var isEnabledPublisher: () -> AnyPublisher<Bool, Never>
public var enable: (Bool) -> Void
}
extension ReportingStatus {
public static func live(
isOptional: ReportingStatusIsOptional = .live(),
isEnabled: ReportingStatusIsEnabled = .live()
) -> ReportingStatus {
ReportingStatus(
isOptional: {
isOptional.get()
},
isEnabled: {
if isOptional.get() == false {
return true
}
return isEnabled.get()
},
isEnabledPublisher: {
if isOptional.get() == false {
return Just(true).eraseToAnyPublisher()
}
return isEnabled.publisher()
},
enable: { enabled in
isEnabled.set(enabled)
}
)
}
}