From 5780a439dbb0f32db581db355142e752437bd819 Mon Sep 17 00:00:00 2001 From: Danny Moesch Date: Sat, 8 Dec 2018 00:57:54 +0100 Subject: [PATCH] Show number of hidden fields in password view --- .../PasswordDetailTableViewController.swift | 20 ++++++++++++++++++- passKit/Models/Password.swift | 8 ++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/pass/Controllers/PasswordDetailTableViewController.swift b/pass/Controllers/PasswordDetailTableViewController.swift index 021c327..390b9f7 100644 --- a/pass/Controllers/PasswordDetailTableViewController.swift +++ b/pass/Controllers/PasswordDetailTableViewController.swift @@ -441,12 +441,30 @@ class PasswordDetailTableViewController: UITableViewController, UIGestureRecogni cell.selectionStyle = .none return cell case .misc: - let cell = UITableViewCell() + let cell = UITableViewCell(style: .value1, reuseIdentifier: nil) cell.textLabel?.text = tableDataItem.title cell.selectionStyle = .default + addHiddenFieldInformation(to: cell) return cell } } + + private func addHiddenFieldInformation(to cell: UITableViewCell) { + guard password != nil, let detailTextLabel = cell.detailTextLabel else { + return + } + + var numberOfHiddenFields = 0 + numberOfHiddenFields += SharedDefaults[.isHideUnknownOn] ? password!.numberOfUnknowns : 0 + numberOfHiddenFields += SharedDefaults[.isHideOTPOn] ? password!.numberOfOtpRelated : 0 + guard numberOfHiddenFields > 0 else { + return + } + + detailTextLabel.textAlignment = .center + detailTextLabel.textColor = .gray + detailTextLabel.text = "\(numberOfHiddenFields) hidden field\(numberOfHiddenFields > 1 ? "s" : "")" + } override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { return tableData[section].header diff --git a/passKit/Models/Password.swift b/passKit/Models/Password.swift index dc3e50b..88b1ec6 100644 --- a/passKit/Models/Password.swift +++ b/passKit/Models/Password.swift @@ -59,6 +59,14 @@ public class Password { return otpToken?.currentPassword } + public var numberOfUnknowns: Int { + return additions.map { $0.title }.filter(Constants.isUnknown).count + } + + public var numberOfOtpRelated: Int { + return additions.map { $0.title }.filter(Constants.isOtpKeyword).count - (firstLineIsOTPField ? 1 : 0) + } + public init(name: String, url: URL, plainText: String) { self.name = name self.url = url