name change

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2022-10-13 09:46:26 -05:00
parent 096b834aed
commit 9791426c18

View File

@ -41,8 +41,8 @@ public protocol ViewModelHandler: AnyObject, Initable {
var subscribers: Set<AnyCancellable> { get set } var subscribers: Set<AnyCancellable> { get set }
init(with model: ModelType) init(with model: ModelType)
func set(with model: ModelType) func set(with model: ModelType)
func shouldUpdateView(viewModel: ModelType) -> Bool func shouldUpdateView(model: ModelType) -> Bool
func updateView(viewModel: ModelType) func updateView(model: ModelType)
} }
extension ViewModelHandler { extension ViewModelHandler {
@ -52,20 +52,20 @@ extension ViewModelHandler {
} }
public func set(with model: ModelType) { public func set(with model: ModelType) {
if shouldUpdateView(viewModel: model){ if shouldUpdateView(model: model){
viewModel.set(with: model) viewModel.set(with: model)
} }
} }
public func shouldUpdateView(viewModel: ModelType) -> Bool { public func shouldUpdateView(model: ModelType) -> Bool {
self.viewModel.model != viewModel self.viewModel.model != model
} }
public func setupUpdateView() { public func setupUpdateView() {
handlerPublisher() handlerPublisher()
.subscribe(on: RunLoop.main) .subscribe(on: RunLoop.main)
.sink { [weak self] viewModel in .sink { [weak self] model in
self?.updateView(viewModel: viewModel) self?.updateView(model: model)
} }
.store(in: &subscribers) .store(in: &subscribers)
} }
@ -201,7 +201,7 @@ open class ControlViewModelHandler<ViewModelType: ViewModel>: UIControl, ViewMod
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Overrides // MARK: - Overrides
//-------------------------------------------------- //--------------------------------------------------
open func updateView(viewModel: ModelType) { open func updateView(model: ModelType) {
fatalError("Implement updateView") fatalError("Implement updateView")
} }
@ -364,28 +364,28 @@ open class ToggleViewModelHandlerBase<ViewModelType: ToggleViewModel>: ControlVi
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Toggle // MARK: - Toggle
//-------------------------------------------------- //--------------------------------------------------
private func updateToggle(_ viewModel: ModelType) { private func updateToggle(_ model: ModelType) {
//private func //private func
func constrainKnob(){ func constrainKnob(){
self.knobLeadingConstraint?.isActive = false knobLeadingConstraint?.isActive = false
self.knobTrailingConstraint?.isActive = false knobTrailingConstraint?.isActive = false
if viewModel.on { if model.on {
self.knobTrailingConstraint = self.toggleView.trailingAnchor.constraint(equalTo: self.knobView.trailingAnchor, constant: 2) knobTrailingConstraint = toggleView.trailingAnchor.constraint(equalTo: knobView.trailingAnchor, constant: 2)
self.knobLeadingConstraint = self.knobView.leadingAnchor.constraint(greaterThanOrEqualTo: self.toggleView.leadingAnchor) knobLeadingConstraint = knobView.leadingAnchor.constraint(greaterThanOrEqualTo: toggleView.leadingAnchor)
} else { } else {
self.knobTrailingConstraint = self.toggleView.trailingAnchor.constraint(greaterThanOrEqualTo: self.knobView.trailingAnchor) knobTrailingConstraint = toggleView.trailingAnchor.constraint(greaterThanOrEqualTo: knobView.trailingAnchor)
self.knobLeadingConstraint = self.knobView.leadingAnchor.constraint(equalTo: self.toggleView.leadingAnchor, constant: 2) knobLeadingConstraint = knobView.leadingAnchor.constraint(equalTo: toggleView.leadingAnchor, constant: 2)
} }
self.knobTrailingConstraint?.isActive = true knobTrailingConstraint?.isActive = true
self.knobLeadingConstraint?.isActive = true knobLeadingConstraint?.isActive = true
self.knobWidthConstraint?.constant = self.knobSize.width knobWidthConstraint?.constant = knobSize.width
self.layoutIfNeeded() layoutIfNeeded()
} }
let toggleColor = toggleColorConfiguration.getColor(viewModel) let toggleColor = toggleColorConfiguration.getColor(model)
let knobColor = knobColorConfiguration.getColor(viewModel) let knobColor = knobColorConfiguration.getColor(model)
if viewModel.disabled { if model.disabled {
toggleView.backgroundColor = toggleColor toggleView.backgroundColor = toggleColor
knobView.backgroundColor = knobColor knobView.backgroundColor = knobColor
constrainKnob() constrainKnob()
@ -404,10 +404,10 @@ open class ToggleViewModelHandlerBase<ViewModelType: ToggleViewModel>: ControlVi
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Labels // MARK: - Labels
//-------------------------------------------------- //--------------------------------------------------
private func updateLabel(_ viewModel: ModelType) { private func updateLabel(_ model: ModelType) {
let showText = viewModel.showText let showText = model.showText
stackView.spacing = showText ? 12 : 0 stackView.spacing = showText ? 12 : 0
label.set(with: viewModel.labelModel) label.set(with: model.labelModel)
if stackView.subviews.contains(label) { if stackView.subviews.contains(label) {
label.removeFromSuperview() label.removeFromSuperview()
@ -475,7 +475,7 @@ open class ToggleViewModelHandlerBase<ViewModelType: ToggleViewModel>: ControlVi
stackView.addArrangedSubview(toggleContainerView) stackView.addArrangedSubview(toggleContainerView)
stackView.topAnchor.constraint(equalTo: topAnchor).isActive = true stackView.topAnchor.constraint(equalTo: topAnchor).isActive = true
stackView.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true stackView.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true
stackView.trailingAnchor.constraint(equalTo: trailingAnchor).isActive = true stackView.widthAnchor.constraint(greaterThanOrEqualToConstant: toggleContainerSize.width).isActive = true
stackView.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true stackView.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true
toggleView.centerXAnchor.constraint(equalTo: toggleContainerView.centerXAnchor).isActive = true toggleView.centerXAnchor.constraint(equalTo: toggleContainerView.centerXAnchor).isActive = true
@ -498,38 +498,11 @@ open class ToggleViewModelHandlerBase<ViewModelType: ToggleViewModel>: ControlVi
//-------------------------------------------------- //--------------------------------------------------
// MARK: - State // MARK: - State
//-------------------------------------------------- //--------------------------------------------------
open override func updateView(viewModel: ModelType) { open override func updateView(model: ModelType) {
updateLabel(viewModel) updateLabel(model)
updateToggle(viewModel) updateToggle(model)
backgroundColor = viewModel.surface.color backgroundColor = model.surface.color
setNeedsLayout() setNeedsLayout()
layoutIfNeeded() layoutIfNeeded()
} }
public func set(with model: ModelType) {
if shouldUpdateView(viewModel: model){
viewModel.set(with: model)
}
}
public func shouldUpdateView(viewModel: ModelType) -> Bool {
self.viewModel.model != viewModel
}
public func setupUpdateView() {
handlerPublisher()
.subscribe(on: RunLoop.main)
.sink { [weak self] viewModel in
self?.updateView(viewModel: viewModel)
}
.store(in: &subscribers)
}
public func handlerPublisher() -> AnyPublisher<ModelType, Never> {
viewModel
.publisher
.debounce(for: .seconds(Constants.ModelStateDebounce), scheduler: RunLoop.main)
.eraseToAnyPublisher()
}
} }