增加历史信息搜索功能

close: #102
This commit is contained in:
Fin 2021-08-05 15:37:38 +08:00
parent f249342d4c
commit a5a6cc0011
3 changed files with 26 additions and 9 deletions

View File

@ -57,7 +57,9 @@ class MessageListViewController: BaseViewController {
}()
override func makeUI() {
navigationItem.searchController = UISearchController(searchResultsController: nil)
navigationItem.searchController?.obscuresBackgroundDuringPresentation = false
navigationItem.setBarButtonItems(items: [UIBarButtonItem(customView: deleteButton), UIBarButtonItem(customView: groupButton)], left: false)
self.view.addSubview(tableView)
@ -141,7 +143,8 @@ class MessageListViewController: BaseViewController {
itemDelete: tableView.rx.itemDeleted.asDriver(),
itemSelected: tableView.rx.modelSelected(MessageTableViewCellViewModel.self).asDriver(),
delete:batchDelete.asDriver(onErrorDriveWith: .empty()),
groupTap: groupButton.rx.tap.asDriver()
groupTap: groupButton.rx.tap.asDriver(),
searchText: navigationItem.searchController!.searchBar.rx.text.asObservable()
))
//tableView

View File

@ -20,6 +20,7 @@ class MessageListViewModel: ViewModel,ViewModelType {
var itemSelected: Driver<MessageTableViewCellViewModel>
var delete: Driver<MessageDeleteType>
var groupTap: Driver<Void>
var searchText: Observable<String?>
}
struct Output {
@ -34,7 +35,7 @@ class MessageListViewModel: ViewModel,ViewModelType {
private var results:Results<Message>?
//
private func getResults(filterGroups:[String?]) -> Results<Message>? {
private func getResults(filterGroups:[String?], searchText:String?) -> Results<Message>? {
if let realm = try? Realm() {
var results = realm.objects(Message.self)
.filter("isDeleted != true")
@ -42,6 +43,9 @@ class MessageListViewModel: ViewModel,ViewModelType {
if filterGroups.count > 0 {
results = results.filter("group in %@", filterGroups)
}
if let text = searchText, text.count > 0 {
results = results.filter("title contains '\(text)' or body contains '\(text)'")
}
return results
}
return nil
@ -106,21 +110,31 @@ class MessageListViewModel: ViewModel,ViewModelType {
})
return [MessageSection(header: "model", messages: cellViewModels)]
}
//
//
filterGroups
.subscribe(onNext: { [weak self] filterGroups in
.subscribe(onNext: {filterGroups in
if filterGroups.count <= 0 {
titleRelay.accept(NSLocalizedString("historyMessage"))
}
else{
titleRelay.accept(filterGroups.map { $0 ?? NSLocalizedString("default") }.joined(separator: " , "))
}
self?.results = self?.getResults(filterGroups: filterGroups)
}).disposed(by: rx.disposeBag)
//
Observable
.combineLatest(filterGroups, input.searchText)
.subscribe(onNext: {[weak self] groups, searchText in
self?.results = self?.getResults(filterGroups: groups, searchText: searchText)
}).disposed(by: rx.disposeBag)
//
Observable
.merge(input.refresh.asObservable().map{ () },filterGroups.map{ _ in () })
.merge(
input.refresh.asObservable().map{ () },
filterGroups.map{ _ in () },
input.searchText.asObservable().map{ _ in () }
)
.subscribe(onNext: {[weak self] in
guard let strongSelf = self else { return }
strongSelf.page = 0
@ -194,7 +208,7 @@ class MessageListViewModel: ViewModel,ViewModelType {
}
if let realm = try? Realm() {
guard let messages = strongSelf.getResults(filterGroups: filterGroups.value)?.filter("createDate >= %@", date) else {
guard let messages = strongSelf.getResults(filterGroups: filterGroups.value, searchText: nil)?.filter("createDate >= %@", date) else {
return
}
try? realm.write{

View File

@ -125,4 +125,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: 2599db391f0d98d2d2a59b52455c89c9e9037bce
COCOAPODS: 1.10.0
COCOAPODS: 1.10.2