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 { override public var disabled: Bool {
didSet { didSet {
updateSelectors() selectorViews.forEach { handler in
handler.disabled = disabled
}
} }
} }
override public var surface: Surface { override public var surface: Surface {
didSet { 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? { public func getCachedSelector(viewModel: ModelHandlerType.ModelType) -> ModelHandlerType.ModelType? {
if let index = model.selectors.firstIndex(where: { element in if let index = model.selectors.firstIndex(where: { element in
return element.inputId == viewModel.inputId return element.inputId == viewModel.inputId
@ -71,11 +65,10 @@ public class SelectorGroupHandlerBase<GroupModelType: SelectorGroupModelable, Mo
let newSelectorView = ModelHandlerType(with: selector) let newSelectorView = ModelHandlerType(with: selector)
//add model update to the subscribers //add model update to the subscribers
newSelectorView.handlerPublisher() newSelectorView
.modelPublisher
.sink { [weak self] model in .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) .store(in: &subscribers)