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