Search Hosts + search animations + reload table after filter manipulations

This commit is contained in:
relikd
2020-06-05 14:27:41 +02:00
parent 80829ad015
commit 23eab2310f
8 changed files with 205 additions and 73 deletions

View File

@@ -12,6 +12,7 @@ class GroupedDomainDataSource {
private let parent: String?
let pipeline: FilterPipeline<GroupedDomain>
private lazy var search = SearchBarManager(on: pipeline.delegate!.tableView)
init(withDelegate tvc: FilterPipelineDelegate, parent p: String?) {
parent = p
@@ -179,6 +180,35 @@ extension GroupedDomainDataSource {
}
// ################################
// #
// # MARK: - Search
// #
// ################################
extension GroupedDomainDataSource {
func toggleSearch() {
if search.active { search.hide() }
else {
// Pause animations. Otherwise the `scrollToTop` animation is broken.
// This is due to `addFilter` calling `reloadData()` before `search.show()` can animate it.
pipeline.pauseCellAnimations()
var searchTerm = ""
pipeline.addFilter("search") {
$0.domain.lowercased().contains(searchTerm)
}
search.show(onHide: { [unowned self] in
self.pipeline.removeFilter(withId: "search")
}, onChange: { [unowned self] in
searchTerm = $0.lowercased()
self.pipeline.reloadFilter(withId: "search")
})
pipeline.continueCellAnimations()
}
}
}
// ##########################
// #
// # MARK: - Edit Row