Fix issue #13 ( Additions display randomly)

This commit is contained in:
Yishi Lin 2017-07-27 13:19:58 +08:00
parent c5c6679f21
commit f00f6c77b0

View file

@ -39,7 +39,7 @@ public class Password {
public var changed: Int = 0 public var changed: Int = 0
public var plainText = "" public var plainText = ""
private var additions = [String: String]() private var additions = [(String, String)]()
private var firstLineIsOTPField = false private var firstLineIsOTPField = false
private var otpToken: Token? private var otpToken: Token?
@ -101,7 +101,7 @@ public class Password {
unknownIndex += 1 unknownIndex += 1
key = "unknown \(unknownIndex)" key = "unknown \(unknownIndex)"
} }
self.additions[key!] = value self.additions.append((key!, value))
} }
} }
} }
@ -110,7 +110,7 @@ public class Password {
let (key, value) = Password.getKeyValuePair(from: self.password) let (key, value) = Password.getKeyValuePair(from: self.password)
if Password.otpKeywords.contains(key ?? "") { if Password.otpKeywords.contains(key ?? "") {
firstLineIsOTPField = true firstLineIsOTPField = true
self.additions[key!] = value self.additions.append((key!, value))
} else { } else {
firstLineIsOTPField = false firstLineIsOTPField = false
} }
@ -119,13 +119,13 @@ public class Password {
self.updateOtpToken() self.updateOtpToken()
} }
public func getFilteredAdditions() -> [String: String] { public func getFilteredAdditions() -> [(String, String)] {
var filteredAdditions = [String: String]() var filteredAdditions = [(String, String)]()
additions.forEach { (key: String, value: String) in additions.forEach { (key: String, value: String) in
if key.lowercased() != "username" && key.lowercased() != "login" && key.lowercased() != "password" && if key.lowercased() != "username" && key.lowercased() != "login" && key.lowercased() != "password" &&
(!key.hasPrefix("unknown") || !SharedDefaults[.isHideUnknownOn]) && (!key.hasPrefix("unknown") || !SharedDefaults[.isHideUnknownOn]) &&
(!Password.otpKeywords.contains(key) || !SharedDefaults[.isHideOTPOn]) { (!Password.otpKeywords.contains(key) || !SharedDefaults[.isHideOTPOn]) {
filteredAdditions[key] = value filteredAdditions.append((key, value))
} }
} }
return filteredAdditions return filteredAdditions
@ -186,17 +186,14 @@ public class Password {
} }
private func getAdditionValue(withKey key: String, caseSensitive: Bool = true) -> String? { private func getAdditionValue(withKey key: String, caseSensitive: Bool = true) -> String? {
if caseSensitive { let searchKey = caseSensitive ? key : key.lowercased()
return additions[key] for (currentKey, value) in additions {
} else { let currentKeyTrans = caseSensitive ? currentKey : currentKey.lowercased()
let searchKey = key.lowercased() if searchKey == currentKeyTrans {
for k in additions.keys { return value
if searchKey == k.lowercased() {
return additions[k]
}
} }
return nil
} }
return nil
} }
/* /*