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 {
|
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)
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user