From f4b78a67a3a9d4b8d251911b98a396bf67743df7 Mon Sep 17 00:00:00 2001 From: Oliver Wiese <oliver.wiese@fu-berlin.de> Date: Wed, 4 Oct 2017 16:49:55 +0200 Subject: [PATCH] make inbox fast again! --- enzevalos_iphone/DataHandler.swift | 10 +++------- enzevalos_iphone/Folder+CoreDataClass.swift | 16 ++++++++++++++-- enzevalos_iphone/InboxViewController.swift | 18 +++++++++--------- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/enzevalos_iphone/DataHandler.swift b/enzevalos_iphone/DataHandler.swift index 6c0a9afa..60399ff6 100644 --- a/enzevalos_iphone/DataHandler.swift +++ b/enzevalos_iphone/DataHandler.swift @@ -124,9 +124,8 @@ class DataHandler { checkMail(mail: mail) } } - if let records = folder.records{ - checkRecords(records: records) - } + let records = folder.records + checkRecords(records: records) checkRecords(records: folder.liveRecords) print("Finish checking!") } @@ -778,10 +777,7 @@ class DataHandler { func folderRecords(folderPath: String) -> [KeyRecord]{ let folder = findFolder(with: folderPath) as Folder - if folder.records != nil { - return folder.records! - } - return [] + return folder.records } diff --git a/enzevalos_iphone/Folder+CoreDataClass.swift b/enzevalos_iphone/Folder+CoreDataClass.swift index 63903135..60516713 100644 --- a/enzevalos_iphone/Folder+CoreDataClass.swift +++ b/enzevalos_iphone/Folder+CoreDataClass.swift @@ -40,6 +40,7 @@ public class Folder: NSManagedObject { var liveRecords: [KeyRecord]{ get{ + print("Calculate KeyRecords!") var records = [KeyRecord]() // Get all Keys, get all adrs let keys = DataHandler.handler.allKeysInFolder(folder: self) @@ -59,7 +60,18 @@ public class Folder: NSManagedObject { } } - var records: [KeyRecord]? = nil + private var storedRecords: [KeyRecord]? = nil + + var records: [KeyRecord]{ + get{ + if storedRecords == nil{ + updateRecords() + } + return storedRecords! + } + + } + var mailsOfFolder: [PersistentMail]{ get{ @@ -88,6 +100,6 @@ public class Folder: NSManagedObject { //write value of liveRecords to records func updateRecords() { - records = liveRecords + storedRecords = liveRecords } } diff --git a/enzevalos_iphone/InboxViewController.swift b/enzevalos_iphone/InboxViewController.swift index 4a6b4aff..9fd90c1d 100644 --- a/enzevalos_iphone/InboxViewController.swift +++ b/enzevalos_iphone/InboxViewController.swift @@ -14,6 +14,7 @@ class InboxViewController: UITableViewController, InboxCellDelegator { let dateFormatter = DateFormatter() let searchController = UISearchController(searchResultsController: nil) var filteredRecords = [KeyRecord]() + let folder = DataHandler.handler.findFolder(with: UserManager.backendInboxFolderPath) @IBOutlet weak var lastUpdateButton: UIBarButtonItem! var lastUpdateLabel = UILabel(frame: CGRect.zero) @@ -69,6 +70,7 @@ class InboxViewController: UITableViewController, InboxCellDelegator { } func addNewMail() { + folder.updateRecords() tableView.reloadData() } @@ -101,8 +103,8 @@ class InboxViewController: UITableViewController, InboxCellDelegator { if isFiltering() { cell.enzContact = filteredRecords[indexPath.section] } else { - DataHandler.handler.findFolder(with: UserManager.backendInboxFolderPath).updateRecords() - cell.enzContact = DataHandler.handler.folderRecords(folderPath: UserManager.backendInboxFolderPath)[indexPath.section] + + cell.enzContact = folder.records[indexPath.section] } return cell @@ -112,9 +114,7 @@ class InboxViewController: UITableViewController, InboxCellDelegator { if isFiltering() { return filteredRecords.count } - - DataHandler.handler.findFolder(with: UserManager.backendInboxFolderPath).updateRecords() - return DataHandler.handler.folderRecords(folderPath: UserManager.backendInboxFolderPath).count + return folder.records.count } // set top and bottom seperator height @@ -172,22 +172,22 @@ class InboxViewController: UITableViewController, InboxCellDelegator { } func filterContentForSearchText(_ searchText: String, scope: Int = 0) { - DataHandler.handler.findFolder(with: UserManager.backendInboxFolderPath).updateRecords() + folder.updateRecords() var records = [KeyRecord]() if scope == 0 || scope == 3 { - records += DataHandler.handler.folderRecords(folderPath: UserManager.backendInboxFolderPath).filter({ ( record: KeyRecord) -> Bool in + records += folder.records.filter({ ( record: KeyRecord) -> Bool in return record.name.lowercased().contains(searchText.lowercased()) }) } if scope == 1 || scope == 3 { - records += DataHandler.handler.folderRecords(folderPath: UserManager.backendInboxFolderPath).filter({ ( record: KeyRecord) -> Bool in + records += folder.records.filter({ ( record: KeyRecord) -> Bool in return record.mails.filter({ (mail: PersistentMail) -> Bool in mail.subject?.lowercased().contains(searchText.lowercased()) ?? false }).count > 0 }) } if scope == 2 || scope == 3 { - records += DataHandler.handler.folderRecords(folderPath: UserManager.backendInboxFolderPath).filter({ ( record: KeyRecord) -> Bool in + records += folder.records.filter({ ( record: KeyRecord) -> Bool in return record.mails.filter({ (mail: PersistentMail) -> Bool in if let decryptedBody = mail.decryptedBody { return decryptedBody.lowercased().contains(searchText.lowercased()) -- GitLab