updated selectors to views
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
0ba4fcbbd2
commit
d671492d72
@ -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)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user