vds_ios/VDS/Protocols/ModelHandlerable.swift
Matt Bruce 4bf9ce83b5 refactored to remove models
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
2022-10-20 10:55:36 -05:00

36 lines
866 B
Swift

//
// Modelable.swift
// VDS
//
// Created by Matt Bruce on 7/22/22.
//
import Foundation
import Combine
import UIKit
public protocol ModelHandlerable: AnyObject, Initable, Disabling, Surfaceable {
var subject: PassthroughSubject<Void, Never> { get set }
var subscribers: Set<AnyCancellable> { get set }
func updateView()
}
extension ModelHandlerable {
public func setupUpdateView() {
handlerPublisher()
.subscribe(on: RunLoop.main)
.sink { [weak self] _ in
self?.updateView()
}
.store(in: &subscribers)
}
public func handlerPublisher() -> AnyPublisher<Void, Never> {
subject
.eraseToAnyPublisher()
.debounce(for: .seconds(Constants.ModelStateDebounce), scheduler: RunLoop.main)
.eraseToAnyPublisher()
}
}