From 9cd4a60f64da3dc06e64bff64c42c2d35618b284 Mon Sep 17 00:00:00 2001 From: lazarog98 <lazarog98@87-77-95-50.mna.fu-berlin.de> Date: Wed, 26 Feb 2020 13:53:30 +0100 Subject: [PATCH] Searches can span body+subject+sender --- enzevalos_iphone/InboxViewController.swift | 33 ++++++++++++++++++---- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/enzevalos_iphone/InboxViewController.swift b/enzevalos_iphone/InboxViewController.swift index 50cbd5ab..360d1469 100644 --- a/enzevalos_iphone/InboxViewController.swift +++ b/enzevalos_iphone/InboxViewController.swift @@ -283,12 +283,15 @@ class InboxViewController: UITableViewController, InboxCellDelegator { { return false ///Case Mail has no body/subject } - //var terms = searchText.characters.split(separator: " ") let terms = searchText.lowercased().components(separatedBy : " ") var found = true for t in terms { - found = found && content!.lowercased().contains(t) + //print("term is: |"+t+"|") + if !(t == "") + { + found = found && content!.lowercased().contains(t) + } } return found } @@ -301,12 +304,12 @@ class InboxViewController: UITableViewController, InboxCellDelegator { */ private func _filterContentForSearchText(_ searchText: String, scope: Int = 0) { var records = [KeyRecord]() - if scope == 0 || scope == 3 { + if scope == 0 { records += folder.records.filter({ (record: KeyRecord) -> Bool in return containsSearchTerms(content: record.name, searchText: searchText) }) } - if scope == 1 || scope == 3 { + if scope == 1 { records += folder.records.filter({ (record: KeyRecord) -> Bool in let mails = record.inboxMails return mails.filter({ (mail: PersistentMail) -> Bool in @@ -314,7 +317,7 @@ class InboxViewController: UITableViewController, InboxCellDelegator { }).count > 0 }) } - if scope == 2 || scope == 3 { + if scope == 2 { records += folder.records.filter({ (record: KeyRecord) -> Bool in let mails = record.inboxMails return mails.filter({ (mail: PersistentMail) -> Bool in @@ -327,6 +330,26 @@ class InboxViewController: UITableViewController, InboxCellDelegator { }).count > 0 }) } + if scope == 3 + { + + records += folder.records.filter({ (record: KeyRecord) -> Bool in + if containsSearchTerms(content: record.name, searchText: searchText) + { + return true + } + let mails = record.inboxMails + return mails.filter({ (mail: PersistentMail) -> Bool in + if let decryptedBody = mail.decryptedBody { + return containsSearchTerms(content: decryptedBody+(mail.subject ?? "")+record.name, searchText: searchText) + } else if !mail.isEncrypted { + return containsSearchTerms(content: (mail.body ?? "") + (mail.subject ?? "")+record.name, searchText: searchText) + } + return false + }).count > 0 + }) + } + filteredRecords = records.unique.sorted() tableView.reloadData() -- GitLab