diff --git a/TIEcommerce/Sources/Filters/ListFilters/Models/DefaultFilterRowViewModel.swift b/TIEcommerce/Sources/Filters/ListFilters/Models/DefaultFilterRowViewModel.swift index f33effe5..0e2e0643 100644 --- a/TIEcommerce/Sources/Filters/ListFilters/Models/DefaultFilterRowViewModel.swift +++ b/TIEcommerce/Sources/Filters/ListFilters/Models/DefaultFilterRowViewModel.swift @@ -26,6 +26,17 @@ public struct DefaultFilterRowViewModel: FilterRowRepresentable, Equatable { public var appearance: FilterCellAppearanceProtocol public var isSelected: Bool + public init(id: String, + title: String, + appearance: FilterCellAppearanceProtocol, + isSelected: Bool) { + + self.id = id + self.title = title + self.appearance = appearance + self.isSelected = isSelected + } + public static func == (lhs: Self, rhs: Self) -> Bool { lhs.id == rhs.id } diff --git a/TIEcommerce/Sources/Filters/ListFilters/Protocols/FilterListPickerConfigurator.swift b/TIEcommerce/Sources/Filters/ListFilters/Protocols/FilterListPickerConfigurator.swift index 1ea0aa23..55b6f91e 100644 --- a/TIEcommerce/Sources/Filters/ListFilters/Protocols/FilterListPickerConfigurator.swift +++ b/TIEcommerce/Sources/Filters/ListFilters/Protocols/FilterListPickerConfigurator.swift @@ -22,11 +22,11 @@ public protocol FilterListPickerConfigurator: AnyObject { - associatedtype CellViewModel: FilterRowRepresentable & Equatable + associatedtype RowViewModel: FilterRowRepresentable & Equatable - var visibleValues: [CellViewModel] { get } + var visibleValues: [RowViewModel] { get } var isMultiselectionEnabled: Bool { get set } var isFinishWithSeparator: Bool { get } - func setSelected(model: CellViewModel, isSelected: Bool) + func setSelected(model: RowViewModel, isSelected: Bool) } diff --git a/TIEcommerce/Sources/Filters/ListFilters/Protocols/FilterRowRepresentable.swift b/TIEcommerce/Sources/Filters/ListFilters/Protocols/FilterRowRepresentable.swift index e908c62b..74467f5f 100644 --- a/TIEcommerce/Sources/Filters/ListFilters/Protocols/FilterRowRepresentable.swift +++ b/TIEcommerce/Sources/Filters/ListFilters/Protocols/FilterRowRepresentable.swift @@ -25,4 +25,9 @@ public protocol FilterRowRepresentable { var title: String { get } var isSelected: Bool { get set } var appearance: FilterCellAppearanceProtocol { get set } + + init(id: String, + title: String, + appearance: FilterCellAppearanceProtocol, + isSelected: Bool) } diff --git a/TIEcommerce/Sources/Filters/ListFilters/Protocols/FilterTableSectionBuilder.swift b/TIEcommerce/Sources/Filters/ListFilters/Protocols/FilterTableSectionBuilder.swift index 9146ad18..998e735a 100644 --- a/TIEcommerce/Sources/Filters/ListFilters/Protocols/FilterTableSectionBuilder.swift +++ b/TIEcommerce/Sources/Filters/ListFilters/Protocols/FilterTableSectionBuilder.swift @@ -26,5 +26,5 @@ import TIUIElements public protocol FilterTableSectionBuilder { associatedtype CellType: BaseSeparatorCell & ConfigurableCell - func makeSection(with viewModel: ViewModel) -> TableSection where ViewModel.CellViewModel == CellType.CellData + func makeSection(with viewModel: ViewModel) -> TableSection where ViewModel.RowViewModel == CellType.CellData } diff --git a/TIEcommerce/Sources/Filters/ListFilters/ViewModels/BaseListFilterViewModel.swift b/TIEcommerce/Sources/Filters/ListFilters/ViewModels/BaseListFilterViewModel.swift index 78624d54..4df0a8cd 100644 --- a/TIEcommerce/Sources/Filters/ListFilters/ViewModels/BaseListFilterViewModel.swift +++ b/TIEcommerce/Sources/Filters/ListFilters/ViewModels/BaseListFilterViewModel.swift @@ -20,15 +20,15 @@ // THE SOFTWARE. // -open class BaseListFilterViewModel: FilterListPickerConfigurator { +open class BaseListFilterViewModel: FilterListPickerConfigurator { - public typealias CellViewModel = CellViewModelType + public typealias RowViewModel = RowViewModelType - public var rowViewModels: [CellViewModelType] + public var rowViewModels: [RowViewModelType] public weak var delegate: FiltersPickerDelegate? - public var initiallySelectedValues: [CellViewModelType]? + public var initiallySelectedValues: [RowViewModelType]? open var isFinishWithSeparator: Bool { true @@ -52,11 +52,11 @@ open class BaseListFilterViewModel: FilterTableSectionBuilder { - open func makeSection(with viewModel: ViewModel) -> TableSection where ViewModel.CellViewModel == CellType.CellData { + open func makeSection(with viewModel: ViewModel) -> TableSection where ViewModel.RowViewModel == CellType.CellData { let rows = viewModel.visibleValues.map { item in TableRow(item: item) .on(.select) { [weak viewModel] _ in diff --git a/TIEcommerce/Sources/Filters/TagsFilters/Protocols/FiltersViewModelProtocol.swift b/TIEcommerce/Sources/Filters/TagsFilters/Protocols/FiltersViewModelProtocol.swift index d9f7c28a..a0d9b05d 100644 --- a/TIEcommerce/Sources/Filters/TagsFilters/Protocols/FiltersViewModelProtocol.swift +++ b/TIEcommerce/Sources/Filters/TagsFilters/Protocols/FiltersViewModelProtocol.swift @@ -25,9 +25,9 @@ import Foundation public protocol FiltersViewModelProtocol: AnyObject { associatedtype Filter: FilterPropertyValueRepresenter, Hashable - associatedtype CellViewModel: FilterCellViewModelProtocol & Hashable + associatedtype RowViewModel: FilterCellViewModelProtocol & Hashable - typealias Change = (indexPath: IndexPath, viewModel: CellViewModel) + typealias Change = (indexPath: IndexPath, viewModel: RowViewModel) var filters: [Filter] { get set } var selectedFilters: Set { get set } diff --git a/TIEcommerce/Sources/Filters/TagsFilters/ViewModels/DefaultFiltersViewModel.swift b/TIEcommerce/Sources/Filters/TagsFilters/ViewModels/DefaultFiltersViewModel.swift index eb2fb2f9..4e214187 100644 --- a/TIEcommerce/Sources/Filters/TagsFilters/ViewModels/DefaultFiltersViewModel.swift +++ b/TIEcommerce/Sources/Filters/TagsFilters/ViewModels/DefaultFiltersViewModel.swift @@ -23,12 +23,12 @@ import TIUIKitCore import UIKit -open class DefaultFiltersViewModel: NSObject, +open class DefaultFiltersViewModel: NSObject, FiltersViewModelProtocol { - public typealias CellViewModel = CellViewModelType + public typealias RowViewModel = RowViewModelType - private var cellsViewModels: [CellViewModelType] + private var cellsViewModels: [RowViewModelType] public var filters: [DefaultFilterPropertyValue] { didSet { @@ -50,7 +50,7 @@ open class DefaultFiltersViewModel