name change
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
096b834aed
commit
9791426c18
@ -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()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user