fix: cell configuration

This commit is contained in:
Nikita Semenov 2022-08-05 14:50:39 +03:00
parent 95a0045582
commit 373b0db19e
3 changed files with 18 additions and 6 deletions

View File

@ -29,7 +29,6 @@ public protocol FilterViewModelProtocol: AnyObject {
typealias Change = (indexPath: IndexPath, viewModel: CellViewModel)
var properties: [Property] { get set }
var selectedProperties: Set<Property> { get set }

View File

@ -31,8 +31,6 @@ open class BaseFilterViewModel<CellViewModelType: FilterCellViewModelProtocol &
public typealias Property = PropertyValue
public typealias CellViewModel = CellViewModelType
private var cellsViewModels: [CellViewModelType] = []
public var properties: [PropertyValue] = [] {
didSet {
filtersCollection?.updateView()
@ -58,21 +56,28 @@ open class BaseFilterViewModel<CellViewModelType: FilterCellViewModelProtocol &
.filter { isFilterInArray($0.element, filters: selected) || isFilterInArray($0.element, filters: deselected) }
for (offset, element) in changedFilters {
cellsViewModels[offset].isSelected = selectedProperties.contains(element)
guard !getCellsViewModels().isEmpty else { return [] }
setSelectedCell(atIndex: offset, isSelected: selectedProperties.contains(element))
properties[offset].isSelected = selectedProperties.contains(element)
}
let changedItems = changedFilters
.map {
Change(indexPath: IndexPath(item: $0.offset, section: .zero),
viewModel: cellsViewModels[$0.offset])
viewModel: getCellsViewModels()[$0.offset])
}
return changedItems
}
open func setSelectedCell(atIndex index: Int, isSelected: Bool) {
// override in subclasses
}
open func getCellsViewModels() -> [CellViewModelType] {
cellsViewModels
// override in subclasses
return []
}
// MARK: - Public methods

View File

@ -32,4 +32,12 @@ open class DefaultFilterViewModel: BaseFilterViewModel<DefaultFilterCellViewMode
isSelected: $0.isSelected)
}
}
open override func setSelectedCell(atIndex index: Int, isSelected: Bool) {
cellsViewModels[index].isSelected = isSelected
}
open override func getCellsViewModels() -> [DefaultFilterCellViewModel] {
cellsViewModels
}
}