updated selectors to views

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2022-09-12 17:29:43 -05:00
parent 0ba4fcbbd2
commit d671492d72

View File

@ -22,13 +22,17 @@ public class SelectorGroupHandlerBase<GroupModelType: SelectorGroupModelable, Mo
//--------------------------------------------------
override public var disabled: Bool {
didSet {
updateSelectors()
selectorViews.forEach { handler in
handler.disabled = disabled
}
}
}
override public var surface: Surface {
didSet {
updateSelectors()
selectorViews.forEach { handler in
handler.surface = surface
}
}
}
@ -38,16 +42,6 @@ public class SelectorGroupHandlerBase<GroupModelType: SelectorGroupModelable, Mo
})
}
public func updateSelectors(){
let selectors = model.selectors.compactMap { existing in
return existing.copyWith {
$0.disabled = disabled
$0.surface = surface
}
}
model.selectors = selectors
}
public func getCachedSelector(viewModel: ModelHandlerType.ModelType) -> ModelHandlerType.ModelType? {
if let index = model.selectors.firstIndex(where: { element in
return element.inputId == viewModel.inputId
@ -71,11 +65,10 @@ public class SelectorGroupHandlerBase<GroupModelType: SelectorGroupModelable, Mo
let newSelectorView = ModelHandlerType(with: selector)
//add model update to the subscribers
newSelectorView.handlerPublisher()
newSelectorView
.modelPublisher
.sink { [weak self] model in
if let cached = self?.getCachedSelector(viewModel: model), newSelectorView.shouldUpdateView(viewModel: cached) {
self?.replace(viewModel: model)
}
self?.replace(viewModel: model)
}
.store(in: &subscribers)