From 7eee62fa016eee17f1b0813d30572a7cd3bb7fa9 Mon Sep 17 00:00:00 2001 From: Bob Sun Date: Mon, 6 Feb 2017 19:13:33 +0800 Subject: [PATCH] show last updated time --- pass/DefaultKeys.swift | 3 +-- pass/PasswordsViewController.swift | 16 +++++++++++++++- pass/SettingsTableViewController.swift | 2 ++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/pass/DefaultKeys.swift b/pass/DefaultKeys.swift index e54f7c7..78a98c7 100644 --- a/pass/DefaultKeys.swift +++ b/pass/DefaultKeys.swift @@ -23,6 +23,5 @@ extension DefaultsKeys { static let gitRepositorySSHPublicKeyURL = DefaultsKey("gitRepositorySSHPublicKeyURL") static let gitRepositorySSHPrivateKeyURL = DefaultsKey("gitRepositorySSHPrivateKeyURL") static let gitRepositorySSHPrivateKeyPassphrase = DefaultsKey("gitRepositorySSHPrivateKeyPassphrase") - - + static let lastUpdatedTime = DefaultsKey("lasteUpdatedTime") } diff --git a/pass/PasswordsViewController.swift b/pass/PasswordsViewController.swift index dda2054..840eedb 100644 --- a/pass/PasswordsViewController.swift +++ b/pass/PasswordsViewController.swift @@ -20,7 +20,6 @@ class PasswordsViewController: UIViewController, UITableViewDataSource, UITableV lazy var refreshControl: UIRefreshControl = { let refreshControl = UIRefreshControl() refreshControl.addTarget(self, action: #selector(PasswordsViewController.handleRefresh(_:)), for: UIControlEvents.valueChanged) - refreshControl.attributedTitle = NSAttributedString(string: "Sync Password Store") return refreshControl }() let searchBarView = UIView(frame: CGRect(x: 0, y: 64, width: UIScreen.main.bounds.width, height: 44)) @@ -39,6 +38,7 @@ class PasswordsViewController: UIViewController, UITableViewDataSource, UITableV DispatchQueue.main.async { self.passwordEntities = PasswordStore.shared.fetchPasswordEntityCoreData() self.reloadTableView(data: self.passwordEntities!) + Defaults[.lastUpdatedTime] = Date() SVProgressHUD.showSuccess(withStatus: "Done") SVProgressHUD.dismiss(withDelay: 1) } @@ -66,6 +66,7 @@ class PasswordsViewController: UIViewController, UITableViewDataSource, UITableV view.addSubview(searchBarView) tableView.insertSubview(refreshControl, at: 0) SVProgressHUD.setDefaultMaskType(.black) + updateRefreshControlTitle() } override func viewWillAppear(_ animated: Bool) { @@ -197,9 +198,22 @@ class PasswordsViewController: UIViewController, UITableViewDataSource, UITableV } } + func updateRefreshControlTitle() { + var atribbutedTitle = "Pull to Sync Password Store" + if let lastUpdatedTime = Defaults[.lastUpdatedTime] { + let formatter = DateFormatter() + formatter.dateStyle = .long + formatter.timeStyle = .short + let dateString = formatter.string(from: lastUpdatedTime) + atribbutedTitle = "Last Sync: \(dateString)" + } + refreshControl.attributedTitle = NSAttributedString(string: atribbutedTitle) + } + func reloadTableView (data: [PasswordEntity]) { generateSections(item: data) tableView.reloadData() + updateRefreshControlTitle() } func handleRefresh(_ refreshControl: UIRefreshControl) { diff --git a/pass/SettingsTableViewController.swift b/pass/SettingsTableViewController.swift index fdf8652..6308faa 100644 --- a/pass/SettingsTableViewController.swift +++ b/pass/SettingsTableViewController.swift @@ -60,6 +60,8 @@ class SettingsTableViewController: UITableViewController { Defaults[.gitRepositoryUsername] = username Defaults[.gitRepositoryPassword] = password Defaults[.gitRepositoryAuthenticationMethod] = auth + + Defaults[.lastUpdatedTime] = Date() NotificationCenter.default.post(Notification(name: Notification.Name("passwordUpdated")))