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