diff --git a/pass/Password.swift b/pass/Password.swift index f1818ff..098399a 100644 --- a/pass/Password.swift +++ b/pass/Password.swift @@ -9,19 +9,27 @@ import Foundation import SwiftyUserDefaults +struct AdditionField { + var title: String + var content: String +} + class Password { var name: String + var username: String var password: String - var additions: [String: String] + var additions: [AdditionField] init() { name = "" password = "" - additions = [:] + username = "" + additions = [] } - init(name: String, password: String, additions: [String: String]) { + init(name: String, username: String, password: String, additions: [AdditionField]) { self.name = name + self.username = username self.password = password self.additions = additions } @@ -35,7 +43,8 @@ extension PasswordEntity { let decryptedData = try PasswordStore.shared.pgp.decryptData(encryptedData, passphrase: Defaults[.pgpKeyPassphrase]) let plain = String(data: decryptedData, encoding: .ascii) ?? "" var decrypted_password = "" - var decrypted_addtions = [String: String]() + var username = "" + var decrypted_addtions = [AdditionField]() plain.enumerateLines(invoking: { line, _ in let items = line.characters.split(separator: ":").map(String.init) if items.count == 1 { @@ -43,10 +52,14 @@ extension PasswordEntity { } else { let key = items[0] let value = items[1].trimmingCharacters(in: .whitespaces) - decrypted_addtions[key] = value + if key.lowercased() == "username" { + username = value + } else { + decrypted_addtions.append(AdditionField(title: key, content: value)) + } } }) - password = Password(name: name!, password: decrypted_password, additions: decrypted_addtions) + password = Password(name: name!, username: username, password: decrypted_password, additions: decrypted_addtions) return password } } diff --git a/pass/PasswordDetailTableViewController.swift b/pass/PasswordDetailTableViewController.swift index 0a79bd6..6361ab9 100644 --- a/pass/PasswordDetailTableViewController.swift +++ b/pass/PasswordDetailTableViewController.swift @@ -69,17 +69,16 @@ class PasswordDetailTableViewController: UITableViewController, UIGestureRecogni var tableDataIndex = 0 self.tableData.append(TableSection(title: "", item: [])) - if let username = self.password.additions["Username"] { - self.tableData[tableDataIndex].item.append(TableCell(title: "username", content: username)) - self.password.additions.removeValue(forKey: "Username") + if self.password.username != "" { + self.tableData[tableDataIndex].item.append(TableCell(title: "username", content: self.password.username)) } self.tableData[tableDataIndex].item.append(TableCell(title: "password", content: self.password.password)) if self.password.additions.count > 0 { self.tableData.append(TableSection(title: "additions", item: [])) tableDataIndex += 1 - for (key, value) in self.password.additions { - self.tableData[tableDataIndex].item.append(TableCell(title: key, content: value)) + for addition in self.password.additions { + self.tableData[tableDataIndex].item.append(TableCell(title: addition.title, content: addition.content)) } } DispatchQueue.main.async {