vds_ios/VDS/Protocols/Handlerable.swift
Matt Bruce 379b94774b removed debounce for now
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
2023-03-07 10:54:26 -06:00

37 lines
769 B
Swift

//
// Handlerable.swift
// VDS
//
// Created by Matt Bruce on 7/22/22.
//
import Foundation
import Combine
import UIKit
public protocol Handlerable: AnyObject, Initable, Disabling, Surfaceable {
var subject: PassthroughSubject<Void, Never> { get set }
var subscribers: Set<AnyCancellable> { get set }
func updateView()
}
extension Handlerable {
public func setupDidChangeEvent() {
handlerPublisher().sink { [weak self] _ in
self?.updateView()
}.store(in: &subscribers)
}
public func handlerPublisher() -> AnyPublisher<Void, Never> {
subject
.eraseToAnyPublisher()
}
}
extension Handlerable where Self: UIView {
public func didChange() {
subject.send()
}
}