make additional information ordered

This commit is contained in:
Bob Sun 2017-02-06 22:14:42 +08:00
parent 59eb4af8bb
commit 105573b8a1
No known key found for this signature in database
GPG key ID: 1F86BA2052FED3B4
2 changed files with 23 additions and 11 deletions

View file

@ -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
}
}

View file

@ -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 {