removed intermediate

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2023-07-14 14:18:00 -05:00
parent d159075f83
commit 3e8c6a12e4
5 changed files with 8 additions and 18 deletions

View File

@ -16,8 +16,7 @@ open class Control: UIControl, Handlerable, ViewProtocol, Resettable, UserInfoab
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Combine Properties // MARK: - Combine Properties
//-------------------------------------------------- //--------------------------------------------------
public var delayedSubject = PassthroughSubject<Void, Never>() public var subject = PassthroughSubject<Void, Never>()
public var immediateSubject = PassthroughSubject<Void, Never>()
public var updateStrategy: HandlerableUpdateStrategy = .immediate public var updateStrategy: HandlerableUpdateStrategy = .immediate
/// Set of Subscribers for any Publishers for this Control /// Set of Subscribers for any Publishers for this Control

View File

@ -17,8 +17,7 @@ open class View: UIView, Handlerable, ViewProtocol, Resettable, UserInfoable {
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Combine Properties // MARK: - Combine Properties
//-------------------------------------------------- //--------------------------------------------------
public var delayedSubject = PassthroughSubject<Void, Never>() public var subject = PassthroughSubject<Void, Never>()
public var immediateSubject = PassthroughSubject<Void, Never>()
public var updateStrategy: HandlerableUpdateStrategy = .immediate public var updateStrategy: HandlerableUpdateStrategy = .immediate
public var subscribers = Set<AnyCancellable>() public var subscribers = Set<AnyCancellable>()

View File

@ -28,8 +28,7 @@ open class ButtonBase: UIButton, Buttonable, Handlerable, ViewProtocol, Resettab
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Combine Properties // MARK: - Combine Properties
//-------------------------------------------------- //--------------------------------------------------
public var delayedSubject = PassthroughSubject<Void, Never>() public var subject = PassthroughSubject<Void, Never>()
public var immediateSubject = PassthroughSubject<Void, Never>()
public var updateStrategy: HandlerableUpdateStrategy = .immediate public var updateStrategy: HandlerableUpdateStrategy = .immediate
public var subscribers = Set<AnyCancellable>() public var subscribers = Set<AnyCancellable>()
public var onClickSubscriber: AnyCancellable? { public var onClickSubscriber: AnyCancellable? {

View File

@ -16,8 +16,7 @@ open class Label: UILabel, Handlerable, ViewProtocol, Resettable, UserInfoable {
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Combine Properties // MARK: - Combine Properties
//-------------------------------------------------- //--------------------------------------------------
public var delayedSubject = PassthroughSubject<Void, Never>() public var subject = PassthroughSubject<Void, Never>()
public var immediateSubject = PassthroughSubject<Void, Never>()
public var subscribers = Set<AnyCancellable>() public var subscribers = Set<AnyCancellable>()
public var updateStrategy: HandlerableUpdateStrategy = .immediate public var updateStrategy: HandlerableUpdateStrategy = .immediate

View File

@ -16,8 +16,7 @@ public enum HandlerableUpdateStrategy {
} }
public protocol Handlerable: AnyObject, Initable, Disabling, Surfaceable { public protocol Handlerable: AnyObject, Initable, Disabling, Surfaceable {
var delayedSubject: PassthroughSubject<Void, Never> { get set } var subject: PassthroughSubject<Void, Never> { get set }
var immediateSubject: PassthroughSubject<Void, Never> { get set }
var subscribers: Set<AnyCancellable> { get set } var subscribers: Set<AnyCancellable> { get set }
var updateStrategy: HandlerableUpdateStrategy { get set } var updateStrategy: HandlerableUpdateStrategy { get set }
func updateView() func updateView()
@ -25,24 +24,19 @@ public protocol Handlerable: AnyObject, Initable, Disabling, Surfaceable {
extension Handlerable { extension Handlerable {
public func setupNeedsUpdateEvent() { public func setupNeedsUpdateEvent() {
delayedSubject subject
.debounce(for: .seconds(0), scheduler: RunLoop.main) .debounce(for: .seconds(0), scheduler: RunLoop.main)
.sink { [weak self] _ in .sink { [weak self] _ in
self?.updateView() self?.updateView()
}.store(in: &subscribers) }.store(in: &subscribers)
immediateSubject
.sink { [weak self] _ in
self?.updateView()
}.store(in: &subscribers)
} }
public func setNeedsUpdate() { public func setNeedsUpdate() {
switch updateStrategy { switch updateStrategy {
case .delayed: case .delayed:
delayedSubject.send() subject.send()
case .immediate, .alwaysImmediate: case .immediate, .alwaysImmediate:
immediateSubject.send() updateView()
} }
} }