refactored debounce for label/button (has label)
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
3f94d7ea0d
commit
cf4f145137
@ -121,7 +121,7 @@ open class ButtonBase: UIButton, Buttonable, Handlerable, ViewProtocol, Resettab
|
||||
translatesAutoresizingMaskIntoConstraints = false
|
||||
accessibilityCustomActions = []
|
||||
setup()
|
||||
setupDidChangeEvent()
|
||||
setupDidChangeEvent(true)
|
||||
updateView()
|
||||
}
|
||||
}
|
||||
|
||||
@ -94,7 +94,7 @@ public class Label: UILabel, Handlerable, ViewProtocol, Resettable, UserInfoable
|
||||
accessibilityCustomActions = []
|
||||
accessibilityTraits = .staticText
|
||||
setup()
|
||||
setupDidChangeEvent()
|
||||
setupDidChangeEvent(true)
|
||||
updateView()
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,15 +17,22 @@ public protocol Handlerable: AnyObject, Initable, Disabling, Surfaceable {
|
||||
|
||||
extension Handlerable {
|
||||
|
||||
public func setupDidChangeEvent() {
|
||||
handlerPublisher().sink { [weak self] _ in
|
||||
self?.updateView()
|
||||
public func setupDidChangeEvent(_ debounce: Bool = false) {
|
||||
handlerPublisher(debounce)
|
||||
.sink { [weak self] _ in
|
||||
self?.updateView()
|
||||
}.store(in: &subscribers)
|
||||
}
|
||||
|
||||
public func handlerPublisher() -> AnyPublisher<Void, Never> {
|
||||
subject
|
||||
.eraseToAnyPublisher()
|
||||
public func handlerPublisher(_ debounce: Bool = false) -> AnyPublisher<Void, Never> {
|
||||
if debounce {
|
||||
return subject
|
||||
.debounce(for: .seconds(Constants.StateDebounce), scheduler: RunLoop.main)
|
||||
.eraseToAnyPublisher()
|
||||
} else {
|
||||
return subject
|
||||
.eraseToAnyPublisher()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user